diff --git a/src/pip/_internal/build_env.py b/src/pip/_internal/build_env.py index d8c7acc48..d744cc78a 100644 --- a/src/pip/_internal/build_env.py +++ b/src/pip/_internal/build_env.py @@ -189,8 +189,6 @@ class BuildEnvironment(object): args.extend(['--trusted-host', host]) if finder.allow_all_prereleases: args.append('--pre') - if finder.process_dependency_links: - args.append('--process-dependency-links') args.append('--') args.extend(requirements) with open_spinner(message) as spinner: diff --git a/src/pip/_internal/cli/base_command.py b/src/pip/_internal/cli/base_command.py index 1212cd5f4..175dbadc1 100644 --- a/src/pip/_internal/cli/base_command.py +++ b/src/pip/_internal/cli/base_command.py @@ -296,7 +296,6 @@ class RequirementCommand(Command): index_urls=index_urls, trusted_hosts=options.trusted_hosts, allow_all_prereleases=options.pre, - process_dependency_links=options.process_dependency_links, session=session, platform=platform, versions=python_versions, diff --git a/src/pip/_internal/cli/cmdoptions.py b/src/pip/_internal/cli/cmdoptions.py index 563cd58cd..0aebf75e8 100644 --- a/src/pip/_internal/cli/cmdoptions.py +++ b/src/pip/_internal/cli/cmdoptions.py @@ -347,17 +347,6 @@ def trusted_host(): ) -# Remove after 1.5 -process_dependency_links = partial( - Option, - "--process-dependency-links", - dest="process_dependency_links", - action="store_true", - default=False, - help="Enable the processing of dependency links.", -) # type: Callable[..., Option] - - def constraints(): # type: () -> Option return Option( @@ -773,6 +762,5 @@ index_group = { extra_index_url, no_index, find_links, - process_dependency_links, ] } # type: Dict[str, Any] diff --git a/src/pip/_internal/commands/list.py b/src/pip/_internal/commands/list.py index c6eeca79e..019f85dcd 100644 --- a/src/pip/_internal/commands/list.py +++ b/src/pip/_internal/commands/list.py @@ -118,7 +118,6 @@ class ListCommand(Command): index_urls=index_urls, allow_all_prereleases=options.pre, trusted_hosts=options.trusted_hosts, - process_dependency_links=options.process_dependency_links, session=session, ) @@ -168,16 +167,8 @@ class ListCommand(Command): logger.debug('Ignoring indexes: %s', ','.join(index_urls)) index_urls = [] - dependency_links = [] - for dist in packages: - if dist.has_metadata('dependency_links.txt'): - dependency_links.extend( - dist.get_metadata_lines('dependency_links.txt'), - ) - with self._build_session(options) as session: finder = self._build_package_finder(options, index_urls, session) - finder.add_dependency_links(dependency_links) for dist in packages: typ = 'unknown' diff --git a/src/pip/_internal/index.py b/src/pip/_internal/index.py index 1f2723e38..9eda3a351 100644 --- a/src/pip/_internal/index.py +++ b/src/pip/_internal/index.py @@ -31,7 +31,6 @@ from pip._internal.models.index import PyPI from pip._internal.models.link import Link from pip._internal.pep425tags import get_supported from pip._internal.utils.compat import ipaddress -from pip._internal.utils.deprecation import deprecated from pip._internal.utils.logging import indent_log from pip._internal.utils.misc import ( ARCHIVE_EXTENSIONS, SUPPORTED_EXTENSIONS, WHEEL_EXTENSION, normalize_path, @@ -268,7 +267,6 @@ class PackageFinder(object): index_urls, # type: List[str] allow_all_prereleases=False, # type: bool trusted_hosts=None, # type: Optional[Iterable[str]] - process_dependency_links=False, # type: bool session=None, # type: Optional[PipSession] format_control=None, # type: Optional[FormatControl] platform=None, # type: Optional[str] @@ -315,7 +313,6 @@ class PackageFinder(object): self.find_links.append(link) self.index_urls = index_urls - self.dependency_links = [] # type: List[str] # These are boring links that have already been logged somehow: self.logged_links = set() # type: Set[Link] @@ -331,9 +328,6 @@ class PackageFinder(object): # Do we want to allow _all_ pre-releases? self.allow_all_prereleases = allow_all_prereleases - # Do we process dependency links? - self.process_dependency_links = process_dependency_links - # The Session we'll use to make requests self.session = session @@ -375,22 +369,6 @@ class PackageFinder(object): ) return "\n".join(lines) - def add_dependency_links(self, links): - # type: (Iterable[str]) -> None - # FIXME: this shouldn't be global list this, it should only - # apply to requirements of the package that specifies the - # dependency_links value - # FIXME: also, we should track comes_from (i.e., use Link) - if self.process_dependency_links: - deprecated( - "Dependency Links processing has been deprecated and will be " - "removed in a future release.", - replacement="PEP 508 URL dependencies", - gone_in="19.0", - issue=4187, - ) - self.dependency_links.extend(links) - @staticmethod def _sort_locations(locations, expand_dir=False): # type: (Sequence[str], bool) -> Tuple[List[str], List[str]] @@ -587,7 +565,7 @@ class PackageFinder(object): # type: (str) -> List[Optional[InstallationCandidate]] """Find all available InstallationCandidate for project_name - This checks index_urls, find_links and dependency_links. + This checks index_urls and find_links. All versions found are returned as an InstallationCandidate list. See _link_package_versions for details on which files are accepted @@ -597,21 +575,18 @@ class PackageFinder(object): fl_file_loc, fl_url_loc = self._sort_locations( self.find_links, expand_dir=True, ) - dep_file_loc, dep_url_loc = self._sort_locations(self.dependency_links) file_locations = (Link(url) for url in itertools.chain( - index_file_loc, fl_file_loc, dep_file_loc, + index_file_loc, fl_file_loc, )) # We trust every url that the user has given us whether it was given - # via --index-url or --find-links - # We explicitly do not trust links that came from dependency_links + # via --index-url or --find-links. # We want to filter out any thing which does not have a secure origin. url_locations = [ link for link in itertools.chain( (Link(url) for url in index_url_loc), (Link(url) for url in fl_url_loc), - (Link(url) for url in dep_url_loc), ) if self._validate_secure_origin(logger, link) ] @@ -639,17 +614,6 @@ class PackageFinder(object): self._package_versions(page.iter_links(), search) ) - dependency_versions = self._package_versions( - (Link(url) for url in self.dependency_links), search - ) - if dependency_versions: - logger.debug( - 'dependency_links found: %s', - ', '.join([ - version.location.url for version in dependency_versions - ]) - ) - file_versions = self._package_versions(file_locations, search) if file_versions: file_versions.sort(reverse=True) @@ -662,10 +626,7 @@ class PackageFinder(object): ) # This is an intentional priority ordering - return ( - file_versions + find_links_versions + page_versions + - dependency_versions - ) + return file_versions + find_links_versions + page_versions def find_requirement(self, req, upgrade): # type: (InstallRequirement, bool) -> Optional[Link] diff --git a/src/pip/_internal/operations/prepare.py b/src/pip/_internal/operations/prepare.py index 23383b1af..8ec55db00 100644 --- a/src/pip/_internal/operations/prepare.py +++ b/src/pip/_internal/operations/prepare.py @@ -97,15 +97,9 @@ class IsWheel(DistAbstraction): class IsSDist(DistAbstraction): + # TODO: Remove 'finder' and the note in operations/check.py def dist(self, finder): - # type: (PackageFinder) -> pkg_resources.Distribution - dist = self.req.get_dist() - # FIXME: shouldn't be globally added. - if finder and dist.has_metadata('dependency_links.txt'): - finder.add_dependency_links( - dist.get_metadata_lines('dependency_links.txt') - ) - return dist + return self.req.get_dist() def prep_for_dist(self, finder, build_isolation): # type: (PackageFinder, bool) -> None diff --git a/src/pip/_internal/req/req_file.py b/src/pip/_internal/req/req_file.py index e92b7968b..726f2f6a0 100644 --- a/src/pip/_internal/req/req_file.py +++ b/src/pip/_internal/req/req_file.py @@ -55,7 +55,6 @@ SUPPORTED_OPTIONS = [ cmdoptions.no_binary, cmdoptions.only_binary, cmdoptions.pre, - cmdoptions.process_dependency_links, cmdoptions.trusted_host, cmdoptions.require_hashes, ] # type: List[Callable[..., optparse.Option]] @@ -251,8 +250,6 @@ def process_line( finder.find_links.append(value) if opts.pre: finder.allow_all_prereleases = True - if opts.process_dependency_links: - finder.process_dependency_links = True if opts.trusted_hosts: finder.secure_origins.extend( ("*", host, "*") for host in opts.trusted_hosts) diff --git a/src/pip/_internal/utils/outdated.py b/src/pip/_internal/utils/outdated.py index 03360c712..37c47a4a5 100644 --- a/src/pip/_internal/utils/outdated.py +++ b/src/pip/_internal/utils/outdated.py @@ -127,7 +127,6 @@ def pip_version_check(session, options): index_urls=[options.index_url] + options.extra_index_urls, allow_all_prereleases=False, # Explicitly set to False trusted_hosts=options.trusted_hosts, - process_dependency_links=options.process_dependency_links, session=session, ) all_candidates = finder.find_all_candidates("pip") diff --git a/src/pip/_internal/vcs/subversion.py b/src/pip/_internal/vcs/subversion.py index 87970f1bc..1bdc9ca79 100644 --- a/src/pip/_internal/vcs/subversion.py +++ b/src/pip/_internal/vcs/subversion.py @@ -61,6 +61,7 @@ class Subversion(VersionControl): cmd_args = ['update'] + rev_options.to_args() + [dest] self.run_command(cmd_args) + # TODO: Remove def get_location(self, dist, dependency_links): for url in dependency_links: egg_fragment = Link(url).egg_fragment diff --git a/tests/functional/test_install_reqs.py b/tests/functional/test_install_reqs.py index bda45b107..5c56a0e12 100644 --- a/tests/functional/test_install_reqs.py +++ b/tests/functional/test_install_reqs.py @@ -175,8 +175,8 @@ def test_respect_order_in_requirements_file(script, data): def test_install_local_editable_with_extras(script, data): to_install = data.packages.join("LocalExtras") - res = script.pip( - 'install', '-e', to_install + '[bar]', '--process-dependency-links', + res = script.pip_install_local( + '-e', to_install + '[bar]', expect_error=False, expect_stderr=True, ) diff --git a/tests/unit/test_finder.py b/tests/unit/test_finder.py index 9f82a18a8..c8ae693dd 100644 --- a/tests/unit/test_finder.py +++ b/tests/unit/test_finder.py @@ -300,50 +300,6 @@ def test_finder_priority_file_over_page(data): assert link.url.startswith("file://") -def test_finder_deplink(): - """ - Test PackageFinder with dependency links only - """ - req = install_req_from_line('gmpy==1.15', None) - finder = PackageFinder( - [], - [], - process_dependency_links=True, - session=PipSession(), - ) - finder.add_dependency_links( - ['https://files.pythonhosted.org/packages/source/g/gmpy/gmpy-1.15.zip'] - ) - link = finder.find_requirement(req, False) - assert link.url.startswith("https://files.pythonhosted.org/"), link - - -@pytest.mark.network -def test_finder_priority_page_over_deplink(): - """ - Test PackageFinder prefers page links over equivalent dependency links - """ - req = install_req_from_line('pip==1.5.6', None) - finder = PackageFinder( - [], - ["https://pypi.org/simple/"], - process_dependency_links=True, - session=PipSession(), - ) - finder.add_dependency_links([ - 'https://files.pythonhosted.org/packages/source/p/pip/pip-1.5.6.tar.gz' - ]) - all_versions = finder.find_all_candidates(req.name) - # Check that the dependency_link is last - assert all_versions[-1].location.url.startswith( - 'https://files.pythonhosted.org/' - ) - link = finder.find_requirement(req, False) - assert link.url.startswith( - "https://files.pythonhosted.org/packages/3f/08/7347ca4" - ), link - - def test_finder_priority_nonegg_over_eggfragments(): """Test PackageFinder prefers non-egg links over "#egg=" links""" req = install_req_from_line('bar==1.0', None) diff --git a/tests/unit/test_req.py b/tests/unit/test_req.py index 9d146e36c..32cc1b36d 100644 --- a/tests/unit/test_req.py +++ b/tests/unit/test_req.py @@ -82,6 +82,7 @@ class TestRequirementSet(object): reqset, ) + # TODO: Update test when Python 2.7 or Python 3.4 is dropped. def test_environment_marker_extras(self, data): """ Test that the environment marker extras are used with diff --git a/tests/unit/test_req_file.py b/tests/unit/test_req_file.py index bdf721794..b71ca68d0 100644 --- a/tests/unit/test_req_file.py +++ b/tests/unit/test_req_file.py @@ -413,11 +413,6 @@ class TestProcessLine(object): call = mock_parse.mock_calls[0] assert call[1][0] == 'http://me.com/me/reqs.txt' - def test_set_finder_process_dependency_links(self, finder): - list(process_line( - "--process-dependency-links", "file", 1, finder=finder)) - assert finder.process_dependency_links - class TestBreakOptionsArgs(object): diff --git a/tests/unit/test_unit_outdated.py b/tests/unit/test_unit_outdated.py index a9441a4d3..31b5a7fa3 100644 --- a/tests/unit/test_unit_outdated.py +++ b/tests/unit/test_unit_outdated.py @@ -50,8 +50,7 @@ def _options(): ''' Some default options that we pass to outdated.pip_version_check ''' return pretend.stub( find_links=False, extra_index_urls=[], index_url='default_url', - pre=False, trusted_hosts=False, process_dependency_links=False, - cache_dir='', + pre=False, trusted_hosts=False, cache_dir='', )