5
5
import os .path
6
6
import re
7
7
import shutil
8
- import zipfile
9
8
10
9
from pip ._vendor .packaging .utils import canonicalize_name , canonicalize_version
11
10
from pip ._vendor .packaging .version import InvalidVersion , Version
12
- from pip ._vendor .pkg_resources import Distribution
13
11
14
12
from pip ._internal .exceptions import InvalidWheelFilename , UnsupportedWheel
13
+ from pip ._internal .metadata import get_wheel_distribution
15
14
from pip ._internal .models .link import Link
16
15
from pip ._internal .models .wheel import Wheel
17
16
from pip ._internal .operations .build .wheel import build_wheel_pep517
23
22
from pip ._internal .utils .temp_dir import TempDirectory
24
23
from pip ._internal .utils .typing import MYPY_CHECK_RUNNING
25
24
from pip ._internal .utils .urls import path_to_url
26
- from pip ._internal .utils .wheel import pkg_resources_distribution_for_wheel
27
25
from pip ._internal .vcs import vcs
28
26
29
27
if MYPY_CHECK_RUNNING :
@@ -171,19 +169,6 @@ def _always_true(_):
171
169
return True
172
170
173
171
174
- def _get_metadata_version (dist ):
175
- # type: (Distribution) -> Optional[Version]
176
- for line in dist .get_metadata_lines (dist .PKG_INFO ):
177
- if line .lower ().startswith ("metadata-version:" ):
178
- value = line .split (":" , 1 )[- 1 ].strip ()
179
- try :
180
- return Version (value )
181
- except InvalidVersion :
182
- msg = "Invalid Metadata-Version: {}" .format (value )
183
- raise UnsupportedWheel (msg )
184
- raise UnsupportedWheel ("Missing Metadata-Version" )
185
-
186
-
187
172
def _verify_one (req , wheel_path ):
188
173
# type: (InstallRequirement, str) -> None
189
174
canonical_name = canonicalize_name (req .name )
@@ -193,20 +178,25 @@ def _verify_one(req, wheel_path):
193
178
"Wheel has unexpected file name: expected {!r}, "
194
179
"got {!r}" .format (canonical_name , w .name ),
195
180
)
196
- with zipfile .ZipFile (wheel_path , allowZip64 = True ) as zf :
197
- dist = pkg_resources_distribution_for_wheel (
198
- zf , canonical_name , wheel_path ,
199
- )
181
+ dist = get_wheel_distribution (wheel_path , canonical_name )
200
182
if canonicalize_version (dist .version ) != canonicalize_version (w .version ):
201
183
raise InvalidWheelFilename (
202
184
"Wheel has unexpected file name: expected {!r}, "
203
- "got {!r}" .format (dist .version , w .version ),
185
+ "got {!r}" .format (str ( dist .version ) , w .version ),
204
186
)
205
- if (_get_metadata_version (dist ) >= Version ("1.2" )
206
- and not isinstance (dist .parsed_version , Version )):
187
+ metadata_version_value = dist .metadata_version
188
+ if metadata_version_value is None :
189
+ raise UnsupportedWheel ("Missing Metadata-Version" )
190
+ try :
191
+ metadata_version = Version (metadata_version_value )
192
+ except InvalidVersion :
193
+ msg = "Invalid Metadata-Version: {}" .format (metadata_version_value )
194
+ raise UnsupportedWheel (msg )
195
+ if (metadata_version >= Version ("1.2" )
196
+ and not isinstance (dist .version , Version )):
207
197
raise UnsupportedWheel (
208
198
"Metadata 1.2 mandates PEP 440 version, "
209
- "but {!r} is not" .format (dist .version )
199
+ "but {!r} is not" .format (str ( dist .version ) )
210
200
)
211
201
212
202
0 commit comments