PR #1180
32 lines
# ... PR #1180 ...
# ... stdlib ...
def _ensure_stringlike(self, option, what, default=None):
def _ensure_stringlike(self, option, what, default=None):
val = getattr(self, option)
val = getattr(self, option)
if val is None:
if val is None:
setattr(self, option, default)
setattr(self, option, default)
return default
return default
elif not isinstance(val, string_types):
elif not isinstance(val, str):
raise DistutilsOptionError("'%s' must be a %s (got `%s`)"
raise DistutilsOptionError("'%s' must be a %s (got `%s`)"
% (option, what, val))
% (option, what, val))
return val
return val
def ensure_string_list(self, option):
def ensure_string_list(self, option):
r"""Ensure that 'option' is a list of strings. If 'option' is
r"""Ensure that 'option' is a list of strings. If 'option' is
currently a string, we split it either on /,\s*/ or /\s+/, so
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", "foo,bar,baz", and "foo, bar baz" all become
["foo", "bar", "baz"].
["foo", "bar", "baz"].
"""
"""
val = getattr(self, option)
val = getattr(self, option)
if val is None:
if val is None:
return
return
elif isinstance(val, string_types):
elif isinstance(val, str):
setattr(self, option, re.split(r',\s*|\s+', val))
setattr(self, option, re.split(r',\s*|\s+', val))
else:
else:
if isinstance(val, list):
if isinstance(val, list):
ok = all(isinstance(v, string_types) for v in val)
ok = all(isinstance(v, str) for v in val)
else:
else:
ok = False
ok = False
if not ok:
if not ok:
raise DistutilsOptionError(
raise DistutilsOptionError(
"'%s' must be a list of strings (got %r)"
"'%s' must be a list of strings (got %r)"
% (option, val))
% (option, val))