Commit f37253f8 authored by Jason R. Coombs's avatar Jason R. Coombs

Merge branch 'master' of https://github.com/pypa/setuptools

parents a440f728 9619cb32
......@@ -384,7 +384,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
......@@ -392,7 +392,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 ()
inst_reqs = list(pkg_resources.parse_requirements(spec_inst_reqs))
......@@ -401,13 +401,7 @@ class Distribution(Distribution_parse_config_files, _Distribution):
self.install_requires = list(map(str, simple_reqs))
for r in complex_reqs:
sections = (
section + self._suffix_for(r)
for section in r.extras or ('',)
)
for section in sections:
self._tmp_extras_require[section].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()
......@@ -415,9 +409,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
......
......@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment