Skip to content

Commit b447f43

Browse files
authored
Move path_to_url() to utils/urls.py (#7075)
2 parents 108f9b6 + 0435316 commit b447f43

File tree

14 files changed

+44
-50
lines changed

14 files changed

+44
-50
lines changed

src/pip/_internal/cache.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313

1414
from pip._internal.models.link import Link
1515
from pip._internal.utils.compat import expanduser
16-
from pip._internal.utils.misc import path_to_url
1716
from pip._internal.utils.temp_dir import TempDirectory
1817
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
18+
from pip._internal.utils.urls import path_to_url
1919
from pip._internal.wheel import InvalidWheelFilename, Wheel
2020

2121
if MYPY_CHECK_RUNNING:

src/pip/_internal/collector.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717

1818
from pip._internal.models.link import Link
1919
from pip._internal.utils.filetypes import ARCHIVE_EXTENSIONS
20-
from pip._internal.utils.misc import path_to_url, redact_auth_from_url
20+
from pip._internal.utils.misc import redact_auth_from_url
2121
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
22-
from pip._internal.utils.urls import url_to_path
22+
from pip._internal.utils.urls import path_to_url, url_to_path
2323
from pip._internal.vcs import is_url, vcs
2424

2525
if MYPY_CHECK_RUNNING:

src/pip/_internal/download.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
hide_url,
4444
parse_netloc,
4545
path_to_display,
46-
path_to_url,
4746
rmtree,
4847
splitext,
4948
)
@@ -90,7 +89,6 @@
9089

9190

9291
__all__ = ['get_file_content',
93-
'path_to_url',
9492
'unpack_vcs_link',
9593
'unpack_file_url',
9694
'unpack_http_url', 'unpack_url',

src/pip/_internal/models/link.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
from pip._internal.utils.filetypes import WHEEL_EXTENSION
88
from pip._internal.utils.misc import (
9-
path_to_url,
109
redact_auth_from_url,
1110
split_auth_from_netloc,
1211
splitext,
1312
)
1413
from pip._internal.utils.models import KeyBasedCompareMixin
1514
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
16-
from pip._internal.utils.urls import url_to_path
15+
from pip._internal.utils.urls import path_to_url, url_to_path
1716

1817
if MYPY_CHECK_RUNNING:
1918
from typing import Optional, Text, Tuple, Union

src/pip/_internal/req/constructors.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@
2626
from pip._internal.pyproject import make_pyproject_path
2727
from pip._internal.req.req_install import InstallRequirement
2828
from pip._internal.utils.filetypes import ARCHIVE_EXTENSIONS
29-
from pip._internal.utils.misc import is_installable_dir, path_to_url, splitext
29+
from pip._internal.utils.misc import is_installable_dir, splitext
3030
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
31+
from pip._internal.utils.urls import path_to_url
3132
from pip._internal.vcs import is_url, vcs
3233
from pip._internal.wheel import Wheel
3334

src/pip/_internal/utils/misc.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
from pip._vendor.six import PY2, text_type
2424
from pip._vendor.six.moves import input, shlex_quote
2525
from pip._vendor.six.moves.urllib import parse as urllib_parse
26-
from pip._vendor.six.moves.urllib import request as urllib_request
2726
from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote
2827

2928
from pip import __version__
@@ -882,17 +881,6 @@ def enum(*sequential, **named):
882881
return type('Enum', (), enums)
883882

884883

885-
def path_to_url(path):
886-
# type: (Union[str, Text]) -> str
887-
"""
888-
Convert a path to a file: URL. The path will be made absolute and have
889-
quoted path parts.
890-
"""
891-
path = os.path.normpath(os.path.abspath(path))
892-
url = urllib_parse.urljoin('file:', urllib_request.pathname2url(path))
893-
return url
894-
895-
896884
def build_netloc(host, port):
897885
# type: (str, Optional[int]) -> str
898886
"""

src/pip/_internal/utils/urls.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import sys
23

34
from pip._vendor.six.moves.urllib import parse as urllib_parse
@@ -16,6 +17,17 @@ def get_url_scheme(url):
1617
return url.split(':', 1)[0].lower()
1718

1819

20+
def path_to_url(path):
21+
# type: (Union[str, Text]) -> str
22+
"""
23+
Convert a path to a file: URL. The path will be made absolute and have
24+
quoted path parts.
25+
"""
26+
path = os.path.normpath(os.path.abspath(path))
27+
url = urllib_parse.urljoin('file:', urllib_request.pathname2url(path))
28+
return url
29+
30+
1931
def url_to_path(url):
2032
# type: (str) -> str
2133
"""

src/pip/_internal/vcs/bazaar.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,9 @@
55

66
from pip._vendor.six.moves.urllib import parse as urllib_parse
77

8-
from pip._internal.utils.misc import (
9-
display_path,
10-
make_command,
11-
path_to_url,
12-
rmtree,
13-
)
8+
from pip._internal.utils.misc import display_path, make_command, rmtree
149
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
10+
from pip._internal.utils.urls import path_to_url
1511
from pip._internal.vcs.versioncontrol import VersionControl, vcs
1612

1713
if MYPY_CHECK_RUNNING:

src/pip/_internal/vcs/mercurial.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55

66
from pip._vendor.six.moves import configparser
77

8-
from pip._internal.utils.misc import display_path, make_command, path_to_url
8+
from pip._internal.utils.misc import display_path, make_command
99
from pip._internal.utils.temp_dir import TempDirectory
1010
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
11+
from pip._internal.utils.urls import path_to_url
1112
from pip._internal.vcs.versioncontrol import VersionControl, vcs
1213

1314
if MYPY_CHECK_RUNNING:

src/pip/_internal/wheel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@
4343
captured_stdout,
4444
ensure_dir,
4545
format_command_args,
46-
path_to_url,
4746
read_chunks,
4847
)
4948
from pip._internal.utils.setuptools_build import make_setuptools_shim_args
5049
from pip._internal.utils.temp_dir import TempDirectory
5150
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
5251
from pip._internal.utils.ui import open_spinner
5352
from pip._internal.utils.unpacking import unpack_file
53+
from pip._internal.utils.urls import path_to_url
5454

