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

pantsbuild.pants-2.10.0rc4-cp39-cp39-macosx_11_0_arm64.whl (8.0 MB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pantsbuild.pants-2.10.0rc4-cp39-cp39-macosx_10_15_x86_64.whl (8.3 MB view hashes)

Uploaded CPython 3.9 macOS 10.15+ x86-64

pantsbuild.pants-2.10.0rc4-cp38-cp38-macosx_10_15_x86_64.whl (8.3 MB view hashes)

Uploaded CPython 3.8 macOS 10.15+ x86-64

pantsbuild.pants-2.10.0rc4-cp37-cp37m-macosx_10_15_x86_64.whl (8.3 MB view hashes)

Uploaded CPython 3.7m macOS 10.15+ x86-64

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