Skip to main content

A better TOML library for python implemented in rust.

Project description

rtoml

A better TOML library for python implemented in rust.

Install

Requires linux and python>=3.7.

pip install rtoml

Usage

load

def load(toml: Union[str, Path, TextIO]) -> Any: ...

Parse TOML via a string or file and return a python object. The toml argument may be a str, Path or file object from open().

loads

def loads(toml: str) -> Any: ...

Parse a TOML string and return a python object. (provided to match the interface of json and similar libraries)

dumps

def dumps(obj: Any) -> str: ...

Serialize a python object to TOML.

dump

def dump(obj: Any, file: Union[Path, TextIO]) -> int: ...

Serialize a python object to TOML and write it to a file. file may be a Path or file object from open().

Example

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]
"""

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rtoml-0.2.0.tar.gz (6.2 kB view hashes)

Uploaded Source

Built Distributions

rtoml-0.2.0-cp38-cp38-manylinux2010_x86_64.whl (826.9 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

rtoml-0.2.0-cp38-cp38-manylinux2010_i686.whl (901.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

rtoml-0.2.0-cp38-cp38-manylinux1_x86_64.whl (826.9 kB view hashes)

Uploaded CPython 3.8

rtoml-0.2.0-cp38-cp38-manylinux1_i686.whl (901.7 kB view hashes)

Uploaded CPython 3.8

rtoml-0.2.0-cp37-cp37m-manylinux2010_x86_64.whl (827.0 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

rtoml-0.2.0-cp37-cp37m-manylinux2010_i686.whl (901.8 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

rtoml-0.2.0-cp37-cp37m-manylinux1_x86_64.whl (827.0 kB view hashes)

Uploaded CPython 3.7m

rtoml-0.2.0-cp37-cp37m-manylinux1_i686.whl (901.8 kB view hashes)

Uploaded CPython 3.7m

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page