stereotype documentation
Stereotype is a performance-focused Python 3.8+ library for providing a structure for your data and validating it. The models allow fast & easy conversion between primitive data and well-typed Python classes.
Stereotype is heavily influenced by the beauty of dataclasses and versatility of Schematics, while having much better performance - both in terms of CPU usage and memory footprint. While it wasn’t an influence, it is somewhat similar to Pydantic, but also beats it in benchmarks and provides easier validation.
Stereotype supports Python 3.8 and above (future support for older versions of Python is highly unlikely) and has 100% test coverage.
Features
Fields
All JSON atomic types -
bool
,int
,float
,str
,Optional[*]
Compound fields -
List[*]
of any type or aDict[*, *]
of atomic types to any typeModel nesting -
Model
subclass fields, including recursive definitionsDynamic model fields -
Model
subclass fields resolved using a stringtype
keyFree-form fields using
Any
Calculated
serializable
fields - aproperty
present also in serialized dataSchematics compatibility field, custom fields can be defined
Validation
Basic built-in validation helpers for most fields
Custom field validator callbacks
Custom
Model
instance validation methodsValidation separate from conversion, multiple validation errors reported with paths
Conversion & serialization
Optional field defaults using atomic values or callables
Renaming or disabling fields for purposes of input/output/both
Optional hiding of
None
values from outputSerialization roles using field blacklists or whitelists, with inheritance or overriding
Reporting issues & contributing
Please see the contribution guide.