Skip to content

Exceptions

A single, shallow hierarchy, so callers can catch OpenAUCError broadly or an individual subclass narrowly.

OpenAUCError
├── ValidationError
│   └── StructuralValidationError
├── ObservationError
├── FormatError
│   ├── UnsupportedFormatError
│   ├── AmbiguousFormatError
│   └── ParseError
├── ManifestError
├── DataConflictError
├── ArchiveError
│   ├── ArchiveIntegrityError
│   └── ArchiveVersionError
├── PlottingError
└── SyntheticWriteError
from openauc.exceptions import OpenAUCError, ManifestError, ParseError

try:
    experiment = openauc.load("my-experiment")
except ManifestError as exc:
    ...
except OpenAUCError as exc:
    ...

exceptions

Exception hierarchy for openauc.

A single, shallow hierarchy so callers can catch OpenAUCError broadly or individual subclasses narrowly. These are declarations only; the phases that raise them add the behaviour.

OpenAUCError

Bases: Exception

Base class for all errors raised by openauc.

ValidationError

Bases: OpenAUCError

Raised when data or metadata fails structural validation.

StructuralValidationError

Bases: ValidationError

Raised when a structural-validation report contains errors.

Produced by :meth:ValidationReport.raise_if_invalid. Structural validation is a data-representation check only; it makes no judgement about scientific validity or suitability for analysis.

ObservationError

Bases: OpenAUCError

Raised when observational (radius/signal/mask) arrays are malformed.

Examples: non-finite radius or signal, mismatched array shapes, or a per-scan validity mask that is inconsistent with its data.

FormatError

Bases: OpenAUCError

Raised when input cannot be read as its declared format.

UnsupportedFormatError

Bases: FormatError

Raised when no registered parser can handle the input.

Also raised when an explicitly requested format identifier is not registered.

AmbiguousFormatError

Bases: FormatError

Raised when input cannot be resolved to a single parser or manifest.

Examples: two parsers report materially similar detection confidence; a directory contains both manifest.json and manifest.yaml without an explicit choice; or the delimiter cannot be determined unambiguously.

ParseError

Bases: FormatError

Raised when a data file is structurally malformed for its format.

Examples: missing required columns, non-numeric or non-finite radius or signal values, or inconsistent field counts.

ManifestError

Bases: OpenAUCError

Raised when an experiment manifest is invalid or unsafe.

Examples: unknown schema version, a data path that escapes the experiment directory, or a manifest that fails schema validation.

DataConflictError

Bases: OpenAUCError

Raised when independent sources disagree.

Examples: duplicate (scan, radius) observations, the same metadatum supplied with different values in the table and the manifest, or file contents that contradict the manifest's declared format.

ArchiveError

Bases: OpenAUCError

Raised when reading or writing an AUCX archive fails.

Covers container-level problems: an unreadable or unsafe ZIP, a missing or unexpected member, malformed JSON or .npy payloads, and disagreements between the manifest and the stored arrays.

ArchiveIntegrityError

Bases: ArchiveError

Raised when an archive's recorded checksums do not verify.

Integrity only: a passing checksum shows the bytes are unchanged since the archive was written. It is not a proof of authenticity or origin.

ArchiveVersionError

Bases: ArchiveError

Raised when an archive declares an unsupported format version.

Archives are never silently migrated across format versions.

PlottingError

Bases: OpenAUCError

Raised when a plot cannot be drawn from the supplied experiment.

Examples: a requested scan identifier is not present in the observations, or no selected scan carries any observation to draw.

SyntheticWriteError

Bases: OpenAUCError

Raised when a generated experiment cannot be written as requested.