create efficent models starting from json schema
Project description
Usage
You can use inheritance to create your model:
class User(modeller.Model):
id = ''
_schema = {
'type': 'object',
'properties': {
'name': { 'type': 'string' },
'id': { 'type': 'integer' },
'age': { 'type': 'integer' },
},
'required': [
'name',
'surname',
],
# 'additionalProperties': False,
}
# model will be validated after every instance
me = User(id=01, name='Tommy', surname='Der')
# you can also add additional properties
me.state = 'Italy'
me._validate()
print(me._json())
print(me._yaml())
print(me.surname)
With the schema in types/schema.yaml
$schema: http://json-schema.org/schema#
properties:
name:
type: string
surname:
type: string
age:
type: integer
required:
- name
- surname
- age
you can load a model with automatic validation, easy attribute access with dots and no exceptions while trying to access a property defined in the schema.
import yaml
import modeler
schema = yaml.load(open('types/schema.yaml').read())
Model = modeler.make_model(schema=schema,)
Model(name='Tommaso', surname='De Rossi', age=19)
Details
Model validate itself as soon as instantiated, if you want to change this behavior overwrite _on_init
method.
Model will return None if you try to access a property present in the json schema .properties
but not in the object.
Model will throw if you try to access a property not present in the object and not in the json schema .properties
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
modeller-0.0.30.tar.gz
(5.8 kB
view hashes)
Built Distribution
Close
Hashes for modeller-0.0.30-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce9fce58430ac42d2073d140f5ba82a560a63a6107433067e59c9de853039795 |
|
MD5 | 2a9a8017130c7504e71317cf1fc84f28 |
|
BLAKE2b-256 | 2dd9388aaed6f5978b7229be78ed4e2d8269f61c7702ee1ce6d4858ec49752e9 |