Open
Description
Description
I have a quick technical question on this function: https://github.com/pypa/pip/blob/f5ff4fa27dd991f209f2a9f9283a7c1561221b2c/src/pip/_internal/req/constructors.py#L44C1-L53C34
def _strip_extras(path: str) -> Tuple[str, Optional[str]]:
m = re.match(r"^(.+)(\[[^\]]+\])$", path)
extras = None
if m:
path_no_extras = m.group(1)
extras = m.group(2)
else:
path_no_extras = path
return path_no_extras, extras
It's being used to separate package_name[extra]
into package_name
and [extra]
However its seems that this function (the regex specifically) does not work if you use a version specifier ==1.0.0
or >=1.0.0
, is it intended ?
import re
from typing import Optional, Tuple
def _strip_extras(path: str) -> Tuple[str, Optional[str]]:
m = re.match(r"^(.+)(\[[^\]]+\])$", path)
extras = None
if m:
path_no_extras = m.group(1)
extras = m.group(2)
else:
path_no_extras = path
return path_no_extras, extras
if __name__ == "__main__":
print(f"{_strip_extras('package_name[extra]')=}"). #
print(f"{_strip_extras('package_name[extra]==1.0.0')=}")
print(f"{_strip_extras('package_name[extra]>=1.0.0')=}")
_strip_extras('package_name[extra]')=('package_name', '[extra]')
_strip_extras('package_name[extra]==1.0.0')=('package_name[extra]==1.0.0', None)
_strip_extras('package_name[extra]>=1.0.0')=('package_name[extra]>=1.0.0', None)
Expected behavior
The expected behavior would probably be, instead of
_strip_extras('package_name[extra]==1.0.0')=('package_name[extra]==1.0.0', None)
_strip_extras('package_name[extra]>=1.0.0')=('package_name[extra]>=1.0.0', None)
getting this:
_strip_extras('package_name[extra]==1.0.0')=('package_name==1.0.0', '[extra]')
_strip_extras('package_name[extra]>=1.0.0')=('package_name>=1.0.0', '[extra]')
pip version
Any
Python version
Any
OS
Any
How to Reproduce
See above
Output
No response
Code of Conduct
- I agree to follow the PSF Code of Conduct.
Activity