mirror of https://github.com/pypa/pip
Replace compat.expanduser() with os.path.expanduser()
The upstream bug has been fixed and released in all supported Python version: https://bugs.python.org/issue14768
This commit is contained in:
parent
af5b7fe1f9
commit
5150129f6b
|
@ -22,7 +22,7 @@ from pip._internal.exceptions import (
|
||||||
ConfigurationFileCouldNotBeLoaded,
|
ConfigurationFileCouldNotBeLoaded,
|
||||||
)
|
)
|
||||||
from pip._internal.utils import appdirs
|
from pip._internal.utils import appdirs
|
||||||
from pip._internal.utils.compat import WINDOWS, expanduser
|
from pip._internal.utils.compat import WINDOWS
|
||||||
from pip._internal.utils.misc import ensure_dir, enum
|
from pip._internal.utils.misc import ensure_dir, enum
|
||||||
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ def get_configuration_files():
|
||||||
|
|
||||||
site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME)
|
site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME)
|
||||||
legacy_config_file = os.path.join(
|
legacy_config_file = os.path.join(
|
||||||
expanduser('~'),
|
os.path.expanduser('~'),
|
||||||
'pip' if WINDOWS else '.pip',
|
'pip' if WINDOWS else '.pip',
|
||||||
CONFIG_BASENAME,
|
CONFIG_BASENAME,
|
||||||
)
|
)
|
||||||
|
|
|
@ -139,19 +139,6 @@ def get_path_uid(path):
|
||||||
return file_uid
|
return file_uid
|
||||||
|
|
||||||
|
|
||||||
def expanduser(path):
|
|
||||||
# type: (str) -> str
|
|
||||||
"""
|
|
||||||
Expand ~ and ~user constructions.
|
|
||||||
|
|
||||||
Includes a workaround for https://bugs.python.org/issue14768
|
|
||||||
"""
|
|
||||||
expanded = os.path.expanduser(path)
|
|
||||||
if path.startswith('~/') and expanded.startswith('//'):
|
|
||||||
expanded = expanded[1:]
|
|
||||||
return expanded
|
|
||||||
|
|
||||||
|
|
||||||
# packages in the stdlib that may have installation metadata, but should not be
|
# packages in the stdlib that may have installation metadata, but should not be
|
||||||
# considered 'installed'. this theoretically could be determined based on
|
# considered 'installed'. this theoretically could be determined based on
|
||||||
# dist.location (py27:`sysconfig.get_paths()['stdlib']`,
|
# dist.location (py27:`sysconfig.get_paths()['stdlib']`,
|
||||||
|
|
|
@ -28,7 +28,7 @@ from pip._vendor.retrying import retry # type: ignore
|
||||||
from pip import __version__
|
from pip import __version__
|
||||||
from pip._internal.exceptions import CommandError
|
from pip._internal.exceptions import CommandError
|
||||||
from pip._internal.locations import get_major_minor_version, site_packages, user_site
|
from pip._internal.locations import get_major_minor_version, site_packages, user_site
|
||||||
from pip._internal.utils.compat import WINDOWS, expanduser, stdlib_pkgs
|
from pip._internal.utils.compat import WINDOWS, stdlib_pkgs
|
||||||
from pip._internal.utils.typing import MYPY_CHECK_RUNNING, cast
|
from pip._internal.utils.typing import MYPY_CHECK_RUNNING, cast
|
||||||
from pip._internal.utils.virtualenv import (
|
from pip._internal.utils.virtualenv import (
|
||||||
running_under_virtualenv,
|
running_under_virtualenv,
|
||||||
|
@ -302,7 +302,7 @@ def normalize_path(path, resolve_symlinks=True):
|
||||||
Convert a path to its canonical, case-normalized, absolute version.
|
Convert a path to its canonical, case-normalized, absolute version.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
path = expanduser(path)
|
path = os.path.expanduser(path)
|
||||||
if resolve_symlinks:
|
if resolve_symlinks:
|
||||||
path = os.path.realpath(path)
|
path = os.path.realpath(path)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -733,7 +733,7 @@ def test_link_collector_create(
|
||||||
assert search_scope.index_urls == expected_index_urls
|
assert search_scope.index_urls == expected_index_urls
|
||||||
|
|
||||||
|
|
||||||
@patch('pip._internal.utils.misc.expanduser')
|
@patch('os.path.expanduser')
|
||||||
def test_link_collector_create_find_links_expansion(
|
def test_link_collector_create_find_links_expansion(
|
||||||
mock_expanduser, tmpdir,
|
mock_expanduser, tmpdir,
|
||||||
):
|
):
|
||||||
|
|
|
@ -5,12 +5,7 @@ import sys
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import pip._internal.utils.compat as pip_compat
|
import pip._internal.utils.compat as pip_compat
|
||||||
from pip._internal.utils.compat import (
|
from pip._internal.utils.compat import console_to_str, get_path_uid, str_to_display
|
||||||
console_to_str,
|
|
||||||
expanduser,
|
|
||||||
get_path_uid,
|
|
||||||
str_to_display,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_path_uid():
|
def test_get_path_uid():
|
||||||
|
@ -127,16 +122,3 @@ def test_console_to_str_warning(monkeypatch):
|
||||||
monkeypatch.setattr(locale, 'getpreferredencoding', lambda: 'utf-8')
|
monkeypatch.setattr(locale, 'getpreferredencoding', lambda: 'utf-8')
|
||||||
monkeypatch.setattr(pip_compat.logger, 'warning', check_warning)
|
monkeypatch.setattr(pip_compat.logger, 'warning', check_warning)
|
||||||
console_to_str(some_bytes)
|
console_to_str(some_bytes)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("home,path,expanded", [
|
|
||||||
("/Users/test", "~", "/Users/test"),
|
|
||||||
("/Users/test", "~/.cache", "/Users/test/.cache"),
|
|
||||||
# Verify that we are not affected by https://bugs.python.org/issue14768
|
|
||||||
("/", "~", "/"),
|
|
||||||
("/", "~/.cache", "/.cache"),
|
|
||||||
])
|
|
||||||
def test_expanduser(home, path, expanded, monkeypatch):
|
|
||||||
monkeypatch.setenv("HOME", home)
|
|
||||||
monkeypatch.setenv("USERPROFILE", home)
|
|
||||||
assert expanduser(path) == expanded
|
|
||||||
|
|
Loading…
Reference in New Issue