1
1
Fork 0
mirror of https://github.com/pypa/pip synced 2023-12-13 21:30:23 +01:00

Merge pull request #7281 from sbidoul/ref-get_used_vcs_backend-sbi

Refactor _get_used_vcs_backend
This commit is contained in:
Christopher Hunt 2019-11-02 10:54:42 +08:00 committed by GitHub
commit 448303a4ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 13 deletions

1
news/7281.trivial Normal file
View file

@ -0,0 +1 @@
refactor _get_used_vcs_backend

View file

@ -66,7 +66,6 @@ if MYPY_CHECK_RUNNING:
from pip._internal.req.req_install import InstallRequirement
from pip._internal.req.req_tracker import RequirementTracker
from pip._internal.utils.hashes import Hashes
from pip._internal.vcs.versioncontrol import VersionControl
if PY2:
CopytreeKwargs = TypedDict(
@ -103,22 +102,11 @@ def _get_prepared_distribution(req, req_tracker, finder, build_isolation):
def unpack_vcs_link(link, location):
# type: (Link, str) -> None
vcs_backend = _get_used_vcs_backend(link)
vcs_backend = vcs.get_backend_for_scheme(link.scheme)
assert vcs_backend is not None
vcs_backend.unpack(location, url=hide_url(link.url))
def _get_used_vcs_backend(link):
# type: (Link) -> Optional[VersionControl]
"""
Return a VersionControl object or None.
"""
for vcs_backend in vcs.backends:
if link.scheme in vcs_backend.schemes:
return vcs_backend
return None
def _progress_indicator(iterable, *args, **kwargs):
return iterable

View file

@ -237,6 +237,16 @@ class VcsSupport(object):
return vcs_backend
return None
def get_backend_for_scheme(self, scheme):
# type: (str) -> Optional[VersionControl]
"""
Return a VersionControl object or None.
"""
for vcs_backend in self._registry.values():
if scheme in vcs_backend.schemes:
return vcs_backend
return None
def get_backend(self, name):
# type: (str) -> Optional[VersionControl]
"""

View file

@ -6,10 +6,15 @@ import os
import pytest
from pip._internal.vcs import vcs
from pip._internal.vcs.git import Git, RemoteNotFoundError
from tests.lib import _create_test_package, _git_commit, _test_path_to_file_url
def test_get_backend_for_scheme():
assert vcs.get_backend_for_scheme("git+https") is vcs.get_backend("Git")
def get_head_sha(script, dest):
"""Return the HEAD sha."""
result = script.run('git', 'rev-parse', 'HEAD', cwd=dest)