summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Edmund Crosley <timothy.crosley@gmail.com>2019-04-18 14:37:17 -0700
committerGitHub <noreply@github.com>2019-04-18 14:37:17 -0700
commit91881693efd7b92ed419e4503bfc7ae9ea0ccffb (patch)
tree3160be625aed82fe9c6a2b6e83a57db8cc438106
parentd4d3bfaf3d4dae0f17948bb5fb2e9fd0b7478850 (diff)
parentc3100aecf05dfc39c4ab8cdb39f94bdf85bd198d (diff)
downloadisort-91881693efd7b92ed419e4503bfc7ae9ea0ccffb.tar.gz
Merge pull request #928 from di/use-pip-api
Use pip-api instead of importing pip
-rw-r--r--isort/finders.py14
-rwxr-xr-xsetup.py2
-rw-r--r--test_isort.py6
3 files changed, 6 insertions, 16 deletions
diff --git a/isort/finders.py b/isort/finders.py
index 75fe79a3..c7e24b62 100644
--- a/isort/finders.py
+++ b/isort/finders.py
@@ -20,15 +20,9 @@ except ImportError:
pipreqs = None
try:
- # pip>=10
- from pip._internal.download import PipSession
- from pip._internal.req import parse_requirements
+ from pip_api import parse_requirements
except ImportError:
- try:
- from pip.download import PipSession
- from pip.req import parse_requirements
- except ImportError:
- parse_requirements = None
+ parse_requirements = None
try:
from requirementslib import Pipfile
@@ -325,8 +319,8 @@ class RequirementsFinder(ReqsBaseFinder):
result = []
with chdir(os.path.dirname(path)):
- requirements = parse_requirements(path, session=PipSession())
- for req in requirements:
+ requirements = parse_requirements(path)
+ for req in requirements.values():
if req.name:
result.append(req.name)
diff --git a/setup.py b/setup.py
index e48e97a9..810a5aaf 100755
--- a/setup.py
+++ b/setup.py
@@ -24,7 +24,7 @@ setup(name='isort',
extras_require={
'pipfile': ['pipreqs', 'requirementslib'],
'pyproject': ['toml'],
- 'requirements': ['pip', 'pipreqs'],
+ 'requirements': ['pip', 'pipreqs', 'pip-api'],
'xdg_home': ['appdirs>=1.4.0'],
},
python_requires=">=3.4",
diff --git a/test_isort.py b/test_isort.py
index 92c6d197..5f5c2ee7 100644
--- a/test_isort.py
+++ b/test_isort.py
@@ -2578,8 +2578,6 @@ def test_new_lines_are_preserved():
os.remove(n_newline.name)
-@pytest.mark.skipif(not finders.RequirementsFinder.enabled, reason='RequirementsFinder not enabled (too old version of pip?)')
-@pytest.mark.skipif(not finders.pipreqs, reason='pipreqs is missing')
def test_requirements_finder(tmpdir):
subdir = tmpdir.mkdir('subdir').join("lol.txt")
subdir.write("flask")
@@ -2599,7 +2597,7 @@ def test_requirements_finder(tmpdir):
files = list(finder._get_files())
assert len(files) == 1 # file finding
assert files[0].endswith('requirements.txt') # file finding
- assert list(finder._get_names(str(req_file))) == ['Django', 'deal'] # file parsing
+ assert set(finder._get_names(str(req_file))) == {'Django', 'deal'} # file parsing
assert finder.find("django") == si.sections.THIRDPARTY # package in reqs
assert finder.find("flask") is None # package not in reqs
@@ -2656,8 +2654,6 @@ deal = {editable = true, git = "https://github.com/orsinium/deal.git"}
"""
-@pytest.mark.skipif(not finders.PipfileFinder.enabled, reason='PipfileFinder not enabled (missing requirementslib?)')
-@pytest.mark.skipif(not finders.pipreqs, reason='pipreqs is missing')
def test_pipfile_finder(tmpdir):
pipfile = tmpdir.join('Pipfile')
pipfile.write(PIPFILE)