Source code for plaster.exceptions
[docs]class PlasterError(Exception):
"""
A base exception for any error generated by plaster.
"""
[docs]class InvalidURI(PlasterError, ValueError):
"""
Raised by :func:`plaster.parse_uri` when failing to parse a ``config_uri``.
:ivar uri: The user-supplied ``config_uri`` string.
"""
def __init__(self, uri, message=None):
if message is None:
message = 'Unable to parse config_uri "{0}".'.format(uri)
super(InvalidURI, self).__init__(message)
self.message = message
self.uri = uri
[docs]class LoaderNotFound(PlasterError, ValueError):
"""
Raised by :func:`plaster.get_loader` when no loaders match the requested
``scheme``.
:ivar scheme: The scheme being matched.
:ivar protocols: Zero or more :term:`loader protocol` identifiers that
were requested when finding a loader.
"""
def __init__(self, scheme, protocols=None, message=None):
if message is None:
scheme_msg = 'scheme "{0}"'.format(scheme)
if protocols is not None:
scheme_msg += ', protocol "{0}"'.format(', '.join(protocols))
message = (
'Could not find a matching loader for the {0}.'
.format(scheme_msg))
super(LoaderNotFound, self).__init__(message)
self.message = message
self.scheme = scheme
self.protocols = protocols
[docs]class MultipleLoadersFound(PlasterError, ValueError):
"""
Raised by :func:`plaster.get_loader` when more than one loader matches the
requested ``scheme``.
:ivar scheme: The scheme being matched.
:ivar protocols: Zero or more :term:`loader protocol` identifiers that
were requested when finding a loader.
:ivar loaders: A list of :class:`plaster.ILoaderInfo` objects.
"""
def __init__(self, scheme, loaders, protocols=None, message=None):
if message is None:
scheme_msg = 'scheme "{0}"'.format(scheme)
if protocols is not None:
scheme_msg += ', protocol "{0}"'.format(', '.join(protocols))
loader_list = ', '.join(loader.scheme for loader in sorted(
loaders, key=lambda v: v.scheme))
message = (
'Multiple plaster loaders were found for {0}. '
'Please specify a more specific config_uri. '
'Matched loaders: {1}'
).format(scheme_msg, loader_list)
super(MultipleLoadersFound, self).__init__(message)
self.message = message
self.scheme = scheme
self.protocols = protocols
self.loaders = loaders