跳转到主要内容

基于文件的ORM,用于数据类。

项目描述

Datafiles:用于Python数据类的基于文件的ORM

Datafiles是一个双向序列化库,用于Python 数据类,通过使用类型注解将对象同步到文件系统。它支持多种文件格式,尽可能保留格式和注释。对象更改将自动保存到磁盘,并且只包括恢复每个对象所需的最小数据。

Linux Build Windows Build Code Coverage PyPI License PyPI Version PyPI Downloads Gitter

一些常见用例包括

  • 将用户可编辑的文件强制转换为正确的Python类型
  • 将程序配置和状态存储在版本控制中
  • 加载用于演示或测试目的的数据固定
  • 使用文件共享服务同步应用程序状态
  • 原型设计不依赖于持久化后端的数据模型

观看我的闪电演讲以查看此功能的演示!

概述

从文档中取一个现有的数据类,例如这个示例

from dataclasses import dataclass

@dataclass
class InventoryItem:
    """Class for keeping track of an item in inventory."""

    name: str
    unit_price: float
    quantity_on_hand: int = 0

    def total_cost(self) -> float:
        return self.unit_price * self.quantity_on_hand

并用目录模式装饰它以同步实例

from datafiles import datafile

@datafile("inventory/items/{self.name}.yml")
class InventoryItem:
    ...

然后,像平常一样处理类的实例

>>> item = InventoryItem("widget", 3)
# inventory/items/widget.yml

unit_price: 3.0

对象的更改将自动保存到文件系统

>>> item.quantity_on_hand += 100
# inventory/items/widget.yml

unit_price: 3.0
quantity_on_hand: 100

文件系统的更改将自动反映在对象中

# inventory/items/widget.yml

unit_price: 2.5 # <= manually changed from "3.0"
quantity_on_hand: 100
>>> item.unit_price
2.5

对象也可以从文件系统中恢复

>>> from datafiles import Missing
>>> item = InventoryItem("widget", Missing)
>>> item.unit_price
2.5
>>> item.quantity_on_hand
100

安装

直接将此库安装到激活的虚拟环境中

$ pip install datafiles

或将其添加到您的Poetry项目中

$ poetry add datafiles

文档

要查看更多的同步和格式化选项,请参阅完整文档

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源分发

datafiles-2.2.3.tar.gz (25.5 kB 查看哈希值)

上传时间

构建分发

datafiles-2.2.3-py3-none-any.whl (32.6 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面