pantsbuild.pants.contrib.codeanalysis 1.28.1rc0
Support for various code analysis tools in Pants.
License: Apache License, Version 2.0

Pants is an Apache2 licensed build tool written in Python.

The latest documentation can be found at `pantsbuild <http://pantsbuild.org/>`_.

1.28.x Stable Releases
======================

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

See https://pants.readme.io/docs/release-notes-1-28 for an overview of the changes in this release.

1.28.1rc0 (6/16/2020)
---------------------

N.B.: No further releases are expected in the ``1.28.x`` ``stable`` series. This ``.1rc0``
release is for those upgrading through stable versions who wish to retain pytest console
coverage support in Pants "v1".

Bugfixes
~~~~~~~~

* Restore pytest coverage console report. (#10016)
  `PR #10016 <https://github.com/pantsbuild/pants/pull/10016>`_


1.28.0 (5/22/2020)
------------------

The first stable release in the ``1.28.x`` series, with no changes since the last release candidate!

1.28.0rc2 (5/20/2020)
---------------------

Bugfixes
~~~~~~~~

* Fix harmless error rendered when stdin is closed under pantsd (#9828)
  `PR #9828 <https://github.com/pantsbuild/pants/pull/9828>`_

* Omit `m` suffix in platform for AWS Lambdas using Python 3.8 (#9796)
  `PR #9796 <https://github.com/pantsbuild/pants/pull/9796>`_

* Fix console UI redraw issues (#9812)
  `PR #9812 <https://github.com/pantsbuild/pants/pull/9812>`_

Refactoring, Improvements, and Tooling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Standardized workunit names (#9774)
  `PR #9774 <https://github.com/pantsbuild/pants/pull/9774>`_

* Re-implement source roots without using a trie (#9799)
  `PR #9799 <https://github.com/pantsbuild/pants/pull/9799>`_

* Improve the `repr` for V2 `Target` (#9808)
  `PR #9808 <https://github.com/pantsbuild/pants/pull/9808>`_

1.28.0rc1 (5/15/2020)
---------------------

Bugfixes
~~~~~~~~

* Fix Target API bindings not loading for plugins (#9788)
  `PR #9788 <https://github.com/pantsbuild/pants/pull/9788>`_

* Further refine the "include `.pids`" hack. (#9773)
  `PR #9773 <https://github.com/pantsbuild/pants/pull/9773>`_

* Move away from the debounced notify watcher (#9754)
  `PR #9754 <https://github.com/pantsbuild/pants/pull/9754>`_

* Upgrade toml from 0.10.0 to 0.10.1 (#9768)
  `PR #9768 <https://github.com/pantsbuild/pants/pull/9768>`_

Refactoring, Improvements, and Tooling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Mention --owners-not-found-behavior option when owners are not found (#9770)
  `PR #9770 <https://github.com/pantsbuild/pants/pull/9770>`_

* Disable capturing core dumps in travis. (#9769)
  `PR #9769 <https://github.com/pantsbuild/pants/pull/9769>`_

1.28.0rc0 (5/13/2020)
---------------------

API Changes
~~~~~~~~~~~

* Always activate V2 `pants.backend.pants_info` and `pants.backend.project_info` (#9742)
  `PR #9742 <https://github.com/pantsbuild/pants/pull/9742>`_

* Deprecate `filedeps` defaulting to `--absolute` (#9746)
  `PR #9746 <https://github.com/pantsbuild/pants/pull/9746>`_

* Deprecate, instead of error, when Python targets have non-Python sources (#9752)
  `PR #9752 <https://github.com/pantsbuild/pants/pull/9752>`_

* Upgrade to pex 2.1.10. (#9744)
  `PR #9744 <https://github.com/pantsbuild/pants/pull/9744>`_

* Upgrade Pygments from 2.3.1 to 2.6.1 (#9739)
  `PR #9739 <https://github.com/pantsbuild/pants/pull/9739>`_

* Upgrade psutil from 5.6.3 to 5.7.0 (#9743)
  `PR #9743 <https://github.com/pantsbuild/pants/pull/9743>`_

New Features
~~~~~~~~~~~~

* Restructure v2 UI (#9672)
  `PR #9672 <https://github.com/pantsbuild/pants/pull/9672>`_

Bugfixes
~~~~~~~~

* Fix write_stderr in native.py (#9753)
  `PR #9753 <https://github.com/pantsbuild/pants/pull/9753>`_

Refactoring, Improvements, and Tooling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Port the pantsd nailgun server to rust (#9722)
  `PR #9722 <https://github.com/pantsbuild/pants/pull/9722>`_

* Provide more useful and consistent console UI messages (#9720)
  `PR #9720 <https://github.com/pantsbuild/pants/pull/9720>`_

* Batch all fsync calls at the end of materialize_directory. (#9738)
  `PR #9738 <https://github.com/pantsbuild/pants/pull/9738>`_

* More simplification of SourceRoots. (#9728)
  `PR #9728 <https://github.com/pantsbuild/pants/pull/9728>`_

* Add white space between rule graph errors (#9740)
  `PR #9740 <https://github.com/pantsbuild/pants/pull/9740>`_

1.28.0.dev2 (5/9/2020)
----------------------

API Changes
~~~~~~~~~~~

* Loosen restriction on docutils to not require 0.16. #9735
  `PR #9735 <https://github.com/pantsbuild/pants/pull/9735>`_

* Remove deprecated `--fast` option for tests. (#9733)
  `PR #9733 <https://github.com/pantsbuild/pants/pull/9733>`_

* Remove deprecated support for `within_data_subdir`. (#9730)
  `PR #9730 <https://github.com/pantsbuild/pants/pull/9730>`_

* Remove `build-setup-requires-pex` options scope. (#9732)
  `PR #9732 <https://github.com/pantsbuild/pants/pull/9732>`_

* Remove deprecated PythonSetup options. (#9731)
  `PR #9731 <https://github.com/pantsbuild/pants/pull/9731>`_

* Adapt to upstream scalatest change (#9707)
  `PR #9707 <https://github.com/pantsbuild/pants/pull/9707>`_

* Upgrade docutils from 0.14 to 0.16 (#9724)
  `PR #9724 <https://github.com/pantsbuild/pants/pull/9724>`_

* Upgrade responses. (#9712)
  `PR #9712 <https://github.com/pantsbuild/pants/pull/9712>`_

* Simplify the source roots mechanism. (#9709)
  `PR #9709 <https://github.com/pantsbuild/pants/pull/9709>`_

* Disable watchman by default. (#9714)
  `PR #9714 <https://github.com/pantsbuild/pants/pull/9714>`_

* Upgrade pyopenssl. (#9693)
  `PR #9693 <https://github.com/pantsbuild/pants/pull/9693>`_

New Features
~~~~~~~~~~~~

* Configurable local execution root for v2. (#9716)
  `PR #9716 <https://github.com/pantsbuild/pants/pull/9716>`_

* Add V2 `dependees` goal (#9692)
  `PR #9692 <https://github.com/pantsbuild/pants/pull/9692>`_

Bugfixes
~~~~~~~~

* Fix `protobuf_library` to be parsable by V1 tasks (#9700)
  `PR #9700 <https://github.com/pantsbuild/pants/pull/9700>`_

* Remove deprecation warning from ivy_imports.py. (#9696)
  `PR #9696 <https://github.com/pantsbuild/pants/pull/9696>`_

* Fix `PYTHONPATH` comingling in sitepackages. (#9690)
  `PR #9690 <https://github.com/pantsbuild/pants/pull/9690>`_

Refactoring, Improvements, and Tooling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Add benchmark harness and improve performance of materialize_directory  (#9729)
  `PR #9729 <https://github.com/pantsbuild/pants/pull/9729>`_

* Reorganize some V2 goals into `pants.backend.pants_info` and `pants.backend.project_info` #9708
  `PR #9708 <https://github.com/pantsbuild/pants/pull/9708>`_

* Rename V2's `--test-run-coverage` to `--test-use-coverage` (#9723)
  `PR #9723 <https://github.com/pantsbuild/pants/pull/9723>`_

* Improve pytest output. (#9691)
  `PR #9691 <https://github.com/pantsbuild/pants/pull/9691>`_

* Fix up dependency features (#9721)
  `PR #9721 <https://github.com/pantsbuild/pants/pull/9721>`_

* Improve output of V2 `test` goal (#9718)
  `PR #9718 <https://github.com/pantsbuild/pants/pull/9718>`_

* Improve output of V2 `fmt` and `lint` goals (#9710)
  `PR #9710 <https://github.com/pantsbuild/pants/pull/9710>`_

* Fix brfs to cleanly unmount. (#9715)
  `PR #9715 <https://github.com/pantsbuild/pants/pull/9715>`_

* Pin down floaty lockfile. (#9713)
  `PR #9713 <https://github.com/pantsbuild/pants/pull/9713>`_

* Move file invalidation handling to rust (#9636)
  `PR #9636 <https://github.com/pantsbuild/pants/pull/9636>`_

* Avoid unnecessary `strip_source_roots.py` work when using a repo-level root (#9702)
  `PR #9702 <https://github.com/pantsbuild/pants/pull/9702>`_

* Optimize `strip_source_roots.py` when there is only 1 source root (#9705)
  `PR #9705 <https://github.com/pantsbuild/pants/pull/9705>`_

* Improve concurrency of V2 formatter and linter setup (#9701)
  `PR #9701 <https://github.com/pantsbuild/pants/pull/9701>`_

* Update tokio past 0.2.16. (#9703)
  `PR #9703 <https://github.com/pantsbuild/pants/pull/9703>`_

* Simplify v1 Go buildgen's use of source roots. (#9694)
  `PR #9694 <https://github.com/pantsbuild/pants/pull/9694>`_

* Switch DownloadedPexBin to use ExternalTool. (#9665)
  `PR #9665 <https://github.com/pantsbuild/pants/pull/9665>`_

* Fix V2 isort and Black including the tmpdir in their output (#9683)
  `PR #9683 <https://github.com/pantsbuild/pants/pull/9683>`_

* MyPy now checks partially_type_checked targets. (#9688)
  `PR #9688 <https://github.com/pantsbuild/pants/pull/9688>`_

* Fix Shellcheck lint. (#9689)
  `PR #9689 <https://github.com/pantsbuild/pants/pull/9689>`_

* Improve `Snapshot::merge` errors. (#9685)
  `PR #9685 <https://github.com/pantsbuild/pants/pull/9685>`_

* Clean up Executor::spawn APIs and docs to better align them with tokio 0.2. (#9684)
  `PR #9684 <https://github.com/pantsbuild/pants/pull/9684>`_

* pin AR=/usr/bin/ar on osx when building native_engine.so (#9662)
  `PR #9662 <https://github.com/pantsbuild/pants/pull/9662>`_

Documentation
~~~~~~~~~~~~~

* Improve docs for Python target types (#9679)
  `PR #9679 <https://github.com/pantsbuild/pants/pull/9679>`_

* Prepare 1.27.0rc1 (#9717)
  `PR #9717 <https://github.com/pantsbuild/pants/pull/9717>`_

1.28.0.dev1 (5/1/2020)
----------------------

API Changes
~~~~~~~~~~~

* Build pantsbuild.pants as a manylinux2014 wheel (#9656)
  `PR #9656 <https://github.com/pantsbuild/pants/pull/9656>`_

* Upgrade wheel from 0.33.6 to 0.34.2 (#9647)
  `PR #9647 <https://github.com/pantsbuild/pants/pull/9647>`_

* Upgrade PyYAML 5.1.2 to 5.3.1 (#9649)
  `PR #9649 <https://github.com/pantsbuild/pants/pull/9649>`_

* Deprecate some v1 goals that use Ivy. (#9657)
  `PR #9657 <https://github.com/pantsbuild/pants/pull/9657>`_

New Features
~~~~~~~~~~~~

* Adding allowlist_compiler_args in ScroogeGen (#9610)
  `PR #9610 <https://github.com/pantsbuild/pants/pull/9610>`_

* [junit-runner] allow test specs to work for parameterized tests and t… (#9397)
  `PR #9397 <https://github.com/pantsbuild/pants/pull/9397>`_

* Add Protobuf Python support to V2 (#9651)
  `PR #9651 <https://github.com/pantsbuild/pants/pull/9651>`_

* [jvm-platform] add strict as an attr to jvm platforms (#9287)
  `PR #9287 <https://github.com/pantsbuild/pants/pull/9287>`_

* Add the ability to write junit test results file for pytest runs. (#9594)
  `PR #9594 <https://github.com/pantsbuild/pants/pull/9594>`_

Bugfixes
~~~~~~~~

* Fix crash when V2 goals like `repl` have no specified targets (#9673)
  `PR #9673 <https://github.com/pantsbuild/pants/pull/9673>`_

Refactoring, Improvements, and Tooling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Rules to extract archives. (#9624)
  `PR #9624 <https://github.com/pantsbuild/pants/pull/9624>`_

* Add generic mechanism to codegen sources in V2 (#9634)
  `PR #9634 <https://github.com/pantsbuild/pants/pull/9634>`_

* Allow `HydratedSourcesRequest` to indicate which Sources types are expected (#9641)
  `PR #9641 <https://github.com/pantsbuild/pants/pull/9641>`_

* Remove default process timeout value (#9639)
  `PR #9639 <https://github.com/pantsbuild/pants/pull/9639>`_

* Replace `list` with `list-v2` when in V2 exclusive mode (#9671)
  `PR #9671 <https://github.com/pantsbuild/pants/pull/9671>`_

* Simplify Scheduler::execute and unify Graph retry (#9674)
  `PR #9674 <https://github.com/pantsbuild/pants/pull/9674>`_

* Rename `Process.input_files` to `Process.input_digest` (#9669)
  `PR #9669 <https://github.com/pantsbuild/pants/pull/9669>`_

* Port the bulk of the process_execution crate to async/await (#9676)
  `PR #9676 <https://github.com/pantsbuild/pants/pull/9676>`_

* Remove noisy Pants output with V2 `binary`, `run`, and `repl` (#9667)
  `PR #9667 <https://github.com/pantsbuild/pants/pull/9667>`_

* Rename V2 `Configuration` to `FieldSet` (#9668)
  `PR #9668 <https://github.com/pantsbuild/pants/pull/9668>`_

* Calculate `SourcesSnapshot` using the Target API (#9659)
  `PR #9659 <https://github.com/pantsbuild/pants/pull/9659>`_

* Rename `subsystem_rule` to `SubsystemRule` (#9666)
  `PR #9666 <https://github.com/pantsbuild/pants/pull/9666>`_

* Change `GoalRuleTestBase.execute_rule` to return the captured stderr (#9664)
  `PR #9664 <https://github.com/pantsbuild/pants/pull/9664>`_

* Rename `Snapshot.directory_digest` to `Snapshot.digest` (#9658)
  `PR #9658 <https://github.com/pantsbuild/pants/pull/9658>`_

* Always register `engine.target.rules()` via `engine_initializer.py` (#9661)
  `PR #9661 <https://github.com/pantsbuild/pants/pull/9661>`_

* Rename several `engine/fs.py` types
  `PR #9655 <https://github.com/pantsbuild/pants/pull/9655>`_

* Make the ExternalTool URL generator an instance method. (#9646)
  `PR #9646 <https://github.com/pantsbuild/pants/pull/9646>`_

* Only write to the build root when V2 `fmt` makes changes (#9652)
  `PR #9652 <https://github.com/pantsbuild/pants/pull/9652>`_

* Port the finding of owning targets to the Target API (#9648)
  `PR #9648 <https://github.com/pantsbuild/pants/pull/9648>`_

* Compute process execution times by walking the workunit graph (#9622)
  `PR #9622 <https://github.com/pantsbuild/pants/pull/9622>`_

* Align the rust and python PathGlobs objects. (#9653)
  `PR #9653 <https://github.com/pantsbuild/pants/pull/9653>`_

* Use ExitStack from python standard library. (#9645)
  `PR #9645 <https://github.com/pantsbuild/pants/pull/9645>`_

* An ExternalTool subsystem base for downloading external tools. (#9625)
  `PR #9625 <https://github.com/pantsbuild/pants/pull/9625>`_

* Use sysconfig.get_platform() (#9644)
  `PR #9644 <https://github.com/pantsbuild/pants/pull/9644>`_

* Simplify excluding the `requirements.txt` file generated from python_requirements() (#9640)
  `PR #9640 <https://github.com/pantsbuild/pants/pull/9640>`_

* Factor up filtering out non-Python targets in V2 (#9638)
  `PR #9638 <https://github.com/pantsbuild/pants/pull/9638>`_

* Extract a `watch` crate. (#9635)
  `PR #9635 <https://github.com/pantsbuild/pants/pull/9635>`_

* Remove premature generalization for AsyncFields (#9632)
  `PR #9632 <https://github.com/pantsbuild/pants/pull/9632>`_

Testing
~~~~~~~

* Fix selectors test for Python 3.8 (#9642)
  `PR #9642 <https://github.com/pantsbuild/pants/pull/9642>`_

* Install Python 3.8 in centos7 docker image (#9670)
  `PR #9670 <https://github.com/pantsbuild/pants/pull/9670>`_

* Stabilize the cron CI test suite (#9581)
  `PR #9581 <https://github.com/pantsbuild/pants/pull/9581>`_

* Prune the pantsd integration test target (#9660)
  `PR #9660 <https://github.com/pantsbuild/pants/pull/9660>`_

* Remoting: ensure oauth token file only has one line (#9630)
  `PR #9630 <https://github.com/pantsbuild/pants/pull/9630>`_

* Stop using deprecated assertEquals() (#9682)
  `PR #9682 <https://github.com/pantsbuild/pants/pull/9682>`_

* Reduce the # of V1 integration test shards by 1 (#9582)
  `PR #9582 <https://github.com/pantsbuild/pants/pull/9582>`_

Documentation
~~~~~~~~~~~~~

* Fix typos in the tests directory. (#9637)
  `PR #9637 <https://github.com/pantsbuild/pants/pull/9637>`_

* Prepare 1.26.0 (#9654)
  `PR #9654 <https://github.com/pantsbuild/pants/pull/9654>`_

1.28.0.dev0 (4/24/2020)
-----------------------

API Changes
~~~~~~~~~~~

* Rename `target-types2` goal to `target-types` and `targets()` register.py entry point to `target_types()` (#9618)
  `PR #9618 <https://github.com/pantsbuild/pants/pull/9618>`_

* Default to `--filedeps-transitive=false` and `--dependencies-transitive=false` (#9576)
  `PR #9576 <https://github.com/pantsbuild/pants/pull/9576>`_

* Require explicit specification of an AWS Lambda runtime. (#9564)
  `PR #9564 <https://github.com/pantsbuild/pants/pull/9564>`_

* Revert allowing Python targets to include `.c` files in their sources (#9583)
  `PR #9583 <https://github.com/pantsbuild/pants/pull/9583>`_

New Features
~~~~~~~~~~~~

* Add a special string <PYENV_LOCAL> to interpreter search path (#9613)
  `PR #9613 <https://github.com/pantsbuild/pants/pull/9613>`_

* Prelude file support (#9555)
  `PR #9555 <https://github.com/pantsbuild/pants/pull/9555>`_

Bugfixes
~~~~~~~~

* Temporarily disable `./pants backends` goal due to bug (#9629)
  `PR #9629 <https://github.com/pantsbuild/pants/pull/9629>`_

* fix test_platform usages (#9567)
  `PR #9567 <https://github.com/pantsbuild/pants/pull/9567>`_

* Use `FrozenDict` and `FrozenOrderedSet` for type safety with `UnionMembership` and `RegisteredTargetTypes` (#9609)
  `PR #9609 <https://github.com/pantsbuild/pants/pull/9609>`_

* Fix `zip_safe` field not being used with V2 binary (#9598)
  `PR #9598 <https://github.com/pantsbuild/pants/pull/9598>`_

* Fix python platform spec for AWS Lambdas. (#9600)
  `PR #9600 <https://github.com/pantsbuild/pants/pull/9600>`_

* Revert "Add link back to source control dir from physical workdir (#9531)" (#9601)
  `PR #9601 <https://github.com/pantsbuild/pants/pull/9601>`_

Refactoring, Improvements, and Tooling
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Remove our custom .tar.xz workaround. (#9617)
  `PR #9617 <https://github.com/pantsbuild/pants/pull/9617>`_

* Rename `targets.py` files to `target_types.py` (#9616)
  `PR #9616 <https://github.com/pantsbuild/pants/pull/9616>`_

* Refactor filtering of valid targets via the engine (#9614)
  `PR #9614 <https://github.com/pantsbuild/pants/pull/9614>`_

* Some logger.rs improvements (#9599)
  `PR #9599 <https://github.com/pantsbuild/pants/pull/9599>`_

* Rename `isolated_process.py` to `process.py` (#9608)
  `PR #9608 <https://github.com/pantsbuild/pants/pull/9608>`_

* Factor up flexible handling of invalid target types (#9605)
  `PR #9605 <https://github.com/pantsbuild/pants/pull/9605>`_

* Move private engine code into `engine/internals` (#9597)
  `PR #9597 <https://github.com/pantsbuild/pants/pull/9597>`_

* Break setup_logger into two functions (#9592)
  `PR #9592 <https://github.com/pantsbuild/pants/pull/9592>`_

* Factor up common Configuration code (#9557)
  `PR #9557 <https://github.com/pantsbuild/pants/pull/9557>`_

* Improve V2 UI messages by describing the scope of the work being done (#9588)
  `PR #9588 <https://github.com/pantsbuild/pants/pull/9588>`_

* Add `DeduplicatedCollection` to newtype `FrozenOrderedSet` in rules (#9590)
  `PR #9590 <https://github.com/pantsbuild/pants/pull/9590>`_

* Some ExceptionSink refactors (#9584)
  `PR #9584 <https://github.com/pantsbuild/pants/pull/9584>`_

* Logger cleanup (#9578)
  `PR #9578 <https://github.com/pantsbuild/pants/pull/9578>`_

* Reorganize `engine/legacy` to only have legacy engine code (#9591)
  `PR #9591 <https://github.com/pantsbuild/pants/pull/9591>`_

* Remove "Executing process" text from V2 UI (#9568)
  `PR #9568 <https://github.com/pantsbuild/pants/pull/9568>`_

* Add `engine/collection.py` for the `Collection` newtype (#9586)
  `PR #9586 <https://github.com/pantsbuild/pants/pull/9586>`_

* Add `engine/unions.py` to consolidate union types into one file (#9580)
  `PR #9580 <https://github.com/pantsbuild/pants/pull/9580>`_

* Add `engine/addresses.py` for consolidated `Address` imports in V2 (#9575)
  `PR #9575 <https://github.com/pantsbuild/pants/pull/9575>`_

* Use rust cpu_count crate to determine v2 UI swim lanes (#9574)
  `PR #9574 <https://github.com/pantsbuild/pants/pull/9574>`_

* Reorganize `rules/core` into `core/goals`, `core/project_info`, `core/util_rules`, and `core/target_types.py` (#9572)
  `PR #9572 <https://github.com/pantsbuild/pants/pull/9572>`_

Testing
~~~~~~~

* Fix test import and generic alias failures. (#9626)
  `PR #9626 <https://github.com/pantsbuild/pants/pull/9626>`_

* Use `--go-chroot` internally (#9579)
  `PR #9579 <https://github.com/pantsbuild/pants/pull/9579>`_

Documentation
~~~~~~~~~~~~~

* Fixes for the proxy page. (#9628)
  `PR #9628 <https://github.com/pantsbuild/pants/pull/9628>`_

* Add description for the validate goal. (#9602)
  `PR #9602 <https://github.com/pantsbuild/pants/pull/9602>`_

* Fix typos. (#9607)
  `PR #9607 <https://github.com/pantsbuild/pants/pull/9607>`_

* Fix typo in V1 Python interpreter selection error message (#9589)
  `PR #9589 <https://github.com/pantsbuild/pants/pull/9589>`_