属性的复合类支持。

cattrs的Python项目详细描述


===

==




图片::https://img.shields.io/pypi/v/cattrs.svg
:目标:https://pypi.python.org/pypi/cattrs

…图片::https://img.shields.io/travis/tinche/cattrs.svg
:目标:https://travis ci.org/tinche/cattrs

…图片::https://readthedocs.org/projects/cattrs/badge/?version=latest
:目标:https://cattrs.readthedocs.io/en/latest/?徽章=最新
:alt:文档状态

…图片::https://img.shields.io/pypi/pyversions/cattrs.svg
:目标:https://github.com/tinche/cattrs
:alt:支持的python版本

…图像::https://codecov.io/gh/tinche/cattrs/branch/master/graph/badge.svg
:目标:https://codecov.io/gh/tinche/cattrs

…image::https://img.shields.io/badge/code%20style-black-000000.svg
:target:https://github.com/ambv/black


----

``cattrs``是一个用于结构化和非结构化数据的开源python库。`` cattrs``最适合与``attrs``类和通常的python
集合一起使用,但是通过手动注册
转换器支持其他类型的类。

python有一组功能强大、易于使用的内置数据类型,如
字典、列表和元组。这些数据类型也是大多数数据序列化库的通用语言,用于json、msgpack、yaml或toml等格式。


您的数据很可能是结构化的:并非所有字段名的组合都是值,都是程序的有效输入。在
python中,结构化数据更好地用类和枚举表示。
``attrs``是一个极好的库,用于声明性地描述
数据的结构并对其进行验证。

``cattrs有助于将这些数据转换为结构化数据。当您必须将结构化数据转换为其他库可以处理的数据类型时,
``cattrs``会将类和枚举转换为字典、整数和字符串。

包含一个浮点、一个int和一个字符串
的列表被转换为三个int的元组。doctest::

>;>import cattr
>;>import tuple
>;
>;>cattr.structure([1.0,2,"3"],tuple[int,int,int])
(1,2,3)

`cattrs``可以很好地与"attrs"类一起使用。

doctest::

>;>import attr,cattr
>;
>;@attr.s(slots=true,frozen=true)也适用于普通类。
…C类:
…a=attr.ib()
…b=attr.ib()

>;>instance=c(1,'a')
>;>cattr.unstructure(instance)
{'a':1,'b':'a'}
>;>cattr.structure({'a':1,'b':'a'},c)
c(a=1,b='a')

这里有一个更复杂的例子,涉及"attr s"类使用类型
元数据。

…doctest::

>;>来自enum import unique,enum
>;>来自键入import list,optional,sequence,union
>;>来自cattr import structure,unstructure
>;>import attr
>;
>;@unique
…catbreed类(枚举):
…暹罗语:"暹罗语"
…缅因州"缅因州"
…神圣的"birman"

>;@attr.s
…类别分类:
…品种:catbreed=attr.ib()
…名称:sequence[str]=attr.ib()

>;@attr.s
…类微芯片:
…芯片ID=attr.ib()
…时间碎片:float=attr.ib()

>;@attr.s
…班狗:
…可爱:int=attr.ib()
…芯片:可选的[Dogmicchip]=attr.ib()

>;>p=非结构化([Dog(可爱=1,芯片=Dogmicchip(芯片ID=1,时间碎片=10.0)),
…猫(breed=catbreed.maine戋coon,names=('fluffly','fluffer'))])

>;>;打印(p)
[{可爱度:1,'chip':{chip戋id':1,'time戋chipped':10.0},{breed':'maine戋coon,'names':('fluffly','fluffer')}]
>;>;打印(结构(p,list[union[dog,cat]])。
[狗(可爱=1,芯片=dogmicchip(芯片id=1,时间碎片=10.0)),猫(breed=<;catbreed.maine\'maine\'u coon'>;,names=['flufly','fluffer'])]


将非结构化数据视为需要转换为要处理的结构化数据的低级表示,并使用``STRucStudio'完成后,
``unstructure``将数据转换为非结构化形式,并将其传递到另一个
库或模块。使用[attrs type metadata](http://attrs.readthedocs.io/en/stable/examples.html types)
将类型元数据添加到属性中,这样"cattrs"就知道如何构造和
解构它们。

*免费软件:mit license
*文档:https://cattrs.readthedocs.io。
*python版本支持的离子:2.7、3.5及更高版本。



*枚举实例将转换为其值。
*其他类型不经转换即可通过。这包括整数、字典、列表和非"attrs"类的实例等类型。
*任何类型的自定义转换器都可以使用"register非结构化挂钩"注册。

*根据sp作为一种类型给出的说明。支持以下类型:

*``类型.可选[t]`.
*``类型.列表[t]`,``类型.可变序列[t]`,``类型.序列[t]``(转换为列表)。
*``类型.元组```(两个变量,``元组[t,…]``和``元组[x,y,z]`).
*``类型.可变集[t]`,``类型ing.set[t]``(转换为集合)。
*`` typing.frozenset[t]``(转换为frozenset)。
*`` typing.dict[k,v]``,`` typing.mutablemapping[k,v]`,`` typing.mapping[k,v]``(转换为dict)。
*``attrs``具有简单属性和通常的`````` init``的类。

