Skip to main content

The ergonomic and hermetic software build system for Python, Java, Scala, Go, and Shell. Pants lets you fearlessly scale up your codebase.

Project description

Pants is an Apache2 licensed build tool written in Python and Rust.

The latest documentation can be found at pantsbuild.org.

2.13.x Release Series

2.13.0a1 (Jun 29, 2022)

New Features

  • Add ability to run any PythonSourceField (Cherry-pick of #15849) (#16022)

  • Add --debug-adapter flag to run (Cherry-pick of #15829) (#15988)

  • Add repository config option to Docker registries. (Cherry pick of #15884) (#15952)

User API Changes

  • Deprecate not setting tailor_pex_binary_targets explictly (Cherry-pick of #15962) (#16023)

  • Upgrade default iPython to 7.34, which drops Python 3.6 (Cherry-pick of #15934) (#15938)

Plugin API Changes

  • Introduce a plugin API to provide all thread local state, and deprecate stdio-specific methods (Cherry-pick of #15890) (#15916)

Bug fixes

  • Backtrack through calls from @rules to synchronous engine methods (Cherry-pick of #15979) (#16001)

  • Assorted remote metrics fixes. (Cherry-pick of #15914) (#15976)

  • Fix bad "" description in invalid addresses error messages (Cherry-pick of #15859) (#15936)

  • Fix reporting of time spent downloading files (Cherry-pick of #15873) (#15921)

  • Upgrade to nails 0.13.0 to pick up support for JDK >=13. (Cherry-pick of #15899) (#15918)

  • Allow JVM memory controls to bound the process pool size to less than the process parallelism (Cherry-pick of #15903) (#15917)

  • Increment the missing-digest backtracking level once per attempt (Cherry pick of #15889) (#15897)

  • Scala: should visit ctor args of base type (Cherry pick of #15880) (#15892)

  • Scala: mark an object that extends another type as recursive (Cherry pick of #15865) (#15891)

Performance

  • terraform: use immutable input for Terraform tool (Cherry-pick of #15037) (#15998)

  • Improve performance of file arguments when --owners-not-found-behavior not used (#15931)

  • Dedupe load_bytes_with calls to a remote Store (Cherry-pick of #15901) (#15915)

Documentation

  • Update Python documentation with 2.11 changes (Cherry-pick of #15857) (#15981)

  • Update certificate environment variable advice for #14808. (Cherry-pick of #15943) (#15974)

  • Update the docs for fmt and test report changes (Cherry-pick of #15968) (#15971)

  • Clarify deprecation messages for tailor and update-build-files requiring CLI arguments (Cherry-pick of #15932) (#15937)

2.13.0a0 (Jun 17, 2022)

New Features

  • Add option for max wait before terminating interactive process (#15767)

User API Changes

  • Add [scala-infer].force_add_siblings_as_dependencies and deprecate it defaulting to true (#15841)

  • Add --debug-adapter flag to test goal (#15799)

Plugin API Changes

  • Add skip_invalid_addresses field to UnparsedAddressInputs (#15864)

  • Add MaybeAddress for infallible evaluation of AddressInput (#15863)

  • Add optional StringSequenceField.valid_choices (#15684)

  • WrappedTarget now requires WrappedTargetRequest (#15789)

  • Move ResolveError from pants.base.exceptions to pants.build_graph.address (#15790)

  • _TargetParametrizations now requires _TargetParametrizationsRequest (#15759)

  • BuildFileAddress now requires BuildFileAddressRequest (#15760)

Bug fixes

  • Support --help for builtin goals. (#15798)

  • Handle venv path special chars in coursier fetch (#15701)

  • Fix [python-infer].inits and [python-infer].conftests to consider resolve field (#15787)

Performance

  • Backtrack execution for missing digests to make eager_fetch=false more resilient (#15850)

  • Remove synchronous remote cache lookup from remote execution (#15854)

Documentation

  • Fix broken links to tailor documentation (#15842)

  • Update docs for redesign of CLI arguments (#15816)

  • Better error message when an address does not exist (#15788)

2.13.0.dev5 (Jun 08, 2022)

New Features

  • Add GraphQL API server backend for the experimental-explorer goal (#15697)

  • Add extra_env_vars field to experimental_shell_command target. (#15742)

  • Add experimental-explorer builtin goal. (#15695)

User API Changes

  • Always ignore paths which are not files, directories, or links. (#15773)

  • Add API types and rules to cli help info (#14227)

  • Change the default remote_cache_warnings warnings behavior to backoff. (#15745)

  • Revert "Go can use both file and resource targets (#15663)" (#15725)

  • Deprecate --exclude-target-regexp in favor of --filter-address-regex (#15729)

Plugin API Changes

  • Require setting description_of_origin with AddressInput and UnparsedAddressInputs (#15743)

  • Require keyword arguments for AddressInput (#15741)

Bug fixes

  • tailor should skip bad requirements targets (#15755)

  • tailor for Go does not add targets when no ancestor go.mod (#15750)

  • Record metrics for remote cache store errors (#15744)

  • Fix help for --process-total-child-memory-usage and --process-per-child-memory-usage (#15733)

  • Fix --changed-since with directories unknown to Pants (#15714)

Documentation

  • Improve error messages for invalid addresses (#15751)

  • Correctly describe the origin of invalid specs, e.g. --paths-from (#15730)

2.13.0.dev4 (May 31, 2022)

New Features

  • Support running pex_binary targets directly on the in-repo sources. (#15689)

  • Go can use both file and resource targets (#15663)

  • Add ignore command line arguments, e.g. -dir:: (#15619)

  • Allow to skip linting on Helm charts (#15640)

  • Helm charts support CRDS by default (#15623)

  • Adds dependency injection rule for protobuf-java runtime (#15006)

User API Changes

  • Make the global --no-process-cleanup conserve the run tmpdir. (#15683)

  • Upgrade Pex to 2.1.90. (#15656)

  • Remove -d as shorthand for --logdir (#15621)

Plugin API Changes

  • PutativeTargetsRequest.path_globs() can take multiple globs (#15634)

  • [Plugin API change] Remove default help message from MultipleSourcesField (#15633)

  • Don't allow multiple flag names for the same option (#15627)

  • Remove PutativeTargetsSearchPaths (#15625)

  • Refactor Specs as prework for ignore Specs (#15620)

  • Ban using short option names like -x, except for pre-blessed values (#15624)

Bug fixes

  • Don't install Pex-style lockfile when no requirements used (#15706)

  • python_requirements() can handle -r reqs.txt (#15672)

  • Increase RuleGraph solver loop threshold to allow for larger @rule sets (#15668)

  • Fix --help output when specs given. (#15665)

  • update-build-files falls back to interpreter constraints from tool lockfile for Black and Yapf (#15666)

  • Fix detection of --help when specs given (#15664)

  • Choose correct Scala dialect according to scala-version (#15649)

  • Fix deleted files with --changed-since when using target-less goals like count-loc (#15662)

  • Prevent collisions between attempts to materialize an immutable input digest. (#15652)

  • Fix another case of direct Coursier lockfile consumption (#15650)

Documentation

  • Mention language specific opt outs for tailor (#15673)

  • Provide more "Did you mean ..." suggestions for the CLI help. (#15646)

  • [docs] Add language specific file examples for sources help message of a target (#15635)

  • Docs: show language specific file examples in sources field in the help of targets (#15595)

2.13.0.dev3 (May 23, 2022)

New Features

  • dir: and dir:: work on target-less goals like count-loc (#15577)

  • --changed-since works on target-less goals like count-loc (#14434)

  • Add --no-use-deprecated-directory-cli-args-semantics so that directory arguments match all files/targets in the directory (#15589)

  • filter options work with any goal now, not only the filter goal (#15599)

  • Use new, consistent CLI args semantics for tailor if use_deprecated_cli_args_semantics = false (#15612)

  • Support JVM options per tool (#15505)

  • Allow turning off export of Python tools like black (#15509)

  • Adding file downloading support to asset targets (#15457)

User API Changes

  • Deprecate filter goal now that filter options can be used from any goal (#15600)

  • Tailor __main__.py files as pex binaries (#15598)

  • update-build-files now takes CLI args for which BUILD files to change (#15581)

  • Don't error when dir: and dir:: have no targets, as long as the directories exist (#15570)

  • Deprecate --owners-not-found-behavior and set default to ignore (#15560)

  • Add --unmatched-cli-globs, which before was controlled by --owners-not-found-behavior (#15556)

  • Deprecate files_not_found_behavior in favor of unmatched_build_file_globs (#15555)

  • Remove undocumented CLI file arguments ignore syntax (#15534)

  • go_third_party_package targets now depend on their go.mod and go.sum (#15521)

  • --changed-dependees no longer runs on sibling targets from same target generator (#15396)

  • Change _generator_sources_helper to use source: str rather than sources: list[str] (#15475)

  • Upgrade Pex to 2.1.88. (#15484)

  • Revert "Deprecate [python].tailor_ignore_solitary_init_files in favor of more useful [python].tailor_ignore_empty_init_files (#15469)" (#15492)

Plugin API Changes

  • Replace SpecsSnapshot with lazier SpecsPaths (#15593)

  • Rename classes in specs.py for unification of specs semantics (#15538)

  • Remove addressable= kwarg from tailor (#15504)

  • Remove AbstractTestGenerator from pantsbuild.pants.testutil (#15464)

Bug fixes

  • Fix incorrect digest for JVM multiple jvm_artifact(.., jar=..) entries (#15571)

  • Record Scala package object as provided name (#15582)

  • Fix deprecation message for --filter-target-type with deprecated target alias (#15596)

  • Fix scala inference doesn't infer name after function call (#15565)

  • Fix JVM resource classification and artifact grouping (#15567)

  • Apply --tag filtering to target-less goals like count-loc (#15479)

  • Fix tag filtering with --changed-dependees (#15546)

  • Fix non-deterministic order of jvm_artifact(.., excludes=..) (#15542)

  • Support transitive file dependencies in Scalatest/JUnit (#15501)

  • Improve name= used for Python requirement target generators with tailor (#15507)

  • don't generate default tool lockfiles (#15488)

  • Don't give a subsequent formatter an empty snapshot after skipping (#15483)

  • jvm: fix incorrect check for root-only ClasspathEntryRequest implementations (#15494)

Performance

  • lint only finds targets and files if the relevant linters were specified (#15579)

  • regex-lint only reads files that will be checked (#15580)

Documentation

  • Freshen up deprecated option formatting (#15590)

  • Make required fields sort first on the docsite and in the './pants help target' output (#15587)

  • Add a few default_help_reprs (#15588)

  • Suggest a UUID when erroring about missing UUID (#15550)

  • Tweak docs to include no-infer-dep in a few more places (#15547)

2.13.0.dev2 (May 14, 2022)

New Features

  • Adds JDK autoconfiguration support to scala BSP metadata setup (#15408)

  • Add lint --skip-formatters option (#15427)

  • Support for sharding tests. (#15417)

  • Add clang-format support for the experimental c/cpp plugin (#15395)

  • Support setting env vars in individual distribution builds. (#15422)

  • kotlin: add support for junit tests (#15382)

User API Changes

  • Upgrade Pex to 2.1.87. (#15472)

  • Deprecate [python].tailor_ignore_solitary_init_files in favor of more useful [python].tailor_ignore_empty_init_files (#15469)

  • Upgrade default Protoc version to 3.20.1 (native Apple Silicon support) (#15424)

  • Require that a target's interpreter_constraints are a subset of their dependencies' (#15373)

  • Add [python-infer].init_files as more intuitive replacement for [python-infer].inits (#15397)

Plugin API Changes

  • Move get_git deprecation to start in 2.14.0.dev0 (#15423)

Bug fixes

  • Only infer an init.py dep on a python_sources-generated target. (#15471)

  • kotlin: the plugin_id field on kotlinc_plugin target is optional (#15459)

  • support relative address syntax for JVM compiler plugin artifacts (#15462)

  • Fix lockfile generation for Docker, Terraform, and Clang-format to not require Python backend (#15453)

  • Fix boolean logic when merging interpreter constraints. (#15414)

  • Fix tags to work with filesystem arguments, overrides field, and python_tests (#15394)

  • Support the {chroot} env placeholder for all interactive processes that are not executed in the workspace. (#15401)

  • Fix [] in file names with target generators (#15383)

  • BSP consumes thirdparty artifacts via their classpath entries, rather than directly from the lockfile. (#15392)

Documentation

  • Improve error message for dependencies on incompatible Python resolves (#15416)

2.13.0.dev1 (May 10, 2022)

New Features

  • Initial support for building dists using mypyc. (#15380)

  • Support dependency inference on vcs_version targets. (#15385)

  • Support for getting a version string from git. (#15374)

  • Add tailor for poetry_requirements and pipenv_requirements (#15352)

User API Changes

  • Add default mapping for pygithub (#15361)

Bug fixes

  • Generalize Docker dep inference for all packageables. (#15375)

  • Fix tailor detection of existing python_requirements targets (#15363)

  • Add the "named args explanation" to other relevant parametrize error messages. (#15362)

  • Use abspath to sandbox in PATH for docker tool shims. (#15341)

Documentation

  • Improve help and error message for [python-infer].unowned_dependency_behavior (#15334)

  • Disallow ! patterns in build_ignore. (#15366)

2.13.0.dev0 (May 05, 2022)

New Features

  • BSP compile exposes loose classfiles to allow IntelliJ to invoke tests (#15347)

  • Add options to turn off tailor on a per-language basis (#15335)

  • Add lz4 support to archive extraction (#15245)

  • Implement tailor goal for Helm charts (#15191)

  • Write virtualenvs for Python tools as part of export (#15098)

User API Changes

  • Upgrade hadolint to 2.10.0 and add linux arm64 support (#15317)

  • Remove [test].xml_dir, [update-build-files].fix_python_macros, and [java-infer].third_party_imports (#15311)

  • Deprecate [golang].expected_version in favor of more flexible [golang].minimum_expected_version (#15306)

  • Upgrade Pex to 2.1.84. (#15288)

Plugin API Changes

  • Add update_env to process_execution::local. (#15340)

  • Allow for arbitrary suffixes when extracting (#15257)

Bug fixes

  • Fix error output of parametrize() (#15339)

  • Don't strip source roots when building dists with an existing setup.py (#15303)

  • Fix a bug in the python venv export logic. (#15294)

  • Fix non-determinism of package_data in generated setup.py files (#15292)

  • Simplify BSP metadata merging, and handle the empty list. (#15283)

  • BSP resolve filtering observes computed default values of resolve fields (#15282)

  • Memoize equality for CoarsenedTarget(s) to avoid exponential runtime in check. (#15277)

  • Fix ambiguity of Scala package objects with class or object definitions (#15265)

  • Fix issue with Docker publish when using [docker] tools. (#15255)

  • Do not lowercase Docker image tags. (#15254)

  • Fix the placement of the pex verbosity args. (#15243)

  • Fix use of @ in path names. (#15226)

  • Fix lockfile generation for duplicate jvm_artifact targets with jar fields. (#15219)

  • Support poetry wildcard requirements. (#15213)

  • golang: add more cache keys based on tool IDs (#15205)

Performance

  • Eagerly skip tools with default lockfiles in export-lockfiles goal (#15304)

  • MyPy and Pylint partition inputs via CoarsenedTarget (#15141)

Documentation

  • Improve error message for resolves x interpreter constraints issues (#15314)

  • Fix ProtobufSourcesOverridesField help message (#15272)

  • Update help for python resolves with recent improvements (#15228)

  • Don't log set up of binary shims (#15203)

  • Mention resolve when partitioning Mypy and Pylint (#15172)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pantsbuild.pants-2.13.0a1-cp39-cp39-macosx_11_0_arm64.whl (8.5 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pantsbuild.pants-2.13.0a1-cp39-cp39-macosx_10_15_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

pantsbuild.pants-2.13.0a1-cp38-cp38-macosx_10_15_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

pantsbuild.pants-2.13.0a1-cp37-cp37m-macosx_10_15_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

File details

Details for the file pantsbuild.pants-2.13.0a1-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 789bc64c79a6522063ff5b98fa3125571d362dd2d8abca722bb1b126bee3c9da
MD5 f48dc88bdc3535ccff4dce6aa2d3614d
BLAKE2b-256 dd6d4cc7b828aeaebaa79b36e4595b4554a90aa8284f50bbb67c39f8a366c304

See more details on using hashes here.

Provenance

File details

Details for the file pantsbuild.pants-2.13.0a1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c39a17cc5420acc97a6138a8023d5a66493e266a7ee8def478f1d5d4f0b1ffc
MD5 38bb43372af9bacbc7cad11fa78995ef
BLAKE2b-256 40c545a1c19b512830d735bb37bdb67432e07673fa55de05d337ef403c21ad79

See more details on using hashes here.

Provenance

File details

Details for the file pantsbuild.pants-2.13.0a1-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9efaf48cf0d417c2f034498babbbfa1266b9f67991b8b837d108ae7eee50ed25
MD5 221d7da2be4fce10f7b687d85c03204d
BLAKE2b-256 3b67c42ad16bd1ded230151597c6ea0d3bb0047a14bdfbb9b93bce07874ff9dd

See more details on using hashes here.

Provenance

File details

Details for the file pantsbuild.pants-2.13.0a1-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9bb1f21d3d44ba8823c542e0568573ac8e007e525d052d36278a68d39d77a314
MD5 55e3956560c1846cc285cd43bb1119bc
BLAKE2b-256 a557cc7bd7867f08aa0347a36ecd27700e6c151fa6d7fc2460da7c472535ce2e

See more details on using hashes here.

Provenance

File details

Details for the file pantsbuild.pants-2.13.0a1-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 83a450036f4730f43d6491cd241bf7205636fd766857c82e704b482fa30348e7
MD5 26349c1f8beaa1ea8a3b0a3a3d38c889
BLAKE2b-256 593b81582058135bf8c49e024b090ffd528379a1fa8d732f841ccca0baeb7e34

See more details on using hashes here.

Provenance

File details

Details for the file pantsbuild.pants-2.13.0a1-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ade369601eadb49bb48595a708f477d5346877aa629b97192ca872855d461c9
MD5 3f9850ae3df546aa7f4f25477561428c
BLAKE2b-256 aedb05b6d33e10ee7be68120b154e7d68769e38f7485124a27749a39b30be760

See more details on using hashes here.

Provenance

File details

Details for the file pantsbuild.pants-2.13.0a1-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.13.0a1-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4743266c7b8902f35606baeeb86208f14c64bf401bfdd1a24f574b04d466a4b6
MD5 614c9b159b9859336d67286becbf790c
BLAKE2b-256 e1fd2fb0e990e037c9afacb5453a35503809ef4af68622b167e8ce50a5f19ce4

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page