https://github.com/deathbeds/schemata
a localizable trait and type system for python
https://github.com/deathbeds/schemata
Last synced: 9 months ago
JSON representation
a localizable trait and type system for python
- Host: GitHub
- URL: https://github.com/deathbeds/schemata
- Owner: deathbeds
- Created: 2020-08-03T18:22:57.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-14T01:34:02.000Z (over 4 years ago)
- Last Synced: 2025-03-28T20:45:59.129Z (10 months ago)
- Language: Python
- Size: 3.26 MB
- Stars: 7
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# schemata
[![cov-badge]][cov]
[cov-badge]: https://img.shields.io/codecov/c/github/deathbeds/schemata?token=hob01Xmh6Z
[cov]: https://app.codecov.io/gh/deathbeds/schemata
`schemata` is trait system for Python and IPytohn applications that provide:
* validation
* testing strategies
* interactive user interfaces
* observable pattern
`schemata`'s type system is composable and expresses the type annotations in the form of json schema. attaching the schema to the types allows different interfaces to construct defaults in aspects like testing, visualization, and verification.
Learn more from the documentation.
## comparison with other trait libraries
`schemata` is preceded by a few different trait libraries `enthought.traits`, `traitlets`, and `pydantic`.
`traitlets` is a reimplementation of the `enthought.traits` by the `IPython` community; `traitlets` have been the
configuration for `jupyter` and `IPython` since.
`traitlets` preceeded a lot of critical web technology critical to the `jupyter` interactive computing ecosystem;
`traitlets` are only concerned with Python objects and lack features of the modern.
`pydantic` provides value as trait system by building off of the `jsonschema` specification to validate types.
`schemata` unifies `traitlets` and `pydantic` by providing a description type interface based off of open web standards.
The desire is a trait system for interactive computing that enables more expressive design and testing of interactive
computing technology.