tephpy.exceptions#

The public tephpy exception hierarchy (spec §6).

What tephpy raises about your data and its surroundings — the units it carries, its physical consistency, the source it was read from, the configuration file in force — derives from TephpyError, so one except TephpyError covers that whole subject. Units problems raise TephpyUnitsError; physically impossible data raises a TephpyValidationError subclass carrying the offending level indices. Validation happens at ingest (Sounding construction), not mid-plot.

Ordinary argument mistakes stay outside the hierarchy and raise the builtin Python exceptions, because that is the vocabulary a caller already knows: an unrecognised sample name is a ValueError, an unknown keyword or configuration section a TypeError, a missing DataFrame column a KeyError. except TephpyError is therefore the domain net, not a catch-all for every way a call can be wrong.

Configuration-file problems are the one place tephpy also warns: TephpyConfigWarning is a UserWarning, not a TephpyError, because an unusable configuration file degrades to the hardwired defaults instead of stopping the import (configfile spec §5).

Notes#

Added in version 0.1.0.

Exceptions#

TephpyError

Root of the tephpy exception hierarchy.

TephpyUnitsError

Missing, ambiguous, unparsable, or wrong-dimension units (spec §5).

TephpyValidationError

Physically impossible input, identified by level indices (spec §6).

NonMonotonicPressureError

Pressure is not strictly monotonic (spec §3.4).

DewpointExceedsTemperatureError

Dewpoint exceeds temperature at one or more levels (spec §3.4).

MissingDataError

The sounding lacks a field the requested operation needs (spec §6).

TephpyIOError

A reader could not fetch or make sense of its source (spec §6).

ProfileTooShortError

The profile tops out at or below the parcel's LCL (spec §6).

TephpyConfigError

A configuration file could not be read or made sense of.

TephpyConfigWarning

A configuration file was used, but something in it was ignored.

Module Contents#

exception tephpy.exceptions.TephpyError[source]#

Bases: Exception

Root of the tephpy exception hierarchy.

Notes

Added in version 0.1.0.

exception tephpy.exceptions.TephpyUnitsError[source]#

Bases: TephpyError

Missing, ambiguous, unparsable, or wrong-dimension units (spec §5).

Notes

Added in version 0.1.0.

exception tephpy.exceptions.TephpyValidationError(message: str, *, levels: tuple[int, ...] = ())[source]#

Bases: TephpyError

Physically impossible input, identified by level indices (spec §6).

Parameters:
messagestr

Description of the failed validation.

levelstuple of int, optional

Zero-based indices of the offending levels, when the failure is attributable to specific levels.

Attributes:
levelstuple of int

Zero-based indices of the offending levels; empty when the failure is not attributable to specific levels.

Notes

Added in version 0.1.0.

levels = ()#
exception tephpy.exceptions.NonMonotonicPressureError(message: str, *, levels: tuple[int, ...] = ())[source]#

Bases: TephpyValidationError

Pressure is not strictly monotonic (spec §3.4).

Notes

Added in version 0.1.0.

exception tephpy.exceptions.DewpointExceedsTemperatureError(message: str, *, levels: tuple[int, ...] = ())[source]#

Bases: TephpyValidationError

Dewpoint exceeds temperature at one or more levels (spec §3.4).

Equality — saturation — is physical and accepted; only strict excess is rejected.

Notes

Added in version 0.1.0.

exception tephpy.exceptions.MissingDataError(message: str, *, levels: tuple[int, ...] = ())[source]#

Bases: 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.

Notes

Added in version 0.1.0.

exception tephpy.exceptions.TephpyIOError[source]#

Bases: 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.

Notes

Added in version 0.1.0.

exception tephpy.exceptions.ProfileTooShortError(message: str, *, levels: tuple[int, ...] = ())[source]#

Bases: 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.

Notes

Added in version 0.1.0.

exception tephpy.exceptions.TephpyConfigError[source]#

Bases: 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).

Notes

Added in version 0.1.0.

exception tephpy.exceptions.TephpyConfigWarning[source]#

Bases: 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).

Notes

Added in version 0.1.0.