tephpy.exceptions ================= .. py:module:: tephpy.exceptions .. autoapi-nested-parse:: The public tephpy exception hierarchy (spec §6). Every exception tephpy raises for user-correctable input derives from :class:`TephpyError`, so ``except TephpyError`` catches them all. Units problems raise :class:`TephpyUnitsError`; physically impossible data raises a :class:`TephpyValidationError` subclass carrying the offending level indices. Validation happens at ingest (``Sounding`` construction), not mid-plot. Configuration-file problems are the one place tephpy also warns: :class:`TephpyConfigWarning` is a ``UserWarning``, not a :class:`TephpyError`, because an unusable configuration file degrades to the hardwired defaults instead of stopping the import (configfile spec §5). .. !! processed by numpydoc !! Exceptions ---------- .. autoapisummary:: tephpy.exceptions.TephpyError tephpy.exceptions.TephpyUnitsError tephpy.exceptions.TephpyValidationError tephpy.exceptions.NonMonotonicPressureError tephpy.exceptions.DewpointExceedsTemperatureError tephpy.exceptions.MissingDataError tephpy.exceptions.TephpyIOError tephpy.exceptions.ProfileTooShortError tephpy.exceptions.TephpyConfigError tephpy.exceptions.TephpyConfigWarning Module Contents --------------- .. py:exception:: TephpyError Bases: :py:obj:`Exception` Root of the tephpy exception hierarchy. .. !! processed by numpydoc !! .. py:exception:: TephpyUnitsError Bases: :py:obj:`TephpyError` Missing, ambiguous, unparsable, or wrong-dimension units (spec §5). .. !! processed by numpydoc !! .. py:exception:: TephpyValidationError(message: str, *, levels: tuple[int, Ellipsis] = ()) Bases: :py:obj:`TephpyError` Physically impossible input, identified by level indices (spec §6). :Parameters: **message** : :class:`python:str` Description of the failed validation. **levels** : :class:`python:tuple` of :class:`python:int`, optional Zero-based indices of the offending levels, when the failure is attributable to specific levels. :Attributes: **levels** : :class:`python:tuple` of :class:`python:int` Zero-based indices of the offending levels; empty when the failure is not attributable to specific levels. .. !! processed by numpydoc !! .. py:attribute:: levels :value: () .. py:exception:: NonMonotonicPressureError(message: str, *, levels: tuple[int, Ellipsis] = ()) Bases: :py:obj:`TephpyValidationError` Pressure is not strictly monotonic (spec §3.4). .. !! processed by numpydoc !! .. py:exception:: DewpointExceedsTemperatureError(message: str, *, levels: tuple[int, Ellipsis] = ()) Bases: :py:obj:`TephpyValidationError` Dewpoint exceeds temperature at one or more levels (spec §3.4). Equality — saturation — is physical and accepted; only strict excess is rejected. .. !! processed by numpydoc !! .. py:exception:: MissingDataError(message: str, *, levels: tuple[int, Ellipsis] = ()) Bases: :py:obj:`TephpyValidationError` The sounding lacks a field the requested operation needs (spec §6). Raised at the operation's boundary — the earliest point the need is knowable — e.g. parcel analysis without dewpoint, or (in a later release) wind barbs without wind. .. !! processed by numpydoc !! .. py:exception:: TephpyIOError Bases: :py:obj:`TephpyError` A reader could not fetch or make sense of its source (spec §6). Network failures, HTTP errors, the archive's "no data" replies, a malformed or unrecognisable file, and an ambiguous read (an IGRA station file holding many soundings with no ``time=`` selector) all raise this, summarising the upstream response or file state. .. !! processed by numpydoc !! .. py:exception:: ProfileTooShortError(message: str, *, levels: tuple[int, Ellipsis] = ()) Bases: :py:obj:`TephpyValidationError` The profile tops out at or below the parcel's LCL (spec §6). No moist ascent exists, so every parcel-derived quantity would be meaningless; ``calc.parcel_path`` and ``calc.indices`` both raise this. The LCL tested is the one the path would use — the corrected one when a cloud-base correction is requested. .. !! processed by numpydoc !! .. py:exception:: TephpyConfigError Bases: :py:obj:`TephpyError` A configuration file could not be read or made sense of. A malformed YAML document, a top-level entry that is not a mapping, an unknown configuration section, and a ``$TEPHPYRC`` naming a file that does not exist all raise this. Raised only when the file was asked for explicitly; the import-time auto-load warns instead (configfile spec §5). .. !! processed by numpydoc !! .. py:exception:: TephpyConfigWarning Bases: :py:obj:`UserWarning` A configuration file was used, but something in it was ignored. An unknown option, an option whose value is an explicit null, and any failure during the import-time auto-load warn rather than raise, so a typo in a configuration file cannot make ``tephpy`` unimportable (configfile spec §5). .. !! processed by numpydoc !!