[docs]classExchangeError(ValueError):"""This is the base exception which all the other exceptions derive from. It is a subclass of ValueError. """
# class ExchangeBottleError(ExchangeError):# pass### class ExchangeCTDError(ExchangeError):# pass
[docs]classExchangeEncodingError(ExchangeError):"""Error raised when the bytes for some exchange file cannot be decoded as UTF-8."""
[docs]classExchangeBOMError(ExchangeError):"""Error raised when the exchange file has a byte order mark."""
[docs]classExchangeLEError(ExchangeError):"""Error raised when the exchange file does not have the correct line endings."""
[docs]classExchangeMagicNumberError(ExchangeError):"""Error raised when the exchange file does not start with ``BOTTLE`` or ``CTD``."""
[docs]classExchangeEndDataError(ExchangeError):"""Erorr raised when ``END_DATA`` cannot be found in the exchange file."""
[docs]classExchangeParameterError(ExchangeError):"""Base exception for errors related to parameters and units."""
[docs]classExchangeParameterUndefError(ExchangeParameterError):"""Error raised when the library does not have a definition for a parameter/unit pair in the exchange file."""def__init__(self,error_data:list[str]):super().__init__(error_data)
[docs]classExchangeParameterUnitAlignmentError(ExchangeParameterError):"""Error raised when there is a mismatch between the number of parameters and number of units in the exchange file."""
[docs]classExchangeDuplicateParameterError(ExchangeParameterError):"""Error raised when the same parameter/unit pair occurs more than once in the excahnge file."""
[docs]classExchangeOrphanFlagError(ExchangeParameterError):"""Error raised when there exists a flag column with no corresponding parameter column."""
[docs]classExchangeOrphanErrorError(ExchangeParameterError):"""Error raised when there exists an error column with no corresponding parameter column."""
[docs]classExchangeFlaglessParameterError(ExchangeParameterError):"""Error raised when a parameter has a flag column when it is not supposed to."""
[docs]classExchangeFlagUnitError(ExchangeParameterError):"""Error raised if a flag column has a non empty units."""
[docs]classExchangeDataError(ExchangeError):"""Base exception for errors which occur when parsing the data porition of an exchange file."""
[docs]classExchangeDataColumnAlignmentError(ExchangeDataError):"""Error raised when the number of columns in a data line does not match the expected number of columns based on the parameter/unit lines."""
[docs]classExchangeDataFlagPairError(ExchangeDataError):"""There is a mismatch between what the flag value expects, and the fill/data value. Examples -------- * something with a flag of ``9`` has a non fill value * something with a flag of ``2`` as a fill value instead of data """def__init__(self,error_data:xr.Dataset):super().__init__(error_data)
[docs]classExchangeDataPartialKeyError(ExchangeDataError):"""Error raised when there is no value for one (or more) of the following parameters. * EXPOCODE * STNNBR * CASTNO * SAMPNO (only for bottle files) * CTDPRS (only for CTD files) These form the "composite key" which uniquely identify the "row" of exchange data. """
[docs]classExchangeDuplicateKeyError(ExchangeDataError):"""Error raised when there is a duplicate composite key in the exchange file. This would occur if the exact values for the following parameters occur in more than one data row: * EXPOCODE * STNNBR * CASTNO * SAMPNO (only for bottle files) * CTDPRS (only for CTD files) """
[docs]classExchangeDataPartialCoordinateError(ExchangeDataError):"""Error raised if values for latitude, longitude, or pressure are missing. It is OK by the standard to omit the time of day. """
[docs]classExchangeDataInconsistentCoordinateError(ExchangeDataError):"""Error raised if the reported latitude, longitude, and date (and time) vary for a single profile. A "profile" in an exchange file is a grouping of data rows which all have the same EXPOCODE, STNNBR, and CASTNO. The SAMPNO/CTDPRS is allowed/requried to vary for a single profile and is what identifies samples within one profile. """
[docs]classExchangeInconsistentMergeType(ExchangeError):"""Error raised when the merge_ex method is called on mixed ctd and bottle exchange types."""
[docs]classExchangeRecursiveZip(ExchangeError):"""Error raised if there are zip files inside the zip file that read exchange is trying to read."""