• 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/thrift/apache/java/rules.py
1
# Copyright 2021 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
UNCOV
3
from __future__ import annotations
×
4

UNCOV
5
from dataclasses import dataclass
×
6

UNCOV
7
from pants.backend.codegen.thrift.apache.java import subsystem, symbol_mapper
×
UNCOV
8
from pants.backend.codegen.thrift.apache.java.subsystem import ApacheThriftJavaSubsystem
×
UNCOV
9
from pants.backend.codegen.thrift.apache.rules import (
×
10
    GenerateThriftSourcesRequest,
11
    generate_apache_thrift_sources,
12
)
UNCOV
13
from pants.backend.codegen.thrift.target_types import (
×
14
    ThriftDependenciesField,
15
    ThriftSourceField,
16
    ThriftSourcesGeneratorTarget,
17
    ThriftSourceTarget,
18
)
UNCOV
19
from pants.backend.java.target_types import JavaSourceField
×
UNCOV
20
from pants.build_graph.address import Address
×
UNCOV
21
from pants.engine.fs import AddPrefix
×
UNCOV
22
from pants.engine.intrinsics import digest_to_snapshot
×
UNCOV
23
from pants.engine.rules import collect_rules, implicitly, rule
×
UNCOV
24
from pants.engine.target import (
×
25
    FieldSet,
26
    GeneratedSources,
27
    GenerateSourcesRequest,
28
    InferDependenciesRequest,
29
    InferredDependencies,
30
)
UNCOV
31
from pants.engine.unions import UnionRule
×
UNCOV
32
from pants.jvm.dependency_inference import artifact_mapper
×
UNCOV
33
from pants.jvm.dependency_inference.artifact_mapper import (
×
34
    AllJvmArtifactTargets,
35
    UnversionedCoordinate,
36
    find_jvm_artifacts_or_raise,
37
)
UNCOV
38
from pants.jvm.subsystems import JvmSubsystem
×
UNCOV
39
from pants.jvm.target_types import JvmResolveField, PrefixedJvmJdkField, PrefixedJvmResolveField
×
UNCOV
40
from pants.source.source_root import SourceRootRequest, get_source_root
×
UNCOV
41
from pants.util.logging import LogLevel
×
42

43

UNCOV
44
class GenerateJavaFromThriftRequest(GenerateSourcesRequest):
×
UNCOV
45
    input = ThriftSourceField
×
UNCOV
46
    output = JavaSourceField
×
47

48

UNCOV
49
@rule(desc="Generate Java from Thrift", level=LogLevel.DEBUG)
×
UNCOV
50
async def generate_java_from_thrift(
×
51
    request: GenerateJavaFromThriftRequest,
52
    thrift_java: ApacheThriftJavaSubsystem,
53
) -> GeneratedSources:
54
    result = await generate_apache_thrift_sources(
×
55
        GenerateThriftSourcesRequest(
56
            thrift_source_field=request.protocol_target[ThriftSourceField],
57
            lang_id="java",
58
            lang_options=thrift_java.gen_options,
59
            lang_name="Java",
60
        ),
61
        **implicitly(),
62
    )
63

64
    source_root = await get_source_root(SourceRootRequest.for_target(request.protocol_target))
×
65

66
    source_root_restored = (
×
67
        await digest_to_snapshot(**implicitly(AddPrefix(result.snapshot.digest, source_root.path)))
68
        if source_root.path != "."
69
        else await digest_to_snapshot(result.snapshot.digest)
70
    )
71
    return GeneratedSources(source_root_restored)
×
72

73

UNCOV
74
@dataclass(frozen=True)
×
UNCOV
75
class ApacheThriftJavaDependenciesInferenceFieldSet(FieldSet):
×
UNCOV
76
    required_fields = (ThriftDependenciesField, JvmResolveField)
×
77

UNCOV
78
    dependencies: ThriftDependenciesField
×
UNCOV
79
    resolve: JvmResolveField
×
80

81

UNCOV
82
class InferApacheThriftJavaDependencies(InferDependenciesRequest):
×
UNCOV
83
    infer_from = ApacheThriftJavaDependenciesInferenceFieldSet
×
84

85

UNCOV
86
@dataclass(frozen=True)
×
UNCOV
87
class ApacheThriftJavaRuntimeForResolveRequest:
×
UNCOV
88
    resolve_name: str
×
89

90

UNCOV
91
@dataclass(frozen=True)
×
UNCOV
92
class ApacheThriftJavaRuntimeForResolve:
×
UNCOV
93
    addresses: frozenset[Address]
×
94

95

UNCOV
96
_LIBTHRIFT_GROUP = "org.apache.thrift"
×
UNCOV
97
_LIBTHRIFT_ARTIFACT = "libthrift"
×
98

99

UNCOV
100
@rule
×
UNCOV
101
async def resolve_apache_thrift_java_runtime_for_resolve(
×
102
    request: ApacheThriftJavaRuntimeForResolveRequest,
103
    jvm_artifact_targets: AllJvmArtifactTargets,
104
    jvm: JvmSubsystem,
105
) -> ApacheThriftJavaRuntimeForResolve:
106
    addresses = find_jvm_artifacts_or_raise(
×
107
        required_coordinates=[
108
            UnversionedCoordinate(
109
                group=_LIBTHRIFT_GROUP,
110
                artifact=_LIBTHRIFT_ARTIFACT,
111
            )
112
        ],
113
        resolve=request.resolve_name,
114
        jvm_artifact_targets=jvm_artifact_targets,
115
        jvm=jvm,
116
        subsystem="the Apache Thrift runtime",
117
        target_type="protobuf_sources",
118
    )
119
    return ApacheThriftJavaRuntimeForResolve(addresses)
×
120

121

UNCOV
122
@rule
×
UNCOV
123
async def infer_apache_thrift_java_dependencies(
×
124
    request: InferApacheThriftJavaDependencies, jvm: JvmSubsystem
125
) -> InferredDependencies:
126
    resolve = request.field_set.resolve.normalized_value(jvm)
×
127

128
    dependencies_info = await resolve_apache_thrift_java_runtime_for_resolve(
×
129
        ApacheThriftJavaRuntimeForResolveRequest(resolve), **implicitly()
130
    )
131
    return InferredDependencies(dependencies_info.addresses)
×
132

133

UNCOV
134
def rules():
×
UNCOV
135
    return (
×
136
        *collect_rules(),
137
        *subsystem.rules(),
138
        *symbol_mapper.rules(),
139
        UnionRule(GenerateSourcesRequest, GenerateJavaFromThriftRequest),
140
        UnionRule(InferDependenciesRequest, InferApacheThriftJavaDependencies),
141
        ThriftSourceTarget.register_plugin_field(PrefixedJvmJdkField),
142
        ThriftSourcesGeneratorTarget.register_plugin_field(PrefixedJvmJdkField),
143
        ThriftSourceTarget.register_plugin_field(PrefixedJvmResolveField),
144
        ThriftSourcesGeneratorTarget.register_plugin_field(PrefixedJvmResolveField),
145
        # Rules needed to avoid rule graph errors.
146
        *artifact_mapper.rules(),
147
    )
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