Rules for building wheels.
Rules
py_package
A rule to select all files in transitive dependencies of deps which belong to given set of Python packages.
This rule is intended to be used as data dependency to py_wheel rule
Example usage (generated)
load("@rules_python//python:packaging.bzl", "py_package")
py_package(
# A unique name for this target.
name = "",
)
name
A unique name for this target.
deps
packages
List of Python packages to include in the distribution. Sub-packages are automatically included.
py_wheel
A rule for building Python Wheels.
Wheels are Python distribution format defined in https://www.python.org/dev/peps/pep-0427/.
This rule packages a set of targets into a single wheel.
Currently only pure-python wheels are supported.
Examples:
# Package some specific py_library targets, without their dependencies
py_wheel(
name = "minimal_with_py_library",
# Package data. We're building "example_minimal_library-0.0.1-py3-none-any.whl"
distribution = "example_minimal_library",
python_tag = "py3",
version = "0.0.1",
deps = [
"//examples/wheel/lib:module_with_data",
"//examples/wheel/lib:simple_module",
],
)
# Use py_package to collect all transitive dependencies of a target,
# selecting just the files within a specific python package.
py_package(
name = "example_pkg",
# Only include these Python packages.
packages = ["examples.wheel"],
deps = [":main"],
)
py_wheel(
name = "minimal_with_py_package",
# Package data. We're building "example_minimal_package-0.0.1-py3-none-any.whl"
distribution = "example_minimal_package",
python_tag = "py3",
version = "0.0.1",
deps = [":example_pkg"],
)
Example usage (generated)
load("@rules_python//python:packaging.bzl", "py_wheel")
py_wheel(
# A unique name for this target.
name = "",
# Name of the distribution
distribution = "",
# Version number of the package
version = "",
)
name
A unique name for this target.
abi
Python ABI tag. 'none' for pure-Python wheels.
author
A string specifying the author of the package.
author_email
A string specifying the email address of the package author.
classifiers
A list of strings describing the categories for the package. For valid classifiers see https://pypi.org/classifiers
console_scripts
Deprecated console_script entry points, e.g. {'main': 'examples.wheel.main:main'}
.
Deprecated: prefer the entry_points
attribute, which supports console_scripts
as well as other entry points.
deps
Targets to be included in the distribution.
The targets to package are usually py_library
rules or filesets (for packaging data files).
Note it's usually better to package py_library
targets and use
entry_points
attribute to specify console_scripts
than to package
py_binary
rules. py_binary
targets would wrap a executable script that
tries to locate .runfiles
directory which is not packaged in the wheel.
description_file
A file containing text describing the package in a single line.
distribution
Name of the distribution.
This should match the project name onm PyPI. It's also the name that is used to refer to the package in other packages' dependencies.
entry_points
entry_points, e.g. {'console_scripts': ['main = examples.wheel.main:main']}
.
extra_requires
List of optional requirements for this package
homepage
A string specifying the URL for the package homepage.
license
A string specifying the license of the package.
platform
Supported platform. Use 'any' for pure-Python wheel.
If you have included platform-specific data, such as a .pyd or .so extension module, you will need to specify the platform in standard pip format. If you support multiple platforms, you can define platform constraints, then use a select() to specify the appropriate specifier, eg:
platform = select({ "//platforms:windows_x86_64": "win_amd64", "//platforms:macos_x86_64": "macosx_10_7_x86_64", "//platforms:linux_x86_64": "manylinux2014_x86_64", })
python_requires
A string specifying what other distributions need to be installed when this one is. See the section on Declaring required dependency for details and examples of the format of this argument.
python_tag
Supported Python version(s), eg py3
, cp35.cp36
, etc
requires
List of requirements for this package
strip_path_prefixes
path prefixes to strip from files added to the generated package
version
Version number of the package