• 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/bsp/spec/lifecycle.py
1
# Copyright 2022 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
×
UNCOV
6
from typing import Any
×
7

UNCOV
8
from pants.bsp.spec.base import Uri
×
UNCOV
9
from pants.bsp.utils import freeze_json
×
10

11

UNCOV
12
@dataclass(frozen=True)
×
UNCOV
13
class BuildClientCapabilities:
×
14
    # The languages that this client supports.
15
    # The ID strings for each language are defined in the LSP.
16
    # The server must never respond with build targets for other
17
    # languages than those that appear in this list.
UNCOV
18
    language_ids: tuple[str, ...]
×
19

UNCOV
20
    @classmethod
×
UNCOV
21
    def from_json_dict(cls, d):
×
UNCOV
22
        return cls(language_ids=tuple(d.get("languageIds", [])))
×
23

UNCOV
24
    def to_json_dict(self):
×
UNCOV
25
        return {
×
26
            "languageIds": self.language_ids,
27
        }
28

29

UNCOV
30
@dataclass(frozen=True)
×
UNCOV
31
class InitializeBuildParams:
×
32
    # Name of the client
UNCOV
33
    display_name: str
×
34

35
    # The version of the client
UNCOV
36
    version: str
×
37

38
    # The BSP version that the client speaks
UNCOV
39
    bsp_version: str
×
40

41
    # The rootUri of the workspace
UNCOV
42
    root_uri: Uri
×
43

44
    # The capabilities of the client
UNCOV
45
    capabilities: BuildClientCapabilities
×
46

47
    # Additional metadata about the client
UNCOV
48
    data: Any | None
×
49

UNCOV
50
    @classmethod
×
UNCOV
51
    def from_json_dict(cls, d):
×
UNCOV
52
        return cls(
×
53
            display_name=d["displayName"],
54
            version=d["version"],
55
            bsp_version=d["bspVersion"],
56
            root_uri=d["rootUri"],
57
            capabilities=BuildClientCapabilities.from_json_dict(d["capabilities"]),
58
            data=freeze_json(d.get("data")),
59
        )
60

UNCOV
61
    def to_json_dict(self):
×
UNCOV
62
        result = {
×
63
            "displayName": self.display_name,
64
            "version": self.version,
65
            "bspVersion": self.bsp_version,
66
            "rootUri": self.root_uri,
67
            "capabilities": self.capabilities.to_json_dict(),
68
        }
UNCOV
69
        if self.data is not None:
×
UNCOV
70
            result["data"] = self.data
×
UNCOV
71
        return result
×
72

73

UNCOV
74
@dataclass(frozen=True)
×
UNCOV
75
class CompileProvider:
×
UNCOV
76
    language_ids: tuple[str, ...]
×
77

UNCOV
78
    @classmethod
×
UNCOV
79
    def from_json_dict(cls, d):
×
UNCOV
80
        return cls(language_ids=tuple(d.get("languageIds", [])))
×
81

UNCOV
82
    def to_json_dict(self):
×
UNCOV
83
        return {
×
84
            "languageIds": self.language_ids,
85
        }
86

87

UNCOV
88
@dataclass(frozen=True)
×
UNCOV
89
class RunProvider:
×
UNCOV
90
    language_ids: tuple[str, ...]
×
91

UNCOV
92
    @classmethod
×
UNCOV
93
    def from_json_dict(cls, d):
×
UNCOV
94
        return cls(language_ids=tuple(d.get("languageIds", [])))
×
95

UNCOV
96
    def to_json_dict(self):
×
UNCOV
97
        return {
×
98
            "languageIds": self.language_ids,
99
        }
100

101

UNCOV
102
@dataclass(frozen=True)
×
UNCOV
103
class DebugProvider:
×
UNCOV
104
    language_ids: tuple[str, ...]
×
105

UNCOV
106
    @classmethod
×
UNCOV
107
    def from_json_dict(cls, d):
×
UNCOV
108
        return cls(language_ids=tuple(d.get("languageIds", [])))
×
109

UNCOV
110
    def to_json_dict(self):
×
UNCOV
111
        return {
×
112
            "languageIds": self.language_ids,
113
        }
114

115

UNCOV
116
@dataclass(frozen=True)
×
UNCOV
117
class TestProvider:
×
UNCOV
118
    language_ids: tuple[str, ...]
×
119

UNCOV
120
    @classmethod
×
UNCOV
121
    def from_json_dict(cls, d):
×
UNCOV
122
        return cls(language_ids=tuple(d.get("languageIds", [])))
×
123

UNCOV
124
    def to_json_dict(self):
×
UNCOV
125
        return {
×
126
            "languageIds": self.language_ids,
127
        }
128

129

UNCOV
130
@dataclass(frozen=True)
×
UNCOV
131
class BuildServerCapabilities:
×
132
    # The languages the server supports compilation via method buildTarget/compile.
UNCOV
133
    compile_provider: CompileProvider | None
×
134

135
    # The languages the server supports test execution via method buildTarget/test
UNCOV
136
    test_provider: TestProvider | None
×
137

138
    # The languages the server supports run via method buildTarget/run
UNCOV
139
    run_provider: RunProvider | None
×
140

