Cleaned up/simplified error-handling:

- DistutilsOptionError is now documented as it's actually used, ie.
    to indicate bogus option values (usually user options, eg. from
    the command-line)
  - added DistutilsSetupError to indicate errors that definitely arise
    in the setup script
  - got rid of DistutilsValueError, and changed all usage of it to
    either DistutilsSetupError or ValueError as appropriate
  - simplified a bunch of option get/set methods in Command and
    Distribution classes -- just pass on AttributeError most of
    the time, rather than turning it into something else
This commit is contained in:
Greg Ward 2000-04-15 22:15:07 +00:00
parent 4a3dd2dcc2
commit 02a1a2b077
7 changed files with 52 additions and 79 deletions

View file

@ -115,33 +115,33 @@ class build_clib (Command):
"""Ensure that the list of libraries (presumably provided as a
command option 'libraries') is valid, i.e. it is a list of
2-tuples, where the tuples are (library_name, build_info_dict).
Raise DistutilsValueError if the structure is invalid anywhere;
Raise DistutilsSetupError if the structure is invalid anywhere;
just returns otherwise."""
# Yechh, blecch, ackk: this is ripped straight out of build_ext.py,
# with only names changed to protect the innocent!
if type (libraries) is not ListType:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"'libraries' option must be a list of tuples"
for lib in libraries:
if type (lib) is not TupleType and len (lib) != 2:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"each element of 'libraries' must a 2-tuple"
if type (lib[0]) is not StringType:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"first element of each tuple in 'libraries' " + \
"must be a string (the library name)"
if '/' in lib[0] or (os.sep != '/' and os.sep in lib[0]):
raise DistutilsValueError, \
raise DistutilsSetupError, \
("bad library name '%s': " +
"may not contain directory separators") % \
lib[0]
if type (lib[1]) is not DictionaryType:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"second element of each tuple in 'libraries' " + \
"must be a dictionary (build info)"
# for lib
@ -171,7 +171,7 @@ class build_clib (Command):
for (lib_name, build_info) in libraries:
sources = build_info.get ('sources')
if sources is None or type (sources) not in (ListType, TupleType):
raise DistutilsValueError, \
raise DistutilsSetupError, \
("in 'libraries' option (library '%s'), " +
"'sources' must be present and must be " +
"a list of source filenames") % lib_name

View file

@ -205,26 +205,26 @@ class build_ext (Command):
"""Ensure that the list of extensions (presumably provided as a
command option 'extensions') is valid, i.e. it is a list of
2-tuples, where the tuples are (extension_name, build_info_dict).
Raise DistutilsValueError if the structure is invalid anywhere;
Raise DistutilsSetupError if the structure is invalid anywhere;
just returns otherwise."""
if type (extensions) is not ListType:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"'ext_modules' option must be a list of tuples"
for ext in extensions:
if type (ext) is not TupleType and len (ext) != 2:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"each element of 'ext_modules' option must be a 2-tuple"
if not (type (ext[0]) is StringType and
extension_name_re.match (ext[0])):
raise DistutilsValueError, \
raise DistutilsSetupError, \
"first element of each tuple in 'ext_modules' " + \
"must be the extension name (a string)"
if type (ext[1]) is not DictionaryType:
raise DistutilsValueError, \
raise DistutilsSetupError, \
"second element of each tuple in 'ext_modules' " + \
"must be a dictionary (build info)"
@ -274,7 +274,7 @@ class build_ext (Command):
for (extension_name, build_info) in self.extensions:
sources = build_info.get ('sources')
if sources is None or type (sources) not in (ListType, TupleType):
raise DistutilsValueError, \
raise DistutilsSetupError, \
("in 'ext_modules' option (extension '%s'), " +
"'sources' must be present and must be " +
"a list of source filenames") % extension_name