Skip to content

Commit 8ff8e1f

Browse files
authored
Merge pull request #6060 from pradyunsg/remove/dependency-links
Remove dependency links support
2 parents e155b47 + f6f4eb7 commit 8ff8e1f

File tree

20 files changed

+26
-179
lines changed

20 files changed

+26
-179
lines changed

news/6060.removal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove the deprecated --process-dependency-links option.

src/pip/_internal/build_env.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,6 @@ def install_requirements(
189189
args.extend(['--trusted-host', host])
190190
if finder.allow_all_prereleases:
191191
args.append('--pre')
192-
if finder.process_dependency_links:
193-
args.append('--process-dependency-links')
194192
args.append('--')
195193
args.extend(requirements)
196194
with open_spinner(message) as spinner:

src/pip/_internal/cli/base_command.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,6 @@ def _build_package_finder(
296296
index_urls=index_urls,
297297
trusted_hosts=options.trusted_hosts,
298298
allow_all_prereleases=options.pre,
299-
process_dependency_links=options.process_dependency_links,
300299
session=session,
301300
platform=platform,
302301
versions=python_versions,

src/pip/_internal/cli/cmdoptions.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -347,17 +347,6 @@ def trusted_host():
347347
)
348348

349349

350-
# Remove after 1.5
351-
process_dependency_links = partial(
352-
Option,
353-
"--process-dependency-links",
354-
dest="process_dependency_links",
355-
action="store_true",
356-
default=False,
357-
help="Enable the processing of dependency links.",
358-
) # type: Callable[..., Option]
359-
360-
361350
def constraints():
362351
# type: () -> Option
363352
return Option(
@@ -773,6 +762,5 @@ def _merge_hash(option, opt_str, value, parser):
773762
extra_index_url,
774763
no_index,
775764
find_links,
776-
process_dependency_links,
777765
]
778766
} # type: Dict[str, Any]

src/pip/_internal/commands/list.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ def _build_package_finder(self, options, index_urls, session):
118118
index_urls=index_urls,
119119
allow_all_prereleases=options.pre,
120120
trusted_hosts=options.trusted_hosts,
121-
process_dependency_links=options.process_dependency_links,
122121
session=session,
123122
)
124123

@@ -168,16 +167,8 @@ def iter_packages_latest_infos(self, packages, options):
168167
logger.debug('Ignoring indexes: %s', ','.join(index_urls))
169168
index_urls = []
170169

171-
dependency_links = []
172-
for dist in packages:
173-
if dist.has_metadata('dependency_links.txt'):
174-
dependency_links.extend(
175-
dist.get_metadata_lines('dependency_links.txt'),
176-
)
177-
178170
with self._build_session(options) as session:
179171
finder = self._build_package_finder(options, index_urls, session)
180-
finder.add_dependency_links(dependency_links)
181172

182173
for dist in packages:
183174
typ = 'unknown'

