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

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第三方库


热门话题
java集合属性值   java字符串==运算符是否比较引用?   java是否存在过太多的ListView或适配器?   json获取java中类路径中下载的文件   我可以用java代码解决数据库并发问题吗?   在多个线程中使用forEach()或使用forEach()和lambdas进行java集合迭代   java输出JFrame中的整个循环   java禁用高度详细的日志记录   java在没有特定属性的对象中访问模型的值   java Smack xmpp建立连接   处理过时域对象引起的并发问题的java策略(Grails/GORM/Hibernate)   java从ObservableList中提取元素   使用图像进行java相似图像搜索   java ListView和图像:我快疯了   在Java中,如何从毫秒时间戳中提取一天的周期?   java我需要这样的设计,但我面临两个问题   java如何获取JGoodies FormLayout中的单元格大小   Spring引导生成的java War文件未部署到Weblogic 12c