mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 15:00:19 +00:00
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:
Vendored
+18
-3
@@ -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()
|
||||
|
||||
|
||||
Vendored
+19
-3
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user