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

2.10.1rc0 (Apr 07, 2022)

User API Changes

  • Upgrade Pex to 2.1.73. (Cherry-pick of #14875) (#15028)

Bug fixes

  • Do not use a repository-PEX if a PEX has platforms specified (cherrypick of #15031) (#15033)

  • Fix Pylint config check strings (Cherry-pick of #14946) (#14948)

  • add cache key for all Go SDK invocations (Cherry pick of #14897) (#14902)

Documentation

  • Fix presented provider backend for rules/subsystems. (Cherry pick of #14999) (#15023)

2.10.0 (Mar 23, 2022)

The first stable release of the 2.10.x branch, with no changes since the previous rc!

2.10.0rc5 (Mar 16, 2022)

User API Changes

  • Change default [python].resolves from 3rdparty/python/default_lockfile.txt to 3rdparty/python/default.lock (#14815)

Bug fixes

  • Fix exclusive spawn mechanism for relative paths and working directories. (cherrypick of #14812) (#14816)

  • Fix a coverage config rewriting bug. (cherrypick of #14784) (#14785)

  • Fix empty sys.path entries causing an error during invalidation glob calculation. (cherrypick of #14819) (#14822)

Performance

  • Don't restart Pantsd when requirements.txt and pyproject.toml change if using target generators (Cherry-pick of #14829) (#14831)

2.10.0rc4 (Mar 14, 2022)

New Features

  • Python dependency inference supports multiple resolves for first-party targets (Cherry-pick of #14486) (#14765)

Bug fixes

  • Upgrade Pex to 2.1.71, which fixes issues installing some PEXes. (#14768) (#14769)

Documentation

  • Update [python] docs with updates to the resolves feature (#14775)

  • Switch from Aegean Check Mark to Multiplication X (Cherry-pick of #14764) (#14767)

  • Improve documentation for python_test_utils (Cherry-pick of #14739) (#14748)

  • Improve REPL multiple resolves error to mention [python].default_resolve (Cherry-pick of #14778) (#14780)

2.10.0rc3 (Mar 04, 2022)

New Features

  • Add [python].resolves_generate_lockfiles to enable multiple resolves but with manual generation of lockfiles (Cherry-pick of #14675) (#14706)

  • Add python_resolve field to protobuf_source and thrift_source to support multiple resolves with codegen (#14693)

User API Changes

  • Deprecate [python-protobuf].runtime_dependencies in favor of Pants discovering the dependency (#14691)

  • Move --memory-summary to --stats-memory-summary (Cherry-pick of #14652) (#14655)

  • Upgrade Pex to 2.1.70. (#14700) (#14703)

Bug fixes

  • Fix address parse bug in update-build-files --fix-python-macros. (Cherry-pick of #14485) (#14696)

  • Don't show no-op regex-lint output. (Cherry-pick of #14656) (#14671)

  • Invalidate Go cache when Go version changes (Cherry-pick of #14661) (#14672)

Performance

  • Reduce memory usage by interning Tasks and RuleGraph entries. (cherrypick of #14683) (#14689)

2.10.0rc2 (Feb 26, 2022)

New Features

  • New --docker-build-verbose option to print build output to the console. (Cherry pick of #14557) (#14597)

  • Support include_requirements & complete_platforms for python_awslambda. (Cherry-picks of #14532 & #14469) (#14533)

  • Support complete_platforms for Python GCFs. (#14530) (#14531)

  • Plumb Pex's --complete-platform for pex_binary. (#14526) (#14528)

User API Changes

  • Add output_path field to pyoxidizer_binary and change its default destination (Cherry-pick of #14607) (#14611)

  • Upgrade Pex to 2.1.67. (Cherry-pick of #14544) (#14546)

Bug fixes

  • Fix pyoxidizer_binary to support python_distribution targets that depend on others (cherry-pick of #14620) (#14626)

  • Coursier caches are now determined by -repos configuration (#14603) (#14606)

  • Fix PyOxidizer to write to ~/.cache/pants by using a named cache (Cherry-pick of #14582) (#14590)

  • adds --no-default to Coursier args so that we only use user-configured maven repos (#14581) (#14584)

  • Fix PyOxidizer depending on python_distribution with sdist=True (Cherry-pick of #14394) (#14568)

  • Avoid duplicated deprecation warnings by memoization. (Cherry-pick of #14511) (#14553)

  • Fix coverage base global report creation bug (cherypick of #14547) (#14549)

Performance

  • Add support for rendering a summary of objects held by the graph (cherrypick of #14638) (#14644)

  • Shortcircuit source subsetting if there are no distributions. (cherrypick of #14564) (#14566)

  • Calculate local distribution contents once per distribution (cherrypick of #14551) (#14555)

Documentation

  • Rewrite help for dependencies field to mention generated targets (Cherry-pick of #14621) (#14627)

  • Don't leak local paths into generated docs. (cherrypick #14591) (#14592)

  • Add disclaimer about [python].enable_resolves and lockfile generation (Cherry-pick of #14475) (#14479)

2.10.0rc1 (Feb 14, 2022)

New Features

  • Improve export goal to handle multiple Python resolves (Cherry-pick of #14436) (#14454)

User API Changes

  • python_requirement uses resolve: str field, not compatible_resolves: list[str] (Cherry-pick of #14420) (#14435)

  • Migrate the Docker context tags version from <stage>.tag to tags.<stage>. (Cherry-pick of #14376) (#14403)

Bug fixes

  • Fix handling of Go version for third-party packages (Cherry-pick of #14457) (#14459)

  • Fix issue picking up base image tag from Dockerfile with a digest present. (Cherry-pick of #14447) (#14456)

  • Make sure [python].enable_resolves = false disables checking for valid resolves (Cherry-pick of #14418) (#14439)

  • Fix pants_requirements target generator to use resolves (Cherry-pick of #14417) (#14423)

  • Fix tailor when --use-deprecated-python-macros=false (Cherry-pick of #14404) (#14424)

2.10.0rc0 (Feb 07, 2022)

New Features

  • Add --fmt-only, --check-only, and --lint-only (#14356)

  • Add support for building PyOxidizer apps (#14183)

  • Adds run support for deploy_jar targets (#14352)

  • New [docker].executable_search_paths option. (#14360)

  • Support Go 1.18 fuzz test targets (#14357)

  • Validate Python user lockfiles & improve tool lockfile error message (#14353)

  • Allow using Yapf with update-build-files rather than Black (#14378)

  • Graduate Thrift Python support to be stable with pants.backend.codegen.thrift.apache.python (#14389)

User API Changes

  • Graduate Docker backend from experimental status. (#14310)

  • Graduate the Dockerfile linter Hadolint from experimental status. (#14311)

  • Merge validate goal with lint goal (#14102)

  • Rename Python resolve options and fields to not say "experimental" (#14326)

  • Add Thrift, Protobuf, Java, and Scala folders to default for [source].root_patterns (#14363)

  • Rename the download-pex-bin scope to pex-cli. (#14344)

  • Upgrade default Black version to 22.1.0 (#14324)

  • Upgrade default Pytest version to 7 (#14380)

Plugin API Changes

  • Rename LintRequest to LintTargetsRequest (#14312)

  • New (optional) API for MyPy-friendly options registration (#14331)

  • Remove PexFromTargetsRequest.additional_requirements (#14350)

  • ReplImplementation now passes root targets, not transitive closure (#14323)

  • LintRequest, FmtRequest, and CheckRequest must set name: ClassVar[str] (#14304)

Bug fixes

  • Warn when [python-protobuf].runtime_dependencies needs to use new target generator syntax (#14391)

  • Fix native cycle detection error message. (#14381)

  • Fix import parsing regression (#14349)

  • Include link dest in symlink error. (#14384)

Performance

  • Lazy load help info (#14305)

Documentation

  • Standardize how we reference formatters, linters, and checkers in goal summary (#14355)

  • Don't enumerate deprecated scopes in help. (#14345)

  • Don't render skipped tools in final summary with fmt, lint, check, and test (#14303)

2.10.0.dev3 (Jan 28, 2022)

New Features

  • Support multiple disjoint Python resolves via [python].experimental_resolves (#14299)

  • Optionally render the --dynamic-ui with Prodash (#14221)

  • Add context_root field to docker_image and default_context_root option to [docker] scope. (#14165)

User API Changes

  • Deprecate generate-user-lockfile and [python].experimental_lockfile in favor of [python].experimental_resolves (#14288)

  • Bump versions & regenerate lockfiles for several Python tools, including Twine, PyUpgrade, and MyPy Protobuf (#14277)

  • Upgrade Pex to 2.1.65. (#14256)

Plugin API Changes

  • Remove PexFromTargetsRequest(direct_deps_only: bool) (#14291)

  • Rename GenerateToolLockfileSentinel.options_scope to resolve_name (#14231)

  • Rename PythonModule to PythonModuleOwnersRequest (#14276)

Bug fixes

  • Fix plugin resolution running twice. (#14294)

  • Fix Pylint to consider transitive third-party dependencies (#14289)

  • Fix bad default module mapping for PyMongo (#14284)

  • go: filter out vendor directories in tailor (#14259)

  • Fix packaged file names for pex_binaries target generator (#14269)

  • Cap number of UI bars to terminal height (#14228)

  • Fix executability of materialized files for non-owners. (#14298)

Performance

  • Dynamically choose per-process concurrency for supported processes (#14184)

Documentation

  • Add some missing backends to generated docs (#14290)

2.10.0.dev2 (Jan 22, 2022)

New Features

  • JVM lockfile invalidation headers and verification (#14185)

  • Add new api-types help goal (#14081)

  • Add line numbers to --unowned-dependency-behavior errors (#14169)

  • Add Flake8 first-party plugin support (#14027)

  • add runtime dependencies field for Apache Thrift for Python (#14158)

  • Add #pants: no-infer-dep pragma for ignoring imports (#14059 and #14225)

  • Add local .pants.rc support (#14142)

  • thrift: add scrooge java backend (#14043)

  • add Avro codegen support for Java (#13990)

User API Changes

  • add timeout for remote cache lookups (#14224)

  • Replace coursier-resolve goal with generate-lockfiles (#14211)

  • Replace jvm-generate-lockfiles goal with generate-lockfiles (#14176)

  • Deprecate sourcefile-validation in favor of regex-lint (#14173)

  • Deprecate python_requirements and poetry_requirements using old macro in favor of target generation (#14075)

  • Add try/except parsing to import_parser to avoid failing strict checks for optional imports (#14216)

  • Don't error on string imports with [python-infer].unowned_dependency_behavior (#14179)

Plugin API Changes

  • Remove per-language indirection for formatter plugins. (#14166)

Bug fixes

  • Fix complex __import__ statements failing to parse with Python 2.7 - 3.7 (#14232)

  • LockfileMetadata - Replace flaky _header_dict() mechanism with more robust header_attrs mechanism (#14229)

  • More accurate reported runtime when pantsd is in use. (#14177)

  • Fix Pylint to run on transitive dependencies to avoid underreporting issues (#13918)

  • [Docker] Fix bug when a putative target address did not exist. (#14125)

  • Fix immutable inputs DCL bug. (#14016)

Performance

  • Batching of lint and fmt invokes (#14186)

Documentation

  • [Doc] Include backend source for goals, subsystems and targets in generated docsite. (#14126)

2.10.0.dev1 (Jan 07, 2022)

New Features

  • JVM Resources support (#13908)

  • Expose Docker build context hash for image tag interpolation. (#13959)

  • Add Thrift IDL codegen using Apache Thrift for Python and Java and Scrooge for Scala (#13987)

  • Add new image_labels field to docker_image. (#13973)

User API Changes

  • Deprecate [validate].detail_level in favor of [sourcefile-validation].detail_level (#14103)

  • Upgrade Hadolint (dockerfile linter) to from 2.6.0 to 2.8.0 (#14110)

  • Change third party module mapping to consider resolves (#14034)

Plugin API Changes

  • Fix @rule effect validation for not cacheable types. (#14069)

  • Allow plugins to use range requirements by applying constraints to plugin resolution (#14058)

Bug fixes

  • Reduce output from scalafmt, and lower reflective access option threshold for Google Java Format. (#14109)

  • Hook up Scalafmt and Google Java Format to ./pants lint (#14108)

  • Fix validate goal crashing if not configured (#14104)

  • Fix dropped output race during UI teardown (#14093)

  • Fix incorrectly setting name on python_requirements macro (#14065)

  • [jvm] Use appropriate coordinate serialization for Coursier CLI inputs. (#14038)

  • Fix .pyi type stubs to show up in python_distribution (#14033)

  • Fix file sources codegen for the Docker build context. (#14024)

  • [jvm] Parse maven coordinates using regular expression (#14010)

  • [jvm] Fix use of multiple scalac plugins when one plugin has multiple classpath entries (#14012)

Documentation

  • Include provider info in help output for subsystems and target types. (#13993)

  • Fix help strings which were accidentally tuples, and add a validation. (#14057)

2.10.0.dev0 (Dec 27, 2021)

New Features

  • Add duration and cache source to test output. (#13889)

  • Add pex_binaries target generator (#13910)

  • Support Docker build target stage (#13956)

  • Add ssh field to docker_image. (#13957)

  • Docker FROM target dep inference (#13921)

  • Docker context troubleshooter (#13896)

  • java: add protobuf code generation support using protoc (#13989)

  • Support test --debug with scalatest and junit. (#13966)

User API Changes

  • Update shellcheck default version to v0.8.0 (#13983)

  • Upgrade to Pex 2.1.61 and use --venv copies. (#13979)

  • Remove deprecated [python-setup] in favor of [python] (#14004)

  • Remove deprecated typecheck goal as alias for check (#13929)

  • Remove deprecated pants_requirement in favor of pants_requirements (#13927)

  • Remove deprecated --process-execution-local-cleanup and --process-execution-local-cache in favor of --process-cleanup and --local-cache (#13928)

Plugin API Changes

  • Add OptionalSingleSourceField (#13982)

  • Remove deprecated RuleRunner methods create_file(s) and add_to_build_file. (#13954)

  • Revert "Turn off validation for unset SourcesField if required=False" (#13856) (#13944)

Bug fixes

  • [jvm] Fix parsing of Coursier report coordinates when packaging is reported. (#13996)

  • Restore the pants namespace package. (#13972)

  • Fix --log-levels-by-target not working for logs from Python code (#13939)

  • Fix tailor not setting the name field (#13913)

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.10.1rc0-cp39-cp39-macosx_11_0_arm64.whl (8.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pantsbuild.pants-2.10.1rc0-cp39-cp39-macosx_10_15_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

pantsbuild.pants-2.10.1rc0-cp38-cp38-macosx_10_15_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.8macOS 10.15+ x86-64

pantsbuild.pants-2.10.1rc0-cp37-cp37m-macosx_10_15_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.7mmacOS 10.15+ x86-64

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 503a6a4ca98b6e8530944a5cd8cb91a987edc9b5b3ffd9b92ad198b6ec9435e9
MD5 e59e993bd131323a79bfe23cd7bcb204
BLAKE2b-256 a905796ded35981e1000d9aa7959c84a21c4b1516be7c7935d3c85dbeab7ea3b

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68e62cb09a04390f101d6c628a979b877e264050f09c7abaab0ae371b3192578
MD5 8ae5c2651faeac7973ea0d67b914c2c5
BLAKE2b-256 ad1b4b0355764628e03dc881ee969687178145a28a1a8c38e3cb6d666a6e9315

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0a491630f37611d614776ab9ad491088ae9aceeeea82bd07955739f9ba515eab
MD5 289ef950dc64c0b0348105f453fc7ec8
BLAKE2b-256 b71fbd848fa7613eb88ca7e3c0ce0231532dc0714b16eed7344acb39cd3b19cc

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dcd50d3974d0f16006a70b0685f2f9ee912473fc1ac0b1e059027b6a64b3ec91
MD5 288e35372839087b6c589e3dd88015c9
BLAKE2b-256 221bc677f2062bc31fdb94d2e8887bd10de4d2dd9e485c0c29a6fc6d6ad4ff82

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e0bc151f7945876cd6ebf46440a702dab50dfd134d03efdfd7419a29197357a5
MD5 1adda9263ec386351fe365d525023343
BLAKE2b-256 96234c53887f34ce3c3f1cd2fae97865f8380441c2d1e5d1ef9bff162e341964

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a001a6abf8a5ed4820b211db18186f773ebc5ffc9b8b0e305f747fbce643e187
MD5 977d5c3703e064640f6c25b90f393c11
BLAKE2b-256 b6365534da3e47a69c08f196fa520311d84e324497b378e4d892803f84515592

See more details on using hashes here.

File details

Details for the file pantsbuild.pants-2.10.1rc0-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for pantsbuild.pants-2.10.1rc0-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a308616d1e2d45c8b3c57320ec814b2548658e0c989d26379e1397debe9404ef
MD5 02c2c20cc241f1dcc50a8500f7ba89ee
BLAKE2b-256 6b32c8b329aa31ee2b1c06924a4c80b9db26b594241d64ac52a9fdd363124472

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