diff --git a/pipenv/utils.py b/pipenv/utils.py index 70149ff1..a63089ed 100644 --- a/pipenv/utils.py +++ b/pipenv/utils.py @@ -717,7 +717,7 @@ def convert_deps_to_pip(deps, project=None, r=True, include_index=False): vcs = maybe_vcs[0] if maybe_vcs else None if not any(key in deps[dep] for key in ['path', 'vcs', 'file']): extra += extras - if not isinstance(deps[dep], Mapping): + if isinstance(deps[dep], Mapping): editable = bool(deps[dep].get('editable', False)) # Support for files. if 'file' in deps[dep]: diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 855a78cb..f314b7e9 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -2,7 +2,7 @@ import os import pytest from mock import patch, Mock - +from first import first import pipenv.utils @@ -110,8 +110,9 @@ def test_convert_deps_to_pip_unicode(): @pytest.mark.parametrize('expected, requirement', DEP_PIP_PAIRS) def test_convert_from_pip(expected, requirement): # We don't build requirements back up with the editable key, so lets drop it out - if 'requests' in expected and expected['requests'].get('editable', '') == 'false': - del expected['requests']['editable'] + package = first(expected.keys()) + if hasattr(expected[package], 'keys') and expected[package].get('editable') is False: + del expected[package]['editable'] assert pipenv.utils.convert_deps_from_pip(requirement) == expected