diff options
-rw-r--r-- | setuptools/dist.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py index c4a42183..d1472a34 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -370,9 +370,17 @@ class Distribution(Distribution_parse_config_files, _Distribution): self._tmp_extras_require = defaultdict(list) for section, v in spec_ext_reqs.items(): for r in pkg_resources.parse_requirements(v): - suffix = ':' + str(r.marker) if r.marker else '' + suffix = self._suffix_for(r) self._tmp_extras_require[section + suffix].append(r) + @staticmethod + def _suffix_for(req): + """ + For a requirement, return the 'extras_require' suffix for + that requirement. + """ + return ':' + str(req.marker) if req.marker else '' + def _move_install_requirements_markers(self): """ Move requirements in `install_requires` that are using environment @@ -393,9 +401,13 @@ 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) + sections = ( + section + self._suffix_for(r) + for section in r.extras or ('',) + ) + for section in sections: + self._tmp_extras_require[section].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() |