mirror of https://github.com/pypa/pip
Add PackageFinder.process_project_url(), and test.
This commit is contained in:
parent
bab1e4f8a1
commit
f4cad3d403
|
@ -779,6 +779,25 @@ class PackageFinder(object):
|
|||
|
||||
return candidates
|
||||
|
||||
def process_project_url(self, project_url, link_evaluator):
|
||||
# type: (Link, LinkEvaluator) -> List[InstallationCandidate]
|
||||
logger.debug(
|
||||
'Fetching project page and analyzing links: %s', project_url,
|
||||
)
|
||||
html_page = self._link_collector.fetch_page(project_url)
|
||||
if html_page is None:
|
||||
return []
|
||||
|
||||
page_links = list(parse_links(html_page))
|
||||
|
||||
with indent_log():
|
||||
package_links = self.evaluate_links(
|
||||
link_evaluator,
|
||||
links=page_links,
|
||||
)
|
||||
|
||||
return package_links
|
||||
|
||||
def find_all_candidates(self, project_name):
|
||||
# type: (str) -> List[InstallationCandidate]
|
||||
"""Find all available InstallationCandidate for project_name
|
||||
|
@ -789,8 +808,7 @@ class PackageFinder(object):
|
|||
See LinkEvaluator.evaluate_link() for details on which files
|
||||
are accepted.
|
||||
"""
|
||||
link_collector = self._link_collector
|
||||
collected_links = link_collector.collect_links(project_name)
|
||||
collected_links = self._link_collector.collect_links(project_name)
|
||||
|
||||
link_evaluator = self.make_link_evaluator(project_name)
|
||||
|
||||
|
@ -801,21 +819,10 @@ class PackageFinder(object):
|
|||
|
||||
page_versions = []
|
||||
for project_url in collected_links.project_urls:
|
||||
logger.debug(
|
||||
'Fetching project page and analyzing links: %s', project_url,
|
||||
package_links = self.process_project_url(
|
||||
project_url, link_evaluator=link_evaluator,
|
||||
)
|
||||
html_page = link_collector.fetch_page(project_url)
|
||||
if html_page is None:
|
||||
continue
|
||||
|
||||
page_links = list(parse_links(html_page))
|
||||
|
||||
with indent_log():
|
||||
new_versions = self.evaluate_links(
|
||||
link_evaluator,
|
||||
links=page_links,
|
||||
)
|
||||
page_versions.extend(new_versions)
|
||||
page_versions.extend(package_links)
|
||||
|
||||
file_versions = self.evaluate_links(
|
||||
link_evaluator,
|
||||
|
|
|
@ -473,6 +473,22 @@ class TestLinkEvaluator(object):
|
|||
assert actual == (False, expected_msg)
|
||||
|
||||
|
||||
def test_process_project_url(data):
|
||||
project_name = 'simple'
|
||||
index_url = data.index_url('simple')
|
||||
project_url = Link('{}/{}'.format(index_url, project_name))
|
||||
finder = make_test_finder(index_urls=[index_url])
|
||||
link_evaluator = finder.make_link_evaluator(project_name)
|
||||
actual = finder.process_project_url(
|
||||
project_url, link_evaluator=link_evaluator,
|
||||
)
|
||||
|
||||
assert len(actual) == 1
|
||||
package_link = actual[0]
|
||||
assert package_link.project == 'simple'
|
||||
assert str(package_link.version) == '1.0'
|
||||
|
||||
|
||||
def test_find_all_candidates_nothing():
|
||||
"""Find nothing without anything"""
|
||||
finder = make_test_finder()
|
||||
|
|
Loading…
Reference in New Issue