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
File details
Details for the file poormanschema-0.0.0.1.tar.gz.
File metadata
- Download URL: poormanschema-0.0.0.1.tar.gz
- Upload date:
- Size: 3.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f13c5c6ac6e29d86adab0e2ab8d9c19978574f9814c8185a830ec002218bc34f
|
|
| MD5 |
94ce4cb132da9cc7227d0a47845ed19c
|
|
| BLAKE2b-256 |
f4a08246b2e981dace63bc43630aee2e2aac04c72e62c1c45aacac1fe3d3a450
|