Skip to content

Commit b4e7ef7

Browse files
committed
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.
1 parent eb496c6 commit b4e7ef7

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

vendor/pip-pop/pip-diff

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,24 @@ Options:
1212
"""
1313
import os
1414
from docopt import docopt
15-
from pip.req import parse_requirements
16-
from pip.index import PackageFinder
17-
from pip._vendor.requests import session
15+
16+
try: # pip >= 10
17+
from pip._internal.req import parse_requirements
18+
from pip._internal.download import PipSession as session
19+
20+
def PackageFinder(find_links, index_urls, session=None):
21+
from pip._internal.index import PackageFinder
22+
from pip._internal.models.search_scope import SearchScope
23+
from pip._internal.models.selection_prefs import SelectionPreferences
24+
25+
search_scope = SearchScope.create(find_links, index_urls)
26+
selection_prefs = SelectionPreferences(allow_yanked=False)
27+
return PackageFinder.create(search_scope, selection_prefs, session=session)
28+
29+
except ImportError: # pip <= 9.0.3
30+
from pip.req import parse_requirements
31+
from pip.index import PackageFinder
32+
from pip._vendor.requests import session
1833

1934
requests = session()
2035

vendor/pip-pop/pip-grep

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,25 @@ Options:
1010
import os
1111
import sys
1212
from docopt import docopt
13-
from pip.req import parse_requirements
14-
from pip.index import PackageFinder
15-
from pip._vendor.requests import session
13+
14+
try: # pip >= 10
15+
from pip._internal.req import parse_requirements
16+
from pip._internal.download import PipSession as session
17+
18+
def PackageFinder(find_links, index_urls, session=None):
19+
from pip._internal.index import PackageFinder
20+
from pip._internal.models.search_scope import SearchScope
21+
from pip._internal.models.selection_prefs import SelectionPreferences
22+
23+
search_scope = SearchScope.create(find_links, index_urls)
24+
selection_prefs = SelectionPreferences(allow_yanked=False)
25+
return PackageFinder.create(search_scope, selection_prefs, session=session)
26+
27+
except ImportError: # pip <= 9.0.3
28+
from pip.req import parse_requirements
29+
from pip.index import PackageFinder
30+
from pip._vendor.requests import session
31+
1632

1733
requests = session()
1834

0 commit comments

Comments
 (0)