首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Coding
V2EX  ›  Python

找小伙伴一起造这个简单又实用的轮子:基于模式定义的对象验证器/转换器/生成器

  •  
  •   jfry · 2018-04-04 14:54:22 +08:00 · 864 次点击
    这是一个创建于 621 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的想法是主要实现这么一个库:使用 Python 定义模式,然后可以用改模式来:

    • 验证一个 Python 对象是否符合该模式
    • 将一个对象转换成符合该模式的对象
    • 随机生成符合该模式的对象
    • 基于该模式,提供一些其他库的扩展,比如:
      • flask/django 的参数验证扩展
      • pymongo 的简单 orm

    PyPI 上面类似的库是有的,但是觉得其 API 不好用,因此打算重新造一个轮子,下面是已经实现了的判断对象是否符合模式的例子:

    schema = {
        'a': [],
        'b': [
            {
                'c': int,
                'd': Int(default=3),
                'e': [str]
            }
        ],
        'c': Int(validator=lambda x: 1 < x < 10)
    }
    
    rubric.validate(schema, {
        'a': [],
        'b': [
            {
                'c': 1,
                'd': 2,
                'e': ['hello', 'world']
            }
        ],
        'c': 7
    }) # pass
    

    目前功能都只实现了部分(只作了验证,很多类型的验证规则也还没定义),代码也不到 200 行,因此特意来此找感兴趣的朋友来一起完成这个项目,主要是:

    • 一起设计出更好用的 API
    • 完成其他未完成的功能

    代码注释丰富,测试也很多,除了 pytest 之外不依赖任何第三方库.稍微熟悉 python 就可以了~,感兴趣的朋友快一起来吧~~

    2 回复  |  直到 2018-04-04 15:04:59 +08:00
        1
    jfry   2018-04-04 14:55:15 +08:00
    项目地址都忘记贴了=.=: https://github.com/toaco/rubric
        2
    jfry   2018-04-04 15:04:59 +08:00
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3879 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 10:04 · PVG 18:04 · LAX 02:04 · JFK 05:04
    ♥ Do have faith in what you're doing.