diff --git a/news/3651.removal b/news/3651.removal new file mode 100644 index 000000000..d7cbb0362 --- /dev/null +++ b/news/3651.removal @@ -0,0 +1 @@ +Remove the legacy format from pip list diff --git a/news/3654.removal b/news/3654.removal new file mode 100644 index 000000000..d7cbb0362 --- /dev/null +++ b/news/3654.removal @@ -0,0 +1 @@ +Remove the legacy format from pip list diff --git a/news/4174.removal b/news/4174.removal new file mode 100644 index 000000000..a1362cf71 --- /dev/null +++ b/news/4174.removal @@ -0,0 +1 @@ +Remove support for cleaning up #egg fragment postfixes diff --git a/src/pip/_internal/commands/list.py b/src/pip/_internal/commands/list.py index 09f633f39..53fb015f0 100644 --- a/src/pip/_internal/commands/list.py +++ b/src/pip/_internal/commands/list.py @@ -2,7 +2,6 @@ from __future__ import absolute_import import json import logging -import warnings from pip._vendor import six from pip._vendor.six.moves import zip_longest @@ -11,7 +10,6 @@ from pip._internal.basecommand import Command from pip._internal.cmdoptions import index_group, make_option_group from pip._internal.exceptions import CommandError from pip._internal.index import PackageFinder -from pip._internal.utils.deprecation import RemovedInPip11Warning from pip._internal.utils.misc import ( dist_is_editable, get_installed_distributions, ) @@ -78,9 +76,9 @@ class ListCommand(Command): action='store', dest='list_format', default="columns", - choices=('legacy', 'columns', 'freeze', 'json'), + choices=('columns', 'freeze', 'json'), help="Select the output format among: columns (default), freeze, " - "json, or legacy.", + "or json", ) cmd_opts.add_option( @@ -123,13 +121,6 @@ class ListCommand(Command): ) def run(self, options, args): - if options.list_format == "legacy": - warnings.warn( - "The legacy format has been deprecated and will be removed " - "in the future.", - RemovedInPip11Warning, - ) - if options.outdated and options.uptodate: raise CommandError( "Options --outdated and --uptodate cannot be combined.") @@ -208,30 +199,6 @@ class ListCommand(Command): dist.latest_filetype = typ yield dist - def output_legacy(self, dist, options): - if options.verbose >= 1: - return '%s (%s, %s, %s)' % ( - dist.project_name, - dist.version, - dist.location, - get_installer(dist), - ) - elif dist_is_editable(dist): - return '%s (%s, %s)' % ( - dist.project_name, - dist.version, - dist.location, - ) - else: - return '%s (%s)' % (dist.project_name, dist.version) - - def output_legacy_latest(self, dist, options): - return '%s - Latest: %s [%s]' % ( - self.output_legacy(dist, options), - dist.latest_version, - dist.latest_filetype, - ) - def output_package_listing(self, packages, options): packages = sorted( packages, @@ -249,12 +216,6 @@ class ListCommand(Command): logger.info("%s==%s", dist.project_name, dist.version) elif options.list_format == 'json': logger.info(format_for_json(packages, options)) - elif options.list_format == "legacy": - for dist in packages: - if options.outdated: - logger.info(self.output_legacy_latest(dist, options)) - else: - logger.info(self.output_legacy(dist, options)) def output_package_listing_columns(self, data, header): # insert the header first: we need to know the size of column names diff --git a/src/pip/_internal/index.py b/src/pip/_internal/index.py index fe318a24f..857486cc1 100644 --- a/src/pip/_internal/index.py +++ b/src/pip/_internal/index.py @@ -29,7 +29,7 @@ from pip._internal.exceptions import ( ) from pip._internal.models.index import PyPI from pip._internal.pep425tags import get_supported -from pip._internal.utils.deprecation import RemovedInPip11Warning +from pip._internal.utils.deprecation import RemovedInPip12Warning from pip._internal.utils.logging import indent_log from pip._internal.utils.misc import ( ARCHIVE_EXTENSIONS, SUPPORTED_EXTENSIONS, cached_property, normalize_path, @@ -215,7 +215,7 @@ class PackageFinder(object): warnings.warn( "Dependency Links processing has been deprecated and will be " "removed in a future release.", - RemovedInPip11Warning, + RemovedInPip12Warning, ) self.dependency_links.extend(links) diff --git a/src/pip/_internal/operations/freeze.py b/src/pip/_internal/operations/freeze.py index b6821c0e7..82d0a8c4b 100644 --- a/src/pip/_internal/operations/freeze.py +++ b/src/pip/_internal/operations/freeze.py @@ -13,7 +13,7 @@ from pip._vendor.pkg_resources import RequirementParseError from pip._internal.exceptions import InstallationError from pip._internal.req import InstallRequirement from pip._internal.req.req_file import COMMENT_RE -from pip._internal.utils.deprecation import RemovedInPip11Warning +from pip._internal.utils.deprecation import RemovedInPip12Warning from pip._internal.utils.misc import ( dist_is_editable, get_installed_distributions, ) @@ -219,7 +219,7 @@ class FrozenRequirement(object): warnings.warn( "SVN editable detection based on dependency links " "will be dropped in the future.", - RemovedInPip11Warning, + RemovedInPip12Warning, ) comments.append( '# Installing as editable to satisfy requirement %s:' % diff --git a/src/pip/_internal/req/req_install.py b/src/pip/_internal/req/req_install.py index c40e9262a..8838dd2eb 100644 --- a/src/pip/_internal/req/req_install.py +++ b/src/pip/_internal/req/req_install.py @@ -33,9 +33,7 @@ from pip._internal.locations import ( PIP_DELETE_MARKER_FILENAME, running_under_virtualenv, ) from pip._internal.req.req_uninstall import UninstallPathSet -from pip._internal.utils.deprecation import ( - RemovedInPip11Warning, RemovedInPip12Warning, -) +from pip._internal.utils.deprecation import RemovedInPip12Warning from pip._internal.utils.hashes import Hashes from pip._internal.utils.logging import indent_log from pip._internal.utils.misc import ( @@ -1050,22 +1048,6 @@ class InstallRequirement(object): return install_args -def _strip_postfix(req): - """ - Strip req postfix ( -dev, 0.2, etc ) - """ - # FIXME: use package_to_requirement? - match = re.search(r'^(.*?)(?:-dev|-\d.*)$', req) - if match: - # Strip off -dev, -0.2, etc. - warnings.warn( - "#egg cleanup for editable urls will be dropped in the future", - RemovedInPip11Warning, - ) - req = match.group(1) - return req - - def parse_editable(editable_req): """Parses an editable requirement into: - a requirement name @@ -1130,7 +1112,7 @@ def parse_editable(editable_req): "Could not detect requirement name for '%s', please specify one " "with #egg=your_package_name" % editable_req ) - return _strip_postfix(package_name), url, None + return package_name, url, None def deduce_helpful_msg(req): diff --git a/src/pip/_internal/utils/deprecation.py b/src/pip/_internal/utils/deprecation.py index 7ec40feeb..89b66e9ad 100644 --- a/src/pip/_internal/utils/deprecation.py +++ b/src/pip/_internal/utils/deprecation.py @@ -20,10 +20,6 @@ class Pending(object): pass -class RemovedInPip11Warning(PipDeprecationWarning): - pass - - class RemovedInPip12Warning(PipDeprecationWarning, Pending): pass diff --git a/tests/functional/test_list.py b/tests/functional/test_list.py index 234119b95..1f12d91e0 100644 --- a/tests/functional/test_list.py +++ b/tests/functional/test_list.py @@ -51,19 +51,6 @@ def test_columns_flag(script, data): assert 'simple2 3.0' in result.stdout, str(result) -def test_legacy_format(script, data): - """ - Test that legacy format - """ - script.pip( - 'install', '-f', data.find_links, '--no-index', 'simple==1.0', - 'simple2==3.0', - ) - result = script.pip('list', '--format=legacy', expect_stderr=True) - assert 'simple (1.0)' in result.stdout, str(result) - assert 'simple2 (3.0)' in result.stdout, str(result) - - def test_format_priority(script, data): """ Test that latest format has priority over previous ones. @@ -72,18 +59,18 @@ def test_format_priority(script, data): 'install', '-f', data.find_links, '--no-index', 'simple==1.0', 'simple2==3.0', ) - result = script.pip('list', '--format=columns', '--format=legacy', + result = script.pip('list', '--format=columns', '--format=freeze', expect_stderr=True) - assert 'simple (1.0)' in result.stdout, str(result) - assert 'simple2 (3.0)' in result.stdout, str(result) + assert 'simple==1.0' in result.stdout, str(result) + assert 'simple2==3.0' in result.stdout, str(result) assert 'simple 1.0' not in result.stdout, str(result) assert 'simple2 3.0' not in result.stdout, str(result) - result = script.pip('list', '--format=legacy', '--format=columns') + result = script.pip('list', '--format=freeze', '--format=columns') assert 'Package' in result.stdout, str(result) assert 'Version' in result.stdout, str(result) - assert 'simple (1.0)' not in result.stdout, str(result) - assert 'simple2 (3.0)' not in result.stdout, str(result) + assert 'simple==1.0' not in result.stdout, str(result) + assert 'simple2==3.0' not in result.stdout, str(result) assert 'simple 1.0' in result.stdout, str(result) assert 'simple2 3.0' in result.stdout, str(result) @@ -111,17 +98,6 @@ def test_local_columns_flag(script, data): assert 'simple 1.0' in result.stdout, str(result) -def test_local_legacy_flag(script, data): - """ - Test the behavior of --local --format=legacy flags in the list - command. - """ - script.pip('install', '-f', data.find_links, '--no-index', 'simple==1.0') - result = script.pip('list', '--local', '--format=legacy', - expect_stderr=True) - assert 'simple (1.0)' in result.stdout - - @pytest.mark.network def test_user_flag(script, data, virtualenv): """ @@ -157,23 +133,6 @@ def test_user_columns_flag(script, data, virtualenv): assert 'simple2 2.0' in result.stdout, str(result) -@pytest.mark.network -def test_user_legacy(script, data, virtualenv): - """ - Test the behavior of --user flag in the list command - - """ - virtualenv.system_site_packages = True - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) - script.pip('install', '-f', data.find_links, '--no-index', 'simple==1.0') - script.pip('install', '-f', data.find_links, '--no-index', - '--user', 'simple2==2.0') - result = script.pip('list', '--user', '--format=legacy', - expect_stderr=True) - assert 'simple (1.0)' not in result.stdout - assert 'simple2 (2.0)' in result.stdout, str(result) - - @pytest.mark.network def test_uptodate_flag(script, data): """ @@ -225,30 +184,6 @@ def test_uptodate_columns_flag(script, data): assert 'simple2 3.0' in result.stdout, str(result) -@pytest.mark.network -def test_uptodate_legacy_flag(script, data): - """ - Test the behavior of --uptodate --format=legacy flag in the list command - - """ - script.pip( - 'install', '-f', data.find_links, '--no-index', 'simple==1.0', - 'simple2==3.0', - ) - script.pip( - 'install', '-e', - 'git+https://github.com/pypa/pip-test-package.git#egg=pip-test-package' - ) - result = script.pip( - 'list', '-f', data.find_links, '--no-index', '--uptodate', - '--format=legacy', - expect_stderr=True, - ) - assert 'simple (1.0)' not in result.stdout # 3.0 is latest - assert 'pip-test-package (0.1.1,' in result.stdout # editables included - assert 'simple2 (3.0)' in result.stdout, str(result) - - @pytest.mark.network def test_outdated_flag(script, data): """ @@ -314,33 +249,6 @@ def test_outdated_columns_flag(script, data): assert 'simple2' not in result.stdout, str(result) # 3.0 is latest -@pytest.mark.network -def test_outdated_legacy(script, data): - """ - Test the behavior of --outdated --format=legacy flag in the list command - - """ - script.pip( - 'install', '-f', data.find_links, '--no-index', 'simple==1.0', - 'simple2==3.0', 'simplewheel==1.0', - ) - script.pip( - 'install', '-e', - 'git+https://github.com/pypa/pip-test-package.git' - '@0.1#egg=pip-test-package' - ) - result = script.pip( - 'list', '-f', data.find_links, '--no-index', '--outdated', - '--format=legacy', - expect_stderr=True, - ) - assert 'simple (1.0) - Latest: 3.0 [sdist]' in result.stdout - assert 'simplewheel (1.0) - Latest: 2.0 [wheel]' in result.stdout - assert 'pip-test-package (0.1, ' in result.stdout - assert ' Latest: 0.1.1 [sdist]' in result.stdout - assert 'simple2' not in result.stdout, str(result) # 3.0 is latest - - @pytest.mark.network def test_editables_flag(script, data): """ @@ -393,25 +301,6 @@ def test_editables_columns_flag(script, data): ) -@pytest.mark.network -def test_editables_legacy(script, data): - """ - Test the behavior of --editables flag in the list command - """ - script.pip('install', '-f', data.find_links, '--no-index', 'simple==1.0') - script.pip( - 'install', '-e', - 'git+https://github.com/pypa/pip-test-package.git#egg=pip-test-package' - ) - result = script.pip( - 'list', '--editable', '--format=legacy', expect_stderr=True, - ) - assert 'simple (1.0)' not in result.stdout, str(result) - assert os.path.join('src', 'pip-test-package') in result.stdout, ( - str(result) - ) - - @pytest.mark.network def test_uptodate_editables_flag(script, data): """ @@ -455,28 +344,6 @@ def test_uptodate_editables_columns_flag(script, data): ) -@pytest.mark.network -def test_uptodate_editables_legacy(script, data): - """ - test the behavior of --editable --uptodate --format=columns --format=legacy - flag in the list command - """ - script.pip('install', '-f', data.find_links, '--no-index', 'simple==1.0') - script.pip( - 'install', '-e', - 'git+https://github.com/pypa/pip-test-package.git#egg=pip-test-package' - ) - result = script.pip( - 'list', '-f', data.find_links, '--no-index', '--editable', - '--uptodate', '--format=legacy', - expect_stderr=True, - ) - assert 'simple (1.0)' not in result.stdout, str(result) - assert os.path.join('src', 'pip-test-package') in result.stdout, ( - str(result) - ) - - @pytest.mark.network def test_outdated_editables_flag(script, data): """ @@ -519,28 +386,6 @@ def test_outdated_editables_columns_flag(script, data): ) -@pytest.mark.network -def test_outdated_editables_legacy(script, data): - """ - test the behavior of --editable --outdated flag in the list command - """ - script.pip('install', '-f', data.find_links, '--no-index', 'simple==1.0') - script.pip( - 'install', '-e', - 'git+https://github.com/pypa/pip-test-package.git' - '@0.1#egg=pip-test-package' - ) - result = script.pip( - 'list', '-f', data.find_links, '--no-index', - '--editable', '--outdated', '--format=legacy', - expect_stderr=True, - ) - assert 'simple (1.0)' not in result.stdout, str(result) - assert os.path.join('src', 'pip-test-package') in result.stdout, ( - str(result) - ) - - def test_outdated_pre(script, data): script.pip('install', '-f', data.find_links, '--no-index', 'simple==1.0') @@ -583,11 +428,6 @@ def test_outdated_formats(script, data): ) assert 'simple==1.0' in result.stdout - # Check legacy - result = script.pip('list', '--no-index', '--find-links', wheelhouse_path, - '--outdated', '--format=legacy', expect_stderr=True) - assert 'simple (1.0) - Latest: 1.1 [wheel]' in result.stdout - # Check columns result = script.pip( 'list', '--no-index', '--find-links', wheelhouse_path,