
Security News
New CVE Forecasting Tool Predicts 47,000 Disclosures in 2025
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
A better TOML library for python implemented in rust.
None
-value handling: rtoml has flexible support for None
values, instead of simply ignoring them.Requires python>=3.9
, 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 stable installed before you can install rtoml.
def load(toml: Union[str, Path, TextIO], *, none_value: Optional[str] = None) -> Dict[str, Any]: ...
Parse TOML via a string or file and return a python dictionary.
toml
: a str
, Path
or file object from open()
.none_value
: controlling which value in toml
is loaded as None
in python. By default, none_value
is None
, which means nothing is loaded as None
def loads(toml: str, *, none_value: Optional[str] = None) -> Dict[str, Any]: ...
Parse a TOML string and return a python dictionary. (provided to match the interface of json
and similar libraries)
toml
: a str
containing TOML.none_value
: controlling which value in toml
is loaded as None
in python. By default, none_value
is None
, which means nothing is loaded as None
def dumps(obj: Any, *, pretty: bool = False, none_value: Optional[str] = "null") -> str: ...
Serialize a python object to TOML.
obj
: a python object to be serialized.pretty
: if True
the output has a more "pretty" format.none_value
: controlling how None
values in obj
are serialized. none_value=None
means None
values are ignored.def dump(
obj: Any, file: Union[Path, TextIO], *, pretty: bool = False, none_value: Optional[str] = "null"
) -> int: ...
Serialize a python object to TOML and write it to a file.
obj
: a python object to be serialized.file
: a Path
or file object from open()
.pretty
: if True
the output has a more "pretty" format.none_value
: controlling how None
values in obj
are serialized. none_value=None
means None
values are ignored.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]
"""
An example of None
-value handling:
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
FAQs
Unknown package
We found that rtoml demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.