Source code for confuse.exceptions

from __future__ import division, absolute_import, print_function

import yaml

__all__ = [
    'ConfigError', 'NotFoundError', 'ConfigValueError', 'ConfigTypeError',
    'ConfigTemplateError', 'ConfigReadError']

YAML_TAB_PROBLEM = "found character '\\t' that cannot start any token"

# Exceptions.


[docs]class ConfigError(Exception): """Base class for exceptions raised when querying a configuration. """
[docs]class NotFoundError(ConfigError): """A requested value could not be found in the configuration trees. """
[docs]class ConfigValueError(ConfigError): """The value in the configuration is illegal."""
[docs]class ConfigTypeError(ConfigValueError): """The value in the configuration did not match the expected type. """
[docs]class ConfigTemplateError(ConfigError): """Base class for exceptions raised because of an invalid template. """
[docs]class ConfigReadError(ConfigError): """A configuration source could not be read.""" def __init__(self, name, reason=None): self.name = name self.reason = reason message = u'{0} could not be read'.format(name) if (isinstance(reason, yaml.scanner.ScannerError) and reason.problem == YAML_TAB_PROBLEM): # Special-case error message for tab indentation in YAML markup. message += u': found tab character at line {0}, column {1}'.format( reason.problem_mark.line + 1, reason.problem_mark.column + 1, ) elif reason: # Generic error message uses exception's message. message += u': {0}'.format(reason) super(ConfigReadError, self).__init__(message)