跳转到主要内容

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

项目描述

https://travis-ci.org/eflglobal/filters.svg?branch=master https://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')

将传入值解析为datetime,转换为UTC并删除tzinfo

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

将可迭代对象(如列表)中的每个值转换为Unicode并删除首尾空格。这也适用于Unicode规范化,删除不可打印的字符并自动规范化行结束。

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"}')

需求

Filters与Python版本3.6、3.5和2.7兼容。

安装

通过pip安装最新稳定版

pip install filters

扩展

以下扩展可用

  • Django Filters:添加与Django应用程序一起工作的过滤器。要安装

    pip install filters[django]
  • ISO Filters:添加解析标准代码和标识符的过滤器。要安装

    pip install filters[iso]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

filters-1.3.2.tar.gz (57.6 kB 查看哈希值)

上传时间

构建分布

filters-1.3.2-py2.py3-none-any.whl (37.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持