Adapt pip-pop to changes in pip >= 10

The pip-diff and pip-grep tools from the vendorized `pip-pop` package
import internal modules from pip. In pip >= 10, internal modules were
moved under `pip._internal`, breaking the imports. Use `try...except
ImportError` to handle both import paths.

Also, the interface of the `PackageFinder` class from one of these
modules changed. Provide a wrapper function to allow creating objects of
this type using the old interface.
This commit is contained in:
Claudio Jolowicz
2019-08-22 14:13:45 +02:00
parent 515a222cc4
commit 468d27ab98
2 changed files with 37 additions and 6 deletions
+18 -3
View File
@@ -12,9 +12,24 @@ Options:
"""
import os
from docopt import docopt
from pip.req import parse_requirements
from pip.index import PackageFinder
from pip._vendor.requests import session
try: # pip >= 10
from pip._internal.req import parse_requirements
from pip._internal.download import PipSession as session
def PackageFinder(find_links, index_urls, session=None):
from pip._internal.index import PackageFinder
from pip._internal.models.search_scope import SearchScope
from pip._internal.models.selection_prefs import SelectionPreferences
search_scope = SearchScope.create(find_links, index_urls)
selection_prefs = SelectionPreferences(allow_yanked=False)
return PackageFinder.create(search_scope, selection_prefs, session=session)
except ImportError: # pip <= 9.0.3
from pip.req import parse_requirements
from pip.index import PackageFinder
from pip._vendor.requests import session
requests = session()
+19 -3
View File
@@ -10,9 +10,25 @@ Options:
import os
import sys
from docopt import docopt
from pip.req import parse_requirements
from pip.index import PackageFinder
from pip._vendor.requests import session
try: # pip >= 10
from pip._internal.req import parse_requirements
from pip._internal.download import PipSession as session
def PackageFinder(find_links, index_urls, session=None):
from pip._internal.index import PackageFinder
from pip._internal.models.search_scope import SearchScope
from pip._internal.models.selection_prefs import SelectionPreferences
search_scope = SearchScope.create(find_links, index_urls)
selection_prefs = SelectionPreferences(allow_yanked=False)
return PackageFinder.create(search_scope, selection_prefs, session=session)
except ImportError: # pip <= 9.0.3
from pip.req import parse_requirements
from pip.index import PackageFinder
from pip._vendor.requests import session
requests = session()