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

pantsbuild / pants / 20333307239

18 Dec 2025 10:07AM UTC coverage: 75.452% (-4.8%) from 80.295%
20333307239

Pull #22949

github

web-flow
Merge b07232683 into 407284c67
Pull Request #22949: Add experimental uv resolver for Python lockfiles

51 of 96 new or added lines in 5 files covered. (53.13%)

2857 existing lines in 120 files now uncovered.

66315 of 87890 relevant lines covered (75.45%)

2.78 hits per line

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

93.94
/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

4
from pants.engine.rules import collect_rules, rule
1✔
5
from pants.engine.target import (
1✔
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
)
18
from pants.util.docutil import doc_url
1✔
19
from pants.util.logging import LogLevel
1✔
20
from pants.util.strutil import help_text
1✔
21

22

23
class AvroDependenciesField(Dependencies):
1✔
24
    pass
1✔
25

26

27
class AllAvroTargets(Targets):
1✔
28
    pass
1✔
29

30

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

35

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

40

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

44

45
class AvroSourceTarget(Target):
1✔
46
    alias = "avro_source"
1✔
47
    core_fields = (
1✔
48
        *COMMON_TARGET_FIELDS,
49
        AvroDependenciesField,
50
        AvroSourceField,
51
    )
52
    help = help_text(
1✔
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

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

73

74
class AvroSourcesOverridesField(OverridesField):
1✔
75
    help = generate_file_based_overrides_field_help_message(
1✔
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

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

98

99
def rules():
1✔
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