-
Notifications
You must be signed in to change notification settings - Fork 329
Closed
Labels
Description
Describe the bug
With package managers using packaging 23.0, dependency version specifiers like stone >= 2.*
are considered invalid and will fail to install a projects dependencies.
See also:
- After successful installation, pdm install fails if certain dependencies installed pdm-project/pdm#1596
- [BUG] Invalid version spec
>=5.*, <=6.*
creates unhandled junk dependencyb''
pdm-project/pdm#1619
To Reproduce
- Have this package as a dependency of a python project
- Install with a PEP 621 compliant package manager, e. g. pdm
Expected Behavior
Dependencies install cleanly
Actual Behavior
The installation process fails while parsing the dependencies of the `dropbox` package:
pdm.termui: Adding requirement requests>=2.16.2(from dropbox 11.36.0)
pdm.termui: Adding requirement six>=1.12.0(from dropbox 11.36.0)
pdm.termui: Adding requirement b''(from dropbox 11.36.0)
Traceback (most recent call last):
File "/usr/local/bin/pdm", line 8, in <module>
sys.exit(main())
^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/core.py", line 259, in main
return Core().main(args)
^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/core.py", line 191, in main
raise cast(Exception, err).with_traceback(traceback)
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/core.py", line 186, in main
f(project, options)
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/cli/commands/install.py", line 58, in handle
actions.do_lock(
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/cli/actions.py", line 95, in do_lock
mapping, dependencies = resolve(
^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/resolver/core.py", line 35, in resolve
result = resolver.resolve(requirements, max_rounds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/resolvelib/resolvers.py", line 521, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/resolvelib/resolvers.py", line 402, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/resolvelib/resolvers.py", line 238, in _attempt_to_pin_criterion
criteria = self._get_updated_criteria(candidate)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/resolvelib/resolvers.py", line 229, in _get_updated_criteria
self._add_to_criteria(criteria, requirement, parent=candidate)
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/resolvelib/resolvers.py", line 172, in _add_to_criteria
if not criterion.candidates:
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/resolvelib/structs.py", line 127, in __bool__
next(iter(self))
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/resolver/providers.py", line 261, in matches_gen
yield from super_find()
^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/resolver/providers.py", line 150, in matches_gen
candidates = self._find_candidates(reqs[0])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/resolver/providers.py", line 127, in _find_candidates
can = make_candidate(requirement)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/models/candidates.py", line 626, in make_candidate
return Candidate(req, name, version, link)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/models/candidates.py", line 145, in __init__
link = req.as_file_link() # type: ignore
^^^^^^^^^^^^^^^^^^
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/pdm/models/requirements.py", line 321, in as_file_link
return Link(url)
^^^^^^^^^
File "<string>", line 9, in __init__
File "/usr/local/Cellar/pdm/2.4.0/libexec/lib/python3.11/site-packages/unearth/link.py", line 54, in __post_init__
if self.url.startswith(vcs_prefixes):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: a bytes-like object is required, not 'str'
Versions
- Using
dropbox~=11.36.0
xingyaoc, nyanpasu64, edsalloor, trollwookiee and Roy-Orbison