*simple属性是可以分配给非结构化数据的属性,
类似于数字、字符串和非结构化数据集合。

*如果其复杂属性
具有类型元数据,则所有具有常用"初始"的"attrs"类。
*"typing.union"是受支持的`` attrs``类,假设所有类都有一个唯一的字段。
*`` typing.union``的任何类型,假设您为它提供了一个消歧函数。
*任何类型的自定义转换器都可以使用`` register_structure_hook``注册。


credits
---——

hynek schlawack创建attrs及其前身的主要功劳,
characteristic\ux.

``cattrs``由david r.maciver用假设检验。

``cattrs``由victor stinner用perf\ux进行基准测试。

找到"audreyr/cookiecutter pypackage"项目模板。_属性:https://github.com/hynek/attrs
…_特征:https://github.com/hynek/characteristic
…_假设:http://hypothesis.readthedocs.io/en/latest/
。_性能:https://github.com/haypo/perf
…_ Cookiecutter:https://github.com/audreyr/Cookiecutter
。_` audreyr/cookiecutter pypackage`:https://github.com/audreyr/cookiecutter-pypackagGE




=
=
历史
==


<0.9.0(2018-07-22)
----
*支持Python 3.7。


0.8.1(2018-06-19)
----
*消歧函数生成器现在支持"attrs"类和非类型的联合。


0.8.0(2018-04-14)
————
*分发修复。

0.7.0(2018-04-12)
——


*删除了未记录的"converter.unstruct嫒strat嫒property setter"。
*删除了设置"converter.structure嫒attrs嫒instance字段的功能。
作为替代方法,c创建新的"转换器":

…代码块:python--
*打包修复。
(` 17<;https://github.com/tinche/cattrs/pull/17>;` `)

<0.5.0(2017-12-11)
----


*结构/非结构现在支持使用函数和类来决定适当的函数。
*添加了"converter.register"结构e_hook_func`,注册一个函数而不是一个类来确定处理函数。
*添加了"converter.register_unstructure_hook_func`,注册一个函数而不是一个类来确定处理函数。
*不再需要或提供自动输入。
*具有defaul的属性如果输入中缺少t值,则现在可以对其进行结构化。
(` 15<;https://github.com/tinche/cattrs/pull/15>;` ` ` `)
*`如果输入中缺少可选的'属性,则不能再对其进行结构化。
换句话说,这将不再有效:

。代码块::python

@attr.s
a类:
a:可选的[int]=attr.ib()

>>>cattr.structure({},a)

*``cattr.typed``已删除,因为该功能现在存在于``attrs``本身中。
将``cattr.typed(type)``的实例替换为``attr.ib(type=type)`.

0.4.0(2017-07-17)
----

*`converter.loads`现在是'converter.structure`,`converter.dumps`现在是'converter.unstructure`.
*支持python 2.7。
*将'cattr.typing`移动到'cattr.vendor.typing``以支持不同的供应商python 2和python 3的typing.py的红色版本。
*可以使用"cattr.typed"将类型元数据添加到"attrs"类中。



>0.3.0(2017-03-18)
----

*不再支持python 3.4。
*引入了"cattr.typing"以用于python 3.5版。2和3.6.0.
*对"typing"的较新版本所做的细微更改不再支持裸选项(使用"optional[any]")。

*尝试加载无法识别的类将导致valueerror和注册加载挂钩的有用消息。
*加载`` attrs``类现在被记录在案。
*全局转换器现在被记录在案。
*``cattr.loads_attrs_fromtuple``和``cattr.loads_attrs_fromtict``现在被公开。



>0.2.0(2016-10-02)
----

*测试和文档。

<0.1.0(2016-08-13)
---————

*PYPI上的第一个版本。



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

推荐PyPI第三方库


热门话题
AmazonS3查找从S3forJava下载的压缩文件的MIME类型   java如何使用Selenium在<span>中查找具有特定文本的元素   python如何使用OpenIEDemo生成自定义三元组。由stanfordnlp提供的java   java遇到“方法不适用”编译错误   java如何使用Mockito在Looper中运行的验证代码。getMainLooper?   类Java目录错误   java在已知其他泛型信息时使用原始类型   java connect()和disconnect()在哪里实现?   java使用PDF Box库拆分PDF,生成的PDF几乎与源PDF文件大小相同   java PowerMockito返回错误的对象   java如何找到TIBCO集合消息的字节编码?   java Basic音乐播放器下一步和上一步按钮   添加模块描述符时,java没有名为“entityManagerFactory”的bean可用   java为什么我的代码不是线程安全的?   eclipse java。引用项目中的类的lang.NoClassDefFoundError