跳转到主要内容

未提供项目描述

项目描述

rtoml

Actions Status Coverage pypi versions license

使用rust实现的更好的python toml库。

为什么使用rtoml

  • 正确性:rtoml基于广泛使用且非常稳定的toml-rs库,它通过了所有标准TOML测试,并且在python代码上拥有100%的覆盖率。我尝试过的其他python toml库都未能解析一些有效的TOML。
  • 性能:请参阅github.com/pwwang/toml-bench - 在撰写本文时,rtoml是Python TOML库中最快的。
  • None值处理:rtoml对None值有灵活的支持,而不是简单地忽略它们。

安装

需要 python>=3.7,Linux、macOS和Windows的二进制文件可以从pypi获取,请参阅这里

pip install rtoml

如果您系统配置的pypi上没有可用的二进制文件;您需要在安装rtoml之前安装rust稳定版。

使用

加载

def load(toml: Union[str, Path, TextIO], *, none_value: Optional[str] = None) -> Dict[str, Any]: ...

通过字符串或文件解析TOML并返回python字典。

  • toml:一个来自open()strPath或文件对象。
  • none_value:控制toml中的哪个值在Python中以None加载。默认情况下,none_valueNone,表示没有内容以None加载。

loads

def loads(toml: str, *, none_value: Optional[str] = None) -> Dict[str, Any]: ...

解析TOML字符串并返回一个Python字典。(提供以匹配json和类似库的接口)

  • toml:包含TOML的str
  • none_value:控制toml中的哪个值在Python中以None加载。默认情况下,none_valueNone,表示没有内容以None加载。

dumps

def dumps(obj: Any, *, pretty: bool = False, none_value: Optional[str] = "null") -> str: ...

将Python对象序列化为TOML。

  • obj:要序列化的Python对象。
  • pretty:如果为True,则输出具有更“美观”的格式。
  • none_value:控制objNone值的序列化方式。none_value=None表示忽略None值。

dump

def dump(
    obj: Any, file: Union[Path, TextIO], *, pretty: bool = False, none_value: Optional[str] = "null"
) -> int: ...

将Python对象序列化为TOML并将其写入文件。

  • obj:要序列化的Python对象。
  • file:一个来自open()Path或文件对象。
  • pretty:如果为True,则输出具有更“美观”的格式。
  • none_value:控制objNone值的序列化方式。none_value=None表示忽略None值。

示例

from datetime import datetime, timezone, timedelta
import rtoml

obj = {
    'title': 'TOML Example',
    'owner': {
        'dob': datetime(1979, 5, 27, 7, 32, tzinfo=timezone(timedelta(hours=-8))),
        'name': 'Tom Preston-Werner',
    },
    'database': {
        'connection_max': 5000,
        'enabled': True,
        'ports': [8001, 8001, 8002],
        'server': '192.168.1.1',
    },
}

loaded_obj = rtoml.load("""\
# This is a TOML document.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [8001, 8001, 8002]
connection_max = 5000
enabled = true
""")

assert loaded_obj == obj

assert rtoml.dumps(obj) == """\
title = "TOML Example"

[owner]
dob = 1979-05-27T07:32:00-08:00
name = "Tom Preston-Werner"

[database]
connection_max = 5000
enabled = true
server = "192.168.1.1"
ports = [8001, 8001, 8002]
"""

None-值处理的示例

obj = {
    'a': None,
    'b': 1,
    'c': [1, 2, None, 3],
}

# Ignore None values
assert rtoml.dumps(obj, none_value=None) == """\
b = 1
c = [1, 2, 3]
"""

# Serialize None values as '@None'
assert rtoml.dumps(obj, none_value='@None') == """\
a = "@None"
b = 1
c = [1, 2, "@None", 3]
"""

# Deserialize '@None' back to None
assert rtoml.load("""\
a = "@None"
b = 1
c = [1, 2, "@None", 3]
""", none_value='@None') == obj

项目详情


下载文件

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

源分发

rtoml-0.11.0.tar.gz (23.8 kB 查看哈希值)

上传时间

构建分发

rtoml-0.11.0-cp312-none-win_arm64.whl (218.4 kB 查看哈希值)

上传时间 CPython 3.12 Windows ARM64

