Skip to main content

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


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)

Uploaded Source

Built Distribution

kanagata-0.0.1-py2.py3-none-any.whl (6.9 kB view details)

Uploaded Python 2Python 3

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

Hashes for kanagata-0.0.1.tar.gz
Algorithm Hash digest
SHA256 4e312f5f5a3c88d125a50ebc5470ef6667eb88e76e2e027e41f0c028d8b5dffd
MD5 591e7e5382cc2628921958edba1b37e1
BLAKE2b-256 1cada4c70301aaa8609b8be6a5fe4a4096708a452a61dd4dcaef1255c09a449f

See more details on using hashes here.

File details

Details for the file kanagata-0.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for kanagata-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 705a85f2739dcc94e6ec989da66a518919a888a7eb604af1273a1440ddd8262e
MD5 f20e9129213b383d49fc066ef4236faa
BLAKE2b-256 2ed313e13f3f2d378d7fe6084c72e5d94bbadd7f31f9c0ce6a01a1c5b7713530

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page