diff options
author | Chris Hunt <chrahunt@gmail.com> | 2019-11-06 21:10:11 -0500 |
---|---|---|
committer | Chris Hunt <chrahunt@gmail.com> | 2019-11-07 12:43:39 -0500 |
commit | e03a71aff8c1b6dfaaacdd4abc14386a43f6b52a (patch) | |
tree | d6af2983d5405943ca5e8f79c6850e450560d5b8 | |
parent | 9de8a6d598b100071e212c7d8b40643223cf05ec (diff) | |
download | pip-e03a71aff8c1b6dfaaacdd4abc14386a43f6b52a.tar.gz |
Use new Scheme model for wheel installation
-rw-r--r-- | src/pip/_internal/req/req_install.py | 9 | ||||
-rw-r--r-- | src/pip/_internal/wheel.py | 14 | ||||
-rw-r--r-- | tests/unit/test_wheel.py | 25 |
3 files changed, 27 insertions, 21 deletions
diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py index fb378d28f..5a86532cc 100644 --- a/src/pip/_internal/req/req_install.py +++ b/src/pip/_internal/req/req_install.py @@ -22,7 +22,7 @@ from pip._vendor.pep517.wrappers import Pep517HookCaller from pip._internal import pep425tags, wheel from pip._internal.build_env import NoOpBuildEnvironment from pip._internal.exceptions import InstallationError -from pip._internal.locations import distutils_scheme +from pip._internal.locations import get_scheme from pip._internal.models.link import Link from pip._internal.operations.build.metadata import generate_metadata from pip._internal.operations.build.metadata_legacy import \ @@ -65,11 +65,12 @@ from pip._internal.vcs import vcs if MYPY_CHECK_RUNNING: from typing import ( - Any, Dict, Iterable, List, Mapping, Optional, Sequence, Union, + Any, Dict, Iterable, List, Optional, Sequence, Union, ) from pip._internal.build_env import BuildEnvironment from pip._internal.cache import WheelCache from pip._internal.index.package_finder import PackageFinder + from pip._internal.models.scheme import Scheme from pip._vendor.pkg_resources import Distribution from pip._vendor.packaging.specifiers import SpecifierSet from pip._vendor.packaging.markers import Marker @@ -540,7 +541,7 @@ class InstallRequirement(object): def move_wheel_files( self, wheeldir, # type: str - scheme, # type: Mapping[str, str] + scheme, # type: Scheme warn_script_location=True, # type: bool pycompile=True # type: bool ): @@ -852,7 +853,7 @@ class InstallRequirement(object): pycompile=True # type: bool ): # type: (...) -> None - scheme = distutils_scheme( + scheme = get_scheme( self.name, user=use_user_site, home=home, diff --git a/src/pip/_internal/wheel.py b/src/pip/_internal/wheel.py index 85a9e2b60..682a37e49 100644 --- a/src/pip/_internal/wheel.py +++ b/src/pip/_internal/wheel.py @@ -36,9 +36,11 @@ from pip._internal.utils.typing import MYPY_CHECK_RUNNING if MYPY_CHECK_RUNNING: from typing import ( - Dict, List, Optional, Sequence, Mapping, Tuple, IO, Text, Any, + Dict, List, Optional, Sequence, Tuple, IO, Text, Any, Iterable, Callable, Set, ) + + from pip._internal.models.scheme import Scheme from pip._internal.pep425tags import Pep425Tag InstalledCSVRow = Tuple[str, ...] @@ -289,7 +291,7 @@ class PipScriptMaker(ScriptMaker): def install_unpacked_wheel( name, # type: str wheeldir, # type: str - scheme, # type: Mapping[str, str] + scheme, # type: Scheme req_description, # type: str pycompile=True, # type: bool warn_script_location=True # type: bool @@ -311,9 +313,9 @@ def install_unpacked_wheel( # installation. if root_is_purelib(name, wheeldir): - lib_dir = scheme['purelib'] + lib_dir = scheme.purelib else: - lib_dir = scheme['platlib'] + lib_dir = scheme.platlib info_dir = [] # type: List[str] data_dirs = [] @@ -458,10 +460,10 @@ def install_unpacked_wheel( fixer = fix_script filter = is_entrypoint_wrapper source = os.path.join(wheeldir, datadir, subdir) - dest = scheme[subdir] + dest = getattr(scheme, subdir) clobber(source, dest, False, fixer=fixer, filter=filter) - maker = PipScriptMaker(None, scheme['scripts']) + maker = PipScriptMaker(None, scheme.scripts) # Ensure old scripts are overwritten. # See https://github.com/pypa/pip/issues/1800 diff --git a/tests/unit/test_wheel.py b/tests/unit/test_wheel.py index 3153f2a82..ea145d722 100644 --- a/tests/unit/test_wheel.py +++ b/tests/unit/test_wheel.py @@ -11,8 +11,9 @@ from pip._vendor.packaging.requirements import Requirement from pip._internal import pep425tags, wheel from pip._internal.commands.wheel import WheelCommand from pip._internal.exceptions import InvalidWheelFilename, UnsupportedWheel -from pip._internal.locations import distutils_scheme +from pip._internal.locations import get_scheme from pip._internal.models.link import Link +from pip._internal.models.scheme import Scheme from pip._internal.req.req_install import InstallRequirement from pip._internal.utils.compat import WINDOWS from pip._internal.utils.misc import hash_file @@ -482,29 +483,31 @@ class TestInstallUnpackedWheel(object): self.src = os.path.join(tmpdir, 'src') self.dest = os.path.join(tmpdir, 'dest') unpack_file(self.wheelpath, self.src) - self.scheme = { - 'scripts': os.path.join(self.dest, 'bin'), - 'purelib': os.path.join(self.dest, 'lib'), - 'data': os.path.join(self.dest, 'data'), - } + self.scheme = Scheme( + purelib=os.path.join(self.dest, 'lib'), + platlib=os.path.join(self.dest, 'lib'), + headers=os.path.join(self.dest, 'headers'), + scripts=os.path.join(self.dest, 'bin'), + data=os.path.join(self.dest, 'data'), + ) self.src_dist_info = os.path.join( self.src, 'sample-1.2.0.dist-info') self.dest_dist_info = os.path.join( - self.scheme['purelib'], 'sample-1.2.0.dist-info') + self.scheme.purelib, 'sample-1.2.0.dist-info') def assert_installed(self): # lib assert os.path.isdir( - os.path.join(self.scheme['purelib'], 'sample')) + os.path.join(self.scheme.purelib, 'sample')) # dist-info metadata = os.path.join(self.dest_dist_info, 'METADATA') assert os.path.isfile(metadata) # data files - data_file = os.path.join(self.scheme['data'], 'my_data', 'data_file') + data_file = os.path.join(self.scheme.data, 'my_data', 'data_file') assert os.path.isfile(data_file) # package data pkg_data = os.path.join( - self.scheme['purelib'], 'sample', 'package_data.dat') + self.scheme.purelib, 'sample', 'package_data.dat') assert os.path.isfile(pkg_data) def test_std_install(self, data, tmpdir): @@ -520,7 +523,7 @@ class TestInstallUnpackedWheel(object): def test_install_prefix(self, data, tmpdir): prefix = os.path.join(os.path.sep, 'some', 'path') self.prep(data, tmpdir) - scheme = distutils_scheme( + scheme = get_scheme( self.name, user=False, home=None, |