1.25.x Stable Releases

1.25.x Stable Releases

This document describes releases leading up to the 1.25.x stable series.

The 1.25.x series brings two major changes to Pants:

  1. Deprecating globs(), rglobs(), and zglobs() in BUILD files.
  2. Adding file args.

Please see https://groups.google.com/forum/#!topic/pants-devel/3nmdSeyvwU0 for more information.

1.25.0rc0 (02/4/2020)

API Changes

  • Deprecate globs, rglobs, and zglobs (#9040) PR #9040
  • Deprecate --owner-of in favor of file arguments (#9050) PR #9050
  • Deprecate --build-file-imports defaulting to warn and having the option allow (#9047) PR #9047
  • Deprecate --glob-expansion-failure in favor of --files-not-found-behavior (#9022) PR #9022
  • [thrift linter] use non-zero exit on warning when strict and zero exit warning when not strict (#9051) PR #9051

New Features

  • Allow using file args with every goal (#9048) PR #9048
  • Add --owners-not-found-behavior option for when file args do not have any owning targets (#9068) PR #9068
  • Support python2 in the setup.py rule. (#8956) PR #8956
  • [IntelliJ] Add compiler options and plugins to the output of export-dep-as-jar (#9036) PR #9036
  • [IntelliJ] Add javac_options and extra_jvm_options to the output of export-dep-as-jar (#9053) PR #9053

Bugfixes

  • Fix Python linters to work without pants.backend.python registered (#9059) PR #9059
  • Fix V2 test and setup-py2 to work with file args (#9056) PR #9056
  • Split Zinc argfile by newline instead of space (#9065) PR #9065
  • Fix race condition with deprecation warnings (#9060) PR #9060

Refactoring, Improvements, and Tooling

  • Change invalid file args to error instead of warn (#9041) PR #9041
  • Preserve the filesystem spec used to find owning targets (#9063) PR #9063
  • Decouple --owner-of implementation from --changed-* (#9046) PR #9046
  • Remove deps from the core into the Python backend's subsystems (#9049) PR #9049
  • Allow options to be registered passively. (#9061) PR #9061
  • Don't show core goals like binary and test when they have no implementation (#9002) PR #9002
  • Remove origin check from release.sh script (#9042) PR #9042
  • Snapshot subset intrinsic (#9006) PR #9006
  • No longer use globs, rglobs, and zglobs internally (#9029) PR #9029
  • Stop using globs in testprojects/ (#9039) PR #9039
  • Make fix_deprecated_globs_usage.py more robust (#9067) PR #9067

Documentation

  • Update docs to use the new ! exclude syntax for BUILD files (#9037) PR #9037

1.25.0.dev3 (01/29/2020)

API Changes

  • Remove the generate-pants-ini goal. (#8993) PR #8993
  • Deprecate --fast option (#8970) PR #8970
  • Switch to dot idea project type (#8745) PR #8745
  • Deprecate defaulting to --transitive (#8955) PR #8955
  • Add IPython subsystem and deprecate --repl-py options (#8996) PR #8996
  • Register certain optional conditionally on v1/v2 setup. (#8997) PR #8997

New Features

  • Allow filesystem specs with cloc2 and validate (#8985) PR #8985
  • Allow excludes in BUILD files via new ! syntax (#9025) PR #9025

Bugfixes

  • Ensure that every filesystem spec is valid (#9009) PR #9009
  • remove custom NodeResolveFingerprintStrategy (#8398) PR #8398
  • Removing the exception when setup_py task has no work to do. (#8620) PR #8620
  • Resolve v2 plugins. (#9020) PR #9020
  • Fix Outputting mixin for V2 goals (#9011) PR #9011
  • Fix non-deterministic ConsolidateClasspath (#9001) PR #9001
  • Fix validate and cloc2 breaking with targets with no sources (#9000) PR #9000
  • Fix rule type hint validation to work with from __future__ import annotations (#9004) PR #9004
  • correctly fingerprint scoverage options and copy output into dist/ (#8705) PR #8705
  • Restore support for dependencies outputting 3rdparty deps through new enum option (#8960) PR #8960
  • Set workunit parent IDs correctly (fixes #7969) (#8947) PR #8947

Refactoring, Improvements, and Tooling

  • Modify options parser to allow ! in file args (#9031) PR #9031
  • Refactor PathGlobs to support ! ignore globs in its constructor (#9032) PR #9032
  • Fix some clippy errors which will appear in 1.41.0 (#9027) PR #9027
  • Expand config_test.py to better define the Config API (#9021) PR #9021
  • Refactor engine/legacy/structs.py (#9023) PR #9023
  • Describe the origin of failure when globs do not match (#9013) PR #9013
  • Small improvements to release script (#8964) PR #8964
  • First usage of async-await (#9018) PR #9018
  • Refactor config.py to allow supporting possible future config file formats (#9014) PR #9014
  • Bump to Rust 1.40 (#9017) PR #9017
  • Improve unmatched globs error message (#9010) PR #9010
  • Improve error messages for rule graph issues (#8998) PR #8998
  • Add type hints to options.py, options_bootstrapper.py, and config.py (#8990) PR #8990
  • Move intrinsics code into new module (#8999) PR #8999
  • Change distribution lookup for JvmTask subclasses to call into JvmTask (#8938) PR #8938
  • Refactor --changed-include-dependees to use an Enum option (#8995) PR #8995
  • Allow for deprecation of child scopes (#8984) PR #8984

Testing

  • Fix Zipp 2.0 release breaking Python 2 integration tests (#8994) PR #8994

Documentation

  • Fix typo in in Python examples docs (#8987) PR #8987

1.25.0.dev2 (01/17/2020)

New Features

  • Add Bandit Python linter (#8929) PR #8929

API Changes

  • Deprecate --fmt-transitive and --lint-transitive and switch defaults to False (#8969) PR #8969
  • Use Python 3.6+ by default for Python users (#8968) PR #8968
  • Remove --cloc2-transitive (#8957) PR #8957

Refactoring, Improvements, and Tooling

  • Introduce SourcesSnapshot for goals that only need source files to operate (#8980) PR #8980
  • Tweak options parser to allow globs in filesystem specs (#8981) PR #8981
  • Gitignore the twine venv created when we run the release script. (#8966) PR #8966
  • Fix more typos (#8983) PR #8983
  • Add type hints to source/ (#8977) PR #8977
  • Add type hints to Address, Struct, TargetAdaptor, Parser, and HydratedTarget (#8967) PR #8967
  • Stop requesting AddressSpecs in @goal_rules (#8972) PR #8972
  • update maven artifact url (#8975) PR #8975
  • Use daemon thread (#8959) PR #8959
  • Add type hints to the setup of target roots (#8965) PR #8965
  • Port V2 python_test_runner.py integration tests to V2 style (#8924) PR #8924

1.25.0.dev1 (01/14/2020)

API Changes

  • Mark certain types as "side-effecting" (#8922) PR #8922
  • Rename @console_rule to @goal_rule (#8942) PR #8942
  • Deprecate --positional-arg-file in favor of --spec-file (#8928) PR #8928
  • Rename optionable_rule to subsystem_rule (#8893) PR #8893

New Features

  • Make streaming workunits report interval a configurable option (#8946) PR #8946
  • A rule to topologically sort targets. (#8921) PR #8921
  • Add --debug option to run V2 tests interactively. (#8827) PR #8827
  • Rules to support running setup.py commands (#8882) PR #8882

Bugfixes

  • Set V2 Pytest pex files as --not-zip-safe to fix occasional hanging (#8953) PR #8953
  • Fix _maybe_handle_help (#8945) PR #8945

Refactoring, Improvements, and Tooling

  • Use f-strings in src/python/pants/pantsd/pailgun_server.py + fix typos in comments. (#8949) PR #8949
  • Add some type annotations to goal/ and auth/ (#8934) PR #8934
  • Use f-strings on src/python/pants/testutil and src/python/pants/util/ (#8950) PR #8950
  • Rename public Target methods to use address_spec instead of spec (#8944) PR #8944
  • Only compile non-module exports for export-dep-as-jar goal (#8914) PR #8914
  • Address some remaining issues with setup-py2. (#8927) PR #8927
  • Tweak the argument parser to allow file system specs (#8932) PR #8932
  • Share the local LMDB store to avoid creating one per test method. (#8933) PR #8933
  • Allow python_test_runner.py to get coverage for individual targets (#8910) PR #8910
  • Fix confusing error for an @console_rule not returning a Goal (#8931) PR #8931
  • Have handle_workunits callback use kwargs (#8918) PR #8918
  • Refactor options_test.py (#8906) PR #8906
  • Simplify ./pants test --debug requesting one single address (#8925) PR #8925
  • Stop adding our own colors to V2 test output (#8926) PR #8926
  • Update core test model to include coverage results (#8851) PR #8851
  • Use color in v2 pytest (#8901) PR #8901
  • Hotfix Specs rename conflicting with setup-py2 change (#8920) PR #8920
  • Prepare 1.24.0rc1. (#8919) PR #8919
  • Rename Spec to AddressSpec (#8916) PR #8916
  • Bump up deprecations for the 1.26 series to earlier in the 1.26 dev series (#8908) PR #8908
  • Add type hints to specs.py (#8913) PR #8913
  • Add experimental --fmt-only flag (#8911) PR #8911
  • Extract rule for preparing chrooted python sources (#8899) PR #8899
  • Add deprecated.resolve_conflicting_options to facilitate moving options (#8903) PR #8903
  • Add shell_str type to improve --args option support (#8904) PR #8904

Testing

  • Skip hanging Pantsd integration test (#8961) PR #8961
  • Test multiple V2 formatters modifying the same files (#8850) PR #8850
  • Skip failing tests from #8943 (#8948) PR #8948
  • Add create_options_bootstrapper() test util for less boilerplate in V2 tests (#8943) PR #8943

Documentation

  • Add helpful error message to rule authors when merging non-digests (#8962) PR #8962
  • Fix typo in export docs (#8936) PR #8936

1.25.0.dev0 (01/06/2020)

API Changes

  • Deprecate --fmt-skip and --lint-skip (#8900) Issue #8346 PR #8900
  • Add --skip option to every linter/formatter subsystem (#8898) PR #8898
  • Add ESLint subsystem and deprecate node-distribution ESLint options (#8891) PR #8891
  • Add --black-skip, --isort-skip, and --flake8-skip (#8888) PR #8888
  • Deprecate running python-eval by default (#8889) PR #8889
  • Add scrooge-linter subsystem and deprecate lint-thrift options (#8894) PR #8894
  • Add checkstyle subsystem and deprecate --lint-checkstyle-configuration (#8896) PR #8896
  • Deprecate option.custom_types.dict_option and list_option (#8885) PR #8885
  • Add scalafix, scalafmt, and scalastyle subsystems and deprecate task-level config options (#8886) PR #8886
  • Stop using Java 6 and 7 internally (#8657) PR #8657
  • Bump default MyPy from 0.740 to 0.761 (#8866) PR #8866

Bugfixes

  • Use absolute path when running interactive process in tempdir (#8895) PR #8895
  • Fix ./pants lint2 for Black and isort (#8877) PR #8877 PR #8823
  • Provide input_files Digest to InteractiveRunner (#8855) PR #8855
  • Support enums when displaying option help choices (#8853) PR #8853
  • Hotfix MyPy not working on macOS due to type alias (#8887) PR #8887
  • Fix isort, Pytest, and MyPy options to be fingerprinted (#8871) PR #8871
  • Report a deprecation for the option name rather than for the dest. (#8856) PR #8856

Refactoring, Improvements, and Tooling

  • Use V2 isort internally (#8756) PR #8756
  • Refactor python_test_runner to use the new pex creation rule (#8852) PR #8852
  • Add type hints to option/ and subsystem/ (#8878) PR #8878
  • Replace deprecated assertRaisesRegexp with assertRaisesRegex (#8879) PR #8879
  • Remove deprecated --pytest-requirements, --pytest-timeout-requirements, --pytest-cov-requirements, and --pytest-unittest2-requirements (#8876) PR #8876
  • Partially type check remaining 250 files (#8875) PR #8875
  • Stop referencing Python 4 in Python interpreter constraints (#8867) PR #8867
  • Partially type check TestBase and 235 test files (#8874) PR #8874
  • Finish partially type checking all src code (#8865) PR #8865
  • Refactor option and subsystem tests (#8872) PR #8872
  • Type check build-support/bin/generate_travis_yml.py (#8868) PR #8868
  • Move option and subsystem tests from tests/python to src/python (#8870) PR #8870
  • make match() on Enum into a top-level function in meta.py (#8504) PR #8504
  • add SingleFileExecutable to make it easier to consume Snapshots of executables (#8860) PR #8860
  • improve ergonomics of checking for @union types with new @decorated_type_checkable decorator (#8496) PR #8496
  • Partially type check backend/native and 100 more files (#8864) PR #8864
  • Fix type hints for decorators in memo.py and meta.py (#8863) PR #8863
  • [IntelliJ] Export only modulizable targets when in export-dep-as-jar (#8812) PR #8812
  • Use raw strings to fix regex deprecation warnings (#8880) PR #8880
Generated by publish_docs from dist/markdown/html/src/python/pants/notes/1.25.x.html 2020-02-15T11:36:48.701155