Improve error messages for invalid warning arguments; don't raise

exceptions but always print a warning message.
This commit is contained in:
Guido van Rossum 2000-12-19 03:04:50 +00:00
parent 5aff7752eb
commit d1db30b7b5
1 changed files with 10 additions and 4 deletions

View File

@ -167,14 +167,20 @@ def _getcategory(category):
if re.match("^[a-zA-Z0-9_]+$", category):
try:
cat = eval(category)
except KeyError:
raise _OptionError("invalid warning category: %s" % `category`)
except NameError:
raise _OptionError("unknown warning category: %s" % `category`)
else:
i = category.rfind(".")
module = category[:i]
klass = category[i+1:]
m = __import__(module, None, None, [klass])
cat = getattr(m, klass)
try:
m = __import__(module, None, None, [klass])
except ImportError:
raise _OptionError("invalid module name: %s" % `module`)
try:
cat = getattr(m, klass)
except AttributeError:
raise _OptionError("unknown warning category: %s" % `category`)
if (not isinstance(cat, types.ClassType) or
not issubclass(cat, Warning)):
raise _OptionError("invalid warning category: %s" % `category`)