Skip to content

Commit 3ffdf01

Browse files
authored
feat: Add setting generate_hashes for requirements (#1290)
Add the new parameter `generate_hashes` (default True) to `compile_pip_requirements()`, letting the user control whether to put `--hash` entries in the requirements lock file generated. In particular if the generated file is supposed to be used as a constraints file the hashes don't make much sense. Fixes #894.
1 parent 9dd944e commit 3ffdf01

File tree

5 files changed

+31
-4
lines changed

5 files changed

+31
-4
lines changed

docs/pip.md

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

python/pip_install/requirements.bzl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def compile_pip_requirements(
2121
name,
2222
extra_args = [],
2323
extra_deps = [],
24+
generate_hashes = True,
2425
py_binary = _py_binary,
2526
py_test = _py_test,
2627
requirements_in = None,
@@ -49,6 +50,7 @@ def compile_pip_requirements(
4950
name: base name for generated targets, typically "requirements".
5051
extra_args: passed to pip-compile.
5152
extra_deps: extra dependencies passed to pip-compile.
53+
generate_hashes: whether to put hashes in the requirements_txt file.
5254
py_binary: the py_binary rule to be used.
5355
py_test: the py_test rule to be used.
5456
requirements_in: file expressing desired dependencies.
@@ -88,7 +90,7 @@ def compile_pip_requirements(
8890
loc.format(requirements_darwin) if requirements_darwin else "None",
8991
loc.format(requirements_windows) if requirements_windows else "None",
9092
"//%s:%s.update" % (native.package_name(), name),
91-
] + extra_args
93+
] + (["--generate-hashes"] if generate_hashes else []) + extra_args
9294

9395
deps = [
9496
requirement("build"),

python/pip_install/tools/dependency_resolver/dependency_resolver.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ def _locate(bazel_runfiles, file):
153153
os.environ["CUSTOM_COMPILE_COMMAND"] = update_command
154154
os.environ["PIP_CONFIG_FILE"] = os.getenv("PIP_CONFIG_FILE") or os.devnull
155155

156-
sys.argv.append("--generate-hashes")
157156
sys.argv.append("--output-file")
158157
sys.argv.append(requirements_file_relative if UPDATE else requirements_out)
159158
sys.argv.append(

tests/compile_pip_requirements/BUILD.bazel

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,21 @@ compile_pip_requirements(
3333
requirements_txt = "requirements_lock.txt",
3434
)
3535

36+
compile_pip_requirements(
37+
name = "requirements_nohashes",
38+
data = [
39+
"requirements.in",
40+
"requirements_extra.in",
41+
],
42+
extra_args = [
43+
"--allow-unsafe",
44+
"--resolver=backtracking",
45+
],
46+
generate_hashes = False,
47+
requirements_in = "requirements.txt",
48+
requirements_txt = "requirements_nohashes_lock.txt",
49+
)
50+
3651
genrule(
3752
name = "generate_os_specific_requirements_in",
3853
srcs = [],
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#
2+
# This file is autogenerated by pip-compile with Python 3.9
3+
# by the following command:
4+
#
5+
# bazel run //:requirements_nohashes.update
6+
#
7+
pip==22.3.1
8+
# via -r requirements.in
9+
setuptools==65.6.3
10+
# via -r requirements_extra.in

0 commit comments

Comments
 (0)