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.1rc1 (Apr 30, 2022)
New Features
- Support poetry wildcard requirements. (Cherry-pick of #15213) (#15215)
Bug fixes
-
Do not lowercase Docker image tags. (Cherry pick of #15254) (#15259)
-
Clean PID-specific exception file if empty on process exit (Cherry pick of #15086) (#15112)
-
Fix use of
@
in path names (Cherry-pick of #15226) (#15233) -
Fix lockfile generation for duplicate
jvm_artifact
targets withjar
fields. (Cherry-pick of #15219) (#15232) -
Mention resolve when partitioning Mypy and Pylint (Cherry-pick of #15172) (#15182)
-
Fix when the same
python_requirement
defines both type stub and implementation (Cherry-pick of #15121) (#15128) -
Enable codegen on relocated files (Cherry-pick of #15100) (#15130)
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
from3rdparty/python/default_lockfile.txt
to3rdparty/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
andpyproject.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 toprotobuf_source
andthrift_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 topyoxidizer_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 supportpython_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
withsdist=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
fordependencies
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
usesresolve: str
field, notcompatible_resolves: list[str]
(Cherry-pick of #14420) (#14435) -
Migrate the Docker context tags version from
<stage>.tag
totags.<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 fordeploy_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 withlint
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 topex-cli
. (#14344) -
Upgrade default Black version to 22.1.0 (#14324)
-
Upgrade default Pytest version to 7 (#14380)
Plugin API Changes
-
Rename
LintRequest
toLintTargetsRequest
(#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
, andCheckRequest
must setname: 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
, andtest
(#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 todocker_image
anddefault_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
toresolve_name
(#14231) -
Rename
PythonModule
toPythonModuleOwnersRequest
(#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 withgenerate-lockfiles
(#14211) -
Replace
jvm-generate-lockfiles
goal withgenerate-lockfiles
(#14176) -
Deprecate
sourcefile-validation
in favor ofregex-lint
(#14173) -
Deprecate
python_requirements
andpoetry_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 robustheader_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
andfmt
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 todocker_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 fornot 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
onpython_requirements
macro (#14065) -
[jvm] Use appropriate coordinate serialization for Coursier CLI inputs. (#14038)
-
Fix
.pyi
type stubs to show up inpython_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 todocker_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 forcheck
(#13929) -
Remove deprecated
pants_requirement
in favor ofpants_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)
andadd_to_build_file
. (#13954) -
Revert "Turn off validation for unset
SourcesField
ifrequired=False
" (#13856) (#13944)
Bug fixes
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
Built Distributions
Hashes for pantsbuild.pants-2.10.1rc1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68728d040eeed724c007e9b23ca04b77ed3ea4bf4492a16922e7cd44ddb45faf |
|
MD5 | 049cacd7b59b8da4f1445aba77fa2dea |
|
BLAKE2b-256 | 3092528fcfdb542c0c1d9e3adabafdad3bcf14e56aa9e5c7a3475412e5862411 |
Hashes for pantsbuild.pants-2.10.1rc1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc83b1fdce5aefc4bfbd0c56897163948794449bb843ede9029615624e23f4e5 |
|
MD5 | 0a57c682c4c0e28632a6334e4b7d2ec2 |
|
BLAKE2b-256 | bc285418aca60a961eee03195d6243861dba97020c32f3994405dcbf94e27a7f |
Hashes for pantsbuild.pants-2.10.1rc1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25e6fcbf5da04da602284b1cc19690f617864a81d96dc8bf94b9106037e1abba |
|
MD5 | 9064ff6b3a221866c248b94012f1bccc |
|
BLAKE2b-256 | 771b38955cd8eae1921590f3c0bf49c4ad4baf2dd28cdaadab8a465f371e6067 |
Hashes for pantsbuild.pants-2.10.1rc1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c92076e7fee3241bde2210e7d0f681c3538c67672e7bba3899cade7c0d9c183f |
|
MD5 | 43687a95f6ad4fe7695322e7cac8739f |
|
BLAKE2b-256 | 9864141ac7c218b9f48456b208d990b4123845bd5b12b46f6597c84584e0b14a |
Hashes for pantsbuild.pants-2.10.1rc1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7be1dff19b5d1aca38ecf618ebb4c5fe8c6a425f71bc1b6466b588fcaa0b49ab |
|
MD5 | 3fa393fce3c2b42ba4e2ec4d3c7bc49f |
|
BLAKE2b-256 | 89cfd3afd0777d5b2cb30b294e485139b16c91fa225c04b77601e1389c45ca68 |
Hashes for pantsbuild.pants-2.10.1rc1-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d69c29d3fb52546373782d356837130ee05eb0efc1f82b1d6e2a255fa7c79b32 |
|
MD5 | 7dc4e050a946382b052a9769545d4ee1 |
|
BLAKE2b-256 | 15fadbe4b78de70d2002a254c79ee54fb837ebc82567d07e299b98f1a1251e01 |