Metadata-Version: 2.1
Name: pantsbuild.pants
Version: 2.10.0rc3+gita037710b
Summary: The ergonomic and hermetic software build system for Python, Java, Scala, Go, and Shell. Pants lets you fearlessly scale up your codebase.
Home-page: https://github.com/pantsbuild/pants
License: Apache License, Version 2.0
Project-URL: Documentation, https://www.pantsbuild.org/
Project-URL: Source, https://github.com/pantsbuild/pants
Project-URL: Tracker, https://github.com/pantsbuild/pants/issues
Project-URL: Changelog, https://www.pantsbuild.org/docs/changelog
Project-URL: Twitter, https://twitter.com/pantsbuild
Project-URL: Slack, https://pantsbuild.slack.com/join/shared_invite/zt-d0uh0mok-RLvVosDiX6JDpvStH~bFBA#/shared-invite/email
Project-URL: YouTube, https://www.youtube.com/channel/UCCcfCbDqtqlCkFEuENsHlbQ
Project-URL: Mailing lists, https://groups.google.com/g/pants-devel
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Build Tools
Description-Content-Type: text/markdown
Requires-Dist: PyYAML (<7.0,>=6.0)
Requires-Dist: ansicolors (==1.1.8)
Requires-Dist: fasteners (==0.16.3)
Requires-Dist: humbug (==0.2.7)
Requires-Dist: ijson (==3.1.4)
Requires-Dist: packaging (==21.3)
Requires-Dist: pex (==2.1.71)
Requires-Dist: psutil (==5.9.0)
Requires-Dist: python-lsp-jsonrpc (==1.0.0)
Requires-Dist: setproctitle (==1.2.2)
Requires-Dist: setuptools (<58.0,>=56.0.0)
Requires-Dist: toml (==0.10.2)
Requires-Dist: types-PyYAML (==6.0.3)
Requires-Dist: types-setuptools (==57.4.7)
Requires-Dist: types-toml (==0.10.3)
Requires-Dist: typing-extensions (==4.0.1)

Pants is an Apache2 licensed build tool written in Python and Rust.

