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.17.x Release Series

What's New

Overall

The scie-pants launcher binary is now the recommended way to run Pants. Use of a ./pants shell script in a repository is deprecated. Among other benefits, the scie-pants launcher is able to automatically download and maintain a Python distribution for running Pants. It also allows you to run pants from any directory within a repository and not just the build root. See the Pants installation instructions for additional information on how to migrate to scie-pants.

Backends

Python

Python dependencies are now analyzed via an intrinsic rule implemented in Rust for increased performance over the prior Python implementation of the rule. See #18854 for discusion of the performance improvements.

When exporting python_distribution targets, they can be installed as editable installs in the exports.

The default pip Pants uses under the hood has changed from 20.3.4 to 23.1.2. This newer pip has better dependency resolution performance in many cases, but may give different results than the earlier pip. Of course those results will still be correct in the sense that they will be compatible with your requirements and constraints.

Shell

The behavior of the workdir field on several shell-backend target types including shell_command has been updated to refer to the repository's build root when an empty string is set.

For the adhoc_tool target type, the stdout and stderr fields are now specified relative to the applicable workdir and also support absolute paths.

New: Javascript (experimental!)

Pants now has very early experimental support for Javascript thanks to ongoing efforts by Tobias Nilsson and Theo Ribeiro. Please note that the Javascript backend is still incomplete, is being actively developed, and probably has critical bugs. Despite that, the Pants maintainers would appreciate any feedback from the community to help guide our development efforts.

Enable the pants.backend.experimental.javascript backend to try out this support. Please file issues at https://github.com/pantsbuild/pants/issues/new/choose for any issues encountered.

New: Taplo TOML Formatter

Pants now supports the Taplo TOML formatter. Enable the pants.backend.tools.taplo backend to add this support.

Plugin API Changes

Rules should now request output types which do not need an input type via the new one-argument form of Get. For example, rules can now write await Get(ChosenLocalEnvironmentName). Certain request types which exists only to work around the previous lack of such synax are now deprecated in favor of the one argument Get() form.

DigestSubset is now symlink-aware.

2.17.0rc3 (Aug 13, 2023)

