Merge pull request #9436 from sbidoul/vcs-url-sbi

Remove deprecated support for VCS pseudo URLs
This commit is contained in:
Stéphane Bidoul 2021-01-19 11:07:17 +01:00 committed by GitHub
commit 8de9edf401
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 26 additions and 46 deletions

2
news/7554.removal.rst Normal file
View File

@ -0,0 +1,2 @@
Remove support for VCS pseudo URLs editable requirements. It was emitting
deprecation warning since version 20.0.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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