restricted dict
Project description
Providing extracted dict (subclass of collections.UserDict).
how to use
(todo: description)
models.py
from kanagata import RestrictionBuilder
# group: name, users
# user: name, age, Option[skills], Option[school]
# skill: name
with RestrictionBuilder() as b:
with b.define_dict("Group") as group:
group.add_member("name", required=True)
group.add_list("users", "User", required=True)
with b.define_dict("User") as user:
user.add_member("name", required=True)
user.add_member("age", required=True)
user.add_dict("school", "School", required=False)
user.add_list("skills", "Skill", required=False)
with b.define_dict("Skill") as skill:
skill.add_member("name", required=True)
with b.define_dict("School") as school:
school.add_member("name")
school.add_list("groups", "Group", required=True)
from models import User
# user can have only name, age, skills. (skills is optional)
user = User(name="foo", age=20, skills=[])
print(user) # {'name': 'foo', 'age': 20, 'skills': []}
try:
user2 = User(name="bar")
# ValueError: User: required fields {'age'} are not found
except ValueError:
pass
try:
user["xxx"] = "bar"
# ValueError: User: unsupported field 'xxx', field members=['name', 'age', 'school', 'skills']
except ValueError:
pass
# user.skills can have only name.
user["skills"].append({"name": "math"})
print(user) # {'skills': [{'name': 'math'}], 'age': 20, 'name': 'foo'}
try:
user["skills"].append({})
# ValueError: Skill: required fields {'name'} are not found
except ValueError:
pass
0.0.1
default option support
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
kanagata-0.0.1.tar.gz
(4.3 kB
view details)
Built Distribution
File details
Details for the file kanagata-0.0.1.tar.gz
.
File metadata
- Download URL: kanagata-0.0.1.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
4e312f5f5a3c88d125a50ebc5470ef6667eb88e76e2e027e41f0c028d8b5dffd
|
|
MD5 |
591e7e5382cc2628921958edba1b37e1
|
|
BLAKE2b-256 |
1cada4c70301aaa8609b8be6a5fe4a4096708a452a61dd4dcaef1255c09a449f
|
File details
Details for the file kanagata-0.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: kanagata-0.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
705a85f2739dcc94e6ec989da66a518919a888a7eb604af1273a1440ddd8262e
|
|
MD5 |
f20e9129213b383d49fc066ef4236faa
|
|
BLAKE2b-256 |
2ed313e13f3f2d378d7fe6084c72e5d94bbadd7f31f9c0ce6a01a1c5b7713530
|