1414# repurposed from pants.backend.python.target_types_rules
1515import dataclasses
1616import os
17+ from dataclasses import dataclass
1718
1819from pants .backend .python .dependency_inference .module_mapper import (
1920 PythonModuleOwners ,
2930 Dependencies ,
3031 DependenciesRequest ,
3132 ExplicitlyProvidedDependencies ,
33+ FieldSet ,
3234 InferDependenciesRequest ,
3335 InferredDependencies ,
3436 InvalidFieldException ,
35- WrappedTarget ,
36- WrappedTargetRequest ,
3737)
3838from pants .source .source_root import SourceRoot , SourceRootRequest
3939from pants .util .logging import LogLevel
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+
146154class 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