非常简单有效的模式检查器

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,
    }
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Eclipse中使用多个调用在一行上打印java   javajackson序列化问题。只有同一实体的第一个对象可以很好地序列化   Java中Deflate函数的等价充气   使用customlitview的java Android actionbar搜索   java“<T>T get()”是什么意思?(它有用吗?)   目标c使用CommonCrypto使用AES256加密,使用OpenSSL或Java解密   java在运行时更新资源文件   fileinputstream在java中访问并将数据写入现有文件   带集群的java Android Mapbox我希望每个功能都有不同的标记图像   java JDK8>JDK10:PKIX路径生成失败:SunCertPathBuilderException:找不到请求目标的有效证书路径   java使用Hk2生成具有指定构造函数参数的实例   为什么这个系统。出来Java中的println()打印到控制台?   java目录和文件名连接不起作用   使用mockito和通配符绘图的java