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

pantsbuild / pants / 23806493354

31 Mar 2026 03:49PM UTC coverage: 92.905% (+0.002%) from 92.903%
23806493354

push

github

web-flow
perf: Port `frozendict` to rust (#22501)

Before:
```console
(pants@3.11) ➜  pants git:(839363c8c9) hyperfine -w 2 -r 10 './pants --no-dynamic-ui --no-pantsd dependencies ::'
Benchmark 1: ./pants --no-dynamic-ui --no-pantsd dependencies ::
  Time (mean ± σ):     21.010 s ±  0.201 s    [User: 21.579 s, System: 7.112 s]
  Range (min … max):   20.804 s … 21.366 s    10 runs
 ```
After:
```console
(pants@3.11) ➜ pants git:(add/port-frozen-dict) hyperfine -w 2 -r 10
'./pants --no-dynamic-ui --no-pantsd dependencies ::'
Benchmark 1: ./pants --no-dynamic-ui --no-pantsd dependencies ::
Time (mean ± σ): 20.436 s ± 0.095 s [User: 20.932 s, System: 7.101 s]
  Range (min … max):   20.332 s … 20.605 s    10 runs
```

~2.5% faster

15 of 19 new or added lines in 3 files covered. (78.95%)

3 existing lines in 2 files now uncovered.

91601 of 98596 relevant lines covered (92.91%)

3.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.0
/src/python/pants/engine/internals/session.py
1
# Copyright 2016 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

4
from typing import Any, TypeVar, cast
11✔
5

6
from pants.util.frozendict import FrozenDict
11✔
7

8
_T = TypeVar("_T")
11✔
9

10

11
class RunId(int):
11✔
12
    """A unique id for a single run or `--loop` iteration of Pants within a single Scheduler.
13

14
    RunIds are not comparable across Scheduler instances, and only equality is meaningful, not
15
    ordering.
16
    """
17

18

19
class SessionValues(FrozenDict[type, Any]):
11✔
20
    """Values set for the Session, and exposed to @rules.
21

22
    Generally, each type provided via `SessionValues` should have a simple rule that returns the
23
    type so that users can directly request it in a rule, rather than needing to query
24
    `SessionValues`.
25
    """
26

27
    def __getitem__(self, item: type[_T]) -> _T:
11✔
28
        try:
11✔
29
            return cast(_T, super().__getitem__(item))
11✔
UNCOV
30
        except KeyError:
×
UNCOV
31
            raise KeyError(f"Expected {item.__name__} to be provided via SessionValues.")
×
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