• 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/java/bsp/rules.py
1
# Copyright 2022 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
UNCOV
3
import logging
×
UNCOV
4
from dataclasses import dataclass
×
5

UNCOV
6
from pants.backend.java.bsp.spec import JavacOptionsItem, JavacOptionsParams, JavacOptionsResult
×
UNCOV
7
from pants.backend.java.target_types import JavaFieldSet, JavaSourceField
×
UNCOV
8
from pants.base.build_root import BuildRoot
×
UNCOV
9
from pants.bsp.protocol import BSPHandlerMapping
×
UNCOV
10
from pants.bsp.spec.base import BuildTargetIdentifier
×
UNCOV
11
from pants.bsp.util_rules.lifecycle import BSPLanguageSupport
×
UNCOV
12
from pants.bsp.util_rules.queries import compute_handler_query_rules
×
UNCOV
13
from pants.bsp.util_rules.targets import (
×
14
    BSPBuildTargetsMetadataRequest,
15
    BSPBuildTargetsMetadataResult,
16
    BSPCompileRequest,
17
    BSPCompileResult,
18
    BSPResourcesRequest,
19
    BSPResourcesResult,
20
)
UNCOV
21
from pants.engine.internals.selectors import concurrently
×
UNCOV
22
from pants.engine.rules import collect_rules, implicitly, rule
×
UNCOV
23
from pants.engine.target import FieldSet
×
UNCOV
24
from pants.engine.unions import UnionRule
×
UNCOV
25
from pants.jvm.bsp.compile import _jvm_bsp_compile, jvm_classes_directory
×
UNCOV
26
from pants.jvm.bsp.compile import rules as jvm_compile_rules
×
UNCOV
27
from pants.jvm.bsp.resources import _jvm_bsp_resources
×
UNCOV
28
from pants.jvm.bsp.resources import rules as jvm_resources_rules
×
UNCOV
29
from pants.jvm.compile import ClasspathEntryRequestFactory
×
UNCOV
30
from pants.jvm.target_types import JvmResolveField
×
31

UNCOV
32
LANGUAGE_ID = "java"
×
33

UNCOV
34
_logger = logging.getLogger(__name__)
×
35

36

UNCOV
37
class JavaBSPLanguageSupport(BSPLanguageSupport):
×
UNCOV
38
    language_id = LANGUAGE_ID
×
UNCOV
39
    can_compile = True
×
UNCOV
40
    can_provide_resources = True
×
41

42

UNCOV
43
@dataclass(frozen=True)
×
UNCOV
44
class JavaMetadataFieldSet(FieldSet):
×
UNCOV
45
    required_fields = (JavaSourceField, JvmResolveField)
×
46

47
    source: JavaSourceField
48
    resolve: JvmResolveField
49

50

UNCOV
51
class JavaBSPBuildTargetsMetadataRequest(BSPBuildTargetsMetadataRequest):
×
UNCOV
52
    language_id = LANGUAGE_ID
×
UNCOV
53
    can_merge_metadata_from = ()
×
UNCOV
54
    field_set_type = JavaMetadataFieldSet
×
55

UNCOV
56
    resolve_prefix = "jvm"
×
UNCOV
57
    resolve_field = JvmResolveField
×
58

59

UNCOV
60
@rule
×
UNCOV
61
async def bsp_resolve_java_metadata(
×
62
    _: JavaBSPBuildTargetsMetadataRequest,
63
) -> BSPBuildTargetsMetadataResult:
64
    return BSPBuildTargetsMetadataResult()
×
65

66

67
# -----------------------------------------------------------------------------------------------
68
# Javac Options Request
69
# See https://build-server-protocol.github.io/docs/extensions/java.html#javac-options-request
70
# -----------------------------------------------------------------------------------------------
71

72

UNCOV
73
class JavacOptionsHandlerMapping(BSPHandlerMapping):
×
UNCOV
74
    method_name = "buildTarget/javacOptions"
