//python:repositories.bzl

This file contains macros to be called during WORKSPACE evaluation.

is_standalone_interpreter(rctx, python_interpreter_path, logger=None)

Query a python interpreter target for whether or not it’s a rules_rust provided toolchain

Args:
Returns:

bool Whether or not the target is from a rules_python generated toolchain.

py_repositories(transition_settings=[])

Runtime dependencies that users must install.

This function should be loaded and called in the user’s WORKSPACE. With bzlmod enabled, this function is not needed since MODULE.bazel handles transitive deps.

Args:
  • transition_settings – (default [])

    A list of labels that terminal rules transition on by default.

python_register_multi_toolchains(name, python_versions, default_version=None, minor_mapping=None, **kwargs)

Convenience macro for registering multiple Python toolchains.

Args:
python_register_toolchains(name, python_version, register_toolchains=True, register_coverage_tool=False, set_python_version_constraint=False, libpython=None, tool_versions=None, platforms={'aarch64-apple-darwin': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:aarch64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'aarch64-apple-darwin-full': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:aarch64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'aarch64-apple-darwin-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:aarch64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'aarch64-apple-darwin-freethreaded': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:aarch64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'aarch64-apple-darwin-freethreaded-full': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:aarch64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'aarch64-apple-darwin-freethreaded-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:aarch64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'aarch64-pc-windows-msvc': struct(arch='aarch64', compatible_with=['@platforms//os:windows', '@platforms//cpu:aarch64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'aarch64-pc-windows-msvc-full': struct(arch='aarch64', compatible_with=['@platforms//os:windows', '@platforms//cpu:aarch64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'aarch64-pc-windows-msvc-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:windows', '@platforms//cpu:aarch64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'aarch64-pc-windows-msvc-freethreaded': struct(arch='aarch64', compatible_with=['@platforms//os:windows', '@platforms//cpu:aarch64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'aarch64-pc-windows-msvc-freethreaded-full': struct(arch='aarch64', compatible_with=['@platforms//os:windows', '@platforms//cpu:aarch64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'aarch64-pc-windows-msvc-freethreaded-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:windows', '@platforms//cpu:aarch64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'aarch64-unknown-linux-gnu': struct(arch='aarch64', compatible_with=['@platforms//os:linux', '@platforms//cpu:aarch64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'aarch64-unknown-linux-gnu-full': struct(arch='aarch64', compatible_with=['@platforms//os:linux', '@platforms//cpu:aarch64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'aarch64-unknown-linux-gnu-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:linux', '@platforms//cpu:aarch64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'aarch64-unknown-linux-gnu-freethreaded': struct(arch='aarch64', compatible_with=['@platforms//os:linux', '@platforms//cpu:aarch64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'aarch64-unknown-linux-gnu-freethreaded-full': struct(arch='aarch64', compatible_with=['@platforms//os:linux', '@platforms//cpu:aarch64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'aarch64-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:linux', '@platforms//cpu:aarch64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'arm64e-apple-darwin': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:arm64e'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'arm64e-apple-darwin-full': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:arm64e'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'arm64e-apple-darwin-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:arm64e'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'arm64e-apple-darwin-freethreaded': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:arm64e'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'arm64e-apple-darwin-freethreaded-full': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:arm64e'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'arm64e-apple-darwin-freethreaded-install_only_stripped': struct(arch='aarch64', compatible_with=['@platforms//os:macos', '@platforms//cpu:arm64e'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'armv7-unknown-linux-gnu': struct(arch='arm', compatible_with=['@platforms//os:linux', '@platforms//cpu:armv7'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'armv7-unknown-linux-gnu-full': struct(arch='arm', compatible_with=['@platforms//os:linux', '@platforms//cpu:armv7'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'armv7-unknown-linux-gnu-install_only_stripped': struct(arch='arm', compatible_with=['@platforms//os:linux', '@platforms//cpu:armv7'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'armv7-unknown-linux-gnu-freethreaded': struct(arch='arm', compatible_with=['@platforms//os:linux', '@platforms//cpu:armv7'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'armv7-unknown-linux-gnu-freethreaded-full': struct(arch='arm', compatible_with=['@platforms//os:linux', '@platforms//cpu:armv7'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'armv7-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='arm', compatible_with=['@platforms//os:linux', '@platforms//cpu:armv7'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i386-unknown-linux-gnu': struct(arch='x86_32', compatible_with=['@platforms//os:linux', '@platforms//cpu:i386'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i386-unknown-linux-gnu-full': struct(arch='x86_32', compatible_with=['@platforms//os:linux', '@platforms//cpu:i386'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i386-unknown-linux-gnu-install_only_stripped': struct(arch='x86_32', compatible_with=['@platforms//os:linux', '@platforms//cpu:i386'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i386-unknown-linux-gnu-freethreaded': struct(arch='x86_32', compatible_with=['@platforms//os:linux', '@platforms//cpu:i386'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i386-unknown-linux-gnu-freethreaded-full': struct(arch='x86_32', compatible_with=['@platforms//os:linux', '@platforms//cpu:i386'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i386-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='x86_32', compatible_with=['@platforms//os:linux', '@platforms//cpu:i386'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'i686-pc-windows-msvc': struct(arch='x86_32', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_32'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'i686-pc-windows-msvc-full': struct(arch='x86_32', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_32'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'i686-pc-windows-msvc-install_only_stripped': struct(arch='x86_32', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_32'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'i686-pc-windows-msvc-freethreaded': struct(arch='x86_32', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_32'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'i686-pc-windows-msvc-freethreaded-full': struct(arch='x86_32', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_32'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'i686-pc-windows-msvc-freethreaded-install_only_stripped': struct(arch='x86_32', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_32'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'ppc64le-unknown-linux-gnu': struct(arch='ppc', compatible_with=['@platforms//os:linux', '@platforms//cpu:ppc'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'ppc64le-unknown-linux-gnu-full': struct(arch='ppc', compatible_with=['@platforms//os:linux', '@platforms//cpu:ppc'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'ppc64le-unknown-linux-gnu-install_only_stripped': struct(arch='ppc', compatible_with=['@platforms//os:linux', '@platforms//cpu:ppc'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'ppc64le-unknown-linux-gnu-freethreaded': struct(arch='ppc', compatible_with=['@platforms//os:linux', '@platforms//cpu:ppc'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'ppc64le-unknown-linux-gnu-freethreaded-full': struct(arch='ppc', compatible_with=['@platforms//os:linux', '@platforms//cpu:ppc'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'ppc64le-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='ppc', compatible_with=['@platforms//os:linux', '@platforms//cpu:ppc'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'riscv64-unknown-linux-gnu': struct(arch='riscv64', compatible_with=['@platforms//os:linux', '@platforms//cpu:riscv64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'riscv64-unknown-linux-gnu-full': struct(arch='riscv64', compatible_with=['@platforms//os:linux', '@platforms//cpu:riscv64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'riscv64-unknown-linux-gnu-install_only_stripped': struct(arch='riscv64', compatible_with=['@platforms//os:linux', '@platforms//cpu:riscv64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'riscv64-unknown-linux-gnu-freethreaded': struct(arch='riscv64', compatible_with=['@platforms//os:linux', '@platforms//cpu:riscv64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'riscv64-unknown-linux-gnu-freethreaded-full': struct(arch='riscv64', compatible_with=['@platforms//os:linux', '@platforms//cpu:riscv64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'riscv64-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='riscv64', compatible_with=['@platforms//os:linux', '@platforms//cpu:riscv64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 's390x-unknown-linux-gnu': struct(arch='s390x', compatible_with=['@platforms//os:linux', '@platforms//cpu:s390x'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 's390x-unknown-linux-gnu-full': struct(arch='s390x', compatible_with=['@platforms//os:linux', '@platforms//cpu:s390x'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 's390x-unknown-linux-gnu-install_only_stripped': struct(arch='s390x', compatible_with=['@platforms//os:linux', '@platforms//cpu:s390x'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 's390x-unknown-linux-gnu-freethreaded': struct(arch='s390x', compatible_with=['@platforms//os:linux', '@platforms//cpu:s390x'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 's390x-unknown-linux-gnu-freethreaded-full': struct(arch='s390x', compatible_with=['@platforms//os:linux', '@platforms//cpu:s390x'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 's390x-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='s390x', compatible_with=['@platforms//os:linux', '@platforms//cpu:s390x'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-apple-darwin': struct(arch='x86_64', compatible_with=['@platforms//os:macos', '@platforms//cpu:x86_64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'x86_64-apple-darwin-full': struct(arch='x86_64', compatible_with=['@platforms//os:macos', '@platforms//cpu:x86_64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'x86_64-apple-darwin-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:macos', '@platforms//cpu:x86_64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'x86_64-apple-darwin-freethreaded': struct(arch='x86_64', compatible_with=['@platforms//os:macos', '@platforms//cpu:x86_64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'x86_64-apple-darwin-freethreaded-full': struct(arch='x86_64', compatible_with=['@platforms//os:macos', '@platforms//cpu:x86_64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'x86_64-apple-darwin-freethreaded-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:macos', '@platforms//cpu:x86_64'], flag_values={}, os_name='osx', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'x86_64-pc-windows-msvc': struct(arch='x86_64', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'x86_64-pc-windows-msvc-full': struct(arch='x86_64', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'x86_64-pc-windows-msvc-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'x86_64-pc-windows-msvc-freethreaded': struct(arch='x86_64', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only']), 'x86_64-pc-windows-msvc-freethreaded-full': struct(arch='x86_64', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full']), 'x86_64-pc-windows-msvc-freethreaded-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:windows', '@platforms//cpu:x86_64'], flag_values={}, os_name='windows', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped']), 'x86_64-unknown-linux-gnu': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-unknown-linux-gnu-full': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-unknown-linux-gnu-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-unknown-linux-gnu-freethreaded': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-unknown-linux-gnu-freethreaded-full': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-unknown-linux-gnu-freethreaded-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_glibc']), 'x86_64-unknown-linux-musl': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_musl']), 'x86_64-unknown-linux-musl-full': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_musl']), 'x86_64-unknown-linux-musl-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_no', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_musl']), 'x86_64-unknown-linux-musl-freethreaded': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only', '@@//python/config_settings:_is_py_linux_libc_musl']), 'x86_64-unknown-linux-musl-freethreaded-full': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_full', '@@//python/config_settings:_is_py_linux_libc_musl']), 'x86_64-unknown-linux-musl-freethreaded-install_only_stripped': struct(arch='x86_64', compatible_with=['@platforms//os:linux', '@platforms//cpu:x86_64'], flag_values={}, os_name='linux', target_settings=['@@//python/config_settings:_is_py_freethreaded_yes', '@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped', '@@//python/config_settings:_is_py_linux_libc_musl'])}, minor_mapping=None, **kwargs)

Convenience macro for users which does typical setup.

With bzlmod enabled, this function is not needed since rules_python is handling everything. In order to override the default behaviour from the root module one can see the docs for the python extension.

  • Create a repository for each built-in platform like “python_3_8_linux_amd64” - this repository is lazily fetched when Python is needed for that platform.

  • Create a repository exposing toolchains for each platform like “python_platforms”.

  • Register a toolchain pointing at each platform.

Users can avoid this macro and do these steps themselves, if they want more control.

Args:
  • name – (str)

    base name for all created repos, e.g. “python_3_8”.

  • python_version – (str)

    the Python version.

  • register_toolchains – (bool) (default True)

    Whether or not to register the downloaded toolchains.

  • register_coverage_tool – (bool) (default False)

    Whether or not to register the downloaded coverage tool to the toolchains.

  • set_python_version_constraint – (bool) (default False)

    When set to True, target_compatible_with for the toolchains will include a version constraint.

  • libpython – (str) (default None)

    controls shared libpython files: auto, include, or exclude.

  • tool_versions – (dict) (default None)

    contains a mapping of version with SHASUM and platform info. If not supplied, the defaults in python/versions.bzl will be used.

  • platforms – (dict[str, struct]) (default {“aarch64-apple-darwin”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “aarch64-apple-darwin-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “aarch64-apple-darwin-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “aarch64-apple-darwin-freethreaded”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “aarch64-apple-darwin-freethreaded-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “aarch64-apple-darwin-freethreaded-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “aarch64-pc-windows-msvc”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “aarch64-pc-windows-msvc-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “aarch64-pc-windows-msvc-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “aarch64-pc-windows-msvc-freethreaded”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “aarch64-pc-windows-msvc-freethreaded-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “aarch64-pc-windows-msvc-freethreaded-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “aarch64-unknown-linux-gnu”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “aarch64-unknown-linux-gnu-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “aarch64-unknown-linux-gnu-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “aarch64-unknown-linux-gnu-freethreaded”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “aarch64-unknown-linux-gnu-freethreaded-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “aarch64-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:aarch64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “arm64e-apple-darwin”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:arm64e”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “arm64e-apple-darwin-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:arm64e”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “arm64e-apple-darwin-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:arm64e”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “arm64e-apple-darwin-freethreaded”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:arm64e”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “arm64e-apple-darwin-freethreaded-full”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:arm64e”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “arm64e-apple-darwin-freethreaded-install_only_stripped”: struct(arch = “aarch64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:arm64e”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “armv7-unknown-linux-gnu”: struct(arch = “arm”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:armv7”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “armv7-unknown-linux-gnu-full”: struct(arch = “arm”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:armv7”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “armv7-unknown-linux-gnu-install_only_stripped”: struct(arch = “arm”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:armv7”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “armv7-unknown-linux-gnu-freethreaded”: struct(arch = “arm”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:armv7”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “armv7-unknown-linux-gnu-freethreaded-full”: struct(arch = “arm”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:armv7”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “armv7-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “arm”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:armv7”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i386-unknown-linux-gnu”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:i386”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i386-unknown-linux-gnu-full”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:i386”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i386-unknown-linux-gnu-install_only_stripped”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:i386”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i386-unknown-linux-gnu-freethreaded”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:i386”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i386-unknown-linux-gnu-freethreaded-full”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:i386”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i386-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:i386”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “i686-pc-windows-msvc”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_32”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “i686-pc-windows-msvc-full”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_32”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “i686-pc-windows-msvc-install_only_stripped”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_32”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “i686-pc-windows-msvc-freethreaded”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_32”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “i686-pc-windows-msvc-freethreaded-full”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_32”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “i686-pc-windows-msvc-freethreaded-install_only_stripped”: struct(arch = “x86_32”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_32”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “ppc64le-unknown-linux-gnu”: struct(arch = “ppc”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:ppc”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “ppc64le-unknown-linux-gnu-full”: struct(arch = “ppc”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:ppc”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “ppc64le-unknown-linux-gnu-install_only_stripped”: struct(arch = “ppc”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:ppc”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “ppc64le-unknown-linux-gnu-freethreaded”: struct(arch = “ppc”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:ppc”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “ppc64le-unknown-linux-gnu-freethreaded-full”: struct(arch = “ppc”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:ppc”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “ppc64le-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “ppc”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:ppc”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “riscv64-unknown-linux-gnu”: struct(arch = “riscv64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:riscv64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “riscv64-unknown-linux-gnu-full”: struct(arch = “riscv64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:riscv64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “riscv64-unknown-linux-gnu-install_only_stripped”: struct(arch = “riscv64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:riscv64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “riscv64-unknown-linux-gnu-freethreaded”: struct(arch = “riscv64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:riscv64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “riscv64-unknown-linux-gnu-freethreaded-full”: struct(arch = “riscv64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:riscv64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “riscv64-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “riscv64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:riscv64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “s390x-unknown-linux-gnu”: struct(arch = “s390x”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:s390x”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “s390x-unknown-linux-gnu-full”: struct(arch = “s390x”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:s390x”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “s390x-unknown-linux-gnu-install_only_stripped”: struct(arch = “s390x”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:s390x”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “s390x-unknown-linux-gnu-freethreaded”: struct(arch = “s390x”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:s390x”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “s390x-unknown-linux-gnu-freethreaded-full”: struct(arch = “s390x”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:s390x”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “s390x-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “s390x”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:s390x”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-apple-darwin”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “x86_64-apple-darwin-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “x86_64-apple-darwin-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “x86_64-apple-darwin-freethreaded”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “x86_64-apple-darwin-freethreaded-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “x86_64-apple-darwin-freethreaded-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:macos”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “osx”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “x86_64-pc-windows-msvc”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “x86_64-pc-windows-msvc-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “x86_64-pc-windows-msvc-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “x86_64-pc-windows-msvc-freethreaded”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”]), “x86_64-pc-windows-msvc-freethreaded-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”]), “x86_64-pc-windows-msvc-freethreaded-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:windows”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “windows”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”]), “x86_64-unknown-linux-gnu”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-unknown-linux-gnu-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-unknown-linux-gnu-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-unknown-linux-gnu-freethreaded”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-unknown-linux-gnu-freethreaded-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-unknown-linux-gnu-freethreaded-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_glibc”]), “x86_64-unknown-linux-musl”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_musl”]), “x86_64-unknown-linux-musl-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_musl”]), “x86_64-unknown-linux-musl-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_no”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_musl”]), “x86_64-unknown-linux-musl-freethreaded”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only”, “@@//python/config_settings:_is_py_linux_libc_musl”]), “x86_64-unknown-linux-musl-freethreaded-full”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_full”, “@@//python/config_settings:_is_py_linux_libc_musl”]), “x86_64-unknown-linux-musl-freethreaded-install_only_stripped”: struct(arch = “x86_64”, compatible_with = [“@platforms//os:linux”, “@platforms//cpu:x86_64”], flag_values = {}, os_name = “linux”, target_settings = [“@@//python/config_settings:_is_py_freethreaded_yes”, “@@//python/config_settings:_is_py_pbs_distribution_install_only_stripped”, “@@//python/config_settings:_is_py_linux_libc_musl”])})

    platforms to create toolchain repositories for. Keys are platform names, and values are platform_info structs. Note that only a subset is created, depending on what’s available in tool_versions.

  • minor_mapping – (dict[str, str]) (default None)

    contains a mapping from X.Y to X.Y.Z version.

  • kwargs – passed to each python_repository call.

Returns:

On workspace, returns None.

On bzlmod, returns a dict[str, platform_info], which is the subset of platforms that it created repositories for.

repo rule python_repository(name, platform, python_version, release_filename, sha256, auth_patterns={}, coverage_tool='', distutils=None, distutils_content='', ignore_root_user_error=True, libpython='auto', netrc='', patch_strip=1, patches=[], strip_prefix='', url='', urls=[])

Fetches the external tools needed for the Python toolchain.

Attributes:
  • name – (Name)

    A unique name for this repository.

    mandatory

  • platform – (str)

    The platform name for the Python interpreter tarball.

    mandatory

  • python_version – (str)

    The Python version.

    mandatory

  • release_filename – (str)

    The filename of the interpreter to be downloaded

    mandatory

  • sha256 – (str)

    The SHA256 integrity hash for the Python interpreter tarball.

    mandatory

  • auth_patterns – (dict[str, str]) (default {})

    Override mapping of hostnames to authorization patterns; mirrors the eponymous attribute from http_archive

    optional

  • coverage_tool – (str) (default “”)

    This is a target to use for collecting code coverage information from py_binary and py_test targets.

    The target is accepted as a string by the python_repository and evaluated within the context of the toolchain repository.

    For more information see py_runtime.coverage_tool.

    optional

  • distutils – (label) (default None)

    A distutils.cfg file to be included in the Python installation. Either distutils or distutils_content can be specified, but not both.

    optional

  • distutils_content – (str) (default “”)

    A distutils.cfg file content to be included in the Python installation. Either distutils or distutils_content can be specified, but not both.

    optional

  • ignore_root_user_error – (bool) (default True)

    Noop, will be removed in the next major release

    optional

  • libpython – (str) (default “auto”)

    Whether to include shared libpython files: auto, include, or exclude.

    optional

  • netrc – (str) (default “”)

    .netrc file to use for authentication; mirrors the eponymous attribute from http_archive

    optional

  • patch_strip – (int) (default 1)

    Same as the –strip argument of Unix patch.

    Note

    In the future the default value will be set to 0, to mimic the well known function defaults (e.g. single_version_override for MODULE.bazel files.

    Added in version 0.36.0.

    optional

  • patches – (list[label]) (default [])

    A list of patch files to apply to the unpacked interpreter

    optional

  • strip_prefix – (str) (default “”)

    A directory prefix to strip from the extracted files.

    optional

  • url – (str) (default “”)

    The URL of the interpreter to download. Exactly one of url and urls must be set.

    optional

  • urls – (list[str]) (default [])

    The URL of the interpreter to download. Exactly one of url and urls must be set.

    optional

Envvars:

RULES_PYTHON_REPO_DEBUG