src/pip/_internal/index.py

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from pip._internal.models.link import Link
3232
from pip._internal.pep425tags import get_supported
3333
from pip._internal.utils.compat import ipaddress
34-
from pip._internal.utils.deprecation import deprecated
3534
from pip._internal.utils.logging import indent_log
3635
from pip._internal.utils.misc import (
3736
ARCHIVE_EXTENSIONS, SUPPORTED_EXTENSIONS, WHEEL_EXTENSION, normalize_path,
@@ -268,7 +267,6 @@ def __init__(
268267
index_urls, # type: List[str]
269268
allow_all_prereleases=False, # type: bool
270269
trusted_hosts=None, # type: Optional[Iterable[str]]
271-
process_dependency_links=False, # type: bool
272270
session=None, # type: Optional[PipSession]
273271
format_control=None, # type: Optional[FormatControl]
274272
platform=None, # type: Optional[str]
@@ -315,7 +313,6 @@ def __init__(
315313
self.find_links.append(link)
316314

317315
self.index_urls = index_urls
318-
self.dependency_links = [] # type: List[str]
319316

320317
# These are boring links that have already been logged somehow:
321318
self.logged_links = set() # type: Set[Link]
@@ -331,9 +328,6 @@ def __init__(
331328
# Do we want to allow _all_ pre-releases?
332329
self.allow_all_prereleases = allow_all_prereleases
333330

334-
# Do we process dependency links?
335-
self.process_dependency_links = process_dependency_links
336-
337331
# The Session we'll use to make requests
338332
self.session = session
339333

@@ -375,22 +369,6 @@ def get_formatted_locations(self):
375369
)
376370
return "\n".join(lines)
377371

378-
def add_dependency_links(self, links):
379-
# type: (Iterable[str]) -> None
380-
# FIXME: this shouldn't be global list this, it should only
381-
# apply to requirements of the package that specifies the
382-
# dependency_links value
383-
# FIXME: also, we should track comes_from (i.e., use Link)
384-
if self.process_dependency_links:
385-
deprecated(
386-
"Dependency Links processing has been deprecated and will be "
387-
"removed in a future release.",
388-
replacement="PEP 508 URL dependencies",
389-
gone_in="19.0",
390-
issue=4187,
391-
)
392-
self.dependency_links.extend(links)
393-
394372
@staticmethod
395373
def _sort_locations(locations, expand_dir=False):
396374
# type: (Sequence[str], bool) -> Tuple[List[str], List[str]]
@@ -587,7 +565,7 @@ def find_all_candidates(self, project_name):
587565
# type: (str) -> List[Optional[InstallationCandidate]]
588566
"""Find all available InstallationCandidate for project_name
589567
590-
This checks index_urls, find_links and dependency_links.
568+
This checks index_urls and find_links.
591569
All versions found are returned as an InstallationCandidate list.
592570
593571
See _link_package_versions for details on which files are accepted
@@ -597,21 +575,18 @@ def find_all_candidates(self, project_name):
597575
fl_file_loc, fl_url_loc = self._sort_locations(
598576
self.find_links, expand_dir=True,
599577
)
600-
dep_file_loc, dep_url_loc = self._sort_locations(self.dependency_links)
601578

602579
file_locations = (Link(url) for url in itertools.chain(
603-
index_file_loc, fl_file_loc, dep_file_loc,
580+
index_file_loc, fl_file_loc,
604581
))
605582

606583
# We trust every url that the user has given us whether it was given
607-
# via --index-url or --find-links
608-
# We explicitly do not trust links that came from dependency_links
584+
# via --index-url or --find-links.
609585
# We want to filter out any thing which does not have a secure origin.
610586
url_locations = [
611587
link for link in itertools.chain(
612588
(Link(url) for url in index_url_loc),
613589
(Link(url) for url in fl_url_loc),
614-
(Link(url) for url in dep_url_loc),
615590
)
616591
if self._validate_secure_origin(logger, link)
617592
]
@@ -639,17 +614,6 @@ def find_all_candidates(self, project_name):
639614
self._package_versions(page.iter_links(), search)
640615
)
641616

642-
dependency_versions = self._package_versions(
643-
(Link(url) for url in self.dependency_links), search
644-
)
645-
if dependency_versions:
646-
logger.debug(
647-
'dependency_links found: %s',
648-
', '.join([
649-
version.location.url for version in dependency_versions
650-
])
651-
)
652-
653617
file_versions = self._package_versions(file_locations, search)
654618
if file_versions:
655619
file_versions.sort(reverse=True)
@@ -662,10 +626,7 @@ def find_all_candidates(self, project_name):
662626
)
663627

664628
# This is an intentional priority ordering
665-
return (
666-
file_versions + find_links_versions + page_versions +
667-
dependency_versions
668-
)
629+
return file_versions + find_links_versions + page_versions
669630

670631
def find_requirement(self, req, upgrade):
671632
# type: (InstallRequirement, bool) -> Optional[Link]

src/pip/_internal/operations/check.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@ def check_install_conflicts(to_install):
120120
)
121121

122122

123-
# NOTE from @pradyunsg
124-
# This required a minor update in dependency link handling logic over at
125-
# operations.prepare.IsSDist.dist() to get it working
126123
def _simulate_installation_of(to_install, package_set):
127124
# type: (List[InstallRequirement], PackageSet) -> Set[str]
128125
"""Computes the version of packages after installing to_install.
@@ -133,7 +130,7 @@ def _simulate_installation_of(to_install, package_set):
133130

134131
# Modify it as installing requirement_set would (assuming no errors)
135132
for inst_req in to_install:
136-
dist = make_abstract_dist(inst_req).dist(finder=None)
133+
dist = make_abstract_dist(inst_req).dist()
137134
name = canonicalize_name(dist.key)
138135
package_set[name] = PackageDetails(dist.version, dist.requires())
139136

src/pip/_internal/operations/prepare.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,21 @@ def __init__(self, req):
7171
# type: (InstallRequirement) -> None
7272
self.req = req # type: InstallRequirement
7373

74-
def dist(self, finder):
75-
# type: (PackageFinder) -> Any
74+
def dist(self):
75+
# type: () -> Any
7676
"""Return a setuptools Dist object."""
77-
raise NotImplementedError(self.dist)
77+
raise NotImplementedError
7878

7979
def prep_for_dist(self, finder, build_isolation):
8080
# type: (PackageFinder, bool) -> Any
8181
"""Ensure that we can get a Dist for this requirement."""
82-
raise NotImplementedError(self.dist)
82+
raise NotImplementedError
8383

8484

8585
class IsWheel(DistAbstraction):
8686

87-
def dist(self, finder):
88-
# type: (PackageFinder) -> pkg_resources.Distribution
87+
def dist(self):
88+
# type: () -> pkg_resources.Distribution
8989
return list(pkg_resources.find_distributions(
9090
self.req.source_dir))[0]
9191

@@ -97,15 +97,8 @@ def prep_for_dist(self, finder, build_isolation):
9797

9898
class IsSDist(DistAbstraction):
9999

100-
def dist(self, finder):
101-
# type: (PackageFinder) -> pkg_resources.Distribution
102-
dist = self.req.get_dist()
103-
# FIXME: shouldn't be globally added.
104-
if finder and dist.has_metadata('dependency_links.txt'):
105-
finder.add_dependency_links(
106-
dist.get_metadata_lines('dependency_links.txt')
107-
)
108-
return dist
100+
def dist(self):
101+
return self.req.get_dist()
109102

110103
def prep_for_dist(self, finder, build_isolation):
111104
# type: (PackageFinder, bool) -> None
@@ -168,8 +161,8 @@ def _raise_conflicts(conflicting_with, conflicting_reqs):
168161

169162
class Installed(DistAbstraction):
170163

171-
def dist(self, finder):
172-
# type: (PackageFinder) -> pkg_resources.Distribution
164+
def dist(self):
165+
# type: () -> pkg_resources.Distribution
173166
return self.req.satisfied_by
174167

175168
def prep_for_dist(self, finder, build_isolation):

src/pip/_internal/req/req_file.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
cmdoptions.no_binary,
5656
cmdoptions.only_binary,
5757
cmdoptions.pre,
58-
cmdoptions.process_dependency_links,
5958
cmdoptions.trusted_host,
6059
cmdoptions.require_hashes,
6160
] # type: List[Callable[..., optparse.Option]]
@@ -251,8 +250,6 @@ def process_line(
251250
finder.find_links.append(value)
252251
if opts.pre:
253252
finder.allow_all_prereleases = True
254-
if opts.process_dependency_links:
255-
finder.process_dependency_links = True
256253
if opts.trusted_hosts:
257254
finder.secure_origins.extend(
258255
("*", host, "*") for host in opts.trusted_hosts)

src/pip/_internal/resolve.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ def _resolve_one(
294294
abstract_dist = self._get_abstract_dist_for(req_to_install)
295295

296296
# Parse and return dependencies
297-
dist = abstract_dist.dist(self.finder)
297+
dist = abstract_dist.dist()
298298
try:
299299
check_dist_requires_python(dist)
300300
except UnsupportedPythonVersion as err:

src/pip/_internal/utils/outdated.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ def pip_version_check(session, options):
127127
index_urls=[options.index_url] + options.extra_index_urls,
128128
allow_all_prereleases=False, # Explicitly set to False
129129
trusted_hosts=options.trusted_hosts,
130-
process_dependency_links=options.process_dependency_links,
131130
session=session,
132131
)
133132
all_candidates = finder.find_all_candidates("pip")

src/pip/_internal/vcs/subversion.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import os
55
import re
66

7-
from pip._internal.models.link import Link
87
from pip._internal.utils.logging import indent_log
98
from pip._internal.utils.misc import (
109
display_path, make_vcs_requirement_url, rmtree, split_auth_from_netloc,
@@ -61,20 +60,6 @@ def update(self, dest, url, rev_options):
6160
cmd_args = ['update'] + rev_options.to_args() + [dest]
6261
self.run_command(cmd_args)
6362

64-
def get_location(self, dist, dependency_links):
65-
for url in dependency_links:
66-
egg_fragment = Link(url).egg_fragment
67-
if not egg_fragment:
68-
continue
69-
if '-' in egg_fragment:
70-
# FIXME: will this work when a package has - in the name?
71-
key = '-'.join(egg_fragment.split('-')[:-1]).lower()
72-
else:
73-
key = egg_fragment
74-
if key == dist.key:
75-
return url.split('#', 1)[0]
76-
return None
77-
7863
def get_revision(self, location):
7964
"""
8065
Return the maximum revision for all files under a given location

tests/data/packages/LocalEnvironMarker/setup.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,11 @@ def path_to_url(path):
1717
return 'file://' + url
1818

1919

20-
HERE = os.path.dirname(__file__)
21-
DEP_PATH = os.path.join(HERE, '..', '..', 'indexes', 'simple', 'simple')
22-
DEP_URL = path_to_url(DEP_PATH)
23-
2420
setup(
2521
name='LocalEnvironMarker',
2622
version='0.0.1',
2723
packages=find_packages(),
28-
extras_require={":python_version == '2.7' or python_version == '3.4'": ['simple']},
29-
dependency_links=[DEP_URL]
24+
extras_require={
25+
":python_version == '2.7' or python_version == '3.4'": ['simple'],
26+
}
3027
)

tests/data/packages/LocalExtras-0.0.2/setup.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,10 @@ def path_to_url(path):
1717
return 'file://' + url
1818

1919

20-
HERE = os.path.dirname(__file__)
21-
DEP_PATH = os.path.join(HERE, '..', '..', 'indexes', 'simple', 'simple')
22-
DEP_URL = path_to_url(DEP_PATH)
23-
2420
setup(
2521
name='LocalExtras',
2622
version='0.0.2',
2723
packages=find_packages(),
2824
install_requires=['simple==1.0'],
29-
extras_require={'bar': ['simple==2.0'], 'baz': ['singlemodule']},
30-
dependency_links=[DEP_URL]
25+
extras_require={'bar': ['simple==2.0'], 'baz': ['singlemodule']}
3126
)

tests/data/packages/LocalExtras/setup.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,9 @@ def path_to_url(path):
1717
return 'file://' + url
1818

1919

20-
HERE = os.path.dirname(__file__)
21-
DEP_PATH = os.path.join(HERE, '..', '..', 'indexes', 'simple', 'simple')
22-
DEP_URL = path_to_url(DEP_PATH)
23-
2420
setup(
2521
name='LocalExtras',
2622
version='0.0.1',
2723
packages=find_packages(),
28-
extras_require={'bar': ['simple'], 'baz': ['singlemodule']},
29-
dependency_links=[DEP_URL]
24+
extras_require={'bar': ['simple'], 'baz': ['singlemodule']}
3025
)

tests/functional/test_install_reqs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ def test_respect_order_in_requirements_file(script, data):
175175

176176
def test_install_local_editable_with_extras(script, data):
177177
to_install = data.packages.join("LocalExtras")
178-
res = script.pip(
179-
'install', '-e', to_install + '[bar]', '--process-dependency-links',
178+
res = script.pip_install_local(
179+
'-e', to_install + '[bar]',
180180
expect_error=False,
181181
expect_stderr=True,
182182
)

0 commit comments

Comments
 (0)