User API Changes

  • Upgrade the default pip to v23.1.2. (Cherry-pick of #19538) (#19541)

Bug Fixes

  • Scala: support Enums in dependency inference (Cherry pick of #19588) (#19593)

  • Fix the new tool lockfile deprecation message. (#19565)

  • Fix golangci-lint runner script (Cherry-pick of #19015) (#19473)

Documentation

  • Initial draft of What's New for v2.17.x (Cherry-pick of #19168) (#19595)

  • Add ruff, adjust pyugprade, autoflake in docs (Cherry-pick of #19555) (#19576)

  • Catch google artifact registry gotcha (Cherry-pick of #19568) (#19570)

  • Stop referring to ~/.cache/pants/setup in CI docs (Cherry-pick of #19554) (#19561)

  • Visibility: documentation fixes and clarifications. (Cherry-pick of #19438) (#19494)

2.17.0rc2 (Jul 14, 2023)

Bug Fixes

  • Visibility: fix issue with using target type in verbose rule selector. (Cherry-pick of #19437) (#19456)

  • Use the "package_name" variable to fix an UnboundLocalError. (Cherry-pick of #19433) (#19453)

  • Fix helm documentation example (Cherry-pick of #19271) (#19313)

Documentation

  • Tweak getting-help docs (Cherry-pick of #19418) (#19419)

  • Refine run_shell_command docs (Cherry-pick of #19413) (#19421)

  • Add a sponsorships page to the docsite. (Cherry-pick of #19412) (#19416)

  • Get doc titles from the in-repo markdown files (Cherry-pick of #19311) (#19321)

  • docs: layout tweak of caching info, remove toolchain :( and additional info about bazel-remote-cache (Cherry-pick of #19299) (#19329)

2.17.0rc1 (Jun 08, 2023)

Plugin API Changes

  • Deprecate using PythonBinary (Cherry-pick of #19209) (#19222)

Bug Fixes

  • Improve handling of additional files in Helm unit tests (Cherry-pick of #19263) (#19268)

  • Add taplo to the release (Cherry-pick of #19258) (#19259)

  • Handle from foo import * wildcard imports in Rust dep inference parser (Cherry-pick of #19249) (#19255)

  • Fix secondary ownership warning semantics (Cherry-pick of #19191) (#19224)

2.17.0rc0 (Jun 01, 2023)

User API Changes

  • Deprecate the version/extra_requirements options on python tools. (Cherry-pick of #19204) (#19211)

  • Terraform: Hashes for MacOS binaries have changed (Cherry-pick of #19004) (#19136)

  • Implement layout="zip" for Lambda/GCF, deprecating lambdex (Cherry-pick of #19076) (#19120)

  • Deprecate [mypy].extra_type_stubs and its lockfile. (Cherry-pick of #19084) (#19087)

  • Bring the tool --export option deprecation forward. (Cherry-pick of #19079) (#19083)

Bug Fixes

  • Discover Scala REPL main class and coordinates (Cherry-pick of #19189) (#19203)

  • Scrub the Pyenv install dir before attempting an install. (Cherry-pick of #19193) (#19197)

  • Avoid extra . in from .. import parent imports in Rust Python dep inference (Cherry-pick of #19175) (#19177)

  • Don't try and garbage collect tempfiles (Cherry-pick of #19103) (#19113)

  • If a shebang already exists when adding a preamble, preserve it. (Cherry-pick of #19133) (#19138)

  • Workaround botocore bug in S3 URL Handler backend (Cherry-pick of #19056) (#19111)

Documentation

  • Add tobni to Maintainers (Cherry-pick of #19195) (#19207)

  • Adjust FaaS docs for layout = "zip" (Cherry-pick of #19180) (#19198)

  • Add botocore-a-la-carte reference to s3 URL Handler (Cherry-pick of #19055) (#19109)

  • add bazel-remote to list of compatible remote caches (Cherry-pick of #19041) (#19115)

  • Fix docs link to pants_from_sources script. (Cherry-pick of #19088) (#19091)

2.17.0a1 (May 19, 2023)

Due to infrastructure issues, 2.17.0a1 is a second attempt at publishing 2.17.0a0.

2.17.0a0 (May 18, 2023)

NOTE: 2.17.0a0 was not released to PyPI due to infrastructure issues.

New Features

  • Add a workunit logging plugin (#18984)

  • javascript: Add yarn@v1 support (#18928)

  • javascript: Support Node.js subpath imports (#18934)

  • Add Taplo toml formatter (#18865)

  • Include the Pants native client in released wheels (#18957)

  • Extract Python dependencies in an intrinsic (#18854)

User API Changes

  • Do not publish wheels for all SHAs, and publish to PyPI from Github Actions. (#19028)

  • Support Python requirement target addrs in tool requirements. (#19014)

  • javascript: Add an explicit npm_distribution target instead of coupling to node_package (#18925)

  • Shorten the deprecation for export without --resolve. (#19000)

  • Upgrade Pex to 2.1.137. (#19003)

  • Remove the underlying implementation of anonymous-telemetry (#18952)

Plugin API Changes

  • Port Django migrations inference away from PythonDependencyVisitorRequest (#19008)

  • fmtrequest -> abstractfmtrequest (#18935)

Bug Fixes

  • Use {bin_name()} run as $0 in run_shell_command (#19020)

  • Make DigestSubset symlink-aware (#18963)

  • javascript: Do not add literal {chroot} to pnpm cache path (#18921)

Documentation

  • Clarify how to set $0 properly in run_in_shell_command (#19019)

  • Docs tweaks for 2.16.x (#19009)

  • Fix example first_party_dependency_version_scheme in docs (#18993)

2.17.0.dev5 (May 08, 2023)

New Features

  • javascript: Implement dependency inference opt-out and improve resillience (#18931)

  • javascript: Add support for the pnpm package manager (#18864)

  • Eagerly clean running nodes rather than interrupting them. (#18855)

  • javascript: Nodejs tests batch support (#18742)

  • New API type: CurrentExecutingGoals. (#18788)

User API Changes

  • javascript: Support package goal in node_build_script target (#18926)

  • Deprecate running Pants outside scie-pants. (#18833)

  • Upgrade Pex to 2.1.135. (#18876)

Plugin API Changes

  • Remove redundant PythonToolBase/JvmToolBase features. (#18805)

Bug Fixes

  • Ensure packaged artefacts are fully replaced in dist/ (#18930)

  • Use a set when calculating resolve names (#18939)

  • Use a set when calculating resolve names (#18939)

  • javascript: Handle package.json placed at the root of the repository (#18919)

  • Actually run deprecated targets fixer (#18860)

  • Remove existing entry if any when materialising symlink (#18873)

  • Ensure non-ambiguous args/env vars injection into PEXes (#18861)

  • Handle workdir="."/default properly in run_shell_command (#18840)

  • Write adhoc_tool(stdout/stderr="...") relative to workdir, support absolute paths (#18814)

  • Patch StreamingWorkunitContext.get_expanded_specs(). (#18713)

  • help backends: Only list enabled experimental backends unless advanced help. (#18821)

  • Use build root as workdir for shell_command(workdir="") (#18813)

  • Include pants.backend.url_handlers.s3 in pants distribution. (#18826)

Performance

  • Optimize Target and FieldSet operations (#18917)

  • Triage some noqa: PNT30 await-in-loops (#18831)

Documentation

  • Update the identity of the response team for CoC violation reporting. (#16410)

  • Fix adhoc output_... example, document run_shell_command workdir changes (#18894)

  • Add missing backtick in help string (#18907)

  • Add Salesforce to the users list (#18891)

  • update troubleshooting document about self-hosted action runner (#18900)

  • Credit the Works on ARM program for our CI resources. (#18892)

  • feat: update installation.md (#18836)

  • Remove reference to readme.com as the way to edit documentation (#18863)

  • Fix library name typo in third party example (#18862)

  • Update mypy and pytest documentation to refer to install_from_resolve (#18791)

  • Include symbols as topic in usage help. (#18825)

  • docs: reorder contributor steps, rustup is required for git hooks install to work smoothly (#18828)

2.17.0.dev4 (Apr 23, 2023)

New Features

  • javascript: Manage npm version with corepack (#18748)

  • python_distribution editable installs in exports (#18639)

User API Changes

  • Default to using the entire tool lockfile. (#18793)

  • Upgrade Pex to 2.1.134. (#18785)

  • Use the resolve's ICs for tools. (#18776)

  • Use Self backport in BinaryPath factory method. (#18763)

  • Deprecate "Secondary Ownership" semantics (#18737)

  • Expand versions range for ruff + upgrade it (#18707)

Plugin API Changes

  • Allow BinaryPaths to close over their type. (#18760)

  • Set a central default ICs for tools. (#18714)

Bug Fixes

  • The OverridesField.compute_value() must return a hashable value. (#18787)

  • Dedup graph errors. (#18770)

  • Flush metadata to disk before renaming immutable store files (#18768)

  • Clear FSDB materialization cache when removeing a file (#18747)

  • Use address as stable key when batching field sets in lint/test (#18725)

  • Fix repr for Fields that don't define default. (#18719)

  • Add ruff lint rules (#18716)

  • javascript: Use binary shims in nodejs sandboxes (#18682)

Documentation

  • Improve error location for invalid targets/target fields. (#18366)

  • Add info on how to configure Docker Desktop for using docker_environment (#18786)

  • Update linter documentation to refer to install_from_resolve (#18781)

  • docs: Fix typo on requirements-overrides code snippet (#18750)

  • Edit Python publishing docs for clarity. (#18718)

2.17.0.dev3 (Apr 10, 2023)

New Features

  • Helm: Add support for DNS lookups in Chart templates (#18670)

  • Include global Git ignore file and .git/info/exclude in pants_ignore to ignore for file watching (#18649)

User API Changes

  • Remove deprecated default ICs. (#18627)

Plugin API Changes

  • Move/Rename: goals/setup_py.py -> {util_rules,goals}/package_dists.py + subsystems/setup_py_generation.py (#18702)

  • Deprecate some Request types in favor of Get() with only one arg (#18655)

  • Add support for Get(MyType) syntax with no input args (#18648)

Bug fixes

  • Adds a fully-qualified path to a Python interpreter for pex_binary RunRequests (#18699)

  • Remove implicit conversion from std::io::Error to StoreError (#18696)

  • Add timeout to remote store calls, and adjust name of cache timeout. (#18695)

  • Makes adhoc_tool actually respect the extra_env_vars field; adds tests (#18692)

  • doc: Describe relevant error modes during rule compilation (#18663)

  • Bump minimum supported version of Pex to v2.1.129. (#18678)

  • Fix JVM resource JAR creation on older Mac OSes (#18673)

  • javascript: Do not read none mapped package.json files in javascript rules (#18523)

Documentation

  • Add PEP 621 pyproject.toml file docs (#18672)

  • Document AWS CDK issue that multiple users have encountered. (#18656)

  • Error when goals used without relevant backends activated (#18420)

  • Improve lockfile consumption error message. (#18638)

  • Remove a python-specific tip from the general prereqs page. (#18637)

  • Make UUID message clearer (#18561)

2.17.0.dev2 (Mar 31, 2023)

New Features

  • javascript: Test goal with package manager installed test runner support (#18554)

  • expose PANTS_VERSION and make it string-comparable (#18573)

User API Changes

  • Upgrade Pex to 2.1.131. (#18626)

Bug fixes

  • Ensure that sandboxed processes exit before their sandboxes are cleaned up (#18632)

  • Plumb entire lockfile/internal only code through create_pex_from_targets (#18622)

  • narrow pex_binary files warning (#18619)

  • Fix PexPEX invocations (#18610)

  • Improve debug information for docker auth, and expose an environment variable. (#18599)

Performance

  • Only materialize immutable files once per process (#18600)

Documentation

  • Fix a string that should have been an f-string (#18608)

  • Fix ./pants -> pants in some docs and help strings. (#18596)

2.17.0.dev1 (Mar 24, 2023)

New Features

  • engine: add an option to clear the destination directory when writing digest to disk (#18534)

  • javascript: NodeJS bootstrapping via binary paths, PATH, asdf or nvm (#18520)

  • javascript: Initial NPM support (#18326)

  • Always provide Python-for-Pants-scripts (#18433)

User API Changes

  • Upgrade Pex to 2.1.130. (#18576)

  • Deprecate old-style custom tool lockfiles. (#18494)

  • Let a user resolve shadow a tool lockfile of the same name (#18481)

Bug fixes

  • Ensure that a symlinked exported venv exists and is valid. (#18575)

  • Fail fast for attempts to use test --debug with a docker environment (#18560)

  • Declare ruff outputs as files. (#18551)

  • Add support for Docker registry auth (#18541)

  • Fix Poetry req synthesis for URLs with markers. (#18535)

  • Re-enable hardlinking using fclonefileat on macOS. (#18501)

Performance

  • Materialize "large" files in a new store location and hardlink them in sandboxes (#18153)

  • Finish parallelizing materialization of Process inputs (#18469)

Documentation

  • First pass at adhoc_tool documentation (#18531)

  • Add Tobias Nilsson to team page (#18571)

  • docs: fix an f-string in help (#18539)

  • Clarify that experimental_ shell functions are deprecated and replaced (#18529)

  • Update docs on running pants from sources with scie-pants. (#18513)

  • Add ExoFlare to user list. (#18496)

  • Fix malformed pantsbuild/example-python link in documentation (#18484)

  • update scie-jump cache directory reference (#18485)

  • Expand lockfile documentation to its own page. (#18471)

2.17.0.dev0 (Mar 10, 2023)

New Features

  • Expose environment information on process metadata (#18458)

  • Support running pants from anywhere in the project. (#18412)

User API Changes

  • Audit and update requirements for Python tools. (#18431)

  • Upgrade Pex to 2.1.128. (#18453)

Bug fixes

  • Preserve environment variables in pantsd to allow Docker auth. (#18465)

  • Only expose the equiv of from typing import * in prelude files (#18452)

  • Support type hints in prelude files. (#18442)

  • Synthesized lockfile targets should never err on missing lockfiles. (#18406)

  • Fixes to visualisations for xdot (#18421)

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

If you're not sure about the file name format, learn more about wheel file names.

pantsbuild.pants-2.17.0rc3-cp39-cp39-macosx_11_0_arm64.whl (13.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pantsbuild.pants-2.17.0rc3-cp39-cp39-macosx_10_15_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

pantsbuild.pants-2.17.0rc3-cp38-cp38-macosx_10_15_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.8macOS 10.15+ x86-64

pantsbuild.pants-2.17.0rc3-cp37-cp37m-macosx_10_15_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.7mmacOS 10.15+ x86-64

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d76c287627b992da96c2777541ecf6a07027bbd0ea75176a42a9278b7868b3e
MD5 113d0a2ee28cc961a1182bab6ea477f4
BLAKE2b-256 413d8b81fa50539072ffc0ec791546c399dc166031cb986230dbd2cc5f25d50b

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp39-cp39-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 aaac31297eb8d36ab3d5bbaf305962031c5fb9f054757303f2a6dd951065a375
MD5 c05fcb47c010313e32fca1aa4805bcda
BLAKE2b-256 d6a89bf4618c308ab58129276fe1dbc3927ee87e0735ea31f5777cbe84b535e8

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa65dd7a4d92de71df3b77f99cfc851e62946c805a752227e465bbf661c54a8f
MD5 b8fb26b681f329c6a654b4c2e417fab3
BLAKE2b-256 0fdf61d56f43f44af8c2097acf8c2e02a01ff415f1d4c867971b0e09142b4be8

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3349d1ed16b91cdb1e4422ba03978b01118430ddbcd454194fd654c664083813
MD5 2c58634280df8066cbe94156cdb9bee3
BLAKE2b-256 f8ba3e4032e6d942f5f03efe1e5ce0cd732a11145cca979fd2a8cd2e8230c304

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d3b50f4cf119b605aa18aee9eae0200356d893065b1066b2ea20ff058be3849
MD5 209b27a1209c82533ad243ff31a45575
BLAKE2b-256 4cacce3cf4b0d5ba70a408dec5f35f0f82378acd4371e8649d15513fa40a323d

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp38-cp38-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49d25adfff9464574a62ce027a3b7f8356ef28649395052e78285a2ceb2c1e6d
MD5 49ad3ff6aaa769a93ee581ea8688517c
BLAKE2b-256 c0bb1475fbfe73cb064a4ae334f05d6e3858f81ec6b9ce5bd3f5ec7d12bc6326

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 320b2587d2cc71c620e71a2eb6132edc4d65ff2a9ed1cf4d048a573ab4a126cf
MD5 0ed8068006fa8d6e95ea6fa9f4dbdf26
BLAKE2b-256 098fbff5b83a7b43f45b62aaa57a030155de1d6a036a5e737b6d313b6fb5c744

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3989cc40787d4a5852219bd8b02bbb964f2f23649bf6f01bc2c7dc48ca34d86
MD5 361bbf8168a457529dd274fad5e47449
BLAKE2b-256 f1230f82d0183a9a8928ead21c0c786c02af2c68df84406e7ed0ab7e118c16c1

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp37-cp37m-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d5e82292a9329057d20243a03d02ffcf24d482f68d69988012b9a6d07ef50094
MD5 4492a029f2f64b45484466d4eb4be72a
BLAKE2b-256 dac43974497668f0759f2e2d1f9c994161c53aed1423c7e965ed65e35e9b7f58

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.17.0rc3-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.17.0rc3-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b99d9e8f2be665fa01c79de4f221cb47e42a797edaa349ce4ce83db08f237c05
MD5 641ca89d1c26cf7b2649944028742186
BLAKE2b-256 2801b4c6c89a3ed7f71a02818abba5cf2c91fa30e03a85876f0866e98f5fe9ff

See more details on using hashes here.

Supported by

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