Skip to content

Commit 00de69c

Browse files
authored
fix: add context when parsing version failed (#3021)
1 parent d8df370 commit 00de69c

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

news/3020.bugfix.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add context when parsing version failed.

src/pdm/models/candidates.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
from typing import TYPE_CHECKING, Any, cast, no_type_check
1212
from zipfile import ZipFile
1313

14+
from packaging.version import InvalidVersion
15+
1416
from pdm import termui
1517
from pdm.builders import EditableBuilder, WheelBuilder
1618
from pdm.compat import importlib_metadata as im
17-
from pdm.exceptions import BuildError, CandidateNotFound, InvalidPyVersion, PDMWarning
19+
from pdm.exceptions import BuildError, CandidateNotFound, InvalidPyVersion, PDMWarning, RequirementError
1820
from pdm.models.backends import get_backend, get_backend_by_spec
1921
from pdm.models.reporter import BaseReporter
2022
from pdm.models.requirements import (
@@ -242,7 +244,10 @@ def as_lockfile_entry(self, project_root: Path) -> dict[str, Any]:
242244
"""Build a lockfile entry dictionary for the candidate."""
243245
version = str(self.version)
244246
if not self.req.is_pinned:
245-
version = str(comparable_version(version))
247+
try:
248+
version = str(comparable_version(version))
249+
except InvalidVersion as e:
250+
raise RequirementError(f"Invalid version for {self.req.as_line()}: {e}") from None
246251
result = {
247252
"name": normalize_name(self.name),
248253
"version": version,

0 commit comments

Comments
 (0)