Commit 1bbb027f authored by Jason R. Coombs's avatar Jason R. Coombs

Use filter and next to directly extract a single failure.

parent dfe339ec
...@@ -9,13 +9,14 @@ import distutils.core ...@@ -9,13 +9,14 @@ import distutils.core
import distutils.cmd import distutils.cmd
import distutils.dist import distutils.dist
import itertools import itertools
import operator
from collections import defaultdict from collections import defaultdict
from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
DistutilsSetupError) DistutilsSetupError)
from distutils.util import rfc822_escape from distutils.util import rfc822_escape
from setuptools.extern import six from setuptools.extern import six
from setuptools.extern.six.moves import map from setuptools.extern.six.moves import map, filter
from pkg_resources.extern import packaging from pkg_resources.extern import packaging
__import__('pkg_resources.extern.packaging.specifiers') __import__('pkg_resources.extern.packaging.specifiers')
...@@ -145,13 +146,16 @@ def _check_extra(extra, reqs): ...@@ -145,13 +146,16 @@ def _check_extra(extra, reqs):
if marker and pkg_resources.invalid_marker(marker): if marker and pkg_resources.invalid_marker(marker):
raise DistutilsSetupError("Invalid environment marker: " + marker) raise DistutilsSetupError("Invalid environment marker: " + marker)
for r in pkg_resources.parse_requirements(reqs): # extras requirements cannot themselves have markers
if r.marker: parsed = pkg_resources.parse_requirements(reqs)
tmpl = ( marked_reqs = filter(operator.attrgetter('marker'), parsed)
"'extras_require' requirements cannot include " bad_req = next(marked_reqs, None)
"environment markers, in {section!r}: '{req!s}'" if bad_req:
) tmpl = (
raise DistutilsSetupError(tmpl.format(section=name, req=r)) "'extras_require' requirements cannot include "
"environment markers, in {name!r}: '{bad_req!s}'"
)
raise DistutilsSetupError(tmpl.format(**locals()))
def assert_bool(dist, attr, value): def assert_bool(dist, attr, value):
......
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