141
    # The languages the server supports debugging via method debugSession/start
UNCOV
142
    debug_provider: DebugProvider | None
×
143

144
    # The server can provide a list of targets that contain a
145
    # single text document via the method buildTarget/inverseSources
UNCOV
146
    inverse_sources_provider: bool | None
×
147

148
    # The server provides sources for library dependencies
149
    # via method buildTarget/dependencySources
UNCOV
150
    dependency_sources_provider: bool | None
×
151

152
    # The server can provide a list of dependency modules (libraries with meta information)
153
    # via method buildTarget/dependencyModules
UNCOV
154
    dependency_modules_provider: bool | None
×
155

156
    # The server provides all the resource dependencies
157
    # via method buildTarget/resources
UNCOV
158
    resources_provider: bool | None
×
159

160
    # Reloading the build state through workspace/reload is supported
UNCOV
161
    can_reload: bool | None
×
162

163
    # The server sends notifications to the client on build
164
    # target change events via buildTarget/didChange
UNCOV
165
    build_target_changed_provider: bool | None
×
166

UNCOV
167
    @classmethod
×
UNCOV
168
    def from_json_dict(cls, d):
×
UNCOV
169
        return cls(
×
170
            compile_provider=(
171
                CompileProvider.from_json_dict(d["compileProvider"])
172
                if "compileProvider" in d
173
                else None
174
            ),
175
            test_provider=(
176
                TestProvider.from_json_dict(d["testProvider"]) if "testProvider" in d else None
177
            ),
178
            run_provider=(
179
                RunProvider.from_json_dict(d["runProvider"]) if "runProvider" in d else None
180
            ),
181
            debug_provider=(
182
                DebugProvider.from_json_dict(d["debugProvider"]) if "debugProvider" in d else None
183
            ),
184
            inverse_sources_provider=d.get("inverseSourcesProvider"),
185
            dependency_sources_provider=d.get("dependencySourcesProvider"),
186
            dependency_modules_provider=d.get("dependencyModulesProvider"),
187
            resources_provider=d.get("resourcesProvider"),
188
            can_reload=d.get("canReload"),
189
            build_target_changed_provider=d.get("buildTargetChangedProvider"),
190
        )
191

UNCOV
192
    def to_json_dict(self):
×
UNCOV
193
        result = {}
×
UNCOV
194
        if self.compile_provider is not None:
×
UNCOV
195
            result["compileProvider"] = self.compile_provider.to_json_dict()
×
UNCOV
196
        if self.test_provider is not None:
×
UNCOV
197
            result["testProvider"] = self.test_provider.to_json_dict()
×
UNCOV
198
        if self.run_provider is not None:
×
UNCOV
199
            result["runProvider"] = self.run_provider.to_json_dict()
×
UNCOV
200
        if self.debug_provider is not None:
×
UNCOV
201
            result["debugProvider"] = self.debug_provider.to_json_dict()
×
UNCOV
202
        if self.inverse_sources_provider is not None:
×
203
            result["inverseSourcesProvider"] = self.inverse_sources_provider
×
UNCOV
204
        if self.dependency_sources_provider is not None:
×
UNCOV
205
            result["dependencySourcesProvider"] = self.dependency_sources_provider
×
UNCOV
206
        if self.dependency_modules_provider is not None:
×
UNCOV
207
            result["dependencyModulesProvider"] = self.dependency_modules_provider
×
UNCOV
208
        if self.resources_provider is not None:
×
UNCOV
209
            result["resourcesProvider"] = self.resources_provider
×
UNCOV
210
        if self.can_reload is not None:
×
211
            result["canReload"] = self.can_reload
×
UNCOV
212
        if self.build_target_changed_provider is not None:
×
213
            result["buildTargetChangedProvider"] = self.build_target_changed_provider
×
UNCOV
214
        return result
×
215

216

UNCOV
217
@dataclass(frozen=True)
×
UNCOV
218
class InitializeBuildResult:
×
219
    # Name of the server
UNCOV
220
    display_name: str
×
221

222
    # The version of the server
UNCOV
223
    version: str
×
224

225
    # The BSP version that the server speaks
UNCOV
226
    bsp_version: str
×
227

228
    # The capabilities of the build server
UNCOV
229
    capabilities: BuildServerCapabilities
×
230

231
    # Additional metadata about the server
UNCOV
232
    data: Any | None
×
233

UNCOV
234
    @classmethod
×
UNCOV
235
    def from_json_dict(cls, d):
×
UNCOV
236
        return cls(
×
237
            display_name=d["displayName"],
238
            version=d["version"],
239
            bsp_version=d["bspVersion"],
240
            capabilities=BuildServerCapabilities.from_json_dict(d["capabilities"]),
241
            data=d.get("data"),
242
        )
243

UNCOV
244
    def to_json_dict(self):
×
UNCOV
245
        result = {
×
246
            "displayName": self.display_name,
247
            "version": self.version,
248
            "bspVersion": self.bsp_version,
249
            "capabilities": self.capabilities.to_json_dict(),
250
        }
UNCOV
251
        if self.data is not None:
×
252
            # TODO: Figure out whether to encode/decode data in a generic manner.
253
            result["data"] = self.data
×
UNCOV
254
        return result
×
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