Skip to main content

A scalable build tool for large, complex, heterogeneous repos.

Project description

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

The latest documentation can be found at pantsbuild.org.

2.8.x Release Series

2.8.1rc2 (Jan 03, 2022)

Bug fixes

  • Fix .pyi type stubs to show up in python_distribution (cherrypick of #14033) (#14036)

  • Fix bug when docker pushing multiple tags. (cherrypick of #13764) (#14042)

  • Fix --log-levels-by-target not working for logs from Python code (Cherry-pick of #13939) (#13941)

  • Fix tailor not setting the name field (Cherry-pick of #13913) (#13923)

  • Fix .pyi files not automatically depending on __init__.py (Cherry-pick of #13844) (#13858)

2.8.1rc1 (Nov 30, 2021)

Bug fixes

  • [bugfix] Pass Docker env vars to docker publish. (cherrypick of #13669) (#13752)

  • Make tailor generate correct fields for python_requirements. (cherrypick of #13687) (#13688)

2.8.1rc0 (Nov 17, 2021)

Bug fixes

  • Fix download URL for grpc_python_plugin on macos (cherrypick of #13656) (#13659)

2.8.0 (Nov 17, 2021)

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

2.8.0rc6 (Nov 16, 2021)

New features

  • Add [twine].ca_certs_path option (Cherry-pick of #13593) (#13642)

User API Changes

  • Ban * globs and ! ignores in source: str field (Cherry-pick of #13629) (#13636)

  • Bump twine to 3.6.0 and add tool lockfile (Cherry-pick of #13594) (#13640)

Bug fixes

  • Fix Python dependency inference breaking with python_source targets (Cherry-pick of #13627) (#13633)

  • Register skip fields for python linters and mypy also on the python_test_utils target. (Cherry-pick of #13616) (#13623)

2.8.0rc5 (Nov 10, 2021)

Performance

  • Fix caching of binary lookups and avoid re-running pytest setup for environment changes (cherrypick of #13559) (#13561)

Documentation

  • Fix tailor confusion with macros vs. targets (cherrypick of #13574) (#13582)

2.8.0rc4 (Nov 09, 2021)

Bug fixes

  • Don't duplicate Go error logs when dependency failed to compile (Cherry-pick of #13502) (#13538)

  • Fix --no-print-stacktrace. (cherrypick of #13539) (#13541)

Documentation

  • Fix formatting of overrides field in docs (Cherry-pick of #13549) (#13552)

2.8.0rc3 (Nov 04, 2021)

Performance

  • Go: improve performance of first-party package analysis (Cherry-pick of #13476) (#13486)

  • Fix slow performance from recursive __repr__ and __hash__ for Go (Cherry-pick of #13492) (#13493)

2.8.0rc2 (Nov 02, 2021)

New Features

  • Add overrides to python_requirements and poetry_requirements (Cherry-pick of #13458) (#13475)

  • Add --tailor-check (Cherry-pick of #13432) (#13457)

  • Add [tailor].ignore_paths and [tailor].ignore_adding_targets (Cherry-pick of #13422) (#13454)

  • Validate that [tailor].build_file_name is compatible with [GLOBAL].build_patterns (Cherry-pick of #13420) (#13446)

Plugin API Changes

  • Fix fmt, lint, test, and check plugins having to use sources FieldSet value (Cherry-pick of #13456) (#13466)

Bug fixes

  • Do not cache Docker invocations between Pants runs (Cherry-pick of #13464) (#13467)

  • Upgrade to Pex 2.1.54 (Cherry picks of 50914a5e and 189cd753) (#13459)

2.8.0rc1 (Oct 28, 2021)

Bug fixes

  • Assume version 1 for older lockfiles without version key (cherrypick of #13399) (#13406)

  • Removes leading whitespace when tailoring BUILD files without header text (#13394)

  • Go: don't error for unsupported third-party sources with project introspection (Cherry-pick of #13377) (#13381)

  • Don't error for invalid Go third-party packages unless building them (Cherry-pick of #13405) (#13410)

  • Fix missing field for tffmt in lint. (cherrypick of #13355) (#13356)

Performance

  • Use --layout=packed for all monolithic resolves. (cherrypick of #13400) (#13403)

  • Don't download Go third-party dependencies multiple times (Cherry-pick of #13352) (#13378)

Documentation

  • Make check output more useful for Go and Java (cherrypick of #13379) (#13388)

2.8.0rc0 (Oct 24, 2021)

New Features

  • update-build-files goal formats BUILD files with Black (#13279)

  • Add overrides field to files and resources targets (#13304)

  • Add overrides field to shell_sources, shunit2_sources, and protobuf_sources (#13298)

  • Add overrides field to python_sources and python_tests target (#13270)

  • Depending on a python_distribution with pex_binary now includes the built dist (#13306)

  • Support arbitrary PEP-517 build systems. (#13285)

User API Changes

  • Pants's CLI output uses the full address dir:dir instead of the shorthand dir (#13274)

  • Rename [python-setup] to [python] and move into the python backend. (#13345)

  • The default sources for conftest.py and *_test.pyi now belong to new target generator python_test_utils, not python_tests (#13299)

  • Deprecate including conftest.py and .pyi files in python_tests target's sources field (#13320)

  • Rename docker_image field sources to source (#13327)

  • Merge docker version field into the image_tags field. (#13308)

  • Upgrade default black version from 21.8b0 to 21.9b0 (#13326)

  • Terraform: move terraform validate from lint to check (#13301)

  • Autoflake and Pyupgrade are now activated by experimental backends (#13317)

  • Add google cloud logging to default Python module map (#13305)

Plugin API Changes

  • Add support for structured output from publish goal. (#13292)

Bug fixes

  • Do not choke on . in tool names for experimental_shell_commands. (#13293)

Documentation

  • Fix documentation for file: URLs, and add an assist for malformed URLs. (#13272)

2.8.0.dev5 (Oct 17, 2021)

New Features

  • Add ./pants update-build-files to automate fixing some deprecation warnings (#13273)

  • Add [cli.alias] config section for command line alias support. (#13228)

  • Add run support for new experimental_run_shell_command target. (#13229)

  • Add azure to default Python module mapping (#13275)

  • Support linux arm64 binary tools. (#13249)

  • Add minimal Scala backend (#13130)

User API Changes

  • Fix dir: and dir:: to include generated targets (#13263)

  • Merge Docker image_name into the repository field. (#13225)

  • python_sources and python_tests targets no longer use dependency inference, only python_source and python_test targets (#13231)

Plugin API Changes

  • Verify each observed URL and Digest pair (#13266)

Bug fixes

  • Fix pyupgrade alias name conflict (#13282)

  • Fix generate_all_lockfiles. (#13280)

  • Don't invalidate dependency inference when unrelated file names change (#13248)

  • Fix ./pants help targets to not include deprecated target names (#13236)

2.8.0.dev4 (Oct 11, 2021)

New Features

  • Add support for pyupgrade (#13063)

  • Support optionally restarting interactive processes when input files change (#13178)

  • Package dependencies for shell command. (#13168)

  • Add help tools (#13135)

  • Docker build args config option (#13147)

  • Add [docker].env_vars option. (#13146)

  • Support for directly running a Docker image (#13120)

  • Docker image version tag (#13097)

  • Docker publish support (#13085)

  • New publish goal (#13057)

User API Changes

  • Add [mypy].extra_type_stubs (#13180)

  • Deprecate requirements_relpath and pyproject_toml_relpath in favor of source for python_requirements and poetry_requirements (#13204)

  • Deprecate module_mapping and type_stubs_module_mapping fields for python_requirement in favor of modules and type_stub_modules (#13197)

  • Deprecate python_library, protobuf_library, and shell_library in favor of python_sources, protobuf_sources, and shell_sources (#13196)

  • Add scikit-learn to the default module mapping (#13198)

  • Deprecate python_requirement_library in favor of python_requirement (#13133)

  • An explicit generate_setup field on python_distribution. (#13111)

  • Upgrade to Pex 2.1.51. (#13098)

Plugin API Changes

  • Deprecate Sources in favor of SourcesField, SingleSourceField, and MultipleSourcesField (#13202)

  • Rename ResourcesSources and split target into generator vs. atom (#13194)

  • Rename FilesSources and split target into target generator vs. atom target (#13190)

  • Add engine_error() context manager for testing plugin exceptions (#13108)

Bug fixes

  • [jvm] Ignore symbols exposed by unnamed packages. (#13214)

  • f.ext is now a file argument, not a goal (#13212)

  • pantsd falls back to socket usage if it cannot open a TTY. (#13155)

  • Do not change working directory when extracting archives (#13077)

  • Release the GIL while creating a Session. (#13127)

Performance

  • Changing global options doesn't invalidate as much (#13144)

Documentation

  • Improve a couple of log messages. (#13121)

  • [Docs] Filter out self from list of related subsystems. (#13148)

2.8.0.dev3 (Oct 01, 2021)

New Features

  • Make the number of dots in string dep inference an option. (#13059)

  • Docker image name tags (#13048)

  • Add a --closed option to the dependencies goal. (#13043)

  • Support multiple Docker registries per image. (#13047)

  • Add Docker registry field (#13017)

  • Support for PEP-517/518 builds. (#13012)

  • Add autoflake unused import remover to Python lint tools. (#13010)

  • Support tailoring non-addressable macros. (#12989)

  • Implement Java dep inference mapper and rules (#12978)

  • Include the experimental java backend in the Pants distribution. (#13003)

  • Have peek emit expanded sources and dependencies (#12882)

  • New experimental_shell_command (#12878)

  • Support tailoring with an alternative BUILD file name (#12979)

  • Add Java dependency analysis types and launcher using javaparser library. (#12890)

User API Changes

  • Remove Gofmt backend and activate it with pants.experimental.go (#13014)

  • Register terraform lint & validate backends when the terraform backend is registered (#13002)

  • Deprecate --type in the dependencies goal. (#12998)

Plugin API Changes

  • Add RuleRunner.write_digest() (#13044)

  • Change BinaryNotFoundError constructor to be more generic (#13001)

Bug fixes

  • Don't invalidate the scheduler when piping output. (#13028)

  • Ensure that Tree contents are uploaded after creation. (#13008)

  • Fix case sensitivity of module_mapping for python_requirements and poetry_requirements (#12980)

  • Fix spurious "Scheduling: ..." workunits with remote caching (#12973)

  • Fix ./pants dependencies --transitive when run on a target generator like python_library (#12956)

Performance

  • Use nailgun for javac and import parser (#12982)

2.8.0.dev2 (Sep 17, 2021)

New Features

  • Build and install python_distribution deps for test, run, and repl (#12573)

  • Tailor python_requirements macro invocations. (#12862)

  • Add script field to pex_binary for console scripts (#12849)

  • Add option to [python-setup] to handle a quirk when building python_distribution on MacOS Big Sur. (#12857)

User API Changes

  • Rename the typecheck goal to check (#12858)

  • Ban # in an address's target name (#12940)

  • Upgrade to Pex 2.1.50. (#12888)

  • Add new version of LockfileMetadata to support checking for identically specified requirements (#12782)

Plugin API Changes

  • Add py.typed files for pantsbuild distributions in order to satisfy PEP-561 (#12842)

Bug fixes

  • Fix "file-level dependencies" on files and resources targets to not pull in sibling files (#12941)

  • Add google_cloud_function to plugin dependencies. Fix typo. (#12932)

  • If [python-setup].invalid_lockfile_behavior = ignore, don't require Pants metadata in the lockfile (#12900)

Performance

  • Don't find tar, unzip, and zip as frequently (#12947)

2.8.0.dev1 (Sep 10, 2021)

New Features

  • Support --fail-under on merged coverage. (#12778)

  • Add python-docx to the module mapping dictionary (#12775)

  • Add python-pptx to the module mapping dictionary (#12776)

  • Add opencv-python to the default Python module mapping (#12777)

  • Add PyMuPDF to the default Python module mapping (#12774)

User API Changes

  • Deprecate --list-provides option. (#12759)

  • Upgrade default isort to latest isort==5.9.3 (#12756)

  • Add version to lockfile metadata headers (#12788)

Plugin API Changes

  • OutputPathField.value_or_default() no longer has an Address argument (#12837)

Bug fixes

  • Properly include file dependencies in docker build context (#12758)

  • DigestSubset should not short-circuit when there are ignores involved. (#12648)

  • Fix backports of std lib modules like dataclasses not working with dependency inference (#12818)

Performance

  • Improve cache reuse for ./pants package when using a constraints file or lockfile (#12807)

  • Upgrade to Pex 2.1.48 and leverage packed layout. (#12808)

Documentation

  • Warn if [python-repos] is set during lockfile generation (#12800)

  • Fix a markdown issue in a help string. (#12766)

2.8.0.dev0 (Sep 03, 2021)

New Features

  • Add support for creating GCP Cloud Functions. (#12735)

  • [experimental] Add proof-of-concept Java junit test rule. (#12177)

  • Support TOML tables for dict options in pants.toml (#12707)

User API Changes

  • Remove undocumented pants_version() symbol from BUILD files (#12745)

  • Remove deprecated [python-protobuf.mypy-plugin] in favor of [mypy-protobuf] (#12743)

  • Stop interpolating pants_supportdir in pants.toml and deprecate the option (#12705)

  • Error, don't warn, when --generate-lockfiles-resolve is set to a disabled tool lockfile (#12738)

  • Remove deprecated .with_binaries(). (#12724)

  • Update default [black].version to 21.8b0 (#12718)

  • Update futures to 0.3.17. (#12722)

  • Upgrade to Pex 2.1.47. (#12715)

  • Remove deprecated [pytest].pytest_plugins in favor of [pytest].extra_requirements (#12704)

  • Remove deprecated [grpc_python_plugin] in favor of [grpc-python-plugin] (#12706)

Plugin API Changes

  • Add intrinsic to produce a DigestEntries from a Digest which reference file content by hash (#12693)

Bug fixes

  • Fix UI rendering when a workunit has completed children but no running children (#12748)

  • Improve descriptions of the process executions for PEX_PATH composition. (#12736)

  • Absolutize all of the execute_pex_args in the venv script. (#12727)

  • Include .gitignore in default pantsd_invalidation_globs (#12711)

Performance

  • Simplify implementation of materialize directories (#12696)

Documentation

  • Fix rendering of the ABOUT file. (#12744)

  • Add specific and actionable instructions to stale lockfile errors (#12699)

  • Link to pants slack from pypi project page (#12701)

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.

Built Distributions

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page