×
UNCOV
75
    request_type = JavacOptionsParams
×
UNCOV
76
    response_type = JavacOptionsResult
×
77

78

UNCOV
79
@dataclass(frozen=True)
×
UNCOV
80
class HandleJavacOptionsRequest:
×
81
    bsp_target_id: BuildTargetIdentifier
82

83

UNCOV
84
@dataclass(frozen=True)
×
UNCOV
85
class HandleJavacOptionsResult:
×
86
    item: JavacOptionsItem
87

88

UNCOV
89
@rule
×
UNCOV
90
async def handle_bsp_java_options_request(
×
91
    request: HandleJavacOptionsRequest,
92
    build_root: BuildRoot,
93
) -> HandleJavacOptionsResult:
94
    return HandleJavacOptionsResult(
×
95
        JavacOptionsItem(
96
            target=request.bsp_target_id,
97
            options=(),
98
            classpath=(),
99
            # TODO: Why is this hardcoded and not under pants_workdir?
100
            class_directory=build_root.pathlib_path.joinpath(
101
                ".pants.d", "bsp", jvm_classes_directory(request.bsp_target_id)
102
            ).as_uri(),
103
        )
104
    )
105

106

UNCOV
107
@rule
×
UNCOV
108
async def bsp_javac_options_request(request: JavacOptionsParams) -> JavacOptionsResult:
×
109
    results = await concurrently(
×
110
        handle_bsp_java_options_request(HandleJavacOptionsRequest(btgt), **implicitly())
111
        for btgt in request.targets
112
    )
113
    return JavacOptionsResult(items=tuple(result.item for result in results))
×
114

115

116
# -----------------------------------------------------------------------------------------------
117
# Compile Request
118
# -----------------------------------------------------------------------------------------------
119

120

UNCOV
121
@dataclass(frozen=True)
×
UNCOV
122
class JavaBSPCompileRequest(BSPCompileRequest):
×
UNCOV
123
    field_set_type = JavaFieldSet
×
124

125

UNCOV
126
@rule
×
UNCOV
127
async def bsp_java_compile_request(
×
128
    request: JavaBSPCompileRequest, classpath_entry_request: ClasspathEntryRequestFactory
129
) -> BSPCompileResult:
130
    result: BSPCompileResult = await _jvm_bsp_compile(request, classpath_entry_request)
×
131
    return result
×
132

133

134
# -----------------------------------------------------------------------------------------------
135
# Resources Request
136
# -----------------------------------------------------------------------------------------------
137

138

UNCOV
139
@dataclass(frozen=True)
×
UNCOV
140
class JavaBSPResourcesRequest(BSPResourcesRequest):
×
UNCOV
141
    field_set_type = JavaFieldSet
×
142

143

UNCOV
144
@rule
×
UNCOV
145
async def bsp_java_resources_request(
×
146
    request: JavaBSPResourcesRequest,
147
    build_root: BuildRoot,
148
) -> BSPResourcesResult:
149
    result: BSPResourcesResult = await _jvm_bsp_resources(request, build_root)
×
150
    return result
×
151

152

UNCOV
153
def rules():
×
UNCOV
154
    base_rules = (
×
155
        *collect_rules(),
156
        *jvm_compile_rules(),
157
        *jvm_resources_rules(),
158
        UnionRule(BSPLanguageSupport, JavaBSPLanguageSupport),
159
        UnionRule(BSPBuildTargetsMetadataRequest, JavaBSPBuildTargetsMetadataRequest),
160
        UnionRule(BSPHandlerMapping, JavacOptionsHandlerMapping),
161
        UnionRule(BSPCompileRequest, JavaBSPCompileRequest),
162
        UnionRule(BSPResourcesRequest, JavaBSPResourcesRequest),
163
    )
UNCOV
164
    return (*base_rules, *compute_handler_query_rules(base_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