revert(bzlmod)!: allow bzlmod pip.parse to implicitly use default python version (#1341)
Reverts bazelbuild/rules_python#1303
The main issue is that `pip.parse()` accepts a locked requirements file
-- this means
the requirements are specific to a particular Python version[1]. Because
the default Python
version can arbitrarily change, the lock file may not be valid for the
Python version
that is used at runtime. The net result is a module will use
dependencies for e.g. Python
3.8, but will use 3.9 at runtime. Additionally, the dependencies
resolved for 3.8 will
be created under names such as `@foo_39` (because that's the
python_version pip.parse sees),
which is just more confusing.
BREAKING CHANGE:
* pip.parse() must have `python_version` explicitly set. Set it to the
Python version
used to resolve the requirements file.
[1] Lock files aren't necessarily version specific, but we don't
currently support the
environment markers in lock files to make them cross-python-version
compatible.diff --git a/examples/bzlmod/MODULE.bazel b/examples/bzlmod/MODULE.bazel
index df88ae8..be9466d 100644
--- a/examples/bzlmod/MODULE.bazel
+++ b/examples/bzlmod/MODULE.bazel
@@ -11,10 +11,6 @@
path = "../..",
)
-# Setting python.toolchain is optional as rules_python
-# sets a toolchain for you, using the latest supported version
-# of Python. We do recomend that you set a version here.
-
# We next initialize the python toolchain using the extension.
# You can set different Python versions in this block.
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
@@ -91,10 +87,9 @@
# call.
# Alternatively, `python_interpreter_target` can be used to directly specify
# the Python interpreter to run to resolve dependencies.
-# Because we do not have a python_version defined here
-# pip.parse uses the python toolchain that is set as default.
pip.parse(
hub_name = "pip",
+ python_version = "3.9",
requirements_lock = "//:requirements_lock_3_9.txt",
requirements_windows = "//:requirements_windows_3_9.txt",
# These modifications were created above and we
diff --git a/python/extensions/pip.bzl b/python/extensions/pip.bzl
index add69a4..b70327e 100644
--- a/python/extensions/pip.bzl
+++ b/python/extensions/pip.bzl
@@ -348,16 +348,14 @@
""",
),
"python_version": attr.string(
- default = DEFAULT_PYTHON_VERSION,
+ mandatory = True,
doc = """
The Python version to use for resolving the pip dependencies. If not specified,
then the default Python version (as set by the root module or rules_python)
will be used.
The version specified here must have a corresponding `python.toolchain()`
-configured. This attribute defaults to the version of the toolchain
-that is set as the default Python version. Or if only one toolchain
-is used, this attribute defaults to that version of Python.
+configured.
""",
),
"whl_modifications": attr.label_keyed_string_dict(