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:
Jon Dufresne 2020-12-28 21:46:53 -08:00
parent af5b7fe1f9
commit 5150129f6b
6 changed files with 6 additions and 37 deletions

View File

@ -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,
) )

View File

@ -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']`,

View File

@ -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:

View File

@ -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,
): ):

View File

@ -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