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

pantsbuild / pants / 19015773527

02 Nov 2025 05:33PM UTC coverage: 17.872% (-62.4%) from 80.3%
19015773527

Pull #22816

github

web-flow
Merge a12d75757 into 6c024e162
Pull Request #22816: Update Pants internal Python to 3.14

4 of 5 new or added lines in 3 files covered. (80.0%)

28452 existing lines in 683 files now uncovered.

9831 of 55007 relevant lines covered (17.87%)

0.18 hits per line

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

0.0
/src/python/pants/core/goals/generate_snapshots.py
1
# Copyright 2023 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

UNCOV
4
from __future__ import annotations
×
5

UNCOV
6
import logging
×
UNCOV
7
from abc import ABCMeta
×
UNCOV
8
from dataclasses import dataclass
×
9

UNCOV
10
from pants.core.environments.rules import EnvironmentNameRequest, resolve_environment_name
×
UNCOV
11
from pants.engine.environment import EnvironmentName
×
UNCOV
12
from pants.engine.fs import MergeDigests, Snapshot, Workspace
×
UNCOV
13
from pants.engine.goal import Goal, GoalSubsystem
×
UNCOV
14
from pants.engine.internals.specs_rules import find_valid_field_sets_for_target_roots
×
UNCOV
15
from pants.engine.intrinsics import digest_to_snapshot
×
UNCOV
16
from pants.engine.rules import collect_rules, concurrently, goal_rule, implicitly, rule
×
UNCOV
17
from pants.engine.target import FieldSet, NoApplicableTargetsBehavior, TargetRootsToFieldSetsRequest
×
UNCOV
18
from pants.engine.unions import UnionMembership, union
×
19

UNCOV
20
logger = logging.getLogger(__name__)
×
21

22

UNCOV
23
@union(in_scope_types=[EnvironmentName])
×
UNCOV
24
class GenerateSnapshotsFieldSet(FieldSet, metaclass=ABCMeta):
×
25
    """The fields necessary to generate snapshots from a target."""
26

27

UNCOV
28
@dataclass(frozen=True)
×
UNCOV
29
class GenerateSnapshotsResult:
×
UNCOV
30
    snapshot: Snapshot
×
31

32

UNCOV
33
@rule(polymorphic=True)
×
UNCOV
34
async def generate_snapshots(
×
35
    field_set: GenerateSnapshotsFieldSet, environment_name: EnvironmentName
36
) -> GenerateSnapshotsResult:
37
    raise NotImplementedError()
×
38

39

UNCOV
40
@dataclass(frozen=True)
×
UNCOV
41
class EnvironmentAwareGenerateSnapshotsRequest:
×
42
    """Request class to request a `GenerateSnapshotsResult` in an environment-aware fashion."""
43

UNCOV
44
    field_set: GenerateSnapshotsFieldSet
×
45

46

UNCOV
47
@rule
×
UNCOV
48
async def environment_aware_generate_snapshots(
×
49
    request: EnvironmentAwareGenerateSnapshotsRequest,
50
) -> GenerateSnapshotsResult:
51
    environment_name = await resolve_environment_name(
×
52
        EnvironmentNameRequest.from_field_set(request.field_set),
53
        **implicitly(),
54
    )
55
    result = await generate_snapshots(
×
56
        **implicitly(
57
            {request.field_set: GenerateSnapshotsFieldSet, environment_name: EnvironmentName}
58
        )
59
    )
60
    return result
×
61

62

UNCOV
63
class GenerateSnapshotsSubsystem(GoalSubsystem):
×
UNCOV
64
    name = "generate-snapshots"
×
UNCOV
65
    help = "Generate test snapshots."
×
66

UNCOV
67
    @classmethod
×
UNCOV
68
    def activated(cls, union_membership: UnionMembership) -> bool:
×
69
        return GenerateSnapshotsFieldSet in union_membership
×
70

71

UNCOV
72
class GenerateSnapshots(Goal):
×
UNCOV
73
    subsystem_cls = GenerateSnapshotsSubsystem
×
UNCOV
74
    environment_behavior = Goal.EnvironmentBehavior.USES_ENVIRONMENTS
×
75

76

UNCOV
77
@goal_rule
×
UNCOV
78
async def generate_snapshots_goal(workspace: Workspace) -> GenerateSnapshots:
×
79
    target_roots_to_field_sets = await find_valid_field_sets_for_target_roots(
×
80
        TargetRootsToFieldSetsRequest(
81
            GenerateSnapshotsFieldSet,
82
            goal_description=f"the `{GenerateSnapshotsSubsystem.name}` goal",
83
            no_applicable_targets_behavior=NoApplicableTargetsBehavior.error,
84
        ),
85
        **implicitly(),
86
    )
87

88
    if not target_roots_to_field_sets.field_sets:
×
89
        return GenerateSnapshots(exit_code=0)
×
90

91
    snapshot_results = await concurrently(
×
92
        environment_aware_generate_snapshots(EnvironmentAwareGenerateSnapshotsRequest(field_set))
93
        for field_set in target_roots_to_field_sets.field_sets
94
    )
95

96
    all_snapshots = await digest_to_snapshot(
×
97
        **implicitly(MergeDigests([result.snapshot.digest for result in snapshot_results]))
98
    )
99
    workspace.write_digest(all_snapshots.digest)
×
100
    for file in all_snapshots.files:
×
101
        logger.info(f"Generated {file}")
×
102
    return GenerateSnapshots(exit_code=0)
×
103

104

UNCOV
105
def rules():
×
UNCOV
106
    return collect_rules()
×
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