diff --git a/pipenv/utils.py b/pipenv/utils.py index d2828e69..f6b7ed24 100644 --- a/pipenv/utils.py +++ b/pipenv/utils.py @@ -162,8 +162,11 @@ def convert_deps_from_pip(dep): 'dependencies. Please install remote dependency ' 'in the form {0}#egg=.'.format(req.uri)) + # Extras: e.g. #egg=requests[security] + if req.extras: + dependency[req.name] = {'extras': req.extras} # Crop off the git+, etc part. - dependency[req.name] = {req.vcs: req.uri[len(req.vcs) + 1:]} + dependency.setdefault(req.name, {}).update({req.vcs: req.uri[len(req.vcs) + 1:]}) # Add --editable, if it's there. if req.editable: diff --git a/tests/test_utils.py b/tests/test_utils.py index 49e0a021..29d26e5d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -103,6 +103,13 @@ class TestUtils: dep = pipenv.utils.convert_deps_from_pip(dep) assert dep == {'MyProject': {'hg': 'http://hg.myproject.org/MyProject', 'ref': 'da39a3ee5e6b'}} + # vcs dependency with extras_require + dep = 'git+https://github.com/requests/requests.git@master#egg=requests[security]' + dep = pipenv.utils.convert_deps_from_pip(dep) + assert dep == {'requests': {'git': 'https://github.com/requests/requests.git', + 'ref': 'master', + 'extras': ['security']}} + # vcs dependency without #egg dep = 'git+https://github.com/kennethreitz/requests.git' with pytest.raises(ValueError) as e: