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

pantsbuild / pants / 25443604553

06 May 2026 03:05PM UTC coverage: 92.879% (-0.04%) from 92.915%
25443604553

push

github

web-flow
[pants_ng] Scaffolding for a pants_ng mode. (#23319)

In this mode the command line is parsed as an
NG invocation, and dispatched appropriately.

Of course at the moment there are no
implementations to dispatch to. That will follow.

This does expose a new option, `pants_ng` to users. 
There is a big warning not to set it, but we're not trying
to hide that we're working on a new thing, so I am
comfortable with this.

25 of 76 new or added lines in 9 files covered. (32.89%)

1294 existing lines in 76 files now uncovered.

92234 of 99306 relevant lines covered (92.88%)

4.05 hits per line

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

100.0
/src/python/pants/option/options_diff.py
1
# Copyright 2025 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

4
from dataclasses import fields
12✔
5
from enum import Enum
12✔
6
from typing import Any
12✔
7

8
from pants.option.bootstrap_options import DynamicRemoteOptions
12✔
9

10

11
def summarize_options_map_diff(old: dict[str, Any], new: dict[str, Any]) -> str:
12✔
12
    """Compare two options map (as produced by `OptionsFingerprinter.options_map_for_scope`), and
13
    return a one-liner summarizing all differences, e.g.:
14

15
    `key1: 'old' -> "new'; list_key: ['x', 'y'] -> ['x']`
16
    """
17
    diffs = []
2✔
18
    for key in sorted({*old, *new}):
2✔
19
        o = old.get(key)
2✔
20
        n = new.get(key)
2✔
21

22
        if o == n:
2✔
23
            continue
2✔
24

25
        diffs.append(f"{key}: {o!r} -> {n!r}")
2✔
26

27
    return "; ".join(diffs)
2✔
28

29

30
def summarize_dynamic_options_diff(old: DynamicRemoteOptions, new: DynamicRemoteOptions) -> str:
12✔
31
    """Compare two `DynamicRemoteOptions` and return a one-liner summarizing all differences, e.g.:
32

33
    `provider: 'reapi' -> 'experimental-file'; cache_read: False -> True`
34
    """
UNCOV
35
    diffs = []
1✔
UNCOV
36
    for field in fields(DynamicRemoteOptions):
1✔
UNCOV
37
        key = field.name
1✔
UNCOV
38
        o = getattr(old, key)
1✔
UNCOV
39
        n = getattr(new, key)
1✔
40

UNCOV
41
        if o == n:
1✔
UNCOV
42
            continue
1✔
43

UNCOV
44
        o = o.value if isinstance(o, Enum) else o
1✔
UNCOV
45
        n = n.value if isinstance(n, Enum) else n
1✔
46

UNCOV
47
        diffs.append(f"{key}: {o!r} -> {n!r}")
1✔
48

UNCOV
49
    return "; ".join(diffs)
1✔
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