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

pantsbuild / pants / 18517631058

15 Oct 2025 04:18AM UTC coverage: 69.207% (-11.1%) from 80.267%
18517631058

Pull #22745

github

web-flow
Merge 642a76ca1 into 99919310e
Pull Request #22745: [windows] Add windows support in the stdio crate.

53815 of 77759 relevant lines covered (69.21%)

2.42 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

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

22

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

26

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

30

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

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

44

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

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

73

74
class AvroSourcesOverridesField(OverridesField):
×
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

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

98

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