-
-
Notifications
You must be signed in to change notification settings - Fork 466
Closed
Labels
🐛 bugSomething isn't workingSomething isn't working
Description
Describe the bug
Trying to use URL dependency on Git repository that references a branch does not work anymore and leads to UnpackError. I posted PR for unearth (frostming/unearth#171) that fixes the problem some time ago but this did not get any attention yet.
To reproduce
- pdm init
- pdm add "requests @ https://github.com/psf/requests@v2.31.1"
Expected Behavior
Dependency on URL referring to git branch can be added without issues.
Environment Information
PDM version:
2.26.1
Python Interpreter:
/tmp/tmp.N46OzhWJaa/.venv/bin/python (3.13)
Project Root:
/tmp/tmp.N46OzhWJaa
Local Packages:
/tmp/tmp.N46OzhWJaa/.venv/lib/python3.13/site-packages
{
"implementation_name": "cpython",
"implementation_version": "3.13.7",
"os_name": "posix",
"platform_machine": "x86_64",
"platform_release": "6.17.8-arch1-1",
"platform_system": "Linux",
"platform_version": "#1 SMP PREEMPT_DYNAMIC Fri, 14 Nov 2025 06:54:20 +0000",
"python_full_version": "3.13.7",
"platform_python_implementation": "CPython",
"python_version": "3.13",
"sys_platform": "linux"
}
Verbose Command Output
Adding packages to default dependencies: requests @ git+https://github.com/psf/requests@v2.31.1
pdm.termui: ======== Start resolving requirements ========
pdm.termui: requests @ git+https://github.com/psf/requests@v2.31.1
pdm.termui: Adding requirement python==3.13.*
pdm.termui: Adding requirement requests @ git+https://github.com/psf/requests@v2.31.1
pdm.termui: ======== Starting round 0 ========
unearth.vcs.git: Cloning https://github.com/psf/requests (revision: v2.31.1) to /tmp/pdm-build-q4tua741
Traceback (most recent call last):
File "/sbin/pdm", line 8, in <module>
sys.exit(main())
~~~~^^
File "/usr/lib/python3.13/site-packages/pdm/core.py", line 391, in main
return core.main(args or sys.argv[1:])
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/core.py", line 270, in main
raise cast(Exception, err).with_traceback(traceback) from None
File "/usr/lib/python3.13/site-packages/pdm/core.py", line 265, in main
self.handle(project, options)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/core.py", line 195, in handle
command.handle(project, options)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/cli/commands/add.py", line 71, in handle
self.do_add(
~~~~~~~~~~~^
project,
^^^^^^^^
...<12 lines>...
hooks=HookManager(project, options.skip),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.13/site-packages/pdm/cli/commands/add.py", line 159, in do_add
resolved = do_lock(
project,
...<5 lines>...
groups=lock_groups,
)
File "/usr/lib/python3.13/site-packages/pdm/cli/actions.py", line 141, in do_lock
resolved, new_groups = resolver.resolve()
~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/site-packages/pdm/resolver/resolvelib.py", line 51, in resolve
mapping = self._do_resolve()
File "/usr/lib/python3.13/site-packages/pdm/resolver/resolvelib.py", line 89, in _do_resolve
result = resolver.resolve(requirements, max_rounds)
File "/usr/lib/python3.13/site-packages/resolvelib/resolvers/resolution.py", line 601, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "/usr/lib/python3.13/site-packages/resolvelib/resolvers/resolution.py", line 509, in resolve
name = min(narrowed_unstatisfied_names, key=self._get_preference)
File "/usr/lib/python3.13/site-packages/resolvelib/resolvers/resolution.py", line 182, in _get_preference
return self._p.get_preference(
~~~~~~~~~~~~~~~~~~~~~~^
identifier=name,
^^^^^^^^^^^^^^^^
...<9 lines>...
backtrack_causes=self.state.backtrack_causes,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.13/site-packages/pdm/resolver/providers.py", line 116, in get_preference
deps = self.get_dependencies(candidate)
File "/usr/lib/python3.13/site-packages/pdm/resolver/providers.py", line 305, in get_dependencies
deps, requires_python, _ = self._get_dependencies_from_repository(candidate)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/resolver/providers.py", line 426, in _get_dependencies_from_repository
return super()._get_dependencies_from_repository(candidate)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/resolver/providers.py", line 299, in _get_dependencies_from_repository
return self.repository.get_dependencies(candidate)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/models/repositories/base.py", line 101, in get_dependencies
requirements, requires_python, summary = getter(candidate)
~~~~~~^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/models/repositories/base.py", line 40, in wrapper
result = func(self, candidate)
File "/usr/lib/python3.13/site-packages/pdm/models/repositories/base.py", line 269, in _get_dependencies_from_metadata
deps = prepared.get_dependencies_from_metadata()
File "/usr/lib/python3.13/site-packages/pdm/models/candidates.py", line 634, in get_dependencies_from_metadata
return filter_requirements_with_extras(self.metadata.requires or [], extras)
^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/models/candidates.py", line 621, in metadata
result = self.prepare_metadata()
File "/usr/lib/python3.13/site-packages/pdm/models/candidates.py", line 512, in prepare_metadata
self._unpack(validate_hashes=False)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pdm/models/candidates.py", line 480, in _unpack
result = finder.download_and_unpack(
self.link,
...<4 lines>...
unpack_reporter=self.reporter.report_unpack,
)
File "/usr/lib/python3.13/site-packages/unearth/finder.py", line 452, in download_and_unpack
file = unpack_link(
self.session,
...<6 lines>...
unpack_reporter=unpack_reporter,
)
File "/usr/lib/python3.13/site-packages/unearth/preparer.py", line 322, in unpack_link
backend.fetch(link, location)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/unearth/vcs/base.py", line 152, in fetch
return self.fetch_new(location, url, rev, args)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/unearth/vcs/git.py", line 67, in fetch_new
revision = self._resolve_revision(location, rev)
File "/usr/lib/python3.13/site-packages/unearth/vcs/git.py", line 171, in _resolve_revision
result = self.run_command(
["rev-parse", rev],
...<2 lines>...
log_output=False,
)
File "/usr/lib/python3.13/site-packages/unearth/vcs/base.py", line 78, in run_command
raise UnpackError(e.output) from None
unearth.errors.UnpackError: v2.31.1
Additional Context
No response
Are you willing to submit a PR to fix this bug?
- Yes, I would like to submit a PR.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
🐛 bugSomething isn't workingSomething isn't working