Skip to content

Commit b0d27d8

Browse files
committed
finish updating stevedore_extensions pants plugin for new API in pants 2.14
1 parent 798c712 commit b0d27d8

File tree

3 files changed

+32
-46
lines changed

3 files changed

+32
-46
lines changed

pants-plugins/stevedore_extensions/python_dependency_injection.py

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@
2525
from pants.engine.addresses import Address
2626
from pants.engine.rules import collect_rules, Get, rule, UnionRule
2727
from pants.engine.target import (
28+
FieldSet,
2829
InferDependenciesRequest,
2930
InferredDependencies,
3031
Targets,
31-
WrappedTarget,
32-
WrappedTargetRequest,
3332
)
3433
from pants.util.frozendict import FrozenDict
3534
from pants.util.logging import LogLevel
@@ -66,30 +65,28 @@ async def map_stevedore_extensions(
6665
)
6766

6867

68+
@dataclass(frozen=True)
69+
class PythonTestsStevedoreNamespaceInferenceFieldSet(FieldSet):
70+
required_fields = (PythonTestsDependenciesField, StevedoreNamespacesField)
71+
72+
stevedore_namespaces: StevedoreNamespacesField
73+
74+
6975
class InferStevedoreNamespaceDependencies(InferDependenciesRequest):
70-
inject_for = PythonTestsDependenciesField
76+
infer_from = PythonTestsStevedoreNamespaceInferenceFieldSet
7177

7278

