11diff --git a/src/pdm/backend/_vendor/pyproject_metadata/__init__.py b/src/pdm/backend/_vendor/pyproject_metadata/__init__.py
2- index df826f8..7f69f3a 100644
2+ index 52289dc..7ef9fc9 100644
33--- a/src/pdm/backend/_vendor/pyproject_metadata/__init__.py
44+++ b/src/pdm/backend/_vendor/pyproject_metadata/__init__.py
5- @@ -24,11 +24,11 @@ if typing.TYPE_CHECKING:
5+ @@ -20,18 +20,18 @@ if typing.TYPE_CHECKING:
6+ from collections.abc import Generator, Iterable, Mapping
7+ from typing import Any
8+
9+ - from packaging.requirements import Requirement
10+ + from pdm.backend._vendor.packaging.requirements import Requirement
11+
12+ if sys.version_info < (3, 11):
13+ from typing_extensions import Self
614 else:
715 from typing import Self
816
@@ -18,22 +26,46 @@ index df826f8..7f69f3a 100644
1826+ import pdm.backend._vendor.packaging.version as pkg_version
1927
2028
21- __version__ = '0.8.0'
22- @@ -175,11 +175,11 @@ class Readme(typing.NamedTuple):
29+ __version__ = '0.9.0b3'
30+ @@ -351,8 +351,8 @@ class ProjectFetcher(DataFetcher):
31+ requirements: list[Requirement] = []
32+ for req in requirement_strings:
33+ try:
34+ - requirements.append(packaging.requirements.Requirement(req))
35+ - except packaging.requirements.InvalidRequirement as e:
36+ + requirements.append(pkg_requirements.Requirement(req))
37+ + except pkg_requirements.InvalidRequirement as e:
38+ msg = (
39+ 'Field "project.dependencies" contains an invalid PEP 508 '
40+ f'requirement string "{req}" ("{e}")'
41+ @@ -393,9 +393,9 @@ class ProjectFetcher(DataFetcher):
42+ raise ConfigurationError(msg)
43+ try:
44+ requirements_dict[extra].append(
45+ - packaging.requirements.Requirement(req)
46+ + pkg_requirements.Requirement(req)
47+ )
48+ - except packaging.requirements.InvalidRequirement as e:
49+ + except pkg_requirements.InvalidRequirement as e:
50+ msg = (
51+ f'Field "project.optional-dependencies.{extra}" contains '
52+ f'an invalid PEP 508 requirement string "{req}" ("{e}")'
53+ @@ -453,12 +453,12 @@ class Readme(typing.NamedTuple):
2354 @dataclasses.dataclass
2455 class StandardMetadata:
2556 name: str
2657- version: packaging.version.Version | None = None
2758+ version: pkg_version.Version | None = None
2859 description: str | None = None
29- license: License | None = None
60+ license: License | str | None = None
61+ license_files: list[pathlib.Path] | None = None
3062 readme: Readme | None = None
3163- requires_python: packaging.specifiers.SpecifierSet | None = None
3264+ requires_python: pkg_specifiers.SpecifierSet | None = None
3365 dependencies: list[Requirement] = dataclasses.field(default_factory=list)
34- optional_dependencies: dict[str, list[Requirement]] = dataclasses.field(default_factory=dict)
35- entrypoints: dict[str, dict[str, str]] = dataclasses.field( default_factory=dict)
36- @@ -202 ,7 +202 ,7 @@ class StandardMetadata:
66+ optional_dependencies: dict[str, list[Requirement]] = dataclasses.field(
67+ default_factory=dict
68+ @@ -547 ,7 +547 ,7 @@ class StandardMetadata:
3769
3870 @property
3971 def canonical_name(self) -> str:
@@ -42,7 +74,7 @@ index df826f8..7f69f3a 100644
4274
4375 @classmethod
4476 def from_pyproject(
45- @@ -235 ,7 +235 ,7 @@ class StandardMetadata:
77+ @@ -590 ,7 +590 ,7 @@ class StandardMetadata:
4678
4779 version_string = fetcher.get_str('project.version')
4880 requires_python_string = fetcher.get_str('project.requires-python')
@@ -51,16 +83,16 @@ index df826f8..7f69f3a 100644
5183
5284 if version is None and 'version' not in dynamic:
5385 msg = 'Field "project.version" missing and "version" not specified in "project.dynamic"'
54- @@ -256 ,7 +256 ,7 @@ class StandardMetadata:
55- description ,
56- cls._get_license(fetcher, project_dir),
57- cls._get_readme(fetcher, project_dir),
58- - packaging.specifiers.SpecifierSet(requires_python_string) if requires_python_string else None,
59- + pkg_specifiers.SpecifierSet(requires_python_string) if requires_python_string else None,
60- cls._get_dependencies(fetcher),
61- cls._get_optional_dependencies(fetcher) ,
62- cls._get_entrypoints(fetcher ),
63- @@ -358 ,15 +358 ,15 @@ class StandardMetadata:
86+ @@ -608 ,7 +608 ,7 @@ class StandardMetadata:
87+ fetcher.get_license(project_dir) ,
88+ fetcher.get_license_files( project_dir),
89+ fetcher.get_readme( project_dir),
90+ - packaging.specifiers.SpecifierSet(requires_python_string)
91+ + pkg_specifiers.SpecifierSet(requires_python_string)
92+ if requires_python_string
93+ else None ,
94+ fetcher.get_dependencies( ),
95+ @@ -720 ,15 +720 ,15 @@ class StandardMetadata:
6496 requirement = copy.copy(requirement)
6597 if requirement.marker:
6698 if 'or' in requirement.marker._markers:
@@ -78,26 +110,4 @@ index df826f8..7f69f3a 100644
78110+ requirement.marker = pkg_markers.Marker(f'extra == "{extra}"')
79111 return requirement
80112
81- @staticmethod
82- @@ -462,8 +462,8 @@ class StandardMetadata:
83- requirements: list[Requirement] = []
84- for req in requirement_strings:
85- try:
86- - requirements.append(packaging.requirements.Requirement(req))
87- - except packaging.requirements.InvalidRequirement as e:
88- + requirements.append(pkg_requirements.Requirement(req))
89- + except pkg_requirements.InvalidRequirement as e:
90- msg = (
91- 'Field "project.dependencies" contains an invalid PEP 508 '
92- f'requirement string "{req}" ("{e}")'
93- @@ -502,8 +502,8 @@ class StandardMetadata:
94- )
95- raise ConfigurationError(msg)
96- try:
97- - requirements_dict[extra].append(packaging.requirements.Requirement(req))
98- - except packaging.requirements.InvalidRequirement as e:
99- + requirements_dict[extra].append(pkg_requirements.Requirement(req))
100- + except pkg_requirements.InvalidRequirement as e:
101- msg = (
102- f'Field "project.optional-dependencies.{extra}" contains '
103- f'an invalid PEP 508 requirement string "{req}" ("{e}")'
113+
0 commit comments