Skip to content

Commit 448303a

Browse files
authored
Merge pull request #7281 from sbidoul/ref-get_used_vcs_backend-sbi
Refactor _get_used_vcs_backend
2 parents 2a2794e + 18a5881 commit 448303a

File tree

4 files changed

+17
-13
lines changed

4 files changed

+17
-13
lines changed

news/7281.trivial

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
refactor _get_used_vcs_backend

src/pip/_internal/operations/prepare.py

+1-13
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666
from pip._internal.req.req_install import InstallRequirement
6767
from pip._internal.req.req_tracker import RequirementTracker
6868
from pip._internal.utils.hashes import Hashes
69-
from pip._internal.vcs.versioncontrol import VersionControl
7069

7170
if PY2:
7271
CopytreeKwargs = TypedDict(
@@ -103,22 +102,11 @@ def _get_prepared_distribution(req, req_tracker, finder, build_isolation):
103102

104103
def unpack_vcs_link(link, location):
105104
# type: (Link, str) -> None
106-
vcs_backend = _get_used_vcs_backend(link)
105+
vcs_backend = vcs.get_backend_for_scheme(link.scheme)
107106
assert vcs_backend is not None
108107
vcs_backend.unpack(location, url=hide_url(link.url))
109108

110109

111-
def _get_used_vcs_backend(link):
112-
# type: (Link) -> Optional[VersionControl]
113-
"""
114-
Return a VersionControl object or None.
115-
"""
116-
for vcs_backend in vcs.backends:
117-
if link.scheme in vcs_backend.schemes:
118-
return vcs_backend
119-
return None
120-
121-
122110
def _progress_indicator(iterable, *args, **kwargs):
123111
return iterable
124112

src/pip/_internal/vcs/versioncontrol.py

+10
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,16 @@ def get_backend_for_dir(self, location):
237237
return vcs_backend
238238
return None
239239

240+
def get_backend_for_scheme(self, scheme):
241+
# type: (str) -> Optional[VersionControl]
242+
"""
243+
Return a VersionControl object or None.
244+
"""
245+
for vcs_backend in self._registry.values():
246+
if scheme in vcs_backend.schemes:
247+
return vcs_backend
248+
return None
249+
240250
def get_backend(self, name):
241251
# type: (str) -> Optional[VersionControl]
242252
"""

tests/functional/test_vcs_git.py

+5
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@
66

77
import pytest
88

9+
from pip._internal.vcs import vcs
910
from pip._internal.vcs.git import Git, RemoteNotFoundError
1011
from tests.lib import _create_test_package, _git_commit, _test_path_to_file_url
1112

1213

14+
def test_get_backend_for_scheme():
15+
assert vcs.get_backend_for_scheme("git+https") is vcs.get_backend("Git")
16+
17+
1318
def get_head_sha(script, dest):
1419
"""Return the HEAD sha."""
1520
result = script.run('git', 'rev-parse', 'HEAD', cwd=dest)

0 commit comments

Comments
 (0)