7379
@rule(
7480
desc="Infer stevedore_extension target dependencies for python_tests based on namespace list.",
7581
level=LogLevel.DEBUG,
7682
)
77-
async def inject_stevedore_namespace_dependencies(
83+
async def infer_stevedore_namespace_dependencies(
7884
request: InferStevedoreNamespaceDependencies,
7985
stevedore_extensions: StevedoreExtensions,
8086
) -> InferredDependencies:
81-
original_tgt: WrappedTarget
82-
original_tgt = await Get(
83-
WrappedTarget,
84-
WrappedTargetRequest(
85-
request.dependencies_field.address,
86-
description_of_origin="inject_stevedore_namespace_dependencies",
87-
),
88-
)
89-
if original_tgt.target.get(StevedoreNamespacesField).value is None:
90-
return InferredDependencies()
91-
92-
namespaces: StevedoreNamespacesField = original_tgt.target[StevedoreNamespacesField]
87+
namespaces: StevedoreNamespacesField = request.field_set.stevedore_namespaces
88+
if namespaces.value is None:
89+
return InferredDependencies(())
9390

9491
addresses = []
9592
for namespace in namespaces.value:

pants-plugins/stevedore_extensions/target_types.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
from pants.engine.target import (
2323
AsyncFieldMixin,
2424
COMMON_TARGET_FIELDS,
25-
Dependencies,
2625
DictStringToStringField,
2726
InvalidFieldException,
2827
SecondaryOwnerMixin,
@@ -114,19 +113,12 @@ class ResolveStevedoreEntryPointsRequest:
114113
entry_points_field: StevedoreEntryPointsField
115114

116115

117-
# See `target_types_rules.py` for a dependency injection rule.
118-
class StevedoreDependenciesField(Dependencies):
119-
# dummy field for dependency injection to work
120-
alias = "_stevedore_dependencies"
121-
122-
123116
class StevedoreExtension(Target):
124117
alias = "stevedore_extension"
125118
core_fields = (
126119
*COMMON_TARGET_FIELDS,
127120
StevedoreNamespaceField,
128121
StevedoreEntryPointsField,
129-
StevedoreDependenciesField,
130122
PythonResolveField,
131123
)
132124
help = "Entry points used to generate setuptools metadata for stevedore."

pants-plugins/stevedore_extensions/target_types_rules.py

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# repurposed from pants.backend.python.target_types_rules
1515
import dataclasses
1616
import os
17+
from dataclasses import dataclass
1718

1819
from pants.backend.python.dependency_inference.module_mapper import (
1920
PythonModuleOwners,
@@ -29,11 +30,10 @@
2930
Dependencies,
3031
DependenciesRequest,
3132
ExplicitlyProvidedDependencies,
33+
FieldSet,
3234
InferDependenciesRequest,
3335
InferredDependencies,
3436
InvalidFieldException,
35-
WrappedTarget,
36-
WrappedTargetRequest,
3737
)
3838
from pants.source.source_root import SourceRoot, SourceRootRequest
3939
from pants.util.logging import LogLevel
@@ -42,7 +42,6 @@
4242
AllStevedoreExtensionTargets,
4343
ResolvedStevedoreEntryPoints,
4444
ResolveStevedoreEntryPointsRequest,
45-
StevedoreDependenciesField,
4645
StevedoreEntryPoints,
4746
StevedoreEntryPointsField,
4847
)
@@ -53,7 +52,7 @@ def find_all_stevedore_extension_targets(
5352
targets: AllTargets,
5453
) -> AllStevedoreExtensionTargets:
5554
return AllStevedoreExtensionTargets(
56-
tgt for tgt in targets if tgt.has_field(StevedoreDependenciesField)
55+
tgt for tgt in targets if tgt.has_field(StevedoreEntryPointsField)
5756
)
5857

5958

@@ -143,54 +142,52 @@ async def resolve_stevedore_entry_points(
143142
return ResolvedStevedoreEntryPoints(StevedoreEntryPoints(resolved))
144143

145144

145+
@dataclass(frozen=True)
146+
class StevedoreEntryPointsInferenceFieldSet(FieldSet):
147+
required_fields = (StevedoreEntryPointsField, Dependencies, PythonResolveField)
148+
149+
entry_points: StevedoreEntryPointsField
150+
dependencies: Dependencies
151+
resolve: PythonResolveField
152+
153+
146154
class InferStevedoreExtensionDependencies(InferDependenciesRequest):
147-
inject_for = StevedoreDependenciesField
155+
infer_from = StevedoreEntryPointsInferenceFieldSet
148156

149157

150158
@rule(
151159
desc="Inferring dependency from the stevedore_extension `entry_points` field",
152160
level=LogLevel.DEBUG,
153161
)
154-
async def inject_stevedore_entry_points_dependencies(
162+
async def infer_stevedore_entry_points_dependencies(
155163
request: InferStevedoreExtensionDependencies,
156164
python_setup: PythonSetup,
157165
) -> InferredDependencies:
158-
original_tgt: WrappedTarget = await Get(
159-
WrappedTarget,
160-
WrappedTargetRequest(
161-
request.dependencies_field.address,
162-
description_of_origin="inject_stevedore_entry_points_dependencies",
163-
),
164-
)
165166
entry_points: ResolvedStevedoreEntryPoints
166167
explicitly_provided_deps, entry_points = await MultiGet(
167168
Get(
168169
ExplicitlyProvidedDependencies,
169-
DependenciesRequest(original_tgt.target[Dependencies]),
170+
DependenciesRequest(request.field_set.dependencies),
170171
),
171172
Get(
172173
ResolvedStevedoreEntryPoints,
173-
ResolveStevedoreEntryPointsRequest(
174-
original_tgt.target[StevedoreEntryPointsField]
175-
),
174+
ResolveStevedoreEntryPointsRequest(request.field_set.entry_points),
176175
),
177176
)
178177
if entry_points.val is None:
179178
return InferredDependencies()
180-
address = original_tgt.target.address
179+
address = request.field_set.address
181180
owners_per_entry_point = await MultiGet(
182181
Get(
183182
PythonModuleOwners,
184183
PythonModuleOwnersRequest(
185184
entry_point.value.module,
186-
resolve=original_tgt.target[PythonResolveField].normalized_value(
187-
python_setup
188-
),
185+
resolve=request.field_set.resolve.normalized_value(python_setup),
189186
),
190187
)
191188
for entry_point in entry_points.val
192189
)
193-
original_entry_points = original_tgt.target[StevedoreEntryPointsField].value
190+
original_entry_points = request.field_set.entry_points.value
194191
resolved_owners = []
195192
for entry_point, owners, original_ep in zip(
196193
entry_points.val, owners_per_entry_point, original_entry_points

0 commit comments

Comments
 (0)