You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have searched the issue tracker and believe that this is not a duplicate.
Make sure you run commands with -v flag before pasting the output.
Steps to reproduce
In an empty folder
pdm init
pdm add ./*+*.whl, adding a local dependency whose file name contains +
Actual behavior
PDM will add a dependency line in which + is encoded as %2B
The dependency line: "dependency_name @ file:///${PROJECT_ROOT}/dependency_name-dependency_version_number.whl",, where dependency_version_number contains +
It works fine in the current project. However, if I copy pyproject.toml and pdm.lock to a new peoject and run pdm sync, it returns KeyError: ('dependency_name', 'dependency_version_number', 'file:///${PROJECT_ROOT}/*%2B*.whl', False)
Entire message of pdm sync -v is below:
Traceback (most recent call last):
File "/home/ds/.local/bin/pdm", line 8, in <module>
sys.exit(main())
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/core.py", line 233, in main
return Core().main(args)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/core.py", line 168, in main
raise cast(Exception, err).with_traceback(traceback)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/core.py", line 163, in main
f(options.project, options)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/cli/commands/sync.py", line 26, in handle
actions.do_sync(
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/cli/actions.py", line 188, in do_sync
candidates = resolve_candidates_from_lockfile(project, requirements)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/cli/actions.py", line 135, in resolve_candidates_from_lockfile
mapping, *_ = resolve(
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/resolver/core.py", line 31, in resolve
result = resolver.resolve(requirements, max_rounds)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/resolvelib/resolvers.py", line 481, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/resolvelib/resolvers.py", line 373, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/resolvelib/resolvers.py", line 213, in _attempt_to_pin_criterion
criteria = self._get_updated_criteria(candidate)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/resolvelib/resolvers.py", line 203, in _get_updated_criteria
for requirement in self._p.get_dependencies(candidate=candidate):
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/resolver/providers.py", line 172, in get_dependencies
deps, requires_python, _ = self.repository.get_dependencies(candidate)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/models/repositories.py", line 407, in get_dependencies
reqs, python, summary = super().get_dependencies(candidate)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/models/repositories.py", line 70, in get_dependencies
requirements, requires_python, summary = getter(candidate)
File "/home/ds/.local/share/pdm/venv/lib/python3.8/site-packages/pdm/models/repositories.py", line 399, in _get_dependencies_from_lockfile
return self.candidate_info[self._identify_candidate(candidate)]
KeyError: ('dependency_name', 'dependency_version_number', 'file:///${PROJECT_ROOT}/*%2B*.whl', False)
If I manually replace %2B with + in pyproject.toml and run pdm install, it works well.
Expected behavior
Don't encode + to %2B when running pdm add.
I'm not sure if other characters will be encoded as well. If yes, they may cause the same issue and need to be fixed too.
Make sure you run commands with
-v
flag before pasting the output.Steps to reproduce
pdm init
pdm add ./*+*.whl
, adding a local dependency whose file name contains+
Actual behavior
+
is encoded as%2B
"dependency_name @ file:///${PROJECT_ROOT}/dependency_name-dependency_version_number.whl",
, wheredependency_version_number
contains+
pyproject.toml
andpdm.lock
to a new peoject and runpdm sync
, it returnsKeyError: ('dependency_name', 'dependency_version_number', 'file:///${PROJECT_ROOT}/*%2B*.whl', False)
Entire message of
pdm sync -v
is below:If I manually replace
%2B
with+
inpyproject.toml
and runpdm install
, it works well.Expected behavior
Don't encode
+
to%2B
when runningpdm add
.I'm not sure if other characters will be encoded as well. If yes, they may cause the same issue and need to be fixed too.
Environment Information
The text was updated successfully, but these errors were encountered: