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

pantsbuild / pants / 26342152999

23 May 2026 07:59PM UTC coverage: 91.165% (-1.6%) from 92.792%
26342152999

push

github

web-flow
Run Linux ARM CI on Depot runners (#23363)

RunsOn is deprecating their v2 stack, and rather than migrate
to v3 we should use the resources kindly donated by Depot.

GitHub also now has Linux ARM runners, should we need them.

87305 of 95766 relevant lines covered (91.16%)

3.87 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✔
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

© 2026 Coveralls, Inc