• 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/backend/codegen/thrift/target_types.py
1
# Copyright 2021 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

UNCOV
4
from pants.backend.codegen.thrift.subsystem import ThriftSubsystem
×
UNCOV
5
from pants.engine.rules import collect_rules, rule
×
UNCOV
6
from pants.engine.target import (
×
7
    COMMON_TARGET_FIELDS,
8
    AllTargets,
9
    Dependencies,
10
    MultipleSourcesField,
11
    OverridesField,
12
    SingleSourceField,
13
    Target,
14
    TargetFilesGenerator,
15
    TargetFilesGeneratorSettings,
16
    TargetFilesGeneratorSettingsRequest,
17
    Targets,
18
    generate_file_based_overrides_field_help_message,
19
    generate_multiple_sources_field_help_message,
20
)
UNCOV
21
from pants.engine.unions import UnionRule
×
UNCOV
22
from pants.util.docutil import doc_url
×
UNCOV
23
from pants.util.logging import LogLevel
×
UNCOV
24
from pants.util.strutil import help_text
×
25

26

UNCOV
27
class ThriftDependenciesField(Dependencies):
×
UNCOV
28
    pass
×
29

30

UNCOV
31
class AllThriftTargets(Targets):
×
UNCOV
32
    pass
×
33

34

UNCOV
35
@rule(desc="Find all Thrift targets in project", level=LogLevel.DEBUG)
×
UNCOV
36
async def find_all_thrift_targets(targets: AllTargets) -> AllThriftTargets:
×
37
    return AllThriftTargets(tgt for tgt in targets if tgt.has_field(ThriftSourceField))
×
38

39

UNCOV
40
class GeneratorSettingsRequest(TargetFilesGeneratorSettingsRequest):
×
UNCOV
41
    pass
×
42

43

UNCOV
44
@rule
×
UNCOV
45
async def generator_settings(
×
46
    _: GeneratorSettingsRequest,
47
    thrift: ThriftSubsystem,
48
) -> TargetFilesGeneratorSettings:
49
    return TargetFilesGeneratorSettings(
×
50
        add_dependencies_on_all_siblings=not thrift.dependency_inference
51
    )
52

53

54
# -----------------------------------------------------------------------------------------------
55
# `thrift_source` target
56
# -----------------------------------------------------------------------------------------------
57

58

UNCOV
59
class ThriftSourceField(SingleSourceField):
×
UNCOV
60
    expected_file_extensions = (".thrift",)
×
61

62

UNCOV
63
class ThriftSourceTarget(Target):
×
UNCOV
64
    alias = "thrift_source"
×
UNCOV
65
    core_fields = (
×
66
        *COMMON_TARGET_FIELDS,
67
        ThriftDependenciesField,
68
        ThriftSourceField,
69
    )
UNCOV
70
    help = help_text(
×
71
        f"""
72
        A single Thrift file used to generate various languages.
73

74
        See language-specific docs:
75
            Python: {doc_url("docs/python/integrations/thrift")}
76
        """
77
    )
78

79

80
# -----------------------------------------------------------------------------------------------
81
# `thrift_sources` target generator
82
# -----------------------------------------------------------------------------------------------
83

84

UNCOV
85
class ThriftSourcesGeneratingSourcesField(MultipleSourcesField):
×
UNCOV
86
    default = ("*.thrift",)
×
UNCOV
87
    expected_file_extensions = (".thrift",)
×
UNCOV
88
    help = generate_multiple_sources_field_help_message(
×
89
        "Example: `sources=['example.thrift', 'new_*.thrift', '!old_ignore.thrift']`"
90
    )
91

92

UNCOV
93
class ThriftSourcesOverridesField(OverridesField):
×
UNCOV
94
    help = generate_file_based_overrides_field_help_message(
×
95
        ThriftSourceTarget.alias,
96
        """
97
        overrides={
98
            "bar.thrift": {"description": "our user model"]},
99
            ("foo.thrift", "bar.thrift"): {"tags": ["overridden"]},
100
        }
101
        """,
102
    )
103

104

UNCOV
105
class ThriftSourcesGeneratorTarget(TargetFilesGenerator):
×
UNCOV
106
    alias = "thrift_sources"
×
UNCOV
107
    core_fields = (
×
108
        *COMMON_TARGET_FIELDS,
109
        ThriftSourcesGeneratingSourcesField,
110
        ThriftSourcesOverridesField,
111
    )
UNCOV
112
    generated_target_cls = ThriftSourceTarget
×
UNCOV
113
    copied_fields = (*COMMON_TARGET_FIELDS,)
×
UNCOV
114
    moved_fields = (ThriftDependenciesField,)
×
UNCOV
115
    settings_request_cls = GeneratorSettingsRequest
×
UNCOV
116
    help = "Generate a `thrift_source` target for each file in the `sources` field."
×
117

118

UNCOV
119
def rules():
×
UNCOV
120
    return [
×
121
        *collect_rules(),
122
        UnionRule(TargetFilesGeneratorSettingsRequest, GeneratorSettingsRequest),
123
    ]
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

© 2025 Coveralls, Inc