Skip to content

Edge cases

These rules are deliberate compatibility contracts, not incidental Python behavior.

Case Talea behavior
bool for int Rejected; primitive checks are exact
datetime for date Rejected; a timestamp is not a calendar-day contract
raw value for Enum Rejected on strict Python path; JSON uses documented representation
Literal[True] and 1 Distinct by value and runtime type
tuple for list[T] Rejected; concrete containers preserve shape
unknown Mapping/JSON key unexpected failure
duplicate JSON key json_duplicate failure before field conversion
JSON NaN or Infinity Rejected by the default decoder
mutable nested Spec Current declared state is revalidated at a new boundary
cyclic input/output graph Rejected with a finite cycle path
recursive alias Supported when resolution reaches a finite named back-edge
open generic execution Rejected; specialize first
partial omitted field Attribute is absent and omitted from serialization
partial field set to None Present only if the source field accepts None
transform in input schema Projection fails if the pre-transform domain is unknowable
serializer in output schema Projection fails if the serializer output is unknowable
custom codec or Mapping Trusted caller code; exceptions may propagate as documented
Sensitive callback Callback receives the raw value and owns its side effects

Strict and external paths differ for standard types. See Supported types, Input boundaries, and Known limitations.