Fixed search function error reporting in the encodings package

__init__.py module to raise errors which can be catched as LookupErrors
as well as SystemErrors.

Modified the error messages to include more information about the
failing module.
This commit is contained in:
Marc-André Lemburg 2001-09-19 11:52:07 +00:00
parent 494f2aea8e
commit 816a1b75b7
1 changed files with 11 additions and 7 deletions

View File

@ -28,11 +28,15 @@ Written by Marc-Andre Lemburg (mal@lemburg.com).
"""#"
import codecs,aliases
import codecs,aliases,exceptions
_cache = {}
_unknown = '--unknown--'
class CodecRegistryError(exceptions.LookupError,
exceptions.SystemError):
pass
def search_function(encoding):
# Cache lookup
@ -56,14 +60,14 @@ def search_function(encoding):
except AttributeError:
entry = ()
if len(entry) != 4:
raise SystemError,\
'module "%s.%s" failed to register' % \
(__name__,modname)
raise CodecRegistryError,\
'module "%s" (%s) failed to register' % \
(mod.__name__, mod.__file__)
for obj in entry:
if not callable(obj):
raise SystemError,\
'incompatible codecs in module "%s.%s"' % \
(__name__,modname)
raise CodecRegistryError,\
'incompatible codecs in module "%s" (%s)' % \
(mod.__name__, mod.__file__)
# Cache the codec registry entry
_cache[encoding] = entry