非常简单有效的模式检查器
poormanschema的Python项目详细描述
poormanschema
简单有效的模式检查器:
>>> from poormanschema import * >>> check({'first_name': 1}. [{'first_name': str, 'last_name': str}]) ValueError: {first_name} should be of type "str"
它还可以规范化数据:
>>> check(' 2016-03-23T12:23:12 ', OR(STRIP, ISO8601)) '2016-03-23T12:23:12'
或在输入时转换它们:
>>> repr(check(['1.3'], [DECIMAL])) [Decimal('1.3')]
谓词列表
- check(data,schema,path='')-checkdataagainsschema,在错误消息前面加上path
- 或(*schemas)-返回要匹配的第一个schema
- 任何-可以是任何
- 和(*schemas)-所有模式都必须匹配
- 强制(schema)-仅对dict值有用,指示相应的键是强制的,所有其他键都是可选的
- re(regexp,repl=none,count=0,flag=0)-值必须是与regexp匹配的字符串
- ISO8601-值必须是类似于'2016-09-07T12:12:34'的字符串
- 规范化(schema,convert)-应用schema,然后将converter应用于结果
- 条-删除起始和结束空格
- 小写-将字符串小写
- upper-字符串大写
- decimal-将字符串转换为decimal.decimal对象
示例:用户对象的SCIM 1.0核心架构
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, } }