• 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/avro/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.engine.rules import collect_rules, rule
×
UNCOV
5
from pants.engine.target import (
×
6
    COMMON_TARGET_FIELDS,
7
    AllTargets,
8
    Dependencies,
9
    MultipleSourcesField,
10
    OverridesField,
11
    SingleSourceField,
12
    Target,
13
    TargetFilesGenerator,
14
    Targets,
15
    generate_file_based_overrides_field_help_message,
16
    generate_multiple_sources_field_help_message,
17
)
UNCOV
18
from pants.util.docutil import doc_url
×
UNCOV
19
from pants.util.logging import LogLevel
×
UNCOV
20
from pants.util.strutil import help_text
×
21

22

UNCOV
23
class AvroDependenciesField(Dependencies):
×
UNCOV
24
    pass
×
25

26

UNCOV
27
class AllAvroTargets(Targets):
×
UNCOV
28
    pass
×
29

30

UNCOV
31
@rule(desc="Find all Avro targets in project", level=LogLevel.DEBUG)
×
UNCOV
32
async def find_all_avro_targets(targets: AllTargets) -> AllAvroTargets:
×
33
    return AllAvroTargets(tgt for tgt in targets if tgt.has_field(AvroSourceField))
×
34

35

36
# -----------------------------------------------------------------------------------------------
37
# `avro_source` target
38
# -----------------------------------------------------------------------------------------------
39

40

UNCOV
41
class AvroSourceField(SingleSourceField):
×
UNCOV
42
    expected_file_extensions = (".avsc", ".avpr", ".avdl")
×
43

44

UNCOV
45
class AvroSourceTarget(Target):
×
UNCOV
46
    alias = "avro_source"
×
UNCOV
47
    core_fields = (
×
48
        *COMMON_TARGET_FIELDS,
49
        AvroDependenciesField,
50
        AvroSourceField,
51
    )
UNCOV
52
    help = help_text(
×
53
        f"""
54
        A single Avro file used to generate various languages.
55

56
        See {doc_url("avro")}.
57
        """
58
    )
59

60

61
# -----------------------------------------------------------------------------------------------
62
# `avro_sources` target generator
63
# -----------------------------------------------------------------------------------------------
64

65

UNCOV
66
class AvroSourcesGeneratingSourcesField(MultipleSourcesField):
×
UNCOV
67
    default = ("*.avsc", "*.avpr", "*.avdl")
×
UNCOV
68
    expected_file_extensions = (".avsc", ".avpr", ".avdl")
×
UNCOV
69
    help = generate_multiple_sources_field_help_message(
×
70
        "Example: `sources=['example.avsc', 'new_*.avpr', '!old_ignore.avdl']`"
71
    )
72

73

UNCOV
74
class AvroSourcesOverridesField(OverridesField):
×
UNCOV
75
    help = generate_file_based_overrides_field_help_message(
×
76
        AvroSourceTarget.alias,
77
        """
78
        overrides={
79
            "bar.proto": {"description": "our user model"]},
80
            ("foo.proto", "bar.proto"): {"tags": ["overridden"]},
81
        }
82
        """,
83
    )
84

85

UNCOV
86
class AvroSourcesGeneratorTarget(TargetFilesGenerator):
×
UNCOV
87
    alias = "avro_sources"
×
UNCOV
88
    core_fields = (
×
89
        *COMMON_TARGET_FIELDS,
90
        AvroSourcesGeneratingSourcesField,
91
        AvroSourcesOverridesField,
92
    )
UNCOV
93
    generated_target_cls = AvroSourceTarget
×
UNCOV
94
    copied_fields = COMMON_TARGET_FIELDS
×
UNCOV
95
    moved_fields = (AvroDependenciesField,)
×
UNCOV
96
    help = "Generate a `avro_source` target for each file in the `sources` field."
×
97

98

UNCOV
99
def rules():
×
UNCOV
100
    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

© 2025 Coveralls, Inc