Skip to content

errors

quiverlab.errors

quiverlab exceptions (spec §7). Every message states the problem and a fix-it hint.

AdmissibilityError

AdmissibilityError(message: str, hint: str | None = None)

Bases: QuiverlabError

The ideal cannot be certified admissible.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

CitationError

CitationError(message: str, hint: str | None = None)

Bases: QuiverlabError

A citation key is unknown, or the bibliography is inconsistent.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

CocycleError

CocycleError(message: str, hint: str | None = None)

Bases: QuiverlabError

A construction that needs a (co)cycle was given a non-cocycle (e.g. the homotopy lifting ψ_η needs δη = 0).

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

DepthLimitError

DepthLimitError(message: str, hint: str | None = None)

Bases: QuiverlabError

A guard stopped a computation; the certified range is stated in the message.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

ExactnessError

ExactnessError(message: str, hint: str | None = None)

Bases: QuiverlabError

A float (or other non-exact input) tried to enter quiverlab.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

FieldError

FieldError(message: str, hint: str | None = None)

Bases: QuiverlabError

Unsupported field, or an entry that does not live in the stated field.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

M2UnavailableError

M2UnavailableError(message: str, hint: str | None = None)

Bases: QuiverlabError

The Macaulay2 binary is not on PATH (or refused to run). The M2 oracle bridge is a validation convenience only; the core does not need it.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

NotFiniteDimensionalError

NotFiniteDimensionalError(message: str, hint: str | None = None)

Bases: QuiverlabError

The presented algebra is (or cannot be certified) finite-dimensional.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

QpaUnavailableError

QpaUnavailableError(message: str, hint: str | None = None)

Bases: QuiverlabError

The optional [qpa] GAP backend is not available (not installed, wrong platform, or QPA failed to load). The pure-Python core does not need it.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")

RelationError

RelationError(message: str, hint: str | None = None)

Bases: QuiverlabError

A relation string is malformed, non-composable, or not parallel.

Source code in src/quiverlab/errors.py
5
6
7
def __init__(self, message: str, hint: str | None = None):
    self.hint = hint
    super().__init__(message if hint is None else f"{message}  [hint: {hint}]")