跳转到主要内容

Python的自动对象-YAML映射。

项目描述

Build Status
Coverage Status
Scrutinizer Code Quality
PyPI Version

概述

YORM使对象属性到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)

  • 更新PyYAML5.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 的警告。

  • 现在允许通过 createfind 工具将关键字参数传递给类构造。

  • 现在在 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)

  • 修复了在 listdict 上的突变方法处理。

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)

  • 现在在获取 truefalse 时将它们作为字符串获取。

0.7 (2016-03-29)

  • 现在保留 attr 装饰器的顺序。

  • 现在将 attr 装饰器限制为单个参数。

  • 添加 List.of_type() 工厂以创建具有更少样板代码的列表。

0.6.1 (2015-02-23)

  • 修复了 NullableStringNone 的处理。

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_objectsync_instances

  • 添加update_objectupdate_file以强制同步。

  • 根据需要添加update以调用update_object和/或update_file

0.2.1 (2015-02-12)

  • 容器类型现在扩展其内置类型。

  • 添加具有默认值None的扩展类型None<Type>

  • 添加具有键作为属性的AttributeDictionary

  • 添加在转储时排序的SortedList

0.2 (2014-11-30)

  • 允许map_attrstore一起使用。

  • 允许将Dictionary容器用作属性。

  • 修复修改后的类的解析顺序。

  • 添加yorm.settings.fake选项以绕过文件系统。

0.1.1 (2014-10-20)

  • 修复示例中的错别字。

0.1 (2014-09-29)

  • 初始版本。

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源代码分发

YORM-1.6.2.tar.gz (40.1 kB 查看哈希值)

上传时间 源代码

构建分发

YORM-1.6.2-py3-none-any.whl (47.7 kB 查看哈希值)

上传时间 Python 3

支持者