Skip to main content

Test support for writing Pants plugins.

Project description

Pants is an Apache2 licensed build tool written in Python.

The latest documentation can be found at pantsbuild.

2.0.x Stable Releases

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

See https://www.pantsbuild.org/v2.0/docs/release-notes-2-0 for an overview of the changes in this release, and https://www.pantsbuild.org/docs/plugin-upgrade-guide for a plugin upgrade guide.

2.0.1rc2 (11/20/2020)

User API Changes

  • Revert premature deprecation of sources field for python_awslambda (#11216) PR #11216

Bugfixes

  • Move graph cycle detection to rust to fix recursion limit. (cherrypick of #11202) (#11203) PR #11203

  • Set the soft ulimit value more conservatively (cherrypick of #11194) (#11196) PR #11196

2.0.1rc1 (11/16/2020)

User API Changes

  • Deprecate the sources field for python_awslambda (Cherry-pick of #11176) (#11177) PR #11177

Bugfixes

  • Fix relative imports in dependency inference (Cherry-pick of #11181) (#11190) PR #11190

2.0.1rc0 (11/11/2020)

User API Changes

  • Add a specific error for target names containing slashes (cherrypick of #11115) (#11122) PR #11122

Bugfixes

  • Fix logs for test, lint, fmt, and typecheck to always print, even if cached (Cherry-pick of #11111) (#11116) PR #11116

  • Fix pytest.pex leaking into coverage data (Cherry-pick of #11110) (#11112) PR #11112

  • Fix Coverage not finding resource files when generating a report (Cherry-pick of #11129) #11139 PR #11139

  • Fix !! transitive excludes when used multiple times in a repo (Cherry-pick of #11103) (#11104) PR #11104

  • Fix setup_py().with_binaries() to properly inject dependencies (#11098) PR #11098

  • Upgrade to Pex 2.1.21 to fix interpreter selection and race condition (Cherry-pick of #11131) (#11133) PR #11133

  • Fix –pex-verbosity to work with the interpreter selection PEX (Cherry-pick of #11108) (#11120) PR #11120

2.0.0 (10/27/2020)

The first stable release in the 2.0.x series, with no changes since rc3.

Thank you for everyone’s feedback!

2.0.0rc3 (10/25/2020)

User API Changes

  • Deprecate several unused options (Cherry-pick of #11041) #11043 PR #11043

  • Deprecate unused run-tracker options (Cherry-pick of #11038) (#11039) PR #11039

Bugfixes

  • Fix PEX to always write to named_caches_dir, rather than ~/.pex (Cherry-pick of #11040) (#11042) PR #11042

  • Eagerly validate entry points for setup_py().with_binaries() (Cherry-pick of #11034) (#11036) PR #11036

Documentation

  • Improve several help messages (Cherry-pick of #11029) (#11035) PR #11035

2.0.0rc2 (10/22/2020)

User API Changes

  • Fold target help into the help system. (Cherry-pick of #11022) #11028 PR #11028

  • Rename pex-binary/python-distribution subsystems to avoid naming collisions. (Cherry-pick of #11007) (#11010) PR #11010

  • Increase default [python-setup].resolver_jobs to cpu_count / 2 (Cherry-pick of #11006) (#11011) PR #11011

  • Include <PYENV> in [python-setup].interpreter_search_paths default (Cherry-pick of #10998) (#11008) PR #11008

  • Upgrade Pex to 2.1.20 (Cherry-pick of #11014) (#11016) PR #11016

Plugin API Changes

  • Validate that option scopes and target aliases don’t collide. (Cherry-pick of #11004) #11015 PR #11015

New Features

  • Allow changing the versioning scheme for python_distribution first-party dependencies (Cherry-pick of #10977) (#10989) PR #10989

  • Add [python-setup].resolver_http_cache_ttl option (Cherry-pick of #10997) (#11002) PR #11002

  • Allow changing the URL to download tools like PEX and Protoc (Cherry-pick of #11013) (#11024) PR #11024

Bugfixes

  • Revert using libCST for dep inference due to performance (Cherry-pick of #11001) (#11005) PR #11005

  • Fix resource leak warning with stdio (Cherry-pick of #10995) (#10996) PR #10996

  • Fix ./pants repl to use global constrains when no targets specified (Cherry-pick of #10991) (#10992) PR #10992

  • Fix setup_py().with_binaries() to use the default entry point (Cherry-pick of #11021) #11026 PR #11026

  • Fix overly verbose FieldSet in stack traces (Cherry-pick of #10978) (#10990) PR #10990

  • Fix several bad usages of itertools.groupby() (Cherry-pick of #10976) (#10979) PR #10979

2.0.0rc1 (10/15/2020)

User API Changes

  • Restore several removed targets and fields to help with upgrading (#10970) PR #10970

New Features

  • Add ./pants target-types –all (Cherry-pick of #10957) (#10961) PR #10961

Bugfixes

  • Fix interpreter selection when building a PEX to use [python-setup].interpreter_search_paths (Cherry-pick of #10965) (#10967) PR #10967

  • Fix linter targets being skipped when repo has multiple interpreter constraints (Cherry-pick of #10974) #10975 PR #10975

  • Automatically set setuptools interpreter constraints if unspecified (Cherry-pick of #10951) (#10958) PR #10958

  • Fix config validation not erroring on global options in wrong scope (Cherry-pick of #10950) (#10956) PR #10956

  • Fix logging of lint result files (Cherry-pick of #10959) (#10968) PR #10968

2.0.0rc0 (10/11/2020)

User API Changes

  • Deprecate python_binary in favor of pex_binary (#10939) PR #10939

  • Deprecate [protoc].runtime_targets in favor of [python-protobuf].runtime_dependencies (#10926) PR #10926

  • Use the package goal to build setup-py dists. (#10919) PR #10919

  • Deprecate –print-exception-stacktrace to –print-stacktrace (#10912) PR #10912

Plugin API Changes

  • Use TransitiveTargetsRequest as input for resolving TransitiveTargets (#10915) PR #10915

  • Add await Get(Addresses, UnparsedAddressInputs) (#10913) PR #10913

  • Upgrade to Pex 2.1.18. (#10938) PR #10938

New Features

  • Add gRPC Python code generation (#10937) PR #10937

  • Add MyPy Protobuf plugin support (#10931) PR #10931

  • Add output_path field to python_binary, python_awslambda, and archive (#10899) PR #10899

Bugfixes

  • Fix for log messages/dynamic UI teardown conflict (#10940) PR #10940

  • Fix some dependencies-like fields not showing up with project introspection (#10923) PR #10923

  • Send SIGTERM to child processes upon SIGINT (#10930) PR #10930

  • Fix Python 3.8 syntax not working with dependency inference (#10907) PR #10907

  • Plumb ca_certs_path to the plugin resolver. (#10910) PR #10910

Documentation

  • Differentiate between User API vs. Plugin API changes in changelog (#10916) PR #10916

  • Streamline some goal descriptions. (#10911) PR #10911

2.0.0b3 (10/3/2020)

API Changes

  • Add a FileDigest type to differentiate file APIs from directory APIs (#10900) PR #10900

  • Deprecate awslambda and binary goals in favor of new package goal (#10881) PR #10881

New Features

  • Add archive target type to replace python_app (#10895) PR #10895

  • Add relocated_files target type (#10880) PR #10880

  • Add support for .pyi type stubs (including for first-party) (#10759) PR #10759

Bugfixes

  • Upgrade Pex to 2.1.17. (#10901) PR #10901

  • Add back blocked flag on BoundedCommandRunner workunit (#10873) PR #10873

Refactoring, Improvements, and Tooling

  • Log long running workunits when the dynamic UI is disabled (#10890) PR #10890

  • Add a 'coverage_' prefix to artifact key (#10891) PR #10891

  • Remove unused Nailgun code (#10883) PR #10883

  • Add several rule descriptions and debug hints (#10878) PR #10878

  • fs_util Directory subsetting ignores non-matches (#10854) PR #10854

  • Clean up trace logging (#10875) PR #10875

  • A new mechanism for showing “did you mean” help. (#10872) PR #10872

  • Check in the Pants logo. (#10871) PR #10871

  • Improved type annotations for OrderedSet and FrozenOrderedSet, removed code duplication (#10868) PR #10868

Documentation

2.0.0b2 (9/25/2020)

API Changes

  • Remove .*/ from –build-ignore defaults (#10856) PR #10856

New Features

  • Partition MyPy based on interpreter constraints (#10817) PR #10817

Bugfixes

  • Fix dependency inference AST parsing to include file names (#10857) PR #10857

  • Validate the names of directory children, and normalize output directory/file names (#10850) PR #10850

  • Fix empty key for global options in run tracker (#10807) PR #10807

  • Locate bash before using it to locate BinaryPaths for other tools (#10858) PR #10858

Refactoring, Improvements, and Tooling

  • Move PantsEnvironment into SessionValues (#10862) PR #10862

  • Delete binaries/ and net/. (#10861) PR #10861

  • Add RuleRunner.set_options() (#10859) PR #10859

  • Improve support of MyPy requirements when Python 2 used (#10853) PR #10853

  • A script to download rust build helper binaries. (#10851) PR #10851

  • Hotfix merge conflict in MyPy tests. (#10867) PR #10867

2.0.0b1 (9/23/2020)

API Changes

  • Default to setting LC_ALL and LANG in subprocesses again (#10800) PR #10800

  • Default to [python-infer].inits = false (#10813) PR #10813

  • Deprecate –interpreter-constraints option where it no-ops (#10833) PR #10833

  • Upgrade setuptools from 49.6.0 to 50.3.0 and wheel from 0.31.1 to 0.35.1 (#10803) PR #10803

New Features

  • Restore support for third-party requirements with MyPy (#10811) PR #10811

Bugfixes

  • Plumb the custom certs file through to Pip (via Pex) (#10837) PR #10837

  • Fix MyPy with Python 2-only third-party requirements (#10820) PR #10820

  • Fix setup_py.with_binaries() to automatically inject dependencies (#10829) PR #10829

  • Fix run not working with foo:main entry point. (#10821) PR #10821

  • Fix internal_only PEXes runtime interpreter diverging from buildtime (#10818) PR #10818

  • Local process cache validates that digests exist locally before hitting (#10789) PR #10789

  • Better Ctrl-C handling in the test –debug case (#10835) PR #10835

  • Fix –pants-ignore-warnings behavior (#10845) PR #10845

  • Fix display of “Snapshotting” in dynamic UI (#10797) PR #10797

Refactoring, Improvements, and Tooling

  • Change Display impl of Key (#10848) PR #10848

  • OptionsBootstrapper is provided via a new SessionValues facility rather than a Param (#10827) PR #10827

  • Internally stop ignoring missing imports with MyPy (#10828) PR #10828

  • Make get_options_to_record a ‘public’ api. (#10808) PR #10808

  • Useful equality for relevant options types (#10815) PR #10815

  • Clean nodes with uncacheable dependencies once per session (#10814) PR #10814

  • Disable pantsd when piping output for internal script (#10810) PR #10810

  • Simplify logging initialization (#10812) PR #10812

  • Remove support for “weak” Gets (#10805) PR #10805

  • Un-revert Add cache_failures option to Process type (#10796) PR #10796

  • Remove reset_interactive_output_stream (#10791) PR #10791

  • Allow creating empty directories with the engine (#10760) PR #10760

  • Use “output” and “input” instead of “product” and “subject” (#10790) PR #10790

  • Add graph test for UncacheableDeps nodes only running once (#10795) PR #10795

  • Fix our release script to use the correct Python (#10841) PR #10841

  • Refactor core/util_rules/archive.py to use BinaryPaths (#10836) PR #10836

  • Work around trailing slash issue with protobuf codegen (#10849) PR #10849

  • Consolidate “runner” PEXes into “tool” PEXes (#10852) PR #10852

Testing

  • Re-export QueryRule from pants.testutil.rule_runner (#10806) PR #10806

Documentation

2.0.0b0 (9/15/2020)

API Changes

  • Upgrade to Pex 2.1.16. (#10782) PR #10782

  • Restore running internal only PEXes via discovered Python (#10779) (#10788) PR #10779

Bugfixes

  • @rules consume params to prevent some types of ambiguity (#10764) PR #10764

  • Fix xdg-open. (#10773) PR #10773

  • Hide BinaryPath test processes from TUI by default. (#10774) PR #10774

  • Signal handling fixes (#10758) PR #10758

  • Fix UUIDRequest scoping. (#10780) PR #10780

  • Fix DictStringToStringField not working with default values (#10776) PR #10776

  • Sandbox Pex temporary files. (#10772) PR #10772

Refactoring, Improvements, and Tooling

  • remoting: move target_platform property into environment variable (#10713) PR #10713

  • Add the ability to capture all known scope options in run tracker. (#10778) PR #10778

  • fs_util cat-proto has –child-dir arg (#10228) PR #10228

  • Simplify –print-exception-stacktrace logic (#10786) PR #10786

  • Various ExceptionSink improvements (#10781) PR #10781

  • Revert “Run internal only pexes via discovered python. (#10779)” (#10785) PR #10785

  • Support volatile processes. (#10768) PR #10768

  • Run internal only pexes via discovered python. (#10779) PR #10779

  • Fix a leaking pytest-cov abstraction. (#10775) PR #10775

  • Support tests for BinaryPaths. (#10770) PR #10770

Documentation

2.0.0a3 (9/11/2020)

API Changes

  • Replace cloc with count-loc, using much faster SCC program (#10740) PR #10740

  • Upgrade default isort from 4.6 to 5.5 (#10737) PR #10737

  • Disambiguate binary and lambda output. (#10735) PR #10735

New Features

  • Add runtime_binary_dependencies field to python_tests target (#10756) PR #10756

  • Pass proxy-related env vars through to Pex calls. (#10762) PR #10762

  • Support custom CA bundles. (#10757) PR #10757

  • Add support to MyPy for first-party plugins (#10755) PR #10755

  • Filter log levels by target (#10729) PR #10729

Bugfixes

  • fix incorrect mapping of parameters into PyRemotingOptions struct (#10752) PR #10752

  • Fix MyPy to work by default with Python 3.6+ code and Black with 3.8+ code (#10750) PR #10750

  • Temporarily disable 3rd-party requirements support for MyPy (#10765) PR #10765

Refactoring, Improvements, and Tooling

  • Support binary dependencies in tests. (#10744) PR #10744

  • Add support to MyPy for third-party requirements and stubs (PEP 561) (#10753) PR #10753

  • Add new intrinsic Paths to avoid snapshotting (#10741) PR #10741

  • Remove unused FFI types and tar_api.rs (#10742) PR #10742

  • Remove daemonize method + tests (#10749) PR #10749

  • Some refactoring around pantsd and warning filtering (#10748) PR #10748

  • Refactor pytest_runner_integration_test.py (#10736) PR #10736

  • Switch the backend of AsyncSemaphore to tokio’s Semaphore. (#10738) PR #10738

  • Refactor find_valid_field_sets. (#10732) PR #10732

  • Upgrade to Rust v1.46.0 (#10694) PR #10694

Documentation

  • Fix ./pants help $goal showing the goal in “related subsystems” (#10754) PR #10754

2.0.0a2 (9/3/2020)

New Features

  • Support adding arbitrary env vars to test processes (#10715) PR #10715

  • Add a plugin hook for setup-py kwargs (#10721) PR #10721

Bugfixes

  • Fix the testutil wheel’s imports not working due to namespace packages (#10725) PR #10725

  • Fix Pipenv not parsing requirement extras (#10722) PR #10722

  • Fix invalid shebang for BinaryPaths script (#10710) PR #10710

  • Fix retrieval of bytes from artifacts in StreamingWorkunitHandler (#10698) PR #10698

Refactoring, Improvements, and Tooling

  • Improve Pylint to use –python-setup-resolve-all-constraints (#10726) PR #10726

  • Reorganize pants/backend/python (#10724) PR #10724

  • Improve RuleGraph convergence time slightly (#10700) PR #10700

  • Snapshots of single files store normalized paths. (#10707) PR #10707

  • Add product type to the Rule trait to simplify unit testing. (#10720) PR #10720

Testing

  • Add RuleRunner.get_target() (#10714) PR #10714

  • Port more tests from TestBase to RuleRunner (#10704) PR #10704

Documentation

  • Formalize support for VCS-style requirements via PEP 440 (#10728) PR #10728

2.0.0a1 (8/28/2020)

API Changes

  • Upgrade default Black version to 20.8b1 (#10696) PR #10696

Bugfixes

  • Fix test –debug to be hermetic, but keep run and repl non-hermetic (#10701) PR #10701

  • Properly fix setting a custom coverage config file (#10692) PR #10692

  • remoting: output directories in action results reference trees (#10691) PR #10691

Refactoring, Improvements, and Tooling

  • Unify logging implementations and remove simplelog (#10686) PR #10686

Testing

  • Rename run_rule to run_rule_with_mocks (#10702) PR #10702

  • Add RuleRunner as a Pytest-style replacement to TestBase (#10699) PR #10699

  • Remove unused TestBase setup (#10697) PR #10697

Documentation

  • Fix stale comments in logger.rs (#10695) PR #10695

  • Document rule graph construction and open issues (#10690) PR #10690

2.0.0a0 (8/24/2020)

API Changes

  • Temporarily disable protobuf support. (#10685) PR #10685

  • Simplify python_requirement_library by deprecating the python_requirement object (#10669) PR #10669

  • Updated default version of pytest to 6.0.1 (#10328) PR #10328

New Features

  • Adds a pipenv_requirements macro (#10654) PR #10654

  • Add transitive excludes for dependencies with !! (#10663) PR #10663

Bugfixes

  • Fix Coverage loading a custom config file (#10670) PR #10670

  • Fix Rust 3rdparty logs showing up with –dynamic-ui (#10640) PR #10640

  • Fix logging deadlock when trace logging is used (#10635) PR #10635

  • Fix project name canonicalization. (#10628) PR #10628

Refactoring, Improvements, and Tooling

  • Revert “Fix run, repl, and test –debug to have hermetic environments (#10668)” (#10688) PR #10688

  • Implement RuleGraph construction using data flow analysis (#10645) PR #10645

  • Fix run, repl, and test –debug to have hermetic environments (#10668) PR #10668

  • Handle workunits corresponding to canceled Nodes. (#10659) PR #10659

  • Add support for JSON coverage reports (#10625) PR #10625

  • Add an FFI function for reading a FrozenDict (#10666) PR #10666

  • Stream output of typecheck, rather than dumping at the end (#10656) PR #10656

  • Allow binary to be implemented without implementing run (#10660) PR #10660

  • Reduce noisy log messages from @rule params (#10658) PR #10658

  • Add type hints to TestBase (#10647) PR #10647

  • Refactoring in graph (#10637) PR #10637

  • Stream output of test, rather than dumping at the end (#10634) PR #10634

  • Preserve Pytest’s exit code with ./pants test (#10632) PR #10632

  • Rename –per-target-caching to –per-file-caching for lint and fmt (#10630) PR #10630

  • Upgrade setuptools from 49.2.0 to 49.60 (#10626) PR #10626

  • Allow test –debug to run on multiple targets sequentially (#10629) PR #10629

  • Stream output of fmt, rather than dumping at the end (#10627) PR #10627

  • Stream output of lint, rather than dumping at the end (#10538) PR #10538

  • Add coverage reports as artifacts on the test goal workunit (#10623) PR #10623

Testing

  • Change TestBase.request_product() to take an iterable of subjects (#10682) PR #10682

  • Only use TestBase for tests that run rules (#10680) PR #10680

  • Change pants_integration_test.py to use Pytest-style functions (#10675) PR #10675

  • Consolidate GoalRuleTestBase into TestBase (#10679) PR #10679

  • Rename TestBase.request_single_product to TestBase.request_product (#10678) PR #10678

  • Reorganize testutil/ (#10674) PR #10674

  • Add PantsIntegrationTest.setup_tmpdir() (#10673) PR #10673

  • Change PantsIntegrationTest to be hermetic by default (#10672) PR #10672

  • Remove unused pytest-timeout plugin from default –pytest-plugins (#10631) PR #10631

  • Rename PantsRunIntegrationTest to PantsIntegrationTest (#10664) PR #10664

  • Add tests for HTML and XML coverage reports. (#10211) PR #10211

Documentation/Logging

  • Provide better debugging information for rule parameters (#10665) PR #10665

  • Stop including the origin module in Debug logs (#10642) PR #10642

  • Change log level for rules and filesystem intrinsics to trace (#10639) PR #10639

  • Change some remote execution log messages to debug level (#10643) PR #10643

2.0.0.dev9 (8/15/2020)

API Changes

  • Deprecate –option-name-check-distance (#10611) PR #10611

New Features

  • Allow restricting use of resolve_all_constraints. (#10614) PR #10614

Bugfixes

  • Revert #10603 so that conftest.py belongs to python_tests again (#10619) PR #10619

  • Spawning against materialized binaries works. (#10577) PR #10577

  • Fix linter reports when there are multiple generated (#10612) PR #10612

  • Fix log not always showing up when –dynamic-ui is set (#10616) PR #10616

Refactoring, Improvements, and Tooling

  • Simplify core/goals/test.py (#10622) PR #10622

  • Remove passive options mechanism (#10621) PR #10621

  • Speed up resolving requirements through –use-first-matching-interpreter Pex flag (#10442) PR #10442

2.0.0.dev8 (8/13/2020)

API Changes

  • Change conftest.py to default to python_library rather than python_tests (#10603) PR #10603

  • Deprecate –python-setup-platforms (#10596) PR #10596

  • Make zip_safe default to False for python_binary targets. (#10608) PR #10608

New Features

  • Add –python-infer-string-imports (#10609) PR #10609

  • Add –pex-verbosity option to facilitate debugging (#10604) PR #10604

Bugfixes

  • Fix binary running to correctly work with source roots. (#10607) PR #10607

  • Fix issues with REPL implementation (#10597) PR #10597

  • Fix regression in unmatched globs error message (#10595) PR #10595

  • Require provides field for a python_distribution target (#10591) PR #10591

Refactoring, Improvements, and Tooling

  • Rename determine_source_files.py and strip_source_roots.py (#10588) PR #10588

  • Add XML test results as artifacts on the test goal workunit (#10606) PR #10606

  • Add non-root pantsbuild user to remote execution image (#10583) PR #10583

  • Move –files-not-found-behavior and BUILD file options out of bootstrap options (#10586) PR #10586

  • Remoting: limit retries for execution requests. (#10600) PR #10600

  • Ensure MyPy always runs with at least Python 3.6 internally. (#10602) PR #10602

Documentation

  • Improve errors for invalid Get objects (#10593) PR #10593

2.0.0.dev7 (8/10/2020)

API Changes

  • A python_distribution target. (#10565) PR #10565

  • Enable Python dependency inference by default (#10520) PR #10520

  • Targets act as aliases for their files (#10511) PR #10511

New Features

  • Allow using file addresses on the command line (#10573) PR #10573

  • Add –build-patterns option (#10559) PR #10559

  • Allow protobuf_library targets to specify a python source root. (#10549) PR #10549

  • Restore the missing init injection logic. (#10517) PR #10517

  • Add –pex-executable-search-path (#10489) PR #10489

  • Add support for bandit output file. (#10412) PR #10412

Bugfixes

  • Sync before executing a process if running in Docker (#10568) PR #10568

  • Fix some issues from #10535 Address changes (#10555) PR #10555

  • Remove self-inflicted invalidation caused by exception logging. (#10521) PR #10521

  • Fix bug that caused setup-py to hang if src root==buildroot. (#10509) PR #10509

  • Fix ExternalTool to use relative paths (#10503) PR #10503

  • Fix ./pants binary not outputting the full output path (#10506) PR #10506

Refactoring, Improvements, and Tooling

  • Stop validating that ! dependency ignores are used (#10585) PR #10585

  • Lower the default for –python-setup-resolver-jobs (#10584) PR #10584

  • Automatically inject dependencies on sibling files when dependency inference is unused (#10582) PR #10582

  • Use a constraints file in this repo. (#10579) PR #10579

  • Disable speculation by default (#10581) PR #10581

  • upgrade to Rust v1.45.2 (#10556) PR #10556

  • Move –tag and –exclude-target-regexp out of bootstrap options (#10569) PR #10569

  • Allow for disabling pantsrc in OptionsBootstrapper independently of options values (#10562) PR #10562

  • Refactor rule to resolve address specs (#10563) PR #10563

  • Stop using AddressWithOrigin for precise file arguments (#10551) PR #10551

  • Always use generated subtargets with file arguments (#10550) PR #10550

  • Remove unused SymbolTable (#10544) PR #10544

  • Support and require disambiguated file addresses (#10535) PR #10535

  • Revert “Add cache_failures option to Process type (#10433)” (#10534) PR #10534

  • Simplify source root stripping. (#10543) PR #10543

  • Improve source root stripping performance. (#10533) PR #10533

  • ArgSplitter operates relative to the buildroot. (#10540) PR #10540

  • Simplify the setup-py rules. (#10529) PR #10529

  • Allow Process to set its workunit level (#10528) PR #10528

  • Rely on the init-injection rules to trigger errors for un-depended-on-and-relevant __init__.py files. (#10524) PR #10524

  • Remove rust source include from integration tests. (#10522) PR #10522

  • upgrade to rust v1.45.1 (#10523) PR #10523

  • Store SpanIds as integers (#10512) PR #10512

  • Remove tarutil.py (#10516) PR #10516

  • Refactor Pex usage through new helper rules (#10514) PR #10514

  • Get rid of the remote backend subsystems. (#10502) PR #10502

  • Move subsystem.py and its test into pants.option. (#10500) PR #10500

  • Lower the default local parallelism, and align the number of swimlanes to it. (#10499) PR #10499

  • Rotate travis aws creds. (#10496) PR #10496

  • Add cache_failures option to Process type (#10433) PR #10433

  • Deprecate Subsystem.get_options() in favor of Subsystem.options (#10493) PR #10493

  • Simplify script to check __init__.py files (#10488) PR #10488

  • Merge interactive_process.py into process.py (#10495) PR #10495

  • Export Get and MultiGet from rules.py (#10485) PR #10485

  • Simplify engine/internals/nodes.py (#10487) PR #10487

  • Add cache_failures option to Process type (#10433) PR #10433

Testing

  • Disable remote execution due to RBE shutdown. (#10566) PR #10566

  • remoting: use non-RBE pants remote execution image (#10539) PR #10539

  • Avoid Python 3.8+ for Pylint test (#10548) PR #10548

  • avoid Py 3.8 for BanditIntegrationTest.test_3rdparty_plugin (#10546) PR #10546

  • set locale vars for remoting image (#10541) PR #10541

  • Test for rule graph issues with each distinct backend (#10519) PR #10519

  • docker image for remote execution without GCP/RBE (#10515) PR #10515

Documentation/Logging

  • Update docs urls to pantsbuild.org. (#10580) PR #10580

  • Improve log message when resolving entire lockfile. (#10578) PR #10578

  • Improve error message when the path component does not exist (#10570) PR #10570

  • Prepare 1.30.1rc0 (#10554) PR #10554

  • Improve error message for unrecognized BUILD file symbols (#10531) PR #10531

  • Reduce verbosity of finding binaries (#10525) PR #10525

  • Render all frames of a failure in Engine tracebacks (#10510) PR #10510

  • Fix bad indent of default in option help. (#10501) PR #10501

  • Fix display of default/current values in help. (#10490) PR #10490

  • Stop warning when return code != 0 or 1 (#10486) PR #10486

2.0.0.dev6 (7/28/2020)

API Changes

New Features

  • Improve test output and allow it be configured. (#10484) PR #10484

Bugfixes

  • Make independent owners requests per file to improve memoization (#10491) PR #10491

  • Fix PluginField not working in production (#10469) PR #10469

  • Allow for more cyclic cases with file dependencies (#10475) PR #10475

  • Fix Protobuf when using source roots (#10453) PR #10453

  • Fix fromfile expansion to skip passthrough args. (#10457) PR #10457

  • Fix –print-exception-stacktrace not invalidating pantsd (#10451) PR #10451

  • fixes in async_semaphore for concurrency ID calculation (#10436) PR #10436

Refactoring, Improvements, and Tooling

  • Eliminate most rule registration boilerplate. (#10477) PR #10477

  • Remove unused util/ and base/ code (#10462) PR #10462

  • Rename UrlToFetch to DownloadFile (#10468) PR #10468

  • Change the PathGlobs, SnapshotSubset, and UrlToFetch intrinsics to return Digest (#10449) PR #10449

  • Unify accessing options for a GoalSubsystem with Subsystem (#10456) PR #10456

  • Rename Workspace.materialize_directory() to Workspace.write_digest() (#10448) PR #10448

  • Remove unused SingleFileExecutable (#10443) PR #10443

  • Remove support for Protoc 2 (#10439) PR #10439

  • Make GoalSubsystem subclass Subsystem. (#10483) PR #10483

  • Tweaks to help output: (#10466) PR #10466

  • Cleanup fs.py (#10474) PR #10474

  • Add UnionMembership.from_rules() (#10472) PR #10472

  • Kill Reporting (mostly). (#10463) PR #10463

  • Add dependencies on conftest and init files via inference (#10441) PR #10441

  • Kill ./pants literals. (#10465) PR #10465

  • Remove Options <-> Parser cycle. (#10464) PR #10464

  • Revert “Use isort v5.x as the default version (#10258)” (#10460) PR #10460

  • Demystify get_all_scoped_flag_names mypy kludges. (#10459) PR #10459

  • Optimize generated subtargets’ interaction with SpecifiedSourceFiles (#10454) PR #10454

  • Simplify Collection. (#10450) PR #10450

  • Improvements to help output. (#10444) PR #10444

  • Fixes to get the process_executor CLI tool working again. (#10435) PR #10435

  • Rename argument in streaming workunit callback (#10432) PR #10432

Testing

  • Only skip building wheels on PR builds (#10482) PR #10482

  • Skip building wheels if no release files have changed (#10481) PR #10481

  • Skip flaky GoalRuleIntegrationTest (#10479) Issue #10478 PR #10479

  • A script to create an index.html for pants wheels on S3. (#10458) PR #10458

  • Get rid of remaining uses of init_subsystem. (#10427) PR #10427

2.0.0.dev5 (7/22/2020)

API Changes

  • Use isort v5.x as the default version (#10258) PR #10258

  • Don’t register any options as recursive. (#10415) PR #10415

New Features

Refactoring, Improvements, and Tooling

  • Implement cycle detection in transitive_targets, and tolerate cycles in file-addresses. (#10409) PR #10409

  • Stop using cargo-ensure-installed (#10400) PR #10400

  • Remove use of “quiet” in logging init (#10417) PR #10417

Testing

  • Port the plugin resolver test to v2 test style. (#10424) PR #10424

  • Refactor flake8 integration test to use create_options_bootstrapper (#10422) PR #10422

  • Increase timeout on project_info tests. (#10421) PR #10421

2.0.0.dev4 (7/21/2020)

API Changes

  • Upgrade default mypy from 0.781 to 0.782 (#10404) PR #10404

  • Remove unused –fmt-only option (#10388) PR #10388

  • Don’t turn on branch coverage by default. (#10386) PR #10386

  • access store server for action cache (#10329) Issue #10317 PR #10329

  • Upgrade setuptools from 49.1.0 to 49.2.0 (#10347) PR #10347

  • Move target.py rules to engine/internals/graph.py (#10372) PR #10372

New Features

  • Speed up run to no longer rebuild a Pex on source file changes (#10410) Issue #10406 PR #10410

  • Support for using a single global resolve. (#10405) PR #10405

  • Flake8 output file support. (#10371) PR #10371

  • A flag to force rerunning tests, bypassing the cache. (#10403) PR #10403

  • Support for injecting ancestor conftest.py files. (#10378) PR #10378

  • Allow ignoring dependencies with ! (#10385) PR #10385

  • Allow dependencies on files in BUILD files (#10381) PR #10381

  • Unify generated subtargets with file arguments and –changed-since (#10356) PR #10356

  • Use colors for log messages (#10278) PR #10278

Bugfixes

  • Print initial logs from pantsd using local time format Issue #10128

  • Fix using relative paths with –local-cache-dir and –named-caches-dir (#10398) PR #10398

  • Fix validation of dependencies ignores breaking with generated subtargets (#10407) PR #10407

  • close write stream for CAS writes via ByteStream API (#10395) PR #10395

  • Fix recently added n^2 edge collection. (#10392) PR #10392

  • Align cache directory calculation so that the LMDB store location is uniformly configurable. (#10391) PR #10391

  • remoting: use debug level for RE client workunits saved from remote (#10382) PR #10382

  • Always include types in the engine’s definition of equality. (#10377) PR #10377

  • Have help respond to color (#10357) PR #10357

  • Display multiline help nicely. (#10366) PR #10366

Refactoring, Improvements, and Tooling

  • Add a hint about adjusting max_user_watches on Linux. (#10413) PR #10413

  • Delete unused v1 sources. (#10411) PR #10411

  • upgrade to Rust 1.45.0 (#10396) PR #10396

  • Tolerate target cycles when using dependency inference (#10393) Issue #10059 PR #10393

  • Revert “Tolerate target cycles when using dependency inference (#10393)” (#10401) PR #10393 PR #10401

  • Add support for cycle-tolerant “weak” Gets (#10230) PR #10230

  • Make fetching wheels more resilient to network errors. (#10376) PR #10376

  • Avoid undefined behaviour around f64/u64 casts (#10374) PR #10374

  • Fix when an explicitly provided dependency supersedes an inferred dependency (#10375) PR #10375

  • Fix dependency inference handling of dependencies on self (#10373) PR #10373

  • Render local process infrastructure errors more verbosely. (#10368) PR #10368

  • Use our validate goal instead of the custom header check. (#10361) PR #10361

  • Delete some unused testprojects code. (#10364) PR #10364

Testing

Documentation

  • A script to generate options reference pages for the docsite. (#10387) PR #10387

2.0.0.dev3 (7/15/2020)

New Features

  • Allow specifying address and file arguments at the same time (#10345) PR #10345

  • Make help-all dump a JSON blob containing all help info. (#10336) PR #10336

  • Integrate option value derivation into help. (#10313) PR #10313

  • Generate subtargets with file-level precision for dependency inference (#10305) PR #10305

  • Add option for specifying environment variable with concurrency slot (#10297) PR #10297

  • Add support for specifying a custom coverage config file (.coveragerc) (#10289) PR #10289

Bugfixes

  • Fix generated subtargets not working with dependees (#10355) PR #10355

  • Ignore dead symlinks on Linux as well as OSX (#10339) PR #10339

  • Fix bug where workunit completion was not reported correctly (#10277) PR #10277

  • Fix collision in workunit affecting patches. (#10350) PR #10350

  • Pass stream workunit context to all callbacks calls instead of just passing it in the last call. (#10340) PR #10340

  • Fix awslambda configuration of Pex. (#10323) PR #10323

  • Hotfix Bandit breaking from stevedore 3.0 release (#10319) PR #10319

Refactoring, Improvements, and Tooling

  • Render only leaf rule graph errors, and improve error messages (#10311) PR #10311

  • Tweak any_matches_filespec to return which paths matched (#10358) PR #10358

  • Add check for invalid concrete time dates (#10349) PR #10349

  • Explicit error on missing descriptions in the goals goal. (#10348) PR #10348

  • Add module to default rule names. (#10341) PR #10341

  • add artifacts infrastructure on relevant types (#10344) PR #10344

  • Revert modernization of virtualenv to fix pants.pex deploy in CI. (#10343) PR #10343

  • Represent generated subtarget addresses as file names (#10338) PR #10338

  • Remove unusued RunTracker code (#10315) PR #10315

  • Minor wording change in help message (#10335) PR #10335

  • Display whether a scope is a goal or subsystem in help. (#10332) PR #10332

  • Fix run_virtualenv to target the current $PY. (#10331) PR #10331

  • Modernize virtualenv. (#10330) PR #10330

  • Stop differentiating between constructors and types in FFI. (#10327) PR #10327

  • Use generated subtargets internally (#10312) PR #10312

  • Remove Revision (#10318) PR #10318

  • Bump to nails 0.6.0 to lay groundwork for cancelation of pantsd runs. (#10320) PR #10320

  • remove polling remote execution client (#10306) PR #10306

  • Remove Struct and @addressable abstractions (#10309) PR #10309

  • Move SubprocessProcessHandler near its single use. (#10307) PR #10307

  • No longer special case the dependencies field with TargetAdaptor (#10303) PR #10303

  • Use with_workunit everywhere (#10300) PR #10300

  • refactor execution strategy options into separate struct (#10304) PR #10304

  • Remove -q from the release run of reversion. (#10301) PR #10301

  • Simplify BUILD file parsing (#10298) PR #10298

Testing

  • Fix tests that relied on the docsite CNAME file. (#10337) PR #10337

  • Run unit tests and integration tests in CI in the same Pants run (#10333) PR #10333

  • Merge the unit and integration tests (#10302) PR #10302

  • Run code coverage on v2 unit tests. (#9919) PR #9919

2.0.0.dev2 (7/8/2020)

API Changes

  • Rename FilesContent to DigestContents and InputFilesContent to CreateDigest (#10290) PR #10290

  • remoting: default is streaming client (#10260) PR #10260

  • Upgrade setuptools from 47.3.1 to 49.1.0 (#10255) PR #10255

  • Upgrade packaging from 20.3 to 20.4 (#10256) PR #10256

  • Deprecate the –v1/–v2 global options. (#10245) PR #10245

New Features

  • Preserve source roots with Pytest output (#10165) PR #10165

Bugfixes

Refactoring, Improvements, and Tooling

  • Remove v1 source/ abstractions like EagerFileSet (#10292) PR #10292

  • Use f-strings in engine/util.py (#10288) PR #10288

  • Use dependency inference internally (#10283) PR #10283

  • Unify LegacyPythonCallbackParser and Parser (#10281) PR #10281

  • Lower the default max-memory usage of pantsd. (#10287) PR #10287

  • Improvements and refactoring of help system. (#10280) PR #10280

  • Refactor WorkunitStore struct (#10242) PR #10242

  • remoting: check action cache for cached result before submitting a request (#10253) PR #10253

  • Remove leftover v1 Target API bindings (#10276) PR #10276

  • Fix remaining internal dependency cycles (#10254) PR #10254

  • Remove build_graph.Target (#10266) PR #10266

  • Remove cache/ and invalidation/ (#10262) PR #10262

  • Remove obsolete root patterns. (#10263) PR #10263

  • Remove Task, Goal, and Context (#10252) PR #10252

  • Simplify git.py and scm.py (#10251) PR #10251

  • Remove the internal tags type_checked and partially_type_checked (#10244) PR #10244

  • Remove HydratedTarget, AddressMapper, and BuildGraph (#10250) PR #10250

  • Remove all remaining v1 Targets (#10246) PR #10246

  • Remove TestBase.context() (#10248) PR #10248

  • Delete the rest of v1 pants.backend.python (#10240) PR #10240

  • Remove the concept of a scope category. (#10224) PR #10224

Testing

  • Remove stale “pants.pex for integration tests” mechanism (#10279) PR #10279

  • Re-enable RBE (#10284) PR #10284

  • Temporarily disable remote execution in CI (#10268) PR #10268

  • Upgrade responses from 0.10.14 to 0.10.15 (#10257) PR #10257

  • Increase pylint integration tests timeout. (#10261) PR #10261

  • Fix broken Pylint test from new isort release (#10259) PR #10259

  • Simplify ci.py now that we have no v1 tests (#10241) PR #10241

2.0.0.dev1 (7/2/2020)

API Changes

  • Get rid of –plugins2/–backend-packages2 (#10231) PR #10231

  • Deprecate –changed-include-dependees in favor of –changed-dependees (#10217) PR #10217

  • Remove pants.contrib.mypy plugin in favor of v2 implementation (#10157) PR #10157

  • Remove –coverage-py-omit-test-sources (#10202) PR #10202

  • Gets rid of the v1 GoalRunner. (#10167) PR #10167

  • Remove pants.backend.jvm (#10218) PR #10218

  • Remove –zipkin-trace-v2 option (#10184) PR #10184

  • Remove core_tasks/ and most of task/ (#10236) PR #10236

  • Remove v1 portions of backend/native and ipex (#10187) PR #10187

  • Delete v1 python backend task code (#10223) PR #10223

  • Remove v1 Python unpack_whls, bundle, and repl (#10204) PR #10204

  • Remove Thrift (#10171) PR #10171

  • Remove TestBase.create_library() and `TestBase.target() (#10237) PR #10237

  • Remove some v1 parts of testutil/ (#10233) PR #10233

New Features

  • Add new typecheck goal for MyPy (#10212) PR #10212

  • Properly handle PEP 420 namespace packages (#10183) PR #10183

  • Add support for creating multiple coverage reports (#9997) PR #9997

  • Add the ability to write/output the raw coverage file. (#10195) PR #10195

  • Log Coverage report name as part of the console message. (#10194) PR #10194

  • Attempt to adjust file handle limits and warn if they cannot be adjusted (#10174) PR #10174

Bugfixes

  • Fix –changed-dependees to work when v1 is disabled (#10235) PR #10235

  • Teach pants_requirement() to work with dependency inference (#10232) PR #10232

  • Remove indentation in process errors. (#10181) PR #10181

  • Automatically include __init__.py files (#10166) PR #10166

  • Fix AddPrefix to correctly add arbitrarily many parent components (#10189) PR #10189

  • Fix dependencies –transitive to include target roots that are also dependencies (#10186) PR #10186

  • Fix MyPy to include resources, but still not files (#10168) PR #10168

Refactoring, Improvements, and Tooling

  • Reduce time spend grabbing locks in workunit code (#10179) PR #10179

  • local_cas supports an instance-name (#10225) PR #10225

  • local_cas supports GetCapabilities request (#10226) PR #10226

  • Refactor remoting options into separate struct (#10215) PR #10215

  • remoting: log RE capabilities and refresh REv2 proto (#10155) PR #10155

  • Fix stray type error in fs.py (#10182) PR #10182

  • Remove redundant cast call (#10196) PR #10196

  • Use debug level for remote store workunits (#10238) PR #10238

  • Simplify Get implementation. (#10178) PR #10178

  • Delete the old BinaryTool mechanism. (#10239) PR #10239

  • Delete more v1 task-related integration tests. (#10210) PR #10210

  • Refactor coverage integration tests (#10209) PR #10209

  • Stop using deprecated assertEquals (#10197) PR #10197

  • Remove ivy/ and most of java/ (#10222) PR #10222

  • Remove Bundle and App code (#10221) PR #10221

  • Remove more zipkin-related code (#10207) PR #10207

  • Remove unused list_backends.py (#10205) PR #10205

  • Remove internal contrib/ infrastructure (#10177) PR #10177

  • Rewrite/delete some tests that involve v1 tasks. (#10219) PR #10219

  • Remove JVM testprojects (#10216) PR #10216

  • Stop testing testprojects:: (#10170) PR #10170

  • Remove the src/{scala|java} directories. (#10201) PR #10201

  • Delete examples/src/{java,scala}. (#10198) PR #10198

  • Stop running JVM tests written in Java/Scala (#10175) PR #10175

  • Move scm/ and util/ tests to src (#10176) PR #10176

  • Nuke more v1 tests (#10172) PR #10172

  • upgrade tokio to 0.2.21 (#10191) PR #10191

  • upgrade futures crate to 0.3.5 (#10190) PR #10190

  • upgrade async-trait crate to 0.1.36 (#10193) PR #10193

  • upgrade crossbeam-channel create so only one copy (#10192) PR #10192

  • upgrade indexmap crate (#10199) PR #10199

  • upgrade parking_lot crate (#10200) PR #10200

Documentation

2.0.0.dev0 (6/25/2020)

API Changes

  • Remove v1 JVM backend Tasks. (#10142) PR #10142

  • Remove targets goal in favor of target-types goal (#10145) PR #10145

  • Remove deprecated Get[P](S) syntax in favor of Get(P, S) (#10148) Issue #9899 PR #10148

  • Remove v1 login, server, and killserver goals (#10144) PR #10144

  • Remove v1 minimize, filemap, paths, sort, and depmap goals (#10135) PR #10135

  • Replace v1 dependees, dependencies, filedeps, and filter with v2 (#10117) PR #10117

  • Remove the v1 scrooge contrib plugin. (#10127) PR #10127

  • Remove support for pants.ini (#10123) PR #10123

  • Remove the v1 export goal (#10122) PR #10122

  • Remove pants.backend.docgen (#10121) PR #10121

  • Remove v1 idea-plugin goal (#10115) PR #10115

  • Remove v1 Java Protobuf implementation (#10111) PR #10111

  • Remove pants.contrib.node plugin (#10113) PR #10113

  • Remove v1 bash-completion goal (#10112) PR #10112

  • Remove watchman. (#10114) PR #10114

  • Upgrade default mypy version from 0.780 to 0.781 (#10109) PR #10109

  • Remove pants.contrib.go plugin (#10107) PR #10107

  • Remove v1 Python Grpcio codegen backend (#10108) PR #10108

  • Remove deprecated –v2-ui in favor of –dynamic-ui (#10105) PR #10105

  • Remove deprecated –enable-pantsd in favor of –pantsd (#10104) PR #10104

  • Remove deprecated pytest-coverage scope in favor of coverage-py (#10103) PR #10103

  • Remove pants.contrib.confluence (#10106) PR #10106

New Features

Bugfixes

  • Do not render pytest at info by default, but give it a description. (#10164) PR #10164

  • Preserve source roots in MyPy and Pylint output (#10159) PR #10159

  • Do not include resource targets in v2 MyPy chroot (#10154) PR #10154

  • Set dynamic-ui default based on CI (#10140) PR #10140

  • Fix Pytest XML reports and Coverage breaking with remote execution (#10136) PR #10136

  • Retry for filesystem changes more quickly, indefinitely, and with logging (#10139) PR #10139

  • Normalize paths before determining whether we can watch them. (#10130) PR #10130

Refactoring, Improvements, and Tooling

  • Remove use of importlib for native_engine loading (#10161) PR #10161

  • Update sha2 crate dependency (#10163) PR #10163

  • Remove unused rust deps. (#10162) PR #10162

  • Add message field on workunits and use it to replace some explicit logging (#10158) PR #10158

  • Expose the types consumed to produce a type in a RuleGraph. (#10153) PR #10153

  • Upgrade setuptools from 44.0.0 to 47.3.1 (#10149) PR #10149

  • Support for using unstripped python sources (#10138) PR #10138

  • fix snapshot subset testing and unrevert #9779 (#10146) PR #10146

  • Revert “Make SnapshotSubset() faster (#9779)” (#10143) PR #9779 PR #10143

  • Make SnapshotSubset() faster (#9779) PR #9779

  • upgrade to rust v1.44.1 (#10125) PR #10125

  • Remove BuildFile (#10102) PR #10102

Testing

  • Enable test timeouts for python in v2. (#10147) PR #10147

  • Delete many v1 tests. (#10116) PR #10116

  • enable REv2 streaming client in CI (#9989) PR #9989

Documentation

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 Distribution

pantsbuild.pants.testutil-2.0.1rc2-py36.py37.py38-none-any.whl (41.3 kB view hashes)

Uploaded Python 3.6 Python 3.7 Python 3.8

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