Skip to main content

poormanschema

Simple and effective schema checker:

>>> from poormanschema import *
>>> check({'first_name': 1}. [{'first_name': str, 'last_name': str}])
ValueError: {first_name} should be of type "str"

It can also normalize data:

>>> check(' 2016-03-23T12:23:12 ', OR(STRIP, ISO8601))
'2016-03-23T12:23:12'

Or convert them on entry:

>>> repr(check(['1.3'], [DECIMAL]))
[Decimal('1.3')]

List of predicates

  • check(data, schema, path=’’) - check data agains schema, prefix error messages with path

  • OR(*schemas) - first schema to match is returned

  • ANY - can be anything

  • AND(*schemas) - all schemas must match

  • MANDATORY(schema) - only useful on dict values, indicate the corresponding key is mandatory, all other keys are optional

  • RE(regexp, repl=None, count=0, flag=0) - value must be a string matching regexp

  • ISO8601 - value must be a string like ‘2016-09-07T12:12:34’

  • NORMALIZE(schema, convert) - apply schema then apply converter to the result

  • STRIP - remove starting and ending spaces

  • LOWER - lowercase the string

  • UPPER - uppercase the string

  • DECIMAL - convert a string into a decimal.Decimal object

Exemple: SCIM 1.0 Core Schema of an User object

schema = {
    'schemas': MANDATORY([basestring]),
    'id': MANDATORY(basestring),
    'externalId': MANDATORY(basestring),
    'userName': MANDATORY(unicode),
    'name': MANDATORY({
        'formatted': MANDATORY(str),
        'familyName': str,
        'givenName': str,
        'middleName': str,
        'honorificPrefix': str,
        'honorificSuffix': str,
    }),
    'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User': MANDATORY({
        'employeeNumber': OR(STRIP, RE(r'^\d+$')),
        'costCenter': OR(STRIP, RE(r'^\d+$')),
    }),
    'meta': {
        'resourceType': 'User',
        'created': ISO8601,
        'lastModified': ISO8601,
        'version': RE(r'^(W\\)?"[^"]"$'),
        'location': str,
    }
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poormanschema-0.0.0.1.tar.gz (3.7 kB view details)

Uploaded Source

File details

Details for the file poormanschema-0.0.0.1.tar.gz.

File metadata

File hashes

Hashes for poormanschema-0.0.0.1.tar.gz
Algorithm Hash digest
SHA256 f13c5c6ac6e29d86adab0e2ab8d9c19978574f9814c8185a830ec002218bc34f
MD5 94ce4cb132da9cc7227d0a47845ed19c
BLAKE2b-256 f4a08246b2e981dace63bc43630aee2e2aac04c72e62c1c45aacac1fe3d3a450

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.0.1 This release

1 file

Supported by

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