Source code for iris.exceptions

# Copyright Iris contributors
#
# This file is part of Iris and is released under the LGPL license.
# See COPYING and COPYING.LESSER in the root of the repository for full
# licensing details.
"""
Exceptions specific to the Iris package.

"""


[docs]class IrisError(Exception): """Base class for errors in the Iris package.""" pass
[docs]class CoordinateCollapseError(IrisError): """Raised when a requested coordinate cannot be collapsed.""" pass
[docs]class CoordinateNotFoundError(KeyError): """Raised when a search yields no coordinates.""" pass
[docs]class CellMeasureNotFoundError(KeyError): """Raised when a search yields no cell measures.""" pass
[docs]class AncillaryVariableNotFoundError(KeyError): """Raised when a search yields no ancillary variables.""" pass
[docs]class CoordinateMultiDimError(ValueError): """Raised when a routine doesn't support multi-dimensional coordinates.""" def __init__(self, msg): # N.B. deferred import to avoid a circular import dependency. import iris.coords if isinstance(msg, iris.coords.Coord): fmt = "Multi-dimensional coordinate not supported: '%s'" msg = fmt % msg.name() ValueError.__init__(self, msg)
[docs]class CoordinateNotRegularError(ValueError): """Raised when a coordinate is unexpectedly irregular.""" pass
[docs]class InvalidCubeError(IrisError): """Raised when a Cube validation check fails.""" pass
[docs]class ConstraintMismatchError(IrisError): """ Raised when a constraint operation has failed to find the correct number of results. """ pass
[docs]class NotYetImplementedError(IrisError): """ Raised by missing functionality. Different meaning to NotImplementedError, which is for abstract methods. """ pass
[docs]class TranslationError(IrisError): """Raised when Iris is unable to translate format-specific codes.""" pass
[docs]class IgnoreCubeException(IrisError): """ Raised from a callback function when a cube should be ignored on load. """ pass
[docs]class ConcatenateError(IrisError): """ Raised when concatenate is expected to produce a single cube, but fails to do so. """ def __init__(self, differences): """ Creates a ConcatenateError with a list of textual descriptions of the differences which prevented a concatenate. Args: * differences: The list of strings which describe the differences. """ self.differences = differences def __str__(self): return "\n ".join( ["failed to concatenate into a single cube."] + list(self.differences) )
[docs]class MergeError(IrisError): """ Raised when merge is expected to produce a single cube, but fails to do so. """ def __init__(self, differences): """ Creates a MergeError with a list of textual descriptions of the differences which prevented a merge. Args: * differences: The list of strings which describe the differences. """ self.differences = differences def __str__(self): return "\n ".join( ["failed to merge into a single cube."] + list(self.differences) )
[docs]class DuplicateDataError(MergeError): """Raised when merging two or more cubes that have identical metadata.""" def __init__(self, msg): self.differences = [msg]
[docs]class LazyAggregatorError(Exception): pass
[docs]class UnitConversionError(IrisError): """Raised when Iris is unable to convert a unit.""" pass