This is a human-friendly changelog in a keepachangelog.com style format. Because this changelog is for end-user consumption of meaningful changes,only a summary of a release‘s changes is described. This means every commit is not necessarily mentioned, and internal refactors or code cleanups are omitted unless they’re particularly notable.
A brief description of the categories of changes:
Changed: Some behavior changed. If the change is expected to break a public API or supported behavior, it will be marked as BREAKING. Note that beta APIs will not have breaking API changes called out.Fixed: A bug, or otherwise incorrect behavior, was fixed.Added: A new feature, API, or behavior was added in a backwards compatible manner.(bzlmod) or (docs).//python/pip_install:pip_repository_bzl bzl_library target internal as all of the publicly available symbols (etc. package_annotation) are re-exported via //python:pip_bzl bzl_library.GAZELLE_PYTHON_RUNTIME_DEPS from @rules_python_gazelle_plugin//:def.bzl is no longer necessary.Skip aliases for unloaded toolchains. Some Python versions that don't have full platform support, and referencing their undefined repositories can break operations like bazel query rdeps(...).
Python code generated from proto_library with strip_import_prefix can be imported now.
(py_wheel) Produce deterministic wheel files and make RECORD file entries follow the order of files written to the .whl archive.
Python version patch level bumps:
(deps) Upgrade rules_go 0.39.1 -> 0.41.0; this is so gazelle integration works with upcoming Bazel versions
(multi-version) The distribs attribute is no longer propagated. This attribute has been long deprecated by Bazel and shouldn't be used.
Calling //python:repositories.bzl#py_repositories() is required. It has always been documented as necessary, but it was possible to omit it in certain cases. An error about @rules_python_internal means the py_repositories() call is missing in WORKSPACE.
(bzlmod) The pip.parse extension will generate os/arch specific lock file entries on bazel>=6.4.
(bzlmod, entry_point) Added py_console_script_binary, which allows adding custom dependencies to a package's entry points and customizing the py_binary rule used to build it.
New Python versions available: 3.8.17, 3.11.5 using https://github.com/indygreg/python-build-standalone/releases/tag/20230826.
(gazelle) New # gazelle:python_generation_mode file directive to support generating one py_library per file.
(python_repository) Support netrc and auth_patterns attributes to enable authentication against private HTTP hosts serving Python toolchain binaries.
//python:packaging_bzl added, a bzl_library for the Starlark files //python:packaging.bzl requires.
(py_wheel) Added the incompatible_normalize_name feature flag to normalize the package distribution name according to latest Python packaging standards. Defaults to False for the time being.
(py_wheel) Added the incompatible_normalize_version feature flag to normalize the package version according to PEP440 standard. This also adds support for local version specifiers (versions with a + in them), in accordance with PEP440. Defaults to False for the time being.
New Python versions available: 3.8.18, 3.9.18, 3.10.13, 3.11.6, 3.12.0 using https://github.com/indygreg/python-build-standalone/releases/tag/20231002. 3.12.0 support is considered beta and may have issues.
(bzlmod) The entry_point macro is no longer supported and has been removed in favour of the py_console_script_binary macro for bzlmod users.
(bzlmod) The pip.parse no longer generates {hub_name}_{py_version} hub repos as the entry_point macro has been superseded by py_console_script_binary.
(bzlmod) The pip.parse no longer generates {hub_name}_{distribution} hub repos.
(whl_library) No longer restarts repository rule when fetching external dependencies improving initial build times involving external dependency fetching.
(gazelle) Improve runfiles lookup hermeticity.
pip.parse can no longer automatically use the default Python version; this was an unreliable and unsafe behavior. The python_version arg must always be explicitly specified.main arg is now correctly computed and usually optional.pip.parse no longer requires a call for whatever the configured default Python version is.@python_aliases renamed to `@python_versionspip.parse arg name renamed to hub_namepip.parse arg incompatible_generate_aliases removed and always true.pip.parse can be called multiple times with different Python versionspip.parse to reference the default python toolchain and interpreterwhl_modsDescription-Content-Type and Summary in METADATAProject-URLgenerate_hashes arg (default True) to control generating hashes