Commit 171fc767 authored by Jason R. Coombs's avatar Jason R. Coombs

Extract two methods (still interdependent) for fixing requires

parent 3e640938
......@@ -356,21 +356,31 @@ class Distribution(Distribution_parse_config_files, _Distribution):
def _finalize_requires(self):
"""
Fix environment markers in `install_requires` and `extras_require`.
"""
self._convert_extras_requirements()
self._move_install_requirements_markers()
- move requirements in `install_requires` that are using environment
markers or extras to `extras_require`.
- convert requirements in `extras_require` of the form
`"extra": ["barbazquux; {marker}"]` to
`"extra:{marker}": ["barbazquux"]`.
def _convert_extras_requirements(self):
"""
Convert requirements in `extras_require` of the form
`"extra": ["barbazquux; {marker}"]` to
`"extra:{marker}": ["barbazquux"]`.
"""
extras_require = defaultdict(list)
spec_ext_reqs = getattr(self, 'extras_require', None) or {}
self._tmp_extras_require = defaultdict(list)
for k, v in spec_ext_reqs.items():
for r in pkg_resources.parse_requirements(v):
if r.marker:
k += ':' + str(r.marker)
r.marker = None
extras_require[k].append(r)
self._tmp_extras_require[k].append(r)
def _move_install_requirements_markers(self):
"""
Move requirements in `install_requires` that are using environment
markers or extras to `extras_require`.
"""
install_requires = []
spec_inst_reqs = getattr(self, 'install_requires', None) or ()
for r in pkg_resources.parse_requirements(spec_inst_reqs):
......@@ -385,10 +395,10 @@ class Distribution(Distribution_parse_config_files, _Distribution):
section = e
if marker:
section += ':' + str(marker)
extras_require[section].append(r)
self._tmp_extras_require[section].append(r)
self.extras_require = dict(
(k, [str(r) for r in v])
for k, v in extras_require.items()
for k, v in self._tmp_extras_require.items()
)
self.install_requires = [str(r) for r in install_requires]
......
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