-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Open
Labels
kind/bugSomething isn't working as expectedSomething isn't working as expectedstatus/triageThis issue needs to be triagedThis issue needs to be triaged
Description
Description
When I want to update a package defined with a tag from a private repo from github
In the pyproject, the pkg is defined like this
"pkg_from_private_repo@ git+ssh://[email protected]/my_org/[email protected]"
poetry update pkg_from_private_repoI get the following error
Updating dependencies
Resolving dependencies... (1.5s)
AssertionError
at ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/dulwich/repo.py:392 in get_parents
388│
389│ # Fallback to reading the commit object
390│ if commit is None:
391│ obj = self.store[commit_id]
→ 392│ assert isinstance(obj, Commit)
393│ commit = obj
394│ parents = commit.parents
395│ assert isinstance(parents, list)
396│ return parents
Workarounds
If I delete the virtual environment, and run poetry install and then poetry update pkg_from_private_repo, it works
Poetry Installation Method
pipx
Operating System
Ubuntu 24.04.3 LTS (in WSL2)
Poetry Version
2.2.1
Poetry Configuration
cache-dir = "/home/quentin/.cache/pypoetry"
data-dir = "/home/quentin/.local/share/pypoetry"
installer.max-workers = null
installer.no-binary = null
installer.only-binary = null
installer.parallel = true
installer.re-resolve = true
keyring.enabled = true
python.installation-dir = "{data-dir}/python" # /home/quentin/.local/share/pypoetry/python
requests.max-retries = 0
solver.lazy-wheel = true
system-git-client = false
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs" # /home/quentin/.cache/pypoetry/virtualenvs
virtualenvs.prompt = "{project_name}-py{python_version}"
virtualenvs.use-poetry-python = falsePython Sysconfig
Example pyproject.toml
[project]
name = "demo"
version = "1.0.0"
description = ""
authors = [
{name = aaaa",email = "[email protected]"},
]
readme = "README.md"
requires-python = ">=3.10,<3.13"
dependencies = [
"pandas (>=2.0.0,<3.0.0)",
"pkg_from_private_repo@ git+ssh://[email protected]/my_org/[email protected]",
]
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"Poetry Runtime Logs
poetry-runtime.log
Loading configuration file /home/quentin/.config/pypoetry/config.toml
Using virtualenv: /home/quentin/Package/demo/.venv
Checking keyring availability: Checking if keyring is available
[keyring:keyring.backend] Loading KWallet
[keyring:keyring.backend] Loading SecretService
[keyring:keyring.backend] Loading Windows
[keyring:keyring.backend] Loading chainer
[keyring:keyring.backend] Loading libsecret
[keyring:keyring.backend] Loading macOS
Backend 'fail Keyring' is not suitable
No valid keyring backend was found
Unavailable
Updating dependencies
Resolving dependencies...
1: fact: demois 10.1.0
1: derived: demo
[dulwich:dulwich.config] Loading gitconfig from paths: ['/home/quentin/.gitconfig', '/home/quentin/.config/git/config', '/etc/gitconfig']
[dulwich:dulwich.config] Successfully loaded gitconfig from: /home/quentin/.gitconfig
[dulwich:dulwich.config] Gitconfig file not found: /home/quentin/.config/git/config
[dulwich:dulwich.config] Gitconfig file not found: /etc/gitconfig
1: Version solving took 1.634 seconds.
1: Tried 1 solutions.
Stack trace:
28 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/cleo/application.py:327 in run
325│
326│ try:
→ 327│ exit_code = self._run(io)
328│ except BrokenPipeError:
329│ # If we are piped to another process, it may close early and send a
27 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/console/application.py:260 in _run
258│
259│ try:
→ 260│ exit_code = super()._run(io)
261│ except PoetryRuntimeError as e:
262│ io.write_error_line("")
26 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/cleo/application.py:431 in _run
429│ io.input.interactive(interactive)
430│
→ 431│ exit_code = self._run_command(command, io)
432│ self._running_command = None
433│
25 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/cleo/application.py:473 in _run_command
471│
472│ if error is not None:
→ 473│ raise error
474│
475│ return terminate_event.exit_code
24 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/cleo/application.py:457 in _run_command
455│
456│ if command_event.command_should_run():
→ 457│ exit_code = command.run(io)
458│ else:
459│ exit_code = ConsoleCommandEvent.RETURN_CODE_DISABLED
23 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/cleo/commands/base_command.py:117 in run
115│ io.input.validate()
116│
→ 117│ return self.execute(io) or 0
118│
119│ def merge_application_definition(self, merge_args: bool = True) -> None:
22 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/console/commands/installer_command.py:39 in execute
37│ def execute(self, io: IO) -> int:
38│ PoetryKeyring.preflight_check(io, self.poetry.config)
→ 39│ return super().execute(io)
40│
21 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/cleo/commands/command.py:61 in execute
59│
60│ try:
→ 61│ return self.handle()
62│ except KeyboardInterrupt:
63│ return 1
20 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/console/commands/update.py:58 in handle
56│ self.installer.update(True)
57│
→ 58│ return self.installer.run()
59│
19 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/installation/installer.py:103 in run
101│ self.verbose(True)
102│
→ 103│ return self._do_install()
104│
105│ def dry_run(self, dry_run: bool = True) -> Installer:
18 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/installation/installer.py:241 in _do_install
239│ source_root=self._env.path.joinpath("src")
240│ ):
→ 241│ solved_packages = solver.solve(
242│ use_latest=self._whitelist
243│ ).get_solved_packages()
17 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/puzzle/solver.py:87 in solve
85│ with self._progress(), self._provider.use_latest_for(use_latest or []):
86│ start = time.time()
→ 87│ packages = self._solve()
88│ # simplify markers by removing redundant information
89│ for transitive_info in packages.values():
16 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/puzzle/solver.py:170 in _solve
168│
169│ try:
→ 170│ result = resolve_version(self._package, self._provider)
171│
172│ packages = result.packages
15 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/mixology/__init__.py:18 in resolve_version
16│ solver = VersionSolver(root, provider)
17│
→ 18│ return solver.solve()
19│
14 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/mixology/version_solver.py:192 in solve
190│ while next is not None:
191│ self._propagate(next)
→ 192│ next = self._choose_package_version()
193│
194│ return self._result()
13 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/mixology/version_solver.py:599 in _choose_package_version
597│ package = locked
598│
→ 599│ package = self._provider.complete_package(package)
600│
601│ conflict = False
12 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/puzzle/provider.py:577 in complete_package
575│ if locked is not None and locked.package.is_same_package_as(dep):
576│ continue
→ 577│ self.search_for_direct_origin_dependency(dep)
578│
579│ dependencies = self._get_dependencies_with_overrides(_dependencies, package)
11 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/puzzle/provider.py:245 in search_for_direct_origin_dependency
243│ elif dependency.is_vcs():
244│ dependency = cast("VCSDependency", dependency)
→ 245│ package = self._search_for_vcs(dependency)
246│
247│ elif dependency.is_file():
10 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/puzzle/provider.py:320 in _search_for_vcs
318│ and get the information we need by checking out the specified reference.
319│ """
→ 320│ package = self._direct_origin.get_package_from_vcs(
321│ dependency.vcs,
322│ dependency.source,
9 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/packages/direct_origin.py:116 in get_package_from_vcs
114│ raise ValueError(f"Unsupported VCS dependency {vcs}")
115│
→ 116│ return _get_package_from_git(
117│ url=url,
118│ branch=branch,
8 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/packages/direct_origin.py:34 in _get_package_from_git
32│ source_root: Path | None = None,
33│ ) -> Package:
→ 34│ source = Git.clone(
35│ url=url,
36│ source_root=source_root,
7 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/vcs/git/backend.py:540 in clone
538│ try:
539│ if not cls.is_using_legacy_client():
→ 540│ local = cls._clone(url=url, refspec=refspec, target=target)
541│ cls._clone_submodules(repo=local)
542│ return local
6 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/vcs/git/backend.py:318 in _clone
316│ local = Repo(str(target))
317│
→ 318│ remote_refs = cls._fetch_remote_refs(url=url, local=local)
319│
320│ logger.debug(
5 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/poetry/vcs/git/backend.py:250 in _fetch_remote_refs
248│
249│ with local:
→ 250│ result: FetchPackResult = client.fetch(
251│ path,
252│ local,
4 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/dulwich/client.py:1171 in fetch
1169│ f, commit, abort = target.object_store.add_pack()
1170│ try:
→ 1171│ result = self.fetch_pack(
1172│ path,
1173│ determine_wants,
3 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/dulwich/client.py:1691 in fetch_pack
1689│ elif filter_spec:
1690│ self._warn_filter_objects()
→ 1691│ (new_shallow, new_unshallow) = _handle_upload_pack_head(
1692│ proto,
1693│ list(negotiated_capabilities),
2 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/dulwich/client.py:786 in _handle_upload_pack_head
784│ proto.write_pkt_line(None)
785│
→ 786│ have = next(graph_walker)
787│ while have:
788│ proto.write_pkt_line(COMMAND_HAVE + b" " + have + b"\n")
1 ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/dulwich/object_store.py:2437 in next
2435│ ret = self.heads.pop()
2436│ try:
→ 2437│ ps = self.get_parents(ret)
2438│ except KeyError:
2439│ return None
AssertionError
at ~/.local/share/pipx/venvs/poetry/lib/python3.12/site-packages/dulwich/repo.py:392 in get_parents
388│
389│ # Fallback to reading the commit object
390│ if commit is None:
391│ obj = self.store[commit_id]
→ 392│ assert isinstance(obj, Commit)
393│ commit = obj
394│ parents = commit.parents
395│ assert isinstance(parents, list)
396│ return parents
Metadata
Metadata
Assignees
Labels
kind/bugSomething isn't working as expectedSomething isn't working as expectedstatus/triageThis issue needs to be triagedThis issue needs to be triaged