diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2017-07-13 21:43:49 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2017-07-13 21:43:49 -0400 |
commit | 1bbb027f369fb7dbf58a939bca57a9c8e9ecf8c7 (patch) | |
tree | 45431b935c2567f9a8f7a0e2c8e937e4e69bf73e /setuptools/dist.py | |
parent | dfe339ec3b1c2d0f463ed39f86c34c01ff8faedc (diff) | |
download | external_python_setuptools-1bbb027f369fb7dbf58a939bca57a9c8e9ecf8c7.tar.gz external_python_setuptools-1bbb027f369fb7dbf58a939bca57a9c8e9ecf8c7.tar.bz2 external_python_setuptools-1bbb027f369fb7dbf58a939bca57a9c8e9ecf8c7.zip |
Use filter and next to directly extract a single failure.
Diffstat (limited to 'setuptools/dist.py')
-rw-r--r-- | setuptools/dist.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py index 5adbfd4e..619318f3 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -9,13 +9,14 @@ import distutils.core import distutils.cmd import distutils.dist import itertools +import operator from collections import defaultdict from distutils.errors import (DistutilsOptionError, DistutilsPlatformError, DistutilsSetupError) from distutils.util import rfc822_escape 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 __import__('pkg_resources.extern.packaging.specifiers') @@ -145,13 +146,16 @@ def _check_extra(extra, reqs): if marker and pkg_resources.invalid_marker(marker): raise DistutilsSetupError("Invalid environment marker: " + marker) - for r in pkg_resources.parse_requirements(reqs): - if r.marker: - tmpl = ( - "'extras_require' requirements cannot include " - "environment markers, in {section!r}: '{req!s}'" - ) - raise DistutilsSetupError(tmpl.format(section=name, req=r)) + # extras requirements cannot themselves have markers + parsed = pkg_resources.parse_requirements(reqs) + marked_reqs = filter(operator.attrgetter('marker'), parsed) + bad_req = next(marked_reqs, None) + if bad_req: + tmpl = ( + "'extras_require' requirements cannot include " + "environment markers, in {name!r}: '{bad_req!s}'" + ) + raise DistutilsSetupError(tmpl.format(**locals())) def assert_bool(dist, attr, value): |