A better TOML library for python implemented in rust.
Project description
rtoml
A better TOML library for python implemented in rust.
Why Use rtoml
- Correctness: rtoml is based on the widely used and very stable toml-rs library, it passes all the standard TOML tests as well as having 100% coverage on python code. Other TOML libraries for python I tried all failed to parse some valid TOML.
- Performance: see benchmarks - rtoml is much faster than other TOML libraries for python.
Install
Requires python>=3.7
, binaries are available from pypi for linux, macos and windows,
see here.
pip install rtoml
If no binary is available on pypi for you system configuration; you'll need rust nightly and
setuptools-rust
installed before you can 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, *, pretty: bool = False) -> str: ...
Serialize a python object to TOML.
If pretty
is true, output has a more "pretty" format.
dump
def dump(obj: Any, file: Union[Path, TextIO], *, pretty: bool = False) -> int: ...
Serialize a python object to TOML and write it to a file. file
may be a Path
or file object from open()
.
If pretty
is true, output has a more "pretty" format.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for rtoml-0.4.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cca2b1330404c98f6f49fe68bcb6b47ac4d49b36f876bdf60a651f5b3858a7d1 |
|
MD5 | cda1065c031a84533c68c1d6aeaedfc6 |
|
BLAKE2b-256 | e259026d3957112428ebfae69f4d1125a50b368b0f70e194e53a9b0c30e252c7 |
Hashes for rtoml-0.4.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f49956d4d7ba4be14d78ddf55de551691f5fafa237a208513e0664a2940ebf98 |
|
MD5 | 050b740173209f770d9dc92db5ff9299 |
|
BLAKE2b-256 | 232bebf7ca512a6cdbd85604e7977f6cb1bc3755e642eaea373f0ecbe85e0d18 |
Hashes for rtoml-0.4.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92d47a5bae68ae2f21665560cf7a715aecb2da9950a1801e8a815db8a5acc0b9 |
|
MD5 | 0d7d7927771a1deabeb72990958904ef |
|
BLAKE2b-256 | e8477640d3eff9bc17a25d0b5e2e68f608f47b616a9317523170041948f6339e |
Hashes for rtoml-0.4.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 261a5fe883213a68d99113f79cf3b74ce51173813bbffb81e886959bda266535 |
|
MD5 | 42cf473d0b183e41c5424fc430766687 |
|
BLAKE2b-256 | 0f10619e447f67cc313c4177ddf714b4c9f76dc9f1d6e2af7ec919173b35a597 |
Hashes for rtoml-0.4.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2042f0ea3e928bd8667af213adbab7a8140b63a5abb418f931e26a0c37d558fd |
|
MD5 | 0e6d79a4dce4d5baa686ecf30ec0cf44 |
|
BLAKE2b-256 | fb215cb638b216fb59433627d1e8fdff5a0bc5328343f61fa9e61adfa13909a7 |
Hashes for rtoml-0.4.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ffb5d24a941f75118d78e2399a0d274254cede08270bbba6ca38f58906da7f40 |
|
MD5 | 3a4bd2e52cff85d60adbd29b54761cd3 |
|
BLAKE2b-256 | ed3e033f51d41d735e5e2aecff6b189d8d80dbdd382b0058803ee3768ef67b30 |
Hashes for rtoml-0.4.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5f0fd5a1ad35be907c4db28cf7072f4a54446d932fb2e8fb090f0a17b51678f |
|
MD5 | c0f93d52ddd88b0330d3a4d355395286 |
|
BLAKE2b-256 | be9983c739d7f43720aa7bc2fe8d33dd7a6b7d80a8563e20aea45c4c1bd1fea1 |
Hashes for rtoml-0.4.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0806153c510cb5e27e7e8e7e14949a2cebc4f4343438ebd99442ea0034cd341d |
|
MD5 | aad3e2bb69b4e86c5f4b7f83c6bca5f4 |
|
BLAKE2b-256 | ee3598da71e17f8e99edd0fb2ddc294e9bb88c01e8d3b5a5fc1b5a1eb3421507 |
Hashes for rtoml-0.4.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 587fdb142a870dfad9cf5a1cd7bf8abd78e1a188e65fba5e5f9eb874cc0cd1db |
|
MD5 | 3b0f878b21c1fc363995ac1e5bbd6a96 |
|
BLAKE2b-256 | 2eb4a74d73f7c74296fb2e8b904b2290e7804cb46137466a01f68ef462605030 |
Hashes for rtoml-0.4.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 337755c7928eb1254c6d2dcb232cee1fab4e53fa519cd245ab97d86b27008fce |
|
MD5 | 6a0b8b2b7a4132d24aab24659b5d0148 |
|
BLAKE2b-256 | 4fb1aaf62e277cbbd1bcf9ed58b8ddccf6802bfa8822661282624e467c93b970 |
Hashes for rtoml-0.4.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a4881c0f8ed108a097d1b735e5d3c780396a53fe36b7ee8d318d7911052c08b |
|
MD5 | 8533d97f076ac53c4bc323487ba43934 |
|
BLAKE2b-256 | d0621d62178ecfbd70cf20305f7b57811eb2c5a4c3f6756a5dd83d8e7b47a3bd |
Hashes for rtoml-0.4.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6dc37b87e34be68f8ae08b3e471e1aff1d254a40db04ff5b39d5110753dcc584 |
|
MD5 | 05ceb503a43325d48947eab43f78309e |
|
BLAKE2b-256 | e62bb976ed11e6ee4df3f7ab3a3e965e50c2ce2e598c88719b806881a7ffe00b |
Hashes for rtoml-0.4.0-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | deb699145ba100e620f0119a3d73362f83e05a144081aef213bef865eab78137 |
|
MD5 | b7504ff33d65b46a827dca66e27beff8 |
|
BLAKE2b-256 | 692744b52304ac7df4cec24b48f2ea01f8a5cb3c61d4582456d920e284184eec |