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

2.11.1 (Jun 28, 2022)

The second stable release in the 2.11.x series, with only documentation changes since the previous rc!

Documentation

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

2.11.1rc3 (Jun 23, 2022)

Bug fixes

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

Documentation

  • Fix broken links to tailor documentation (#15844)

  • Handle anchors in doc_url() correctly (cherrypick of #15812) (#15822)

2.11.1rc2 (May 31, 2022)

User API Changes

  • Upgrade Pex to 2.1.90. (Cherry-pick of #15656) (#15659)

Bug fixes

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

  • python_requirements() can handle -r reqs.txt (Cherry-pick of #15672) (#15678)

  • Prevent collisions between attempts to materialize an immutable input digest. (Cherry-pick of #15652) (#15679)

2.11.1rc1 (May 23, 2022)

User API Changes

  • Revert tags changes, except for the python_tests bug fix (#15553)

  • Upgrade Pex to 2.1.88. (Cherry-pick of #15484) (#15486)

Bug fixes

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

  • Fix JVM resource classification and artifact grouping (Cherry-pick of #15567) (#15572)

  • Improve name= used for Python requirement target generators with tailor (Cherry-pick of #15507) (#15520)

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

  • Fix incorrect digest for JVM multiple jvm_artifact(.., jar=..) entries (Cherry-pick of #15571) (#15610)

2.11.1rc0 (May 13, 2022)

Bug fixes

  • Fix tags to work with filesystem arguments, overrides field, and python_tests (Cherry-pick of #15394) (#15413)

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

  • Fix [] in file names with target generators (Cherry-pick of #15383) (#15402)

  • Fix tailor detection of existing python_requirements targets (Cherry-pick of #15363) (#15371)

  • Add the "named args explanation" to other relevant parametrize error messages. (Cherry-pick of #15362) (#15369)

  • Use abspath to sandbox in PATH for docker tool shims. (Cherry-pick of #15341) (#15357)

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

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

Performance

  • Eagerly skip tools with default lockfiles in export-lockfiles goal (Cherry-pick of #15304) (#15309)

Documentation

  • Improve error message for dependencies on incompatible Python resolves (Cherry-pick of #15416) (#15440)

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

  • Disallow ! patterns in build_ignore. (Cherry-pick of #15366) (#15367)

  • Improve error message for resolves x interpreter constraints issues (Cherry-pick of #15314) (#15365)

  • Fix error output of parametrize() (Cherry-pick of #15339) (#15349)

2.11.0 (May 02, 2022)

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

2.11.0rc6 (Apr 30, 2022)

User API Changes

  • Upgrade Pex to 2.1.84. (Cherry-picks of #15200, #15281 & #15288) (#15289)

Bug fixes

  • Memoize equality for CoarsenedTarget(s) to avoid exponential runtime in check. (Cherry-pick of #15277) (#15278)

2.11.0rc5 (Apr 26, 2022)

Bug fixes

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

  • Do not lowercase Docker image tags. (Cherry pick of #15254) (#15260)

  • Fix the placement of the pex verbosity args. (Cherry-pick of #15243) (#15249)

2.11.0rc4 (Apr 25, 2022)

User API Changes

  • Upgrade Pex to 2.1.80. (Cherry-pick of #15179) (#15180)

Bug fixes

  • golang: add more cache keys based on tool IDs (Cherry-pick of #15205) (#15209)

  • Support poetry wildcard requirements. (Cherry-pick of #15213) (#15214)

  • Fix use of @ in path names (Cherry-pick of #15226) (#15231)

  • Fix lockfile generation for duplicate jvm_artifact targets with jar fields. (Cherry-pick of #15219) (#15230)

Documentation

  • Don't log set up of binary shims (Cherry-pick of #15203) (#15206)

  • Mention resolve when partitioning Mypy and Pylint (Cherry-pick of #15172) (#15181)

Performance

  • MyPy and Pylint partition inputs via CoarsenedTarget (Cherry-pick of #15141) (#15244)

2.11.0rc3 (Apr 16, 2022)

New Features

  • Address specs for parametrized target templates expand to their created targets (Cherry pick of #15126) (#15148)

User API Changes

  • Upgrade Pex to 2.1.79. (Cherry-pick of #15125) (#15129)

  • Ban terraform_module referring to subdirectories (Cherry-pick of #15106) (#15122)

  • Enable codegen on relocated files (Cherry-pick of #15100) (#15131)

Bug fixes

  • Clean PID-specific exception file if empty on process exit (#15086) (#15113)

  • Allow dashes in inferred asset strings (Cherry-pick of #15123) (#15154)

  • Fix typo in Pylint description (Cherry-pick of #14945) (#15157)

  • Fix when the same python_requirement defines both type stub and implementation (Cherry-pick of #15121) (#15127)

  • fix missing field check in go protobuf rules (Cherry pick of #15105) (#15118)

  • files/dirs swapped in Snapshot's repr (Cherry-pick of #15101) (#15114)

  • Preserve tombstones for workunits which complete while they still have children (cherrypick of #15088) (#15103)

Documentation

  • Add some codegen and terraform backends to docs generator (Cherry-pick of #15036) (#15156)

2.11.0rc2 (Apr 08, 2022)

User API Changes

  • Upgrade Pex to 2.1.78. (Cherry-pick of #15078) (#15079)

  • terraform: remove terraform_modules generator target type (Cherry pick of #15035) (#15063)

Bug fixes

  • Clean the export dir under dist/ before populating it. (cherrypick #15068) (#15075)

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

  • Fix default layout and use of PEX-repositories for legacy lockfiles (cherrypick of #15014) (#15032)

  • Pin pytest 7.0.1 (cherrypick of #14997) (#15013)

Documentation

  • Text in angle brackets needs to be escaped for the docsite. (Cherry pick of #15046) (#15056)

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

2.11.0rc1 (Mar 31, 2022)

New Features

  • Add Protobuf formatting using buf format (Cherry pick of #14907) ([#14917](https://github.com/pantsbuild/pa

  • Add registration for the Go Protobuf backend (Cherry pick of #14874) (#14900)

  • Restore experimental codegen backends disabled for 2.10 release (Cherry-pick of #14407) (#14932)

  • Add support for parsing address parameters to CLI specs parsing (cherrypick of #14949) (#14957)

User API Changes

  • Upgrade to Pex 2.1.75 for VCS lock support and deadlock fix (Cherry-pick of #14970) (#14976)

Plugin API Changes

  • Deprecate not implementing TargetGenerator in GenerateTargetsRequest implementors. (cherrypick of #14959) (#14962)

Bug fixes

  • Fix unrecognized field error and update-build-files to handle target generator moved fields (Cherry-pick of #14847) (#14930)

  • Fix missing check output by allowing disabled workunits to re-enable themselves (cherrypick of #14854, #14856, #14934) (#14942)

  • Upgrade Pex to 2.1.73. (#14875) (#14880)

  • Unify glob-matching implementations to fix malformed snapshot created by subsetting (cherrypick of #14889) (#14896)

  • Adds jvm_jdk field to protobufs when the Scala backend is enabled (#14891) (#14894)

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

  • Adds ClasspathEntryRequest classification for codegen target generators (#14893) (#14895)

Performance

  • Make PEX lockfile subsetting incremental (cherry-pick of #14944) (#14956)

2.11.0rc0 (Mar 17, 2022)

New Features

  • Generate and compile Go from Protobuf (#14714)

  • Add the ability to infer assets from strings for Python (#14049)

  • Add [python].lockfile_generator to allow using Pex for lockfile generation (#14740)

  • Add protobuf linting using Buf with pants.backend.codegen.protobuf.lint.buf backend (#14540)

  • Add run support to pyoxidizer_binary (#14646)

  • Add new [docker].tools option (#14361)

  • Add build_file_dir() symbol to BUILD files (#14827)

  • Adds excludes field to jvm_artifact targets (#14715)

  • Basic support for Helm charts (#14658)

  • Support package goal for Helm charts (#14797)

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

  • Default the parameters of parametrized dependencies on parametrized targets (#14788)

  • Allow for codegen targets to be used directly by JVM compiler requests (#14751)

User API Changes

  • Update default Python interpreter constraints to not use Python 3.6 (#14803)

  • python_sources and python_tests target generators no longer impact interpreter constraints calculations (#14821)

  • Target generators (like python_sources) now only directly depend on their generated targets (#14766)

  • Deprecate not explicitly setting [python].lockfile_generator (#14817)

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

  • Swap the order of generated names and parameters in Addresses. (#14814)

  • Rename _python_requirements_file target to _generator_sources_helper (#14727)

  • Add SSL_CERT_DIR and SSL_CERT_FILE to the default for [subprocess-environment].env_vars (#14808)

  • Upgrade Pex to 2.1.72. (#14795)

Plugin API Changes

  • Deprecate Subsystem.register_options in favor of the new attribute-based Option types (#14772)

  • New util rule for isolating binary tools. (#14374)

Bug fixes

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

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

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

  • golang: fix regression in analysis code (#14733)

Performance

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

  • Switch default tool lockfiles to Pex lockfiles for faster installation (#14811)

  • Port Process operations to use of DigestTrie (#14723)

Documentation

  • Improve REPL multiple resolves error to mention [python].default_resolve (#14778)

  • Switch from Aegean Check Mark to Multiplication X (#14764)

  • Improve documentation for python_test_utils (#14739)

2.11.0.dev3 (Mar 04, 2022)

New Features

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

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

  • JVM: add war file packaging (#13888)

  • Improve export to include pip in the venv. (#14640)

User API Changes

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

  • Upgrade Pex to 2.1.70. (#14700)

Plugin API Changes

  • Add SkipOption and improve ArgsListOption (#14660)

  • Move BinaryPath and BashBinary from pants.engine.process to pants.core.util_rules.system_binaries (#14629)

Bug fixes

  • Fix rendering of "Scheduling: ..." workunits introduced by workunit filtering. (#14681)

  • Give interactive processes a chance to gracefully shutdown (#14580)

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

  • Go: introduce cache key for compile actions (#14661)

  • Go: Properly disable CGo (#14623)

Performance

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

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

  • Skip capture of TRACE workunits by default (#13483)

2.11.0.dev2 (Feb 25, 2022)

New Features

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

User API Changes

  • Add output_path field to pyoxidizer_binary and change its default destination (#14607)

  • Upgrade terraform-hcl2-parser to version 3.0.3 (#14554)

Plugin API Changes

  • Rename pants.python.binares to pants.core.subsystems.python_bootstrap (#14613)

  • Add PythonToolBase.to_pex_request() to DRY tool installation (#14610)

  • Move PythonBinary from python.binaries to core.util_rules.system_binaries (#14609)

  • Add core/util_rules/system_binaries.py and relocate archive.py types like UnzipBinary to it (#14601)

Bug fixes

  • Show a helpful error message if a 3rdparty jar isn't available. (#14595)

  • Fix pyoxidizer_binary to support python_distribution targets that depend on others (#14620)

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

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

Performance

  • Fix PyOxidizer to write to ~/.cache/pants by using a named cache (#14582)

Documentation

  • Rewrite help for dependencies field to mention generated targets (#14621)

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

2.11.0.dev1 (Feb 22, 2022)

New Features

  • Support for file/files in JVM tests (#14537)

  • Support complete_platforms for python_awslambda. (#14532)

  • Support complete_platforms for Python GCFs. (#14530)

  • Properly support filesystem specs in the paths goal. (#14518)

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

  • Adds the plugin names field to scala sources (#14508)

  • jvm: teach dependency inference about multiple resolves (#14491)

  • scala: add implicit dependency on scala-library (#14450)

  • py_awslambda: pass through include_requirements:bool to pex_binary (#14469)

User API Changes

  • Upgrade Pex to 2.1.67. (#14544)

  • Create per-parametrization aliases for generator targets (#14529)

  • Per-resolve scala plugins (#14497)

Plugin API Changes

  • Replace GoalSubsystem.required_union_implementations with GoalSubsystem.activated() (#14313)

  • Add dynamic help (#14543)

  • Add global counters, and deprecate per-workunit counters. (#14541)

Bug fixes

  • Fix PyOxidizer depending on python_distribution with sdist=True (#14394)

  • Fix coverage base global report creation bug. (#14547)

  • Tests scala local plugins, and makes it work properly on scala_sources targets (#14512)

  • Allow use of parametrize with the jdk= field of JVM targets (#14510)

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

Performance

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

  • Calculate local distribution contents once per distribution (#14551)

Documentation

  • Fix the incompatible resolve error message to include the entire checked set of targets. (#14525)

  • Add disclaimer about [python].enable_resolves and lockfile generation (#14475)

2.11.0.dev0 (Feb 11, 2022)

New Features

  • Add support for long_description_path field in python_distribution (#14448)

  • Improve export goal to handle multiple Python resolves (#14436)

  • Add support for multiple compile/testing JDKs (#14421)

  • Add initial support for a parametrize builtin to generate multiple copies of a target (#14408)

  • scala: support multiple scala versions (#14425)

User API Changes

  • Remove support for JSON-encoded JVM lockfiles. (#14458)

  • Remove deprecated <stage>.tag version values. (#14453)

  • Remove deprecated [scala] version option. (#14455)

  • Replace compatible_resolves with resolve for JVM targets (#14441)

  • python_requirement uses resolve: str field, not compatible_resolves: list[str] (#14420)

  • Remove options, goals, and backends deprecated in Pants 2.10 (#14396)

  • Migrate the Docker context tags version from <stage>.tag to tags.<stage>. (#14376)

  • Default to use_deprecated_python_macros = false and deprecate the option (#14399)

Plugin API Changes

  • Adding DictOptions and WorkspacePathOption to the declarative options (#14433)

  • More declarative target generators for plugins (#14377)

Bug fixes

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

  • Fix issue picking up base image tag from Dockerfile with a digest present. (#14447)

  • Make sure [python].enable_resolves = false disables checking for valid resolves (#14418)

  • Fix pants_requirements target generator to use resolves (#14417)

  • Fix tailor when --use-deprecated-python-macros=false (#14404)

Documentation

  • help command reminds users about help-advanced (#14402)

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

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