Style preserving TOML library
Project description
TOML Kit - Style-preserving TOML library for Python
TOML Kit is a TOML library.
It includes a parser that preserves all comments, indentations, whitespace and internal element ordering, and makes accessible and editable via an intuitive API.
You can also create a new TOML document from scratch using the provided helpers.
Usage
Parsing
TOML Kit comes with a fast an style-preserving parser to help you access the content of TOML files and strings.
from tomlkit import dumps
from tomlkit import parse # you can also use loads
content = """[table]
foo = "bar" # String
"""
doc = parse(content)
# doc is a TOMLDocument instance that holds all the information
# about the TOML string.
# It behaves like a standard dictionary.
assert doc["table"]["foo"] == "bar"
# The string generated from the document is exactly the same
# as the original string
assert dumps(doc) == content
Modifying
TOML Kit provides an intuitive API to modify TOML documents.
from tomlkit import dumps
from tomlkit import parse
from tomlkit import table
doc = parse("""[table]
foo = "bar" # String
""")
doc["table"]["baz"] = 13 # Setting element by keys is possible
dumps(doc)
"""[table]
foo = "bar" # String
baz = 13
"""
# Add a new table
tab = table()
tab.add("array", [1, 2, 3])
doc["table2"] = tab
dumps(doc)
"""[table]
foo = "bar" # String
baz = 13
[table2]
array = [1, 2, 3]
"""
# Remove the newly added table
doc.remove("table2")
# del doc["table2] is also possible
Writing
You can also write a new TOML document from scratch.
Let's say we want to create this following document:
# This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # First class dates? Why not?
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
It can be created with the following code:
from tomlkit import comment
from tomlkit import document
from tomlkit import nl
from tomlkit import table
doc = document()
doc.add(comment("This is a TOML document."))
doc.add(nl())
doc.add("title", "TOML Example")
# Using doc["title"] = "TOML Example" is also possible
owner = table()
owner.add("name", "Tom Preston-Werner")
owner.add("organization", "GitHub")
owner.add("bio", "GitHub Cofounder & CEO\\nLikes tater tots and beer.")
dob = owner.add("dob", datetime(1979, 5, 27, 7, 32, tzinfo=utc))
dob.comment("First class dates? Why not?")
# Adding the table to the document
doc.add("owner", owner)
database = table()
database["server"] = "192.168.1.1"
database["ports"] = [8001, 8001, 8002]
database["connection_max"] = 5000
database["enabled"] = True
doc["database"] = database
Installation
If you are using poetry,
add tomlkit
to you pyproject.toml
file by using:
poetry add tomlkit
If not, you can use pip
:
pip install tomlkit
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 Distribution
Hashes for tomlkit-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94512668d8138513036781626d521b4629cad6baffe7ac9a504f14c3359ad5e9 |
|
MD5 | cfbefda88872156af36df38c0ebdd03c |
|
BLAKE2b-256 | 621ad47efe5a7cce6cd835946885ee02596acfca81de7602c1e3efe92ba61443 |