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.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

pantsbuild.pants-2.10.0rc3-cp39-cp39-macosx_11_0_arm64.whl (8.0 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pantsbuild.pants-2.10.0rc3-cp39-cp39-macosx_10_15_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

pantsbuild.pants-2.10.0rc3-cp38-cp38-macosx_10_15_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

pantsbuild.pants-2.10.0rc3-cp37-cp37m-macosx_10_15_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 45.9 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec6bbc60fa192c3f3d30d14bfb8d49084a99466b7a22c6a96cef650cd9ac9148
MD5 3eeeead10b380974bb03a17f5acdb8dd
BLAKE2b-256 578617dd2b8192bf387a2a947bb79a0ea5d103d1da30d1eb313c4d39a402e56f

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05c03c37dd318988b89515a30f496e6b5fe41b1148bb42675c084f21bebf27b7
MD5 114a6a111c65190576b15326886a0bb5
BLAKE2b-256 2199a827ea2a353d2abe0a42dfeac4cd4888538b971c7ee3db2494c5a0eb5e37

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp39-cp39-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.9, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5e6e92752b7aad12ac97cad36d46dcc38af79f6b1ea91ab44df8a2cb1230ac96
MD5 f9cf4f89f68546f2722ce9c5a5a8913c
BLAKE2b-256 5975b759582431cf6679e9550447c9b5f4ce4b6e1c45be6db8679ad618bb6b38

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 45.9 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9cbe9590641143e98eb2ada20f91b8a280fdcec93faf6dc8b484c7356ff014bd
MD5 833b56b079802f4255e52e2bf55fef1a
BLAKE2b-256 1c4375a72fae14378a1aa8951d04145aed55b155d8730d0151880b6dfcfe4c02

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 29e1d7226e64a752c0a0a5be871edfad77b79850cce1ed1472f54d4158491081
MD5 b801f934b3704499a699c7a5a10967df
BLAKE2b-256 f1e69b2b36a8351ad3da901ba65b0cfbae273c3cd8944cc11dcd376fa6e575ba

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 45.9 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7fbaa1c66e9c37690fc2d2464d978c03ece812b7604c1d1cf8671727c530546
MD5 a1b56e486e65146af9343ab444e61c27
BLAKE2b-256 01ac996f12b82208a9dd3c79b364c811ebb576789afc7653cf2af1d082d7843b

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pantsbuild.pants-2.10.0rc3-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 8.3 MB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for pantsbuild.pants-2.10.0rc3-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 766279598b00616c909870e161023d30370337051e631fe6ebc0ad6d47688f27
MD5 c7b1b6c03ddbcbc943418948facdbaed
BLAKE2b-256 c230a8e6577d3017c6789c668648e3e672ca5b66c895d7a6f2b4ea35194b78b1

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