5555
if MYPY_CHECK_RUNNING:
5656
from typing import (

tests/unit/test_download.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from pip._internal.exceptions import HashMismatch
2525
from pip._internal.models.link import Link
2626
from pip._internal.utils.hashes import Hashes
27-
from pip._internal.utils.misc import path_to_url
27+
from pip._internal.utils.urls import path_to_url
2828
from tests.lib import create_file
2929
from tests.lib.filesystem import (
3030
get_filelist,

tests/unit/test_req.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
)
3232
from pip._internal.req.req_file import process_line
3333
from pip._internal.req.req_tracker import RequirementTracker
34-
from pip._internal.utils.misc import path_to_url
34+
from pip._internal.utils.urls import path_to_url
3535
from tests.lib import (
3636
DATA_DIR,
3737
assert_raises_regexp,

tests/unit/test_urls.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import os
12
import sys
23

34
import pytest
5+
from pip._vendor.six.moves.urllib import request as urllib_request
46

5-
from pip._internal.utils.misc import path_to_url
6-
from pip._internal.utils.urls import get_url_scheme, url_to_path
7+
from pip._internal.utils.urls import get_url_scheme, path_to_url, url_to_path
78

89

910
@pytest.mark.parametrize("url,expected", [
@@ -16,6 +17,22 @@ def test_get_url_scheme(url, expected):
1617
assert get_url_scheme(url) == expected
1718

1819

20+
@pytest.mark.skipif("sys.platform == 'win32'")
21+
def test_path_to_url_unix():
22+
assert path_to_url('/tmp/file') == 'file:///tmp/file'
23+
path = os.path.join(os.getcwd(), 'file')
24+
assert path_to_url('file') == 'file://' + urllib_request.pathname2url(path)
25+
26+
27+
@pytest.mark.skipif("sys.platform != 'win32'")
28+
def test_path_to_url_win():
29+
assert path_to_url('c:/tmp/file') == 'file:///C:/tmp/file'
30+
assert path_to_url('c:\\tmp\\file') == 'file:///C:/tmp/file'
31+
assert path_to_url(r'\\unc\as\path') == 'file://unc/as/path'
32+
path = os.path.join(os.getcwd(), 'file')
33+
assert path_to_url('file') == 'file:' + urllib_request.pathname2url(path)
34+
35+
1936
@pytest.mark.parametrize("url,win_expected,non_win_expected", [
2037
('file:tmp', 'tmp', 'tmp'),
2138
('file:c:/path/to/file', r'C:\path\to\file', 'c:/path/to/file'),

tests/unit/test_utils.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import pytest
2020
from mock import Mock, patch
21-
from pip._vendor.six.moves.urllib import request as urllib_request
2221

2322
from pip._internal.exceptions import (
2423
HashMismatch,
@@ -51,7 +50,6 @@
5150
normalize_version_info,
5251
parse_netloc,
5352
path_to_display,
54-
path_to_url,
5553
redact_auth_from_url,
5654
redact_netloc,
5755
remove_auth_from_url,
@@ -1022,22 +1020,6 @@ def test_closes_stdin(self):
10221020
)
10231021

10241022

1025-
@pytest.mark.skipif("sys.platform == 'win32'")
1026-
def test_path_to_url_unix():
1027-
assert path_to_url('/tmp/file') == 'file:///tmp/file'
1028-
path = os.path.join(os.getcwd(), 'file')
1029-
assert path_to_url('file') == 'file://' + urllib_request.pathname2url(path)
1030-
1031-
1032-
@pytest.mark.skipif("sys.platform != 'win32'")
1033-
def test_path_to_url_win():
1034-
assert path_to_url('c:/tmp/file') == 'file:///C:/tmp/file'
1035-
assert path_to_url('c:\\tmp\\file') == 'file:///C:/tmp/file'
1036-
assert path_to_url(r'\\unc\as\path') == 'file://unc/as/path'
1037-
path = os.path.join(os.getcwd(), 'file')
1038-
assert path_to_url('file') == 'file:' + urllib_request.pathname2url(path)
1039-
1040-
10411023
@pytest.mark.parametrize('host_port, expected_netloc', [
10421024
# Test domain name.
10431025
(('example.com', None), 'example.com'),

0 commit comments

Comments
 (0)