验证和数据管道变得简单!

phx-filters的Python项目详细描述


https://travis-ci.org/todofixthis/filters.svg?branch=masterhttps://readthedocs.org/projects/filters/badge/?version=latest

过滤器

过滤器库提供了一种简单易读的方法来创建复杂的 数据验证和处理管道,包括:

  • 验证api请求或配置文件中的复杂json结构。
  • 解析时间戳并转换为UTC。
  • 将Unicode字符串转换为NFC,规范化行尾并删除 无法打印的字符。
  • 解码base64,包括url安全变体。

还有更多!

一个过滤器的输出可以“管道”到另一个过滤器的输入中,使 您可以将过滤器“链接”在一起,以便快速轻松地创建复杂的数据 管道。

示例

验证纬度位置并精确到可管理的精度:

(f.Required|f.Decimal|f.Min(Decimal(-90))|f.Max(Decimal(90))|f.Round(to_nearest='0.000001')).apply('-12.0431842')

将传入值解析为日期时间,转换为UTC并删除tzinfo:

f.Datetime(naive=True).apply('2015-04-08T15:11:22-05:00')

将iterable(例如list)中的每个值转换为unicode并删除 前导/尾随空格。 这也适用于Unicode normalization,删除不可打印的字符和 自动规格化线端点。

f.FilterRepeater(f.Unicode|f.Strip).apply([b'\xe2\x99\xaa ',b'\xe2\x94\x8f(\xc2\xb0.\xc2\xb0)\xe2\x94\x9b ',b'\xe2\x94\x97(\xc2\xb0.\xc2\xb0)\xe2\x94\x93 ',b'\xe2\x99\xaa ',])

分析json字符串并检查其结构是否正确:

(f.JsonDecode|f.FilterMapper({'birthday':f.Date,'gender':f.CaseFold|f.Choice(choices={'m','f','x'}),'utcOffset':f.Decimal|f.Min(Decimal('-15'))|f.Max(Decimal('+15'))|f.Round(to_nearest='0.25'),},allow_extra_keys=False,allow_missing_keys=False,)).apply('{"birthday":"1879-03-14", "gender":"M", "utcOffset":"1"}')

要求

过滤器与以下python版本兼容:

  • 3.8
  • 3.7
  • 3.6
  • 3.5

注意

过滤器与python 2不兼容。

安装

通过pip安装最新的稳定版本:

pip install phx-filters

扩展名

提供以下扩展:

  • Django Filters:添加设计用于django应用程序的筛选器。 要安装:

    pip install phx-filters[django]
    
  • ISO Filters:添加用于解释标准代码和标识符的筛选器。 要安装:

    pip install phx-filters[iso]
    

提示

要安装多个扩展,请用逗号将它们分开,例如:

pip install phx-filters[django,iso]

运行单元测试

从源安装后运行单元测试:

python setup.py test

此项目还与tox兼容,后者将在中运行单元测试 不同的虚拟环境(每个受支持的python版本一个)。

使用test-runnerextra安装包以设置必要的 依赖项,然后可以使用tox命令运行测试:

pip install -e .[test-runner]
tox -p all

文件

文档可在ReadTheDocs上找到。

如果您是从源代码安装(见上文),也可以构建 本地文档:

  1. 安装额外的依赖项(您只需执行一次):

    pip install '.[docs-builder]'
    
  2. 切换到docs目录:

    cd docs
    
  3. 制作文档:

    make html
    

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

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束