Skip to main content

Anonymous datatype validation

Project description

Examples

>>> from datatype.validation import failures

>>> datatype = {'foo': [{'bar': 'int'}]}
>>> bad_value = {'foo': [{'bar': 'baz'}], 'bif': 'pow!'}

>>> failures(datatype, bad_value)
['foo[0].bar: expected int, got str', 'unexpected property "bif"']

Wildcard dictionary keys:

>>> datatype = {'_any_': ['int']}
>>> good_value = {'foo': [1, 2, 3], 'bar': [3, 4, 5]}

>>> failures(datatype, good_value)
[]

Datatype Definitions

Datatype definitions are represented with a small set of types that should be built-in for most languages.

Required types for proper validation:

  • int

  • float

  • string

  • boolean

  • dictionary (or anonymous object)

  • list (or array)

Specification

DEFINITION = PRIMITIVE | LIST | DICTIONARY
PRIMITIVE = ["nullable "] + ("int" | "str" | "float" | "bool")
DICTIONARY = {DICTIONARY-KEY: DEFINITION}
DICTIONARY-KEY = (["optional "] + DICTIONARY-KEY-NAME) | "_any_"
DICTIONARY-KEY-NAME = [A-Za-z0-9_]+
LIST = [DEFINITION]

Definition Examples (in python)

definition: "int"
example value: 5

definition: {"foo": "int"}
example value: {"foo": 5}

definition: [{"foo": ["bool"]}]
example value: [{"foo": [True, False]}, {"foo": [False, False]}]

definition: {"_any_": "int"}
example value: {"foo": 5, "bar": 7}

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

datatype-0.4.1.tar.gz (4.0 kB view details)

Uploaded Source

File details

Details for the file datatype-0.4.1.tar.gz.

File metadata

  • Download URL: datatype-0.4.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for datatype-0.4.1.tar.gz
Algorithm Hash digest
SHA256 676b9339d827df5c754cdb25d306e6110209a49d4334e58241cf8d2a36912de7
MD5 ec0b3bc416d716dbd98179b821d98358
BLAKE2b-256 7cff553f592efe74f1eb6f6d58a62d2281292eac9a189810dddb8e0e4f9924d8

See more details on using hashes here.

Supported by

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