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

pantsbuild / pants / 37394615658
93%

Build:
DEFAULT BRANCH: main
Ran 06 Oct 2026 12:37AM UTC
Jobs 11
Files 1783
Run time 3min
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

06 Oct 2026 12:33AM UTC coverage: 92.921% (+0.001%) from 92.92%
37394615658

push

github

web-flow
perf(docker): Build Index over Packageable Output Paths (#23689)

## What

`infer_docker_dependencies` looped over every packageable target for
every `docker_image`, and computed each target's default output path for
each candidate file ending. The cost of this was O(images x packageable
targets). This added significant cost on repos with many images and
targets.

This adds two small rules, each computed once per run:

- `packageable_output_paths`, per file ending, maps each default output
path to the positions of the packageable targets that produce it.
- `packageable_target_positions` maps each address to its position in
`AllPackageableTargets`.

Each image then looks up its candidate paths and addresses in those
indexes and collects the matching targets in a set. The inferred
dependencies don't change: `InferredDependencies` sorts and deduplicates
them, as it did for the old loop's list.

## Measurements

| Repo | Pairs | Control mean | Candidate mean | Difference | Per-pair
differences |
|---|---|---|---|---|---|
| Large private monorepo | 3 | 132.14s | 113.03s | **-19.11s (-14.5%)**
| -17.93, -17.76, -21.63 |
| Synthetic | 5 | 69.98s | 56.00s | **-13.98s (-20.0%)** | -14.02,
-14.58, -14.27, -13.42, -13.61 |

The saving grows with images x packageable targets. The synthetic repo
matches the large private repo's counts of both (about 1,700 images and
2,750 pex binaries), and every pair on both repos was faster.

## Tests

`pants test
src/python/pants/backend/docker/util_rules/dependencies_test.py` (the
test's explicit rule list now includes the two new rules), plus
`fmt`/`lint`/`check` on the changed files.

Disclosure: investigated and implemented with claude.

30 of 30 new or added lines in 1 file covered. (100.0%)

95996 of 103309 relevant lines covered (92.92%)

3.66 hits per line

Jobs
ID Job ID Ran Files Coverage
1 test_python_linux_x86_64_7/10 - 37394615658.1 06 Oct 2026 12:41AM UTC 1219
50.87
GitHub Action Run
2 test_python_linux_x86_64_8/10 - 37394615658.2 06 Oct 2026 12:42AM UTC 1214
52.72
GitHub Action Run
3 test_python_linux_x86_64_3/10 - 37394615658.3 06 Oct 2026 12:39AM UTC 1214
52.36
GitHub Action Run
4 test_python_linux_x86_64_2/10 - 37394615658.4 06 Oct 2026 12:39AM UTC 1215
58.6
GitHub Action Run
5 test_python_linux_x86_64_4/10 - 37394615658.5 06 Oct 2026 12:43AM UTC 1245
59.04
GitHub Action Run
6 test_python_linux_x86_64_9/10 - 37394615658.6 06 Oct 2026 12:40AM UTC 1225
54.01
GitHub Action Run
7 test_python_linux_x86_64_6/10 - 37394615658.7 06 Oct 2026 12:37AM UTC 1212
50.04
GitHub Action Run
8 test_python_linux_x86_64_0/10 - 37394615658.8 06 Oct 2026 12:40AM UTC 1236
57.46
GitHub Action Run
9 test_python_linux_x86_64_5/10 - 37394615658.9 06 Oct 2026 12:39AM UTC 1230
60.35
GitHub Action Run
10 test_python_linux_arm64 - 37394615658.10 06 Oct 2026 12:39AM UTC 1196
52.66
GitHub Action Run
11 test_python_linux_x86_64_1/10 - 37394615658.11 06 Oct 2026 12:40AM UTC 1215
48.88
GitHub Action Run
Source Files on build 37394615658
  • Tree
  • List 1783
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37394615658
  • d544d067 on github
  • Prev Build on main (#37360173709)
  • Next Build on main (#37616348623)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc