summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Hunt <chrahunt@gmail.com>2019-11-06 21:10:11 -0500
committerChris Hunt <chrahunt@gmail.com>2019-11-07 12:43:39 -0500
commite03a71aff8c1b6dfaaacdd4abc14386a43f6b52a (patch)
treed6af2983d5405943ca5e8f79c6850e450560d5b8
parent9de8a6d598b100071e212c7d8b40643223cf05ec (diff)
downloadpip-e03a71aff8c1b6dfaaacdd4abc14386a43f6b52a.tar.gz
Use new Scheme model for wheel installation
-rw-r--r--src/pip/_internal/req/req_install.py9
-rw-r--r--src/pip/_internal/wheel.py14
-rw-r--r--tests/unit/test_wheel.py25
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,