The latest documentation can be found at [pantsbuild.org](https://www.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](https://github.com/pantsbuild/pants/pull/14706))

* Add `python_resolve` field to `protobuf_source` and `thrift_source` to support multiple resolves with codegen ([#14693](https://github.com/pantsbuild/pants/pull/14693))

### User API Changes

* Deprecate `[python-protobuf].runtime_dependencies` in favor of Pants discovering the dependency ([#14691](https://github.com/pantsbuild/pants/pull/14691))

* Move `--memory-summary` to `--stats-memory-summary` (Cherry-pick of #14652) ([#14655](https://github.com/pantsbuild/pants/pull/14655))

* Upgrade Pex to 2.1.70. (#14700) ([#14703](https://github.com/pantsbuild/pants/pull/14703))

### Bug fixes

* Fix address parse bug in `update-build-files --fix-python-macros`. (Cherry-pick of #14485) ([#14696](https://github.com/pantsbuild/pants/pull/14696))

* Don't show no-op regex-lint output. (Cherry-pick of #14656) ([#14671](https://github.com/pantsbuild/pants/pull/14671))

* Invalidate Go cache when Go version changes (Cherry-pick of #14661) ([#14672](https://github.com/pantsbuild/pants/pull/14672))

### Performance

* Reduce memory usage by interning Tasks and RuleGraph entries. (cherrypick of #14683) ([#14689](https://github.com/pantsbuild/pants/pull/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](https://github.com/pantsbuild/pants/pull/14597))

* Support include_requirements & complete_platforms for `python_awslambda`. (Cherry-picks of #14532 & #14469) ([#14533](https://github.com/pantsbuild/pants/pull/14533))

* Support complete_platforms for Python GCFs. (#14530) ([#14531](https://github.com/pantsbuild/pants/pull/14531))

* Plumb Pex's `--complete-platform` for pex_binary. (#14526) ([#14528](https://github.com/pantsbuild/pants/pull/14528))

### User API Changes

* Add `output_path` field to `pyoxidizer_binary` and change its default destination (Cherry-pick of #14607) ([#14611](https://github.com/pantsbuild/pants/pull/14611))

* Upgrade Pex to 2.1.67. (Cherry-pick of #14544) ([#14546](https://github.com/pantsbuild/pants/pull/14546))

### Bug fixes

* Fix `pyoxidizer_binary` to support `python_distribution` targets that depend on others (cherry-pick of #14620) ([#14626](https://github.com/pantsbuild/pants/pull/14626))

* Coursier caches are now determined by `-repos` configuration (#14603) ([#14606](https://github.com/pantsbuild/pants/pull/14606))

* Fix PyOxidizer to write to `~/.cache/pants` by using a named cache (Cherry-pick of #14582) ([#14590](https://github.com/pantsbuild/pants/pull/14590))

* adds `--no-default` to Coursier args so that we only use user-configured maven repos (#14581) ([#14584](https://github.com/pantsbuild/pants/pull/14584))

* Fix PyOxidizer depending on `python_distribution` with `sdist=True` (Cherry-pick of #14394) ([#14568](https://github.com/pantsbuild/pants/pull/14568))

* Avoid duplicated deprecation warnings by memoization. (Cherry-pick of #14511) ([#14553](https://github.com/pantsbuild/pants/pull/14553))

* Fix coverage base global report creation bug (cherypick of #14547) ([#14549](https://github.com/pantsbuild/pants/pull/14549))

### Performance

* Add support for rendering a summary of objects held by the graph (cherrypick of #14638) ([#14644](https://github.com/pantsbuild/pants/pull/14644))

* Shortcircuit source subsetting if there are no distributions. (cherrypick of #14564) ([#14566](https://github.com/pantsbuild/pants/pull/14566))

* Calculate local distribution contents once per distribution (cherrypick of #14551) ([#14555](https://github.com/pantsbuild/pants/pull/14555))

### Documentation

* Rewrite `help` for `dependencies` field to mention generated targets (Cherry-pick of #14621) ([#14627](https://github.com/pantsbuild/pants/pull/14627))

* Don't leak local paths into generated docs. (cherrypick #14591) ([#14592](https://github.com/pantsbuild/pants/pull/14592))

* Add disclaimer about `[python].enable_resolves` and lockfile generation (Cherry-pick of #14475) ([#14479](https://github.com/pantsbuild/pants/pull/14479))

## 2.10.0rc1 (Feb 14, 2022)

### New Features

* Improve `export` goal to handle multiple Python resolves (Cherry-pick of #14436) ([#14454](https://github.com/pantsbuild/pants/pull/14454))

### User API Changes

* `python_requirement` uses `resolve: str` field, not `compatible_resolves: list[str]` (Cherry-pick of #14420) ([#14435](https://github.com/pantsbuild/pants/pull/14435))

* Migrate the Docker context tags version from `<stage>.tag` to `tags.<stage>`. (Cherry-pick of #14376) ([#14403](https://github.com/pantsbuild/pants/pull/14403))

### Bug fixes

* Fix handling of Go version for third-party packages (Cherry-pick of #14457) ([#14459](https://github.com/pantsbuild/pants/pull/14459))

* Fix issue picking up base image tag from Dockerfile with a digest present. (Cherry-pick of #14447) ([#14456](https://github.com/pantsbuild/pants/pull/14456))

* Make sure `[python].enable_resolves = false` disables checking for valid resolves (Cherry-pick of #14418) ([#14439](https://github.com/pantsbuild/pants/pull/14439))

* Fix `pants_requirements` target generator to use resolves (Cherry-pick of #14417) ([#14423](https://github.com/pantsbuild/pants/pull/14423))

* Fix `tailor` when `--use-deprecated-python-macros=false` (Cherry-pick of #14404) ([#14424](https://github.com/pantsbuild/pants/pull/14424))

## 2.10.0rc0 (Feb 07, 2022)

### New Features

* Add `--fmt-only`, `--check-only`, and `--lint-only` ([#14356](https://github.com/pantsbuild/pants/pull/14356))

* Add support for building PyOxidizer apps ([#14183](https://github.com/pantsbuild/pants/pull/14183))

* Adds `run` support for `deploy_jar` targets ([#14352](https://github.com/pantsbuild/pants/pull/14352))

* New `[docker].executable_search_paths` option. ([#14360](https://github.com/pantsbuild/pants/pull/14360))

* Support Go 1.18 fuzz test targets ([#14357](https://github.com/pantsbuild/pants/pull/14357))

* Validate Python user lockfiles & improve tool lockfile error message ([#14353](https://github.com/pantsbuild/pants/pull/14353))

* Allow using Yapf with `update-build-files` rather than Black ([#14378](https://github.com/pantsbuild/pants/pull/14378))

* Graduate Thrift Python support to be stable with `pants.backend.codegen.thrift.apache.python` ([#14389](https://github.com/pantsbuild/pants/pull/14389))

### User API Changes

* Graduate Docker backend from experimental status. ([#14310](https://github.com/pantsbuild/pants/pull/14310))

* Graduate the Dockerfile linter Hadolint from experimental status. ([#14311](https://github.com/pantsbuild/pants/pull/14311))

* Merge `validate` goal with `lint` goal ([#14102](https://github.com/pantsbuild/pants/pull/14102))

* Rename Python resolve options and fields to not say "experimental" ([#14326](https://github.com/pantsbuild/pants/pull/14326))

* Add Thrift, Protobuf, Java, and Scala folders to default for `[source].root_patterns` ([#14363](https://github.com/pantsbuild/pants/pull/14363))

* Rename the `download-pex-bin` scope to `pex-cli`. ([#14344](https://github.com/pantsbuild/pants/pull/14344))

* Upgrade default Black version to 22.1.0 ([#14324](https://github.com/pantsbuild/pants/pull/14324))

* Upgrade default Pytest version to 7 ([#14380](https://github.com/pantsbuild/pants/pull/14380))

### Plugin API Changes

* Rename `LintRequest` to `LintTargetsRequest` ([#14312](https://github.com/pantsbuild/pants/pull/14312))

* New (optional) API for MyPy-friendly options registration ([#14331](https://github.com/pantsbuild/pants/pull/14331))

* Remove `PexFromTargetsRequest.additional_requirements` ([#14350](https://github.com/pantsbuild/pants/pull/14350))

* `ReplImplementation` now passes root targets, not transitive closure ([#14323](https://github.com/pantsbuild/pants/pull/14323))

* `LintRequest`, `FmtRequest`, and `CheckRequest` must set `name: ClassVar[str]` ([#14304](https://github.com/pantsbuild/pants/pull/14304))

### Bug fixes

* Warn when `[python-protobuf].runtime_dependencies` needs to use new target generator syntax ([#14391](https://github.com/pantsbuild/pants/pull/14391))

* Fix native cycle detection error message. ([#14381](https://github.com/pantsbuild/pants/pull/14381))

* Fix import parsing regression ([#14349](https://github.com/pantsbuild/pants/pull/14349))

* Include link dest in symlink error. ([#14384](https://github.com/pantsbuild/pants/pull/14384))

### Performance

* Lazy load help info ([#14305](https://github.com/pantsbuild/pants/pull/14305))

### Documentation

* Standardize how we reference formatters, linters, and checkers in goal summary ([#14355](https://github.com/pantsbuild/pants/pull/14355))

* Don't enumerate deprecated scopes in help. ([#14345](https://github.com/pantsbuild/pants/pull/14345))

* Don't render skipped tools in final summary with `fmt`, `lint`, `check`, and `test` ([#14303](https://github.com/pantsbuild/pants/pull/14303))

## 2.10.0.dev3 (Jan 28, 2022)

### New Features

* Support multiple disjoint Python resolves via `[python].experimental_resolves` ([#14299](https://github.com/pantsbuild/pants/pull/14299))

* Optionally render the `--dynamic-ui` with Prodash ([#14221](https://github.com/pantsbuild/pants/pull/14221))

* Add `context_root` field to `docker_image` and `default_context_root` option to `[docker]` scope. ([#14165](https://github.com/pantsbuild/pants/pull/14165))

### User API Changes

* Deprecate `generate-user-lockfile` and `[python].experimental_lockfile` in favor of `[python].experimental_resolves` ([#14288](https://github.com/pantsbuild/pants/pull/14288))

* Bump versions & regenerate lockfiles for several Python tools, including Twine, PyUpgrade, and MyPy Protobuf ([#14277](https://github.com/pantsbuild/pants/pull/14277))

* Upgrade Pex to 2.1.65. ([#14256](https://github.com/pantsbuild/pants/pull/14256))

### Plugin API Changes

* Remove `PexFromTargetsRequest(direct_deps_only: bool)` ([#14291](https://github.com/pantsbuild/pants/pull/14291))

* Rename `GenerateToolLockfileSentinel.options_scope` to `resolve_name` ([#14231](https://github.com/pantsbuild/pants/pull/14231))

* Rename `PythonModule` to `PythonModuleOwnersRequest` ([#14276](https://github.com/pantsbuild/pants/pull/14276))

### Bug fixes

* Fix plugin resolution running twice. ([#14294](https://github.com/pantsbuild/pants/pull/14294))

* Fix Pylint to consider transitive third-party dependencies ([#14289](https://github.com/pantsbuild/pants/pull/14289))

* Fix bad default module mapping for PyMongo ([#14284](https://github.com/pantsbuild/pants/pull/14284))

* go: filter out `vendor` directories in tailor ([#14259](https://github.com/pantsbuild/pants/pull/14259))

* Fix packaged file names for `pex_binaries` target generator ([#14269](https://github.com/pantsbuild/pants/pull/14269))

* Cap number of UI bars to terminal height ([#14228](https://github.com/pantsbuild/pants/pull/14228))

* Fix executability of materialized files for non-owners. ([#14298](https://github.com/pantsbuild/pants/pull/14298))

### Performance

* Dynamically choose per-process concurrency for supported processes ([#14184](https://github.com/pantsbuild/pants/pull/14184))

### Documentation

* Add some missing backends to generated docs ([#14290](https://github.com/pantsbuild/pants/pull/14290))

## 2.10.0.dev2 (Jan 22, 2022)

### New Features

* JVM lockfile invalidation headers and verification ([#14185](https://github.com/pantsbuild/pants/pull/14185))

* Add new `api-types` help goal ([#14081](https://github.com/pantsbuild/pants/pull/14081))

* Add line numbers to `--unowned-dependency-behavior` errors ([#14169](https://github.com/pantsbuild/pants/pull/14169))

* Add Flake8 first-party plugin support ([#14027](https://github.com/pantsbuild/pants/pull/14027))

* add runtime dependencies field for Apache Thrift for Python ([#14158](https://github.com/pantsbuild/pants/pull/14158))

* Add `#pants: no-infer-dep` pragma for ignoring imports ([#14059](https://github.com/pantsbuild/pants/pull/14059) and [#14225](https://github.com/pantsbuild/pants/pull/14225))

* Add local `.pants.rc` support ([#14142](https://github.com/pantsbuild/pants/pull/14142))

* thrift: add scrooge java backend ([#14043](https://github.com/pantsbuild/pants/pull/14043))

* add Avro codegen support for Java ([#13990](https://github.com/pantsbuild/pants/pull/13990))

### User API Changes

* add timeout for remote cache lookups ([#14224](https://github.com/pantsbuild/pants/pull/14224))

* Replace `coursier-resolve` goal with `generate-lockfiles` ([#14211](https://github.com/pantsbuild/pants/pull/14211))

* Replace `jvm-generate-lockfiles` goal with `generate-lockfiles` ([#14176](https://github.com/pantsbuild/pants/pull/14176))

* Deprecate `sourcefile-validation` in favor of `regex-lint` ([#14173](https://github.com/pantsbuild/pants/pull/14173))

* Deprecate `python_requirements` and `poetry_requirements` using old macro in favor of target generation ([#14075](https://github.com/pantsbuild/pants/pull/14075))

* Add try/except parsing to import_parser to avoid failing strict checks for optional imports ([#14216](https://github.com/pantsbuild/pants/pull/14216))

* Don't error on string imports with `[python-infer].unowned_dependency_behavior` ([#14179](https://github.com/pantsbuild/pants/pull/14179))

### Plugin API Changes

* Remove per-language indirection for formatter plugins. ([#14166](https://github.com/pantsbuild/pants/pull/14166))

### Bug fixes

* Fix complex `__import__` statements failing to parse with Python 2.7 - 3.7 ([#14232](https://github.com/pantsbuild/pants/pull/14232))

* `LockfileMetadata` - Replace flaky `_header_dict()` mechanism with more robust `header_attrs` mechanism ([#14229](https://github.com/pantsbuild/pants/pull/14229))

* More accurate reported runtime when `pantsd` is in use. ([#14177](https://github.com/pantsbuild/pants/pull/14177))

* Fix Pylint to run on transitive dependencies to avoid underreporting issues ([#13918](https://github.com/pantsbuild/pants/pull/13918))

* [Docker] Fix bug when a putative target address did not exist. ([#14125](https://github.com/pantsbuild/pants/pull/14125))

* Fix immutable inputs DCL bug. ([#14016](https://github.com/pantsbuild/pants/pull/14016))

### Performance

* Batching of `lint` and `fmt` invokes ([#14186](https://github.com/pantsbuild/pants/pull/14186))

### Documentation

* [Doc] Include backend source for goals, subsystems and targets in generated docsite. ([#14126](https://github.com/pantsbuild/pants/pull/14126))

## 2.10.0.dev1 (Jan 07, 2022)

### New Features

* JVM Resources support ([#13908](https://github.com/pantsbuild/pants/pull/13908))

* Expose Docker build context hash for image tag interpolation. ([#13959](https://github.com/pantsbuild/pants/pull/13959))

* Add Thrift IDL codegen using Apache Thrift for Python and Java and Scrooge for Scala ([#13987](https://github.com/pantsbuild/pants/pull/13987))

* Add new `image_labels` field to `docker_image`. ([#13973](https://github.com/pantsbuild/pants/pull/13973))

### User API Changes

* Deprecate `[validate].detail_level` in favor of `[sourcefile-validation].detail_level` ([#14103](https://github.com/pantsbuild/pants/pull/14103))

* Upgrade Hadolint (dockerfile linter) to from 2.6.0 to 2.8.0 ([#14110](https://github.com/pantsbuild/pants/pull/14110))

* Change third party module mapping to consider resolves ([#14034](https://github.com/pantsbuild/pants/pull/14034))

### Plugin API Changes

* Fix `@rule` effect validation for `not cacheable` types. ([#14069](https://github.com/pantsbuild/pants/pull/14069))

* Allow plugins to use range requirements by applying constraints to plugin resolution ([#14058](https://github.com/pantsbuild/pants/pull/14058))

### Bug fixes

* Reduce output from `scalafmt`, and lower reflective access option threshold for Google Java Format. ([#14109](https://github.com/pantsbuild/pants/pull/14109))

* Hook up Scalafmt and Google Java Format to `./pants lint` ([#14108](https://github.com/pantsbuild/pants/pull/14108))

* Fix `validate` goal crashing if not configured ([#14104](https://github.com/pantsbuild/pants/pull/14104))

* Fix dropped output race during UI teardown  ([#14093](https://github.com/pantsbuild/pants/pull/14093))

* Fix incorrectly setting `name` on `python_requirements` macro ([#14065](https://github.com/pantsbuild/pants/pull/14065))

* [jvm] Use appropriate coordinate serialization for Coursier CLI inputs. ([#14038](https://github.com/pantsbuild/pants/pull/14038))

* Fix `.pyi` type stubs to show up in `python_distribution` ([#14033](https://github.com/pantsbuild/pants/pull/14033))

* Fix file sources codegen for the Docker build context. ([#14024](https://github.com/pantsbuild/pants/pull/14024))

* [jvm] Parse maven coordinates using regular expression ([#14010](https://github.com/pantsbuild/pants/pull/14010))

* [jvm] Fix use of multiple scalac plugins when one plugin has multiple classpath entries ([#14012](https://github.com/pantsbuild/pants/pull/14012))

### Documentation

* Include provider info in help output for subsystems and target types. ([#13993](https://github.com/pantsbuild/pants/pull/13993))

* Fix help strings which were accidentally tuples, and add a validation. ([#14057](https://github.com/pantsbuild/pants/pull/14057))

## 2.10.0.dev0 (Dec 27, 2021)

### New Features

* Add duration and cache source to test output. ([#13889](https://github.com/pantsbuild/pants/pull/13889))

* Add `pex_binaries` target generator ([#13910](https://github.com/pantsbuild/pants/pull/13910))

* Support Docker build target stage ([#13956](https://github.com/pantsbuild/pants/pull/13956))

* Add `ssh` field to `docker_image`. ([#13957](https://github.com/pantsbuild/pants/pull/13957))

* Docker `FROM` target dep inference ([#13921](https://github.com/pantsbuild/pants/pull/13921))

* Docker context troubleshooter ([#13896](https://github.com/pantsbuild/pants/pull/13896))

* java: add protobuf code generation support using `protoc` ([#13989](https://github.com/pantsbuild/pants/pull/13989))

* Support `test --debug` with scalatest and junit. ([#13966](https://github.com/pantsbuild/pants/pull/13966))

### User API Changes

* Update shellcheck default version to v0.8.0 ([#13983](https://github.com/pantsbuild/pants/pull/13983))

* Upgrade to Pex 2.1.61 and use `--venv` copies. ([#13979](https://github.com/pantsbuild/pants/pull/13979))

* Remove deprecated `[python-setup]` in favor of `[python]` ([#14004](https://github.com/pantsbuild/pants/pull/14004))

* Remove deprecated `typecheck` goal as alias for `check` ([#13929](https://github.com/pantsbuild/pants/pull/13929))

* Remove deprecated `pants_requirement` in favor of `pants_requirements` ([#13927](https://github.com/pantsbuild/pants/pull/13927))

* Remove deprecated `--process-execution-local-cleanup` and `--process-execution-local-cache` in favor of `--process-cleanup` and `--local-cache` ([#13928](https://github.com/pantsbuild/pants/pull/13928))

### Plugin API Changes

* Add `OptionalSingleSourceField` ([#13982](https://github.com/pantsbuild/pants/pull/13982))

* Remove deprecated RuleRunner methods `create_file(s)` and `add_to_build_file`. ([#13954](https://github.com/pantsbuild/pants/pull/13954))

* Revert "Turn off validation for unset `SourcesField` if `required=False`" (#13856) ([#13944](https://github.com/pantsbuild/pants/pull/13944))

### Bug fixes

* [jvm] Fix parsing of `Coursier` report coordinates when `packaging` is reported. ([#13996](https://github.com/pantsbuild/pants/pull/13996))

* Restore the `pants` namespace package. ([#13972](https://github.com/pantsbuild/pants/pull/13972))

* Fix `--log-levels-by-target` not working for logs from Python code ([#13939](https://github.com/pantsbuild/pants/pull/13939))

* Fix `tailor` not setting the `name` field ([#13913](https://github.com/pantsbuild/pants/pull/13913))


