Source code for esmvalcore.exceptions
"""Exceptions that may be raised by ESMValCore."""
import sys
[docs]
class Error(Exception):
"""Base class from which other exceptions are derived."""
[docs]
class SuppressedError(Exception):
"""Errors subclassed from SuppressedError hide the full traceback.
This can be used for simple user-facing errors that do not need the
full traceback.
"""
def _suppressed_hook(error, message, traceback):
"""https://stackoverflow.com/a/27674608."""
if issubclass(error, SuppressedError):
# Print only the message and hide the traceback
print(f"{error.__name__}: {message}", file=sys.stderr)
else:
# Print full traceback
sys.__excepthook__(error, message, traceback)
sys.excepthook = _suppressed_hook
[docs]
class InvalidConfigParameter(Error, SuppressedError):
"""Config parameter is invalid."""
[docs]
class MissingConfigParameter(UserWarning):
"""Config parameter is missing."""
[docs]
class RecipeError(Error):
"""Recipe contains an error."""
def __init__(self, msg):
super().__init__(msg)
self.message = msg
self.failed_tasks = []
[docs]
class ESMValCoreDeprecationWarning(UserWarning):
"""Custom deprecation warning."""