diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2019-12-29 12:47:31 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2019-12-29 12:47:31 -0500 |
commit | a5b66a8581b758aff763765857359ef540631202 (patch) | |
tree | 9404571514fbe550c98a939bd4458d97e1bf1dd2 /setuptools/__init__.py | |
parent | d53e024af2f5d8f3a4a36588c3dc004d156bc830 (diff) | |
parent | e6bdf25f6ab5bf4d32b0f9affa0ab98ea35f3a29 (diff) | |
download | external_python_setuptools-a5b66a8581b758aff763765857359ef540631202.tar.gz external_python_setuptools-a5b66a8581b758aff763765857359ef540631202.tar.bz2 external_python_setuptools-a5b66a8581b758aff763765857359ef540631202.zip |
Merge branch 'master' into feature/include-pyproject.toml
Diffstat (limited to 'setuptools/__init__.py')
-rw-r--r-- | setuptools/__init__.py | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/setuptools/__init__.py b/setuptools/__init__.py index e438036a..a71b2bbd 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -5,12 +5,14 @@ import sys import functools import distutils.core import distutils.filelist +import re +from distutils.errors import DistutilsOptionError from distutils.util import convert_path from fnmatch import fnmatchcase from ._deprecation_warning import SetuptoolsDeprecationWarning -from setuptools.extern.six import PY3 +from setuptools.extern.six import PY3, string_types from setuptools.extern.six.moves import filter, map import setuptools.version @@ -161,6 +163,37 @@ class Command(_Command): _Command.__init__(self, dist) vars(self).update(kw) + def _ensure_stringlike(self, option, what, default=None): + val = getattr(self, option) + if val is None: + setattr(self, option, default) + return default + elif not isinstance(val, string_types): + raise DistutilsOptionError("'%s' must be a %s (got `%s`)" + % (option, what, val)) + return val + + def ensure_string_list(self, option): + r"""Ensure that 'option' is a list of strings. If 'option' is + currently a string, we split it either on /,\s*/ or /\s+/, so + "foo bar baz", "foo,bar,baz", and "foo, bar baz" all become + ["foo", "bar", "baz"]. + """ + val = getattr(self, option) + if val is None: + return + elif isinstance(val, string_types): + setattr(self, option, re.split(r',\s*|\s+', val)) + else: + if isinstance(val, list): + ok = all(isinstance(v, string_types) for v in val) + else: + ok = False + if not ok: + raise DistutilsOptionError( + "'%s' must be a list of strings (got %r)" + % (option, val)) + def reinitialize_command(self, command, reinit_subcommands=0, **kw): cmd = _Command.reinitialize_command(self, command, reinit_subcommands) vars(cmd).update(kw) |