Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit c98bc8f

Browse filesBrowse files
groodtalexeagle
andauthored
Validation to ensure requirements_lock is pinned. (bazel-contrib#732)
* Light validation to ensure lockfile is pinned. * Clean up * . Co-authored-by: Alex Eagle <alex@aspect.dev>
1 parent c49bab3 commit c98bc8f
Copy full SHA for c98bc8f

File tree

Expand file treeCollapse file tree

7 files changed

+27
-23
lines changed
Filter options
Expand file treeCollapse file tree

7 files changed

+27
-23
lines changed

‎examples/pip_install/requirements.in

Copy file name to clipboard
+3-6Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
boto3==1.14.51
2-
s3cmd==2.1.0
3-
yamllint==1.26.3
4-
5-
# Last available for Python 3.6.
6-
setuptools==59.6.0
1+
boto3~=1.14.51
2+
s3cmd~=2.1.0
3+
yamllint~=1.26.3

‎examples/pip_install/requirements.txt

Copy file name to clipboardExpand all lines: examples/pip_install/requirements.txt
+1-3Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,4 @@ yamllint==1.26.3 \
9898
setuptools==59.6.0 \
9999
--hash=sha256:22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373 \
100100
--hash=sha256:4ce92f1e1f8f01233ee9952c04f6b81d1e02939d6e1b488428154974a4d0783e
101-
# via
102-
# -r requirements.in
103-
# yamllint
101+
# via yamllint

‎examples/pip_parse/BUILD

Copy file name to clipboardExpand all lines: examples/pip_parse/BUILD
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ alias(
5959
compile_pip_requirements(
6060
name = "requirements",
6161
extra_args = ["--allow-unsafe"],
62-
requirements_in = "requirements.txt",
62+
requirements_in = "requirements.in",
6363
requirements_txt = "requirements_lock.txt",
6464
)
6565

‎examples/pip_parse/requirements.in

Copy file name to clipboard
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
requests~=2.25.1
2+
s3cmd~=2.1.0
3+
yamllint~=1.26.3

‎examples/pip_parse/requirements.txt

Copy file name to clipboardExpand all lines: examples/pip_parse/requirements.txt
-6Lines changed: 0 additions & 6 deletions
This file was deleted.

‎examples/pip_parse/requirements_lock.txt

Copy file name to clipboardExpand all lines: examples/pip_parse/requirements_lock.txt
+4-6Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ pyyaml==6.0 \
6666
requests==2.25.1 \
6767
--hash=sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804 \
6868
--hash=sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e
69-
# via -r requirements.txt
69+
# via -r requirements.in
7070
s3cmd==2.1.0 \
7171
--hash=sha256:49cd23d516b17974b22b611a95ce4d93fe326feaa07320bd1d234fed68cbccfa \
7272
--hash=sha256:966b0a494a916fc3b4324de38f089c86c70ee90e8e1cae6d59102103a4c0cc03
73-
# via -r requirements.txt
73+
# via -r requirements.in
7474
six==1.16.0 \
7575
--hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
7676
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
@@ -81,12 +81,10 @@ urllib3==1.26.7 \
8181
# via requests
8282
yamllint==1.26.3 \
8383
--hash=sha256:3934dcde484374596d6b52d8db412929a169f6d9e52e20f9ade5bf3523d9b96e
84-
# via -r requirements.txt
84+
# via -r requirements.in
8585

8686
# The following packages are considered to be unsafe in a requirements file:
8787
setuptools==59.6.0 \
8888
--hash=sha256:22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373 \
8989
--hash=sha256:4ce92f1e1f8f01233ee9952c04f6b81d1e02939d6e1b488428154974a4d0783e
90-
# via
91-
# -r requirements.txt
92-
# yamllint
90+
# via yamllint

‎python/pip_install/parse_requirements_to_bzl/__init__.py

Copy file name to clipboardExpand all lines: python/pip_install/parse_requirements_to_bzl/__init__.py
+15-1Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,30 @@ def parse_install_requirements(
3131
parser = RequirementsFileParser(ps, line_parser)
3232
install_req_and_lines: List[Tuple[InstallRequirement, str]] = []
3333
_, content = get_file_content(requirements_lock, ps)
34+
unpinned_reqs = []
3435
for parsed_line, (_, line) in zip(
3536
parser.parse(requirements_lock, constraint=False), preprocess(content)
3637
):
3738
if parsed_line.is_requirement:
39+
install_req = constructors.install_req_from_line(parsed_line.requirement)
40+
if not install_req.is_pinned:
41+
unpinned_reqs.append(str(install_req))
3842
install_req_and_lines.append(
39-
(constructors.install_req_from_line(parsed_line.requirement), line)
43+
(install_req, line)
4044
)
4145

4246
else:
4347
extra_pip_args.extend(shlex.split(line))
48+
49+
if len(unpinned_reqs) > 0:
50+
unpinned_reqs_str = "\n".join(unpinned_reqs)
51+
raise RuntimeError(f"""\
52+
The `requirements_lock` file must be fully pinned. See `compile_pip_requirements`.
53+
Alternatively, use `pip-tools` or a similar mechanism to produce a pinned lockfile.
54+
55+
The following requirements were not pinned:
56+
{unpinned_reqs_str}""")
57+
4458
return install_req_and_lines
4559

4660

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.