使用dataclasses读写TOML配置文件。
项目描述
Tosholi
Tosholi是一个简单的库,用于使用Python dataclasses读取和写入TOML配置文件。Tosholi意为解释或翻译,来自切克萨瓦和乔克托语。
安装
$ pip install tosholi
开始使用
将配置作为Python dataclass创建。配置dataclasses可以嵌套,但不能由TOML支持类型以外的类型组成。
考虑以下我们希望读取到dataclass中的config.toml
。(此示例基于toml.io)。
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00
[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
temp_targets = { cpu = 79.5, case = 72.0 }
[servers]
[servers.alpha]
ip = "10.0.0.1"
role = "frontend"
[servers.beta]
ip = "10.0.0.2"
role = "backend"
我们可以使用dataclasses描述配置格式。
from __future__ import annotations
import dataclasses
from datetime import datetime
@dataclasses.dataclass
class Owner:
name: str
dob: datetime.datetime
@dataclasses.dataclass
class Database:
enabled: bool
ports: list[int]
temp_targets: dict[str, float]
@dataclasses.dataclass
class Server:
ip: str
role: str
@dataclasses.dataclass
class Config:
title: str
owner: Owner
database: Database
servers: dict[str, Server]
然后可以使用Config
dataclass作为解析模板来读取配置文件。
with open('config.toml', 'rb') as f:
config = tosholi.load(Config, f)
同样,我们可以反向转换。可以使用tosholi.dumps()
将Config
实例转换为str
,或者使用tosholi.dump()
将其写入文件。
import tosholi
from datetime import tzinfo
config = Config(
title='TOML Example',
owner=Owner(
name='Tom Preston-Werner',
dob=datetime(1979, 5, 27, 7, 32, 0),
),
database=Database(
enabled=True,
ports=[8000, 8001, 8002],
temp_targets={'cpu': 79.5, 'case': 72.0},
),
servers={
'alpha': Server(ip='10.0.0.1', role='frontend'),
'beta': Server(ip='10.0.0.2', role='backend'),
}
)
with open('config.toml', 'wb') as f:
tosholi.dump(config, f)
开发
我们使用tox进行测试和pre-commit进行linting。使用以下命令开始本地开发:
$ tox --devenv venv -e py311
$ . venv/bin/activate
$ pre-commit install
或
$ python -m venv venv
$ . venv/bin/activate
$ pip install -e .[dev]
$ pre-commit install
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
tosholi-0.1.0.tar.gz (18.7 kB 查看哈希值)
构建分发版
tosholi-0.1.0-py3-none-any.whl (7.2 kB 查看哈希值)