• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pantsbuild / pants / 35029
0%
main: 93%

Build:
Build:
LAST BUILD BRANCH: csb/enable-lto-redux
DEFAULT BRANCH: main
Ran 21 Aug 2020 05:27PM UTC
Jobs 1
Files 440
Run time 23s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
35029

push

travis-ci-com

web-flow
Add transitive excludes for `dependencies` with `!!` (#10663)

## Problem

Closes https://github.com/pantsbuild/pants/issues/10661. As described there, sometimes users want to be able to exclude certain problematic dependencies from things like `python_binary` or `python_tests`, such as TensorFlow. Direct dependency ignores via `!` are not adequate because those dependencies might be a transitive dependency.

The user could instead be disciplined with their transitive dependencies to make sure the dep they don't want is not used. However, this is difficult to get right. It would also often mean creating two targets for the same library code, one with the dep and one without; that would mean dependency inference couldn't work anymore due to ambiguous owners.

## Solution

For target types that support it, you can add `!!path/to:address` to the `dependencies` field. This will ignore the dependency both if it's a direct dependency and if it's a transitive dependency.

To limit the risk of confusion, this new mechanism only works with certain target types that have declared they support the syntax, such as `python_binary`. These target types are meant to be "roots", i.e. not have dependees. Otherwise, users get this error:

```
▶ ./pants dependencies src/python/pants/util
15:59:08 [ERROR] 1 Exception encountered:

  TransitiveExcludesNotSupportedError: Bad value '!!//:pants_toml' in the `dependencies` field for src/python/pants/util. Transitive excludes with `!!` are not supported for this target type. Did you mean to use a single `!` for a direct exclude?

Transitive excludes work with these target types: ['python_binary', 'python_distribution', 'python_tests']

(Use --print-exception-stacktrace to see more error details.)
```

[ci skip-rust]
[ci skip-build-wheels]

84 of 84 new or added lines in 7 files covered. (100.0%)

0 of 29264 relevant lines covered (0.0%)

0.0 hits per line

Jobs
ID Job ID Ran Files Coverage
4 35029.4 (PANTS_CONFIG_FILES="${TRAVIS_BUILD_DIR}/pants.travis-ci.toml" PANTS_DYNAMIC_UI=false LC_ALL="en_US.UTF-8" AWS_BUCKET=ci-public.pantsbuild.org BOOTSTRAPPED_PEX_KEY_PREFIX=daily/${TRAVIS_BUILD_NUMBER}/${TRAVIS_BUILD_ID}/pants.pex NATIVE_ENGINE_SO_KEY_PREFIX=monthly/native_engine_so PYENV_PY27_VERSION=2.7.18 PYENV_PY36_VERSION=3.6.10 PYENV_PY37_VERSION=3.7.7 PYENV_PY38_VERSION=3.8.3 PYENV_ROOT_OSX=${HOME}/.pants_pyenv PYENV_ROOT="${PYENV_ROOT:-${PYENV_ROOT_OSX}}" PATH="${PYENV_ROOT}/shims:${PATH}" AWS_CLI_ROOT="${HOME}/.aws_cli" AWS_ACCESS_KEY_ID__TO_BE_REEXPORTED_ON_DEPLOYS=AKIAV6A6G7RQ2HFZ5KP7 AWS_SECRET_ACCESS_KEY=[secure] RUST_BACKTRACE="all" BOOTSTRAPPED_PEX_KEY_SUFFIX=py36.linux PANTS_REMOTE_CA_CERTS_PATH=/usr/lib/google-cloud-sdk/lib/third_party/grpc/_cython/_credentials/roots.pem CACHE_NAME=python_tests.py36) 21 Aug 2020 05:27PM UTC 0
0.0
Travis Job 35029.4
Source Files on build 35029
Detailed source file information is not available for this build.
  • Back to Repo
  • Build #35029
  • d03d7de8 on github
  • Prev Build on master (#35026)
  • Next Build on master (#35031)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc