mirror of https://github.com/pypa/pip
Merge pull request #9436 from sbidoul/vcs-url-sbi
Remove deprecated support for VCS pseudo URLs
This commit is contained in:
commit
8de9edf401
|
@ -0,0 +1,2 @@
|
|||
Remove support for VCS pseudo URLs editable requirements. It was emitting
|
||||
deprecation warning since version 20.0.
|
|
@ -115,23 +115,17 @@ def parse_editable(editable_req):
|
|||
url = f'{version_control}+{url}'
|
||||
break
|
||||
|
||||
if '+' not in url:
|
||||
link = Link(url)
|
||||
|
||||
if not link.is_vcs:
|
||||
backends = ", ".join(vcs.all_schemes)
|
||||
raise InstallationError(
|
||||
'{} is not a valid editable requirement. '
|
||||
'It should either be a path to a local project or a VCS URL '
|
||||
'(beginning with svn+, git+, hg+, or bzr+).'.format(editable_req)
|
||||
f'{editable_req} is not a valid editable requirement. '
|
||||
f'It should either be a path to a local project or a VCS URL '
|
||||
f'(beginning with {backends}).'
|
||||
)
|
||||
|
||||
vc_type = url.split('+', 1)[0].lower()
|
||||
|
||||
if not vcs.get_backend(vc_type):
|
||||
backends = ", ".join([bends.name + '+URL' for bends in vcs.backends])
|
||||
error_message = "For --editable={}, " \
|
||||
"only {} are currently supported".format(
|
||||
editable_req, backends)
|
||||
raise InstallationError(error_message)
|
||||
|
||||
package_name = Link(url).egg_fragment
|
||||
package_name = link.egg_fragment
|
||||
if not package_name:
|
||||
raise InstallationError(
|
||||
"Could not detect requirement name for '{}', please specify one "
|
||||
|
|
|
@ -625,31 +625,12 @@ class InstallRequirement:
|
|||
if self.link.scheme == 'file':
|
||||
# Static paths don't get updated
|
||||
return
|
||||
assert '+' in self.link.url, \
|
||||
"bad url: {self.link.url!r}".format(**locals())
|
||||
vc_type, url = self.link.url.split('+', 1)
|
||||
vcs_backend = vcs.get_backend(vc_type)
|
||||
if vcs_backend:
|
||||
if not self.link.is_vcs:
|
||||
reason = (
|
||||
"This form of VCS requirement is being deprecated: {}."
|
||||
).format(
|
||||
self.link.url
|
||||
)
|
||||
replacement = None
|
||||
if self.link.url.startswith("git+git@"):
|
||||
replacement = (
|
||||
"git+https://git@example.com/..., "
|
||||
"git+ssh://git@example.com/..., "
|
||||
"or the insecure git+git://git@example.com/..."
|
||||
)
|
||||
deprecated(reason, replacement, gone_in="21.0", issue=7554)
|
||||
hidden_url = hide_url(self.link.url)
|
||||
vcs_backend.obtain(self.source_dir, url=hidden_url)
|
||||
else:
|
||||
assert 0, (
|
||||
'Unexpected version control type (in {}): {}'.format(
|
||||
self.link, vc_type))
|
||||
vcs_backend = vcs.get_backend_for_scheme(self.link.scheme)
|
||||
# Editable requirements are validated in Requirement constructors.
|
||||
# So here, if it's neither a path nor a valid VCS URL, it's a bug.
|
||||
assert vcs_backend, f"Unsupported VCS URL {self.link.url}"
|
||||
hidden_url = hide_url(self.link.url)
|
||||
vcs_backend.obtain(self.source_dir, url=hidden_url)
|
||||
|
||||
# Top-level Actions
|
||||
def uninstall(self, auto_confirm=False, verbose=False):
|
||||
|
|
|
@ -25,8 +25,8 @@ class Bazaar(VersionControl):
|
|||
dirname = '.bzr'
|
||||
repo_name = 'branch'
|
||||
schemes = (
|
||||
'bzr', 'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp',
|
||||
'bzr+lp',
|
||||
'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp',
|
||||
'bzr+lp', 'bzr+file'
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
|
|
|
@ -47,7 +47,7 @@ class Git(VersionControl):
|
|||
dirname = '.git'
|
||||
repo_name = 'clone'
|
||||
schemes = (
|
||||
'git', 'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file',
|
||||
'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file',
|
||||
)
|
||||
# Prevent the user's environment variables from interfering with pip:
|
||||
# https://github.com/pypa/pip/issues/1130
|
||||
|
|
|
@ -30,7 +30,7 @@ class Mercurial(VersionControl):
|
|||
dirname = '.hg'
|
||||
repo_name = 'clone'
|
||||
schemes = (
|
||||
'hg', 'hg+file', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http',
|
||||
'hg+file', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http',
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
|
|
|
@ -37,7 +37,9 @@ class Subversion(VersionControl):
|
|||
name = 'svn'
|
||||
dirname = '.svn'
|
||||
repo_name = 'checkout'
|
||||
schemes = ('svn', 'svn+ssh', 'svn+http', 'svn+https', 'svn+svn')
|
||||
schemes = (
|
||||
'svn+ssh', 'svn+http', 'svn+https', 'svn+svn', 'svn+file'
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def should_add_vcs_url_prefix(cls, remote_url):
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from pip._internal.utils.urls import path_to_url
|
||||
from tests.lib import pyversion # noqa: F401
|
||||
from tests.lib import (
|
||||
_change_test_package_version,
|
||||
|
@ -454,7 +455,7 @@ def test_check_submodule_addition(script):
|
|||
)
|
||||
|
||||
install_result = script.pip(
|
||||
'install', '-e', 'git+' + module_path + '#egg=version_pkg'
|
||||
'install', '-e', 'git+' + path_to_url(module_path) + '#egg=version_pkg'
|
||||
)
|
||||
install_result.did_create(
|
||||
script.venv / 'src/version-pkg/testpkg/static/testfile'
|
||||
|
@ -467,7 +468,7 @@ def test_check_submodule_addition(script):
|
|||
|
||||
# expect error because git may write to stderr
|
||||
update_result = script.pip(
|
||||
'install', '-e', 'git+' + module_path + '#egg=version_pkg',
|
||||
'install', '-e', 'git+' + path_to_url(module_path) + '#egg=version_pkg',
|
||||
'--upgrade',
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue