Python的自动对象-YAML映射。
项目描述
概述
基本YAML和Python类型之间的双向转换
为新属性创建和类型推断
将内容存储在优化版本控制的文本文件中
可扩展的转换器,用于自定义复杂类的格式化
观看PyOhio 2015的演讲。
要求
Python 3.5+
安装
使用pip安装YORM
$ pip install YORM
或直接从源代码安装
$ git clone https://github.com/jacebrowning/yorm.git
$ cd yorm
$ python setup.py install
用法
只需使用现有的类
class Student:
def __init__(self, name, school, number, year=2009):
self.name = name
self.school = school
self.number = number
self.year = year
self.gpa = 0.0
并定义一个属性映射
import yorm
from yorm.types import String, Integer, Float
@yorm.attr(name=String, year=Integer, gpa=Float)
@yorm.sync("students/{self.school}/{self.number}.yml")
class Student:
...
对每个对象映射属性的修改
>>> s1 = Student("John Doe", "GVSU", 123)
>>> s2 = Student("Jane Doe", "GVSU", 456, year=2014)
>>> s1.gpa = 3
会自动反映在文件系统中
$ cat students/GVSU/123.yml
name: John Doe
gpa: 3.0
school: GVSU
year: 2009
每个映射文件中的修改和新内容
$ echo "name: John Doe
> gpa: 1.8
> year: 2010
" > students/GVSU/123.yml
会自动反映在相应的对象中
>>> s1.gpa
1.8
修订历史
1.6.2 (2019-03-23)
通过使用yaml.safe_load()修复了YAMLLoadWarning。
1.6.1 (2019-03-22)
更新PyYAML到5.1以修复安全漏洞。
1.6 (2018-09-07)
添加了Number(和NullableNumber)类型,用于浮点数,当可能时存储为整数。
1.5.1 (2018-03-07)
修复了 List 转换器,使其能够接受元组作为列表。
1.5 (2017-10-22)
实现了 match 工具(感谢:@astronouth7303)。
在解析异常中包含文件内容。
添加了同步参数 auto_resolve 以自动清理文件冲突。
1.4 (2017-04-02)
移除了关于不必要调用 save/load 的警告。
现在允许通过 create 和 find 工具将关键字参数传递给类构造。
现在在 AttributeDictionary 上添加来自 __init__ 的额外属性。
注意:要使此功能正常工作,__init__ 必须不使用位置参数。
弃用:将 ModelMixin.new 重命名为 ModelMixin.create。
1.3 (2017-01-24)
优化了空列表的格式化,以创建一致的差异。
添加 ModelMixin 以向映射类添加 ORM 方法。
1.2 (2017-01-06)
更新基类以隐藏封装方法中的 pytest 跟踪信息。
1.1 (2016-10-22)
为 Mapper 添加 data 属性,作为其他序列化库的钩子。
1.0.1 (2016-09-23)
修复了在 list 和 dict 上的突变方法处理。
1.0 (2016-05-22)
初始稳定版本。
0.8.1 (2016-04-28)
现在在 Dictionary 转换器中调用 __init__ 以运行自定义验证。
0.8 (2016-04-14)
用 ORM 工具替换了所有实用函数。
从 sync() 中移除了检查现有文件的能力。
重命名并合并了自定义异常。
将同步参数 auto=True 重命名为 auto_save=True。
将同步参数 strict=True 重命名为 auto_track=False。
添加了同步参数 auto_create 以将文件创建推迟到 ORM 函数。
0.7.2 (2016-03-30)
现在在 Dictionary 转换器上保留 attr 装饰器的顺序。
0.7.1 (2016-03-30)
现在在获取 true 和 false 时将它们作为字符串获取。
0.7 (2016-03-29)
现在保留 attr 装饰器的顺序。
现在将 attr 装饰器限制为单个参数。
添加 List.of_type() 工厂以创建具有更少样板代码的列表。
0.6.1 (2015-02-23)
修复了 NullableString 中 None 的处理。
0.6 (2015-02-23)
添加了对 JSON 序列化的初步支持。(感谢:@pr0xmeh)
将 yorm.converters 重命名为 yorm.types。
现在维护映射对象的签名。
除非 strict=False,否则禁用属性推断。
修复了 String 的格式化,仅在使用引号时才使用。
0.5 (2015-09-25)
将 yorm.base 重命名为 yorm.bases。
当 auto=False 时,不再在实例化时创建文件。
现在在初始存储后自动存储。
0.4.1 (2015-06-19)
修复了在将非 dict 转换为 dict 时的属性丢失问题。
现在自动将缺失属性添加到映射对象中。
0.4 (2015-05-16)
将所有转换器移动到 yorm.converters 包。
将 container 重命名为 containers。
将 Converter 重命名为 Convertible 以用于可变类型
为不可变类型添加了一个新的 Converter 类
从映射对象中移除了上下文管理器。
修复了嵌套属性的自动映射。
0.3.2 (2015-04-07)
修复了在调用 utilities.update 时对象覆盖的问题。
0.3.1 (2015-04-06)
修复了依赖于其他映射属性的属性的性质导致的无限递归。
0.3 (2015-03-10)
更新映射对象,仅在文件系统有更改时从文件系统中读取。
将store重命名为sync_object。
将store_instances重命名为sync_instances。
将map_attr重命名为attr。
根据需要添加sync以调用sync_object或sync_instances。
添加update_object和update_file以强制同步。
根据需要添加update以调用update_object和/或update_file。
0.2.1 (2015-02-12)
容器类型现在扩展其内置类型。
添加具有默认值None的扩展类型None<Type>。
添加具有键作为属性的AttributeDictionary。
添加在转储时排序的SortedList。
0.2 (2014-11-30)
允许map_attr和store一起使用。
允许将Dictionary容器用作属性。
修复修改后的类的解析顺序。
添加yorm.settings.fake选项以绕过文件系统。
0.1.1 (2014-10-20)
修复示例中的错别字。
0.1 (2014-09-29)
初始版本。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
YORM-1.6.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e64b3debe9e923784c25237c552545d0bb8ff419cc895188b12401f61cb7b741 |
|
MD5 | 5fd673c7793e107895a50abd48a0d970 |
|
BLAKE2b-256 | a8fa72ee675f01c81e20e1eadd10b7ca2aecf2e4a32ed572cbce9f25689c3b2e |