rtoml-0.11.0-cp312-none-win_amd64.whl (226.7 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

rtoml-0.11.0-cp312-none-win32.whl (217.8 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86

rtoml-0.11.0-cp312-cp312-musllinux_1_1_x86_64.whl (512.1 kB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.1+ x86-64

rtoml-0.11.0-cp312-cp312-musllinux_1_1_aarch64.whl (526.4 kB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ ARM64

rtoml-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.1 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

rtoml-0.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (497.3 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ s390x

rtoml-0.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (372.5 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ ppc64le

rtoml-0.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (355.6 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARMv7l

rtoml-0.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (348.2 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

rtoml-0.11.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (352.0 kB 查看哈希)

上传于 CPython 3.12 manylinux: glibc 2.5+ i686

rtoml-0.11.0-cp312-cp312-macosx_11_0_arm64.whl (307.1 kB 查看哈希)

上传于 CPython 3.12 macOS 11.0+ ARM64

rtoml-0.11.0-cp312-cp312-macosx_10_12_x86_64.whl (315.1 kB 查看哈希)

上传于 CPython 3.12 macOS 10.12+ x86-64

rtoml-0.11.0-cp311-none-win_arm64.whl (222.2 kB 查看哈希)

上传于 CPython 3.11 Windows ARM64

rtoml-0.11.0-cp311-none-win_amd64.whl (230.6 kB 查看哈希)

上传于 CPython 3.11 Windows x86-64

rtoml-0.11.0-cp311-none-win32.whl (221.2 kB 查看哈希值)

上传于 CPython 3.11 Windows x86

rtoml-0.11.0-cp311-cp311-musllinux_1_1_x86_64.whl (512.1 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ x86-64

rtoml-0.11.0-cp311-cp311-musllinux_1_1_aarch64.whl (527.0 kB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ ARM64

rtoml-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.3 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

rtoml-0.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (498.6 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ s390x

rtoml-0.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (373.1 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ppc64le

rtoml-0.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (355.9 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARMv7l

rtoml-0.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (348.7 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

rtoml-0.11.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (352.3 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.5+ i686

rtoml-0.11.0-cp311-cp311-macosx_11_0_arm64.whl (307.6 kB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

rtoml-0.11.0-cp311-cp311-macosx_10_12_x86_64.whl (315.1 kB 查看哈希值)

上传于 CPython 3.11 macOS 10.12+ x86-64

rtoml-0.11.0-cp310-none-win_amd64.whl (230.7 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

rtoml-0.11.0-cp310-none-win32.whl (221.3 kB 查看哈希值)

上传于 CPython 3.10 Windows x86

rtoml-0.11.0-cp310-cp310-musllinux_1_1_x86_64.whl (512.3 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

rtoml-0.11.0-cp310-cp310-musllinux_1_1_aarch64.whl (527.4 kB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ ARM64

rtoml-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.4 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

rtoml-0.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (498.7 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ s390x

rtoml-0.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (373.2 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ppc64le

rtoml-0.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (355.9 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARMv7l

rtoml-0.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (348.9 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

rtoml-0.11.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (352.3 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.5+ i686

rtoml-0.11.0-cp310-cp310-macosx_11_0_arm64.whl (307.7 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

rtoml-0.11.0-cp310-cp310-macosx_10_12_x86_64.whl (315.2 kB 查看哈希值)

上传时间 CPython 3.10 macOS 10.12+ x86-64

rtoml-0.11.0-cp39-none-win_amd64.whl (231.5 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

rtoml-0.11.0-cp39-none-win32.whl (221.9 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86

rtoml-0.11.0-cp39-cp39-musllinux_1_1_x86_64.whl (513.0 kB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ x86-64

rtoml-0.11.0-cp39-cp39-musllinux_1_1_aarch64.whl (528.7 kB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ ARM64

rtoml-0.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.5 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

rtoml-0.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (499.6 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ s390x

rtoml-0.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (374.0 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ppc64le

rtoml-0.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (356.8 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARMv7l

rtoml-0.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (350.1 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

rtoml-0.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (353.2 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.5+ i686

rtoml-0.11.0-cp39-cp39-macosx_11_0_arm64.whl (308.4 kB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

rtoml-0.11.0-cp39-cp39-macosx_10_12_x86_64.whl (316.1 kB 查看哈希值)

上传时间 CPython 3.9 macOS 10.12+ x86-64

rtoml-0.11.0-cp38-none-win_amd64.whl (231.8 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

rtoml-0.11.0-cp38-none-win32.whl (222.0 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86

rtoml-0.11.0-cp38-cp38-musllinux_1_1_x86_64.whl (513.2 kB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.1+ x86-64

rtoml-0.11.0-cp38-cp38-musllinux_1_1_aarch64.whl (528.9 kB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.1+ ARM64

rtoml-0.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.8 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

rtoml-0.11.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (499.6 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ s390x

rtoml-0.11.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (374.3 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ppc64le

rtoml-0.11.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (356.9 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARMv7l

rtoml-0.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (350.2 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

rtoml-0.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (353.2 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.5+ i686

rtoml-0.11.0-cp38-cp38-macosx_11_0_arm64.whl (308.5 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

rtoml-0.11.0-cp38-cp38-macosx_10_12_x86_64.whl (316.1 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.12+ x86-64

支持者: