|
1 | 1 | diff --git a/src/pdm/backend/_vendor/pyproject_metadata/__init__.py b/src/pdm/backend/_vendor/pyproject_metadata/__init__.py
|
2 |
| -index d792d06..0f6544b 100644 |
| 2 | +index 796fa1e..e59e2d5 100644 |
3 | 3 | --- a/src/pdm/backend/_vendor/pyproject_metadata/__init__.py
|
4 | 4 | +++ b/src/pdm/backend/_vendor/pyproject_metadata/__init__.py
|
5 |
| -@@ -13,10 +13,10 @@ import typing |
6 |
| - from collections.abc import Mapping |
7 |
| - from typing import Any |
| 5 | +@@ -16,13 +16,13 @@ if typing.TYPE_CHECKING: |
| 6 | + from collections.abc import Mapping |
| 7 | + from typing import Any |
| 8 | + |
| 9 | +- from packaging.requirements import Requirement |
| 10 | ++ from pdm.backend._vendor.packaging.requirements import Requirement |
8 | 11 |
|
9 | 12 | -import packaging.markers
|
10 | 13 | -import packaging.requirements
|
11 | 14 | -import packaging.specifiers
|
| 15 | +-import packaging.utils |
12 | 16 | -import packaging.version
|
13 | 17 | +import pdm.backend._vendor.packaging.markers as pkg_markers
|
14 | 18 | +import pdm.backend._vendor.packaging.requirements as pkg_requirements
|
15 | 19 | +import pdm.backend._vendor.packaging.specifiers as pkg_specifiers
|
| 20 | ++import pdm.backend._vendor.packaging.utils as pkg_utils |
16 | 21 | +import pdm.backend._vendor.packaging.version as pkg_version
|
17 | 22 |
|
18 | 23 |
|
19 |
| - __version__ = '0.7.1' |
20 |
| -@@ -176,13 +176,13 @@ class Readme(typing.NamedTuple): |
| 24 | + __version__ = '0.8.0rc1' |
| 25 | +@@ -169,11 +169,11 @@ class Readme(typing.NamedTuple): |
21 | 26 | @dataclasses.dataclass
|
22 |
| - class StandardMetadata(): |
| 27 | + class StandardMetadata: |
23 | 28 | name: str
|
24 | 29 | - version: packaging.version.Version | None = None
|
25 | 30 | + version: pkg_version.Version | None = None
|
26 | 31 | description: str | None = None
|
27 | 32 | license: License | None = None
|
28 | 33 | readme: Readme | None = None
|
29 | 34 | - requires_python: packaging.specifiers.SpecifierSet | None = None
|
30 |
| -- dependencies: list[packaging.requirements.Requirement] = dataclasses.field(default_factory=list) |
31 |
| -- optional_dependencies: dict[str, list[packaging.requirements.Requirement]] = dataclasses.field(default_factory=dict) |
32 | 35 | + requires_python: pkg_specifiers.SpecifierSet | None = None
|
33 |
| -+ dependencies: list[pkg_requirements.Requirement] = dataclasses.field(default_factory=list) |
34 |
| -+ optional_dependencies: dict[str, list[pkg_requirements.Requirement]] = dataclasses.field(default_factory=dict) |
| 36 | + dependencies: list[Requirement] = dataclasses.field(default_factory=list) |
| 37 | + optional_dependencies: dict[str, list[Requirement]] = dataclasses.field(default_factory=dict) |
35 | 38 | entrypoints: dict[str, dict[str, str]] = dataclasses.field(default_factory=dict)
|
36 |
| - authors: list[tuple[str, str]] = dataclasses.field(default_factory=list) |
37 |
| - maintainers: list[tuple[str, str]] = dataclasses.field(default_factory=list) |
38 |
| -@@ -228,11 +228,11 @@ class StandardMetadata(): |
| 39 | +@@ -196,7 +196,7 @@ class StandardMetadata: |
| 40 | + |
| 41 | + @property |
| 42 | + def canonical_name(self) -> str: |
| 43 | +- return packaging.utils.canonicalize_name(self.name) |
| 44 | ++ return pkg_utils.canonicalize_name(self.name) |
| 45 | + |
| 46 | + @classmethod |
| 47 | + def from_pyproject( |
| 48 | +@@ -229,7 +229,7 @@ class StandardMetadata: |
39 | 49 |
|
40 |
| - return cls( |
41 |
| - name, |
42 |
| -- packaging.version.Version(version_string) if version_string else None, |
43 |
| -+ pkg_version.Version(version_string) if version_string else None, |
44 |
| - fetcher.get_str('project.description'), |
| 50 | + version_string = fetcher.get_str('project.version') |
| 51 | + requires_python_string = fetcher.get_str('project.requires-python') |
| 52 | +- version = packaging.version.Version(version_string) if version_string else None |
| 53 | ++ version = pkg_version.Version(version_string) if version_string else None |
| 54 | + |
| 55 | + if version is None and 'version' not in dynamic: |
| 56 | + msg = 'Field "project.version" missing and "version" not specified in "project.dynamic"' |
| 57 | +@@ -251,7 +251,7 @@ class StandardMetadata: |
| 58 | + description, |
45 | 59 | cls._get_license(fetcher, project_dir),
|
46 | 60 | cls._get_readme(fetcher, project_dir),
|
47 | 61 | - packaging.specifiers.SpecifierSet(requires_python_string) if requires_python_string else None,
|
48 | 62 | + pkg_specifiers.SpecifierSet(requires_python_string) if requires_python_string else None,
|
49 | 63 | cls._get_dependencies(fetcher),
|
50 | 64 | cls._get_optional_dependencies(fetcher),
|
51 | 65 | cls._get_entrypoints(fetcher),
|
52 |
| -@@ -325,14 +325,14 @@ class StandardMetadata(): |
53 |
| - def _build_extra_req( |
54 |
| - self, |
55 |
| - extra: str, |
56 |
| -- requirement: packaging.requirements.Requirement, |
57 |
| -- ) -> packaging.requirements.Requirement: |
58 |
| -+ requirement: pkg_requirements.Requirement, |
59 |
| -+ ) -> pkg_requirements.Requirement: |
60 |
| - if requirement.marker: # append our extra to the marker |
61 |
| -- requirement.marker = packaging.markers.Marker( |
62 |
| -+ requirement.marker = pkg_markers.Marker( |
63 |
| - str(requirement.marker) + f' and extra == "{extra}"' |
64 |
| - ) |
65 |
| - else: # add our extra marker |
| 66 | +@@ -353,15 +353,15 @@ class StandardMetadata: |
| 67 | + requirement = copy.copy(requirement) |
| 68 | + if requirement.marker: |
| 69 | + if 'or' in requirement.marker._markers: |
| 70 | +- requirement.marker = packaging.markers.Marker( |
| 71 | ++ requirement.marker = pkg_markers.Marker( |
| 72 | + f'({requirement.marker}) and extra == "{extra}"' |
| 73 | + ) |
| 74 | + else: |
| 75 | +- requirement.marker = packaging.markers.Marker( |
| 76 | ++ requirement.marker = pkg_markers.Marker( |
| 77 | + f'{requirement.marker} and extra == "{extra}"' |
| 78 | + ) |
| 79 | + else: |
66 | 80 | - requirement.marker = packaging.markers.Marker(f'extra == "{extra}"')
|
67 | 81 | + requirement.marker = pkg_markers.Marker(f'extra == "{extra}"')
|
68 | 82 | return requirement
|
69 | 83 |
|
70 | 84 | @staticmethod
|
71 |
| -@@ -435,17 +435,17 @@ class StandardMetadata(): |
72 |
| - return Readme(text, file, content_type) |
73 |
| - |
74 |
| - @staticmethod |
75 |
| -- def _get_dependencies(fetcher: DataFetcher) -> list[packaging.requirements.Requirement]: |
76 |
| -+ def _get_dependencies(fetcher: DataFetcher) -> list[pkg_requirements.Requirement]: |
77 |
| - try: |
78 |
| - requirement_strings = fetcher.get_list('project.dependencies') |
79 |
| - except KeyError: |
80 |
| - return [] |
81 |
| - |
82 |
| -- requirements: list[packaging.requirements.Requirement] = [] |
83 |
| -+ requirements: list[pkg_requirements.Requirement] = [] |
| 85 | +@@ -457,8 +457,8 @@ class StandardMetadata: |
| 86 | + requirements: list[Requirement] = [] |
84 | 87 | for req in requirement_strings:
|
85 | 88 | try:
|
86 | 89 | - requirements.append(packaging.requirements.Requirement(req))
|
87 | 90 | - except packaging.requirements.InvalidRequirement as e:
|
88 | 91 | + requirements.append(pkg_requirements.Requirement(req))
|
89 | 92 | + except pkg_requirements.InvalidRequirement as e:
|
90 |
| - raise ConfigurationError( |
91 |
| - 'Field `project.dependencies` contains an invalid PEP 508 ' |
92 |
| - f'requirement string `{req}` (`{str(e)}`)' |
93 |
| -@@ -453,13 +453,13 @@ class StandardMetadata(): |
94 |
| - return requirements |
95 |
| - |
96 |
| - @staticmethod |
97 |
| -- def _get_optional_dependencies(fetcher: DataFetcher) -> dict[str, list[packaging.requirements.Requirement]]: |
98 |
| -+ def _get_optional_dependencies(fetcher: DataFetcher) -> dict[str, list[pkg_requirements.Requirement]]: |
99 |
| - try: |
100 |
| - val = fetcher.get('project.optional-dependencies') |
101 |
| - except KeyError: |
102 |
| - return {} |
103 |
| - |
104 |
| -- requirements_dict: collections.defaultdict[str, list[packaging.requirements.Requirement]] = collections.defaultdict(list) |
105 |
| -+ requirements_dict: collections.defaultdict[str, list[pkg_requirements.Requirement]] = collections.defaultdict(list) |
106 |
| - if not isinstance(val, dict): |
107 |
| - raise ConfigurationError( |
108 |
| - 'Field `project.optional-dependencies` has an invalid type, expecting a ' |
109 |
| -@@ -479,8 +479,8 @@ class StandardMetadata(): |
110 |
| - f'expecting a PEP 508 requirement string (got `{req}`)' |
| 93 | + msg = ( |
| 94 | + 'Field "project.dependencies" contains an invalid PEP 508 ' |
| 95 | + f'requirement string "{req}" ("{e}")' |
| 96 | +@@ -497,8 +497,8 @@ class StandardMetadata: |
111 | 97 | )
|
| 98 | + raise ConfigurationError(msg) |
112 | 99 | try:
|
113 | 100 | - requirements_dict[extra].append(packaging.requirements.Requirement(req))
|
114 | 101 | - except packaging.requirements.InvalidRequirement as e:
|
115 | 102 | + requirements_dict[extra].append(pkg_requirements.Requirement(req))
|
116 | 103 | + except pkg_requirements.InvalidRequirement as e:
|
117 |
| - raise ConfigurationError( |
118 |
| - f'Field `project.optional-dependencies.{extra}` contains ' |
119 |
| - f'an invalid PEP 508 requirement string `{req}` (`{str(e)}`)' |
| 104 | + msg = ( |
| 105 | + f'Field "project.optional-dependencies.{extra}" contains ' |
| 106 | + f'an invalid PEP 508 requirement string "{req}" ("{e}")' |
0 commit comments