aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Pierre <benoit.pierre@gmail.com>2017-07-23 22:14:47 +0200
committerBenoit Pierre <benoit.pierre@gmail.com>2017-07-23 22:14:47 +0200
commit880774ac34e43c832f52d64923c670f59b54f07e (patch)
tree25893eb0510fb7271b6dfc67307ef9de7274e08a
parentf26bf186bad984b8649a723d795f66c4f8e415f6 (diff)
downloadexternal_python_setuptools-880774ac34e43c832f52d64923c670f59b54f07e.tar.gz
external_python_setuptools-880774ac34e43c832f52d64923c670f59b54f07e.tar.bz2
external_python_setuptools-880774ac34e43c832f52d64923c670f59b54f07e.zip
Revert "fix `install_requires` handling of extras"
This reverts commit a3ec721ec1e70f1f7aec6c3349ad85b446410809.
-rw-r--r--setuptools/dist.py11
-rw-r--r--setuptools/tests/test_egg_info.py42
2 files changed, 40 insertions, 13 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 50f5c18f..f6bf2601 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -376,7 +376,7 @@ class Distribution(Distribution_parse_config_files, _Distribution):
def _move_install_requirements_markers(self):
"""
Move requirements in `install_requires` that are using environment
- markers or extras to `extras_require`.
+ markers `extras_require`.
"""
# divide the install_requires into two sets, simple ones still
@@ -384,7 +384,7 @@ class Distribution(Distribution_parse_config_files, _Distribution):
# by extras_require.
def is_simple_req(req):
- return not req.marker and not req.extras
+ return not req.marker
spec_inst_reqs = getattr(self, 'install_requires', None) or ()
simple_reqs = filter(
@@ -398,9 +398,7 @@ class Distribution(Distribution_parse_config_files, _Distribution):
self.install_requires = list(map(str, simple_reqs))
for r in complex_reqs:
- suffix = ':' + str(r.marker) if r.marker else ''
- for section in r.extras or ('',):
- self._tmp_extras_require[section + suffix].append(r)
+ self._tmp_extras_require[':' + str(r.marker)].append(r)
self.extras_require = dict(
(k, [str(r) for r in map(self._clean_req, v)])
for k, v in self._tmp_extras_require.items()
@@ -408,9 +406,8 @@ class Distribution(Distribution_parse_config_files, _Distribution):
def _clean_req(self, req):
"""
- Given a Requirement, remove extras and markers and return it.
+ Given a Requirement, remove environment markers and return it.
"""
- req.extras = ()
req.marker = None
return req
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py
index 5ea55d61..d9d4ec3b 100644
--- a/setuptools/tests/test_egg_info.py
+++ b/setuptools/tests/test_egg_info.py
@@ -207,14 +207,13 @@ class TestEggInfo(object):
def test_install_requires_with_extra(self, tmpdir_cwd, env):
req = 'install_requires=["barbazquux [test]"],'
self._setup_script_with_requires(req)
- self._run_install_command(tmpdir_cwd, env)
- egg_info_dir = self._find_egg_info_files(env.paths['lib']).base
+ self._run_install_command(tmpdir_cwd, env, cmd=['egg_info'])
+ egg_info_dir = os.path.join('.', 'foo.egg-info')
requires_txt = os.path.join(egg_info_dir, 'requires.txt')
with open(requires_txt) as fp:
install_requires = fp.read()
expected_requires = DALS('''
- [test]
- barbazquux
+ barbazquux[test]
''')
assert install_requires.lstrip() == expected_requires
assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []
@@ -229,8 +228,8 @@ class TestEggInfo(object):
with open(requires_txt) as fp:
install_requires = fp.read()
expected_requires = DALS('''
- [test:{marker}]
- barbazquux
+ [:{marker}]
+ barbazquux[test]
''').format(marker=self.mismatch_marker_alternate)
assert install_requires.lstrip() == expected_requires
assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []
@@ -250,6 +249,37 @@ class TestEggInfo(object):
tmpdir_cwd, env, cmd=['test'], output="Ran 0 tests in")
assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []
+ def test_extras_require_with_extra(self, tmpdir_cwd, env):
+ req = 'extras_require={"extra": ["barbazquux [test]"]},'
+ self._setup_script_with_requires(req)
+ self._run_install_command(tmpdir_cwd, env, cmd=['egg_info'])
+ egg_info_dir = os.path.join('.', 'foo.egg-info')
+ requires_txt = os.path.join(egg_info_dir, 'requires.txt')
+ with open(requires_txt) as fp:
+ install_requires = fp.read()
+ expected_requires = DALS('''
+ [extra]
+ barbazquux[test]
+ ''')
+ assert install_requires.lstrip() == expected_requires
+ assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []
+
+ def test_extras_require_with_extra_and_marker_in_req(self, tmpdir_cwd, env):
+ tmpl = 'extras_require={{"extra": ["barbazquux [test]; {marker}"]}},'
+ req = tmpl.format(marker=self.mismatch_marker)
+ self._setup_script_with_requires(req)
+ self._run_install_command(tmpdir_cwd, env)
+ egg_info_dir = self._find_egg_info_files(env.paths['lib']).base
+ requires_txt = os.path.join(egg_info_dir, 'requires.txt')
+ with open(requires_txt) as fp:
+ install_requires = fp.read()
+ expected_requires = DALS('''
+ [extra:{marker}]
+ barbazquux[test]
+ ''').format(marker=self.mismatch_marker_alternate)
+ assert install_requires.lstrip() == expected_requires
+ assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []
+
def test_extras_require_with_marker(self, tmpdir_cwd, env):
tmpl = 'extras_require={{":{marker}": ["barbazquux"]}},'
req = tmpl.format(marker=self.mismatch_marker)