Skip to content

Axioms

didactic.api.axiom

axiom(
    expr: str,
    *,
    message: str | None = None,
    name: str | None = None,
) -> Axiom

Construct an Axiom for a class's __axioms__.

Parameters:

Name Type Description Default
expr str

The axiom expression. Free variables are field names of the enclosing Model.

required
message str | None

Optional human-readable explanation surfaced when the axiom fails validation.

None
name str | None

Optional identifier. Defaults to the metaclass synthesising one from the expression text.

None

Returns:

Type Description
Axiom

A frozen Axiom record. Place it in the class's __axioms__ list.

Examples:

>>> import didactic.api as dx
>>> class Pitched(dx.Model):
...     pitches: tuple[int, ...]
...     __axioms__ = [
...         dx.axiom("len(pitches) > 0", message="must be non-empty"),
...     ]

didactic.api.Axiom dataclass

Axiom(
    expr: str,
    message: str | None = None,
    name: str | None = None,
)

A class-level axiom expressed as a string.

Parameters:

Name Type Description Default
expr str

The axiom expression in panproto-Expr-shaped surface syntax.

required
message str | None

Optional human-readable message surfaced in didactic.api.ValidationError when the axiom fails.

None
name str | None

Optional identifier; defaults to a generated label.

None
See Also

axiom : the convenience constructor.