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

pantsbuild / pants / 18252174847

05 Oct 2025 01:36AM UTC coverage: 43.382% (-36.9%) from 80.261%
18252174847

push

github

web-flow
run tests on mac arm (#22717)

Just doing the minimal to pull forward the x86_64 pattern.

ref #20993

25776 of 59416 relevant lines covered (43.38%)

1.3 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

4
from pants.backend.codegen.thrift.subsystem import ThriftSubsystem
×
5
from pants.engine.rules import collect_rules, rule
×
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
)
21
from pants.engine.unions import UnionRule
×
22
from pants.util.docutil import doc_url
×
23
from pants.util.logging import LogLevel
×
24
from pants.util.strutil import help_text
×
25

26

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

30

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

34

35
@rule(desc="Find all Thrift targets in project", level=LogLevel.DEBUG)
×
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

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

43

44
@rule
×
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

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

62

63
class ThriftSourceTarget(Target):
×
64
    alias = "thrift_source"
×
65
    core_fields = (
×
66
        *COMMON_TARGET_FIELDS,
67
        ThriftDependenciesField,
68
        ThriftSourceField,
69
    )
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

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

92

93
class ThriftSourcesOverridesField(OverridesField):
×
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

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

118

119
def rules():
×
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