diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2017-07-24 09:45:32 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2017-07-24 09:45:32 -0400 |
| commit | f37253f882627eb89b449a6a734244b26954b9f1 (patch) | |
| tree | eefa71f959e98ea8326f994ba10416184c5d55b0 | |
| parent | a440f728c0066f284e0d2246026264c7166a8bf5 (diff) | |
| parent | 9619cb3269821ab897faacf3fd0e98765c9c9181 (diff) | |
| download | external_python_setuptools-f37253f882627eb89b449a6a734244b26954b9f1.tar.gz external_python_setuptools-f37253f882627eb89b449a6a734244b26954b9f1.tar.bz2 external_python_setuptools-f37253f882627eb89b449a6a734244b26954b9f1.zip | |
Merge branch 'master' of https://github.com/pypa/setuptools
| -rw-r--r-- | setuptools/dist.py | 15 | ||||
| -rw-r--r-- | setuptools/tests/test_egg_info.py | 42 |
2 files changed, 40 insertions, 17 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py index d1472a34..0787261e 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -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 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) |
