A publishable Python setuptools distribution (e.g. an sdist or wheel).

See Building distributions.


type: Iterable[str] | None
default: None

Addresses to other targets that this target depends on, e.g. ['helloworld/subdir:lib'].

Alternatively, you may include file names. Pants will find which target owns that file, and create a new target from that which only includes the file in its sources field. For files relative to the current BUILD file, prefix with ./; otherwise, put the full path, e.g. ['./sibling.txt', 'resources/demo.json'].

You may exclude dependencies by prefixing with !, e.g. ['!helloworld/subdir:lib', '!./sibling.txt']. Ignores are intended for false positives with dependency inference; otherwise, simply leave off the dependency from the BUILD file.


type: str | None
default: None

A human-readable description of the target.

Use ./pants list --documented :: to see all targets with descriptions.


type: Dict[str, Dict[str, str]] | None
default: None

Any entry points, such as console_scripts and gui_scripts.

Specify as a nested dictionary, with a dictionary for each type of entry point, e.g. console_scripts vs. gui_scripts. Each dictionary maps the entry point name to either a setuptools entry point ("") or a Pants target address to a pex_binary target.


  "console_scripts": {
    "my-script": "",
    "another-script": "project/subdir:pex_binary_tgt"

Note that Pants will assume that any value that either starts with : or has / in it, is a target address to a pex_binary target. Otherwise, it will assume it's a setuptools entry point as defined by Use // as a prefix for target addresses if you need to disambiguate.

Pants will attempt to infer dependencies, which you can confirm by running:

./pants dependencies <python_distribution target address>


type: PythonArtifact

The kwargs for the external artifact built from this target.

You must define name. You can also set almost any keyword argument accepted by in the setup() function: (

See Custom setup_py() kwargs for how to write a plugin to dynamically generate kwargs.


type: Iterable[str] | None
default: None

The runtime commands to invoke with to create the distribution, e.g. ["bdist_wheel", "--python-tag=py36.py37", "sdist"].

If empty or unspecified, will just create a chroot with a setup() function.


type: Iterable[str] | None
default: None

Arbitrary strings to describe a target.

For example, you may tag some test targets with 'integration_test' so that you could run ./pants --tag='integration_test' test :: to only run on targets with that tag.

Did this page help you?