@@ -135,22 +135,52 @@ def resolve_source_all(
135135 """Return list of (URL, version) for all matching source versions.
136136
137137 Returns list sorted by version (highest first).
138+
139+ Supports both old and new plugin interfaces:
140+ - New plugins implement resolve_source_all() returning list
141+ - Old plugins implement resolve_source() returning single tuple (backward compat)
138142 """
139143 constraint = ctx .constraints .get_constraint (req .name )
140144 logger .debug (
141145 f"resolving requirement { req } using { sdist_server_url } with constraint { constraint } "
142146 )
143147
144148 try :
145- resolver_results = overrides .find_and_invoke (
146- req .name ,
147- "resolve_source" ,
148- default_resolve_source_all ,
149- ctx = ctx ,
150- req = req ,
151- sdist_server_url = sdist_server_url ,
152- req_type = req_type ,
153- )
149+ # Check for new plugin hook first (returns list)
150+ new_plugin = overrides .find_override_method (req .name , "resolve_source_all" )
151+ if new_plugin :
152+ resolver_results = overrides .find_and_invoke (
153+ req .name ,
154+ "resolve_source_all" ,
155+ default_resolve_source_all ,
156+ ctx = ctx ,
157+ req = req ,
158+ sdist_server_url = sdist_server_url ,
159+ req_type = req_type ,
160+ )
161+ else :
162+ # Fall back to old plugin hook (returns single tuple for backward compat)
163+ old_plugin = overrides .find_override_method (req .name , "resolve_source" )
164+ if old_plugin :
165+ single_result = overrides .find_and_invoke (
166+ req .name ,
167+ "resolve_source" ,
168+ default_resolve_source ,
169+ ctx = ctx ,
170+ req = req ,
171+ sdist_server_url = sdist_server_url ,
172+ req_type = req_type ,
173+ )
174+ # Wrap old plugin result in list
175+ resolver_results = [single_result ]
176+ else :
177+ # No plugin, use default
178+ resolver_results = default_resolve_source_all (
179+ ctx = ctx ,
180+ req = req ,
181+ sdist_server_url = sdist_server_url ,
182+ req_type = req_type ,
183+ )
154184 except (
155185 resolvelib .InconsistentCandidate ,
156186 resolvelib .RequirementsConflicted ,
0 commit comments