Releases: bazelbuild/rules_python
0.5.0
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.5.0/rules_python-0.5.0.tar.gz",
sha256 = "cd6730ed53a002c56ce4e2f396ba3b3be262fd7cb68339f0377a45e8227fe332",
)
Warning
#571 reports that the pip_parse
rule which is newly promoted from experimental may be non-deterministic. We don't recommend using it until that issue is resolved.
Breaking changes
rules_python supports Bazel Long-Term Support versions, 4.0.0 or higher. The repository rules will fail with an error if your Bazel version is older.
You can patch out that check if you really want to upgrade rules_python with Bazel 3 or lower, however this isn't supported.
What's Changed
- Fix regression in parsing requirements due to invalid entry points config. by @UebelAndre in #536
- Add tags pypi_name and pypi_version to generated py_library targets by @alexeagle in #530
- Exposed docs for
compile_pip_requirements
by @UebelAndre in #534 - Revert "py_library generated from wheel shouldn't include tests/ fold… by @alexeagle in #539
- Updated min tested Bazel version to 4.0.0 by @UebelAndre in #533
- Added additional tests for
pip_parse
andpip_install
utilties by @UebelAndre in #524 - docs: enforce that api docs are up-to-date by @alexeagle in #540
- fix: rules_python 0.4.0 is not recent enough for pip_install example by @thundergolfer in #547
- Typo: s/requiremenst/requirements by @b0ri5 in #552
- fix bazel_integration_test runner to allow non-release URLs by @alexeagle in #556
- Remove 'experimental' from pip_parse section by @jvolkman in #551
- Update docstrings for packaging rules/macros by @thundergolfer in #535
- Turn
//python/private
into a package. by @UebelAndre in #555 - Added
stamp
attribute topy_wheel
by @UebelAndre in #554 - Add support for relative requirements in pip_install by @aaliddell in #433
New Contributors
- @b0ri5 made their first contribution in #552
- @jvolkman made their first contribution in #551
- @aaliddell made their first contribution in #433
Full Changelog: 0.4.0...0.5.0
0.4.0
Changes from last release
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "954aa89b491be4a083304a2cb838019c8b8c3720a7abb9c4cb81ac7a24230cea",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_python/releases/download/0.4.0/rules_python-0.4.0.tar.gz",
"https://github.com/bazelbuild/rules_python/releases/download/0.4.0/rules_python-0.4.0.tar.gz",
],
)
Using the rules
See the source.
0.3.0
New Features
compile_pip_requirements
- rule for easily producing a requirements.lock file (experimental).
Contributions
- 03c4523 Smarter namespace pkg detection in pip_install (issue #381) (#483)
- 6202ed2 Replace
<code>
with backticks in docs. Addresses #255 (#486) - f1b6b74 Check pip-compile failed to resolve requirements (#482). Thanks to @reiyw
- 915f21b Make lazily fetching dependencies compatible to disallow_empty_glob (#477). Thanks to @martis42
- ce19337 pip_install: avoid assuming 'Root-Is-Purelib' is provided in all WHEEL files
- d95e89f Migrate from bazelbuild/skydoc to bazelbuild/stardoc (#484)
- bccb3c5 Add a buildifier pre-commit hook (#481). Thanks to @alexeagle
- 4b114a4 Ignore global pip config files for pip-compile (#473). Thanks to @keith
- eaed210 Added packaging docs (#480). Thanks to @UebelAndre
- ed6cc8f Allow overriding CUSTOM_COMPILE_COMMAND (#472). Thanks to @keith
- 53ba6cb Remove leading ./ in compile_pip_requirements (#471). Thanks to @person142
- ef4d735 fix defaulted macro args behaviour so users can actually set their values (#467)
- 1dc8ed9 Introduce compile_pip_requirements rule (#373). Thanks to @alexeagle
- 1b4f61b Replace old pip_install_incremental reference (#462). Thanks to @person142
- 6a9311c Add
py_import
rule (#174). Thanks to @beasleyr-vmw - a4c375b
requirements.bzl
is now visible outsidepip_repository
s (#463). Thanks to @UebelAndre - 017eb4f Don't delete wheels from external repos with pip_parse (#458). Thanks to @person142
- 04c6d7f Also name the BUILD file in external repository roots BUILD.bazel (#457). Thanks to @person142
- 37f04a4 Parse requirements files for global pip flags. (#456). Thanks to @hrfuller
- bc256ef Ran buildifier (#449). Thanks to @UebelAndre
Incompatible Changes
None
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.3.0/rules_python-0.3.0.tar.gz",
sha256 = "934c9ceb552e84577b0faf1e5a2f0450314985b4d8712b2b70717dc679fdc01b",
)
Using the rules
See the source.
0.2.0
New Features
- Wheel building code has graduated out of
//experimental
. See #418 rules_python
no longer mistakenly depends on bazel-skylib.- Support for incremental wheel downloading if using a locked requirements file. See #432
Incompatible Changes
pip_install
packaging rule no longer supports Python 3.5 (which is end-of-life) due to upgrade ofpip
. See: #412
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
sha256 = "778197e26c5fbeb07ac2a2c5ae405b30f6cb7ad1f5510ea6fdac03bded96cc6f",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_python/releases/download/0.2.0/rules_python-0.2.0.tar.gz",
"https://github.com/bazelbuild/rules_python/releases/download/0.2.0/rules_python-0.2.0.tar.gz",
],
)
Using the rules
See the source.
0.1.0
WORKSPACE setup
http_archive(
name = "rules_python",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.1.0/rules_python-0.1.0.tar.gz",
sha256 = "b6d46438523a3ec0f3cead544190ee13223a52f6a6765a29eae7b7cc24cc83a0",
)
Incompatible Changes
(Note that, per semver, our version starts with 0.
so any minor release can have breaking changes)
We have deprecated the pip_import
rule and moved it to a "legacy" package. Bazel rulesets that attempt to import load("@rules_python//python:pip.bzl", "pip_import")
will fail, as pip_import
has been replaced
by load("@rules_python//python:pip.bzl", "pip_install")
See https://github.com/bazelbuild/rules_python/tree/master/examples/pip_install for an example of using pip_install
.
If you use a ruleset such as rules_docker which depends on pip_import
then you'll need to update that ruleset along with rules_python 0.1.0. We are working to land changes in those dependents to make this possible, in the meantime see the Patches section below.
If there's a problem with pip_install
which prevents you switching, please file an issue with us or discuss on Slack so we can resolve it.
We plan to remove it in a future breaking release.
In this case, note that you can still use pip_import
during the transition.
You just replace your loads from @rules_python//python:pip.bzl
with @rules_python//python/legacy_pip_import:pip.bzl
.
See https://github.com/bazelbuild/rules_python/tree/master/examples/legacy_pip_import for an example of use.
Thank you to @dillon-giacoppo and the other contributors to rules_python_external for building this better way to get dependencies from pip!
Patches
rules_docker
If you use rules_docker you can patch their release by adding this file to your repo. NOTE: it will print a WARNING line because of using the deprecated API; a better patch to switch to pip_install
is on the way.
rules_docker.pr1650.patch
diff repositories/py_repositories.bzl repositories/py_repositories.bzl
index 72bb27b..9ba152c 100644
--- repositories/py_repositories.bzl
+++ repositories/py_repositories.bzl
@@ -19,7 +19,7 @@ Provides functions to pull all Python external package dependencies of this
repository.
"""
-load("@rules_python//python:pip.bzl", "pip_import", "pip_repositories")
+load("@rules_python//python/legacy_pip_import:pip.bzl", "pip_import", "pip_repositories")
def py_deps():
"""Pull in external Python packages needed by py binaries in this repo.
then where you fetch rules_docker, add a patches
attribute:
http_archive(
name = "io_bazel_rules_docker",
patches = ["//:rules_docker.pr1650.patch"],
...
)
(Note, this assumes you have a BUILD file in the workspace root. You can put the patch file in any package you like)
Using the rules
See the source.
0.0.3
New Features
https://github.com/dillon-giacoppo/rules_python_external has been upstreamed into this project under experimental/
.
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.0.3/rules_python-0.0.3.tar.gz",
sha256 = "e46612e9bb0dae8745de6a0643be69e8665a03f63163ac6610c210e80d14c3e4",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
Using the rules
See the source.
0.0.2
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.0.2/rules_python-0.0.2.tar.gz",
strip_prefix = "rules_python-0.0.2",
sha256 = "b5668cde8bb6e3515057ef465a35ad712214962f0b3a314e551204266c7be90c",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
# Only needed if using the packaging rules.
load("@rules_python//python:pip.bzl", "pip_repositories")
pip_repositories()
Using the rules
See the source.
0.0.1
First versioned release.
WORKSPACE setup
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "rules_python",
url = "https://github.com/bazelbuild/rules_python/releases/download/0.0.1/rules_python-0.0.1.tar.gz",
sha256 = "aa96a691d3a8177f3215b14b0edc9641787abaaa30363a080165d06ab65e1161",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
# Only needed if using the packaging rules.
load("@rules_python//python:pip.bzl", "pip_repositories")
pip_repositories()
Using the rules
See the source.