mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
bpo-46105: Honor spec when generating requirement specs with urls and extras. (GH-30151)
This commit is contained in:
parent
ecdc0ccede
commit
109d966021
3 changed files with 15 additions and 2 deletions
|
@ -669,7 +669,7 @@ class Distribution:
|
|||
def make_condition(name):
|
||||
return name and f'extra == "{name}"'
|
||||
|
||||
def parse_condition(section):
|
||||
def quoted_marker(section):
|
||||
section = section or ''
|
||||
extra, sep, markers = section.partition(':')
|
||||
if extra and markers:
|
||||
|
@ -677,8 +677,17 @@ class Distribution:
|
|||
conditions = list(filter(None, [markers, make_condition(extra)]))
|
||||
return '; ' + ' and '.join(conditions) if conditions else ''
|
||||
|
||||
def url_req_space(req):
|
||||
"""
|
||||
PEP 508 requires a space between the url_spec and the quoted_marker.
|
||||
Ref python/importlib_metadata#357.
|
||||
"""
|
||||
# '@' is uniquely indicative of a url_req.
|
||||
return ' ' * ('@' in req)
|
||||
|
||||
for section in sections:
|
||||
yield section.value + parse_condition(section.name)
|
||||
space = url_req_space(section.value)
|
||||
yield section.value + space + quoted_marker(section.name)
|
||||
|
||||
|
||||
class DistributionFinder(MetaPathFinder):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue