Skip to main content

A format-preserving TOML parser and writer for Python.

Project description

tomlrt

PyPI Python versions License CI

A format-preserving TOML parser and writer for Python.

Usage

import tomlrt

# Files must be opened in binary mode.
with open("pyproject.toml", "rb") as f:
    doc = tomlrt.load(f)

doc["project"]["version"] = "0.2.0"
doc["project"]["dependencies"].append("requests>=2")

print(tomlrt.dumps(doc))   # comments and layout are preserved

Structural assignment

A plain dict value installs as an inline table; a plain list installs as an inline array. To pick a different shape, assign a flavoured value:

from tomlrt import AoT, Array, Table

doc["tool"] = Table.section({"version": 1})      # [tool] section
doc["xy"]   = {"x": 1, "y": 2}                   # xy = { x = 1, y = 2 }
doc["pkgs"] = AoT([{"a": 1}, {"b": 2])           # [[pkgs]] … [[pkgs]]
doc["tags"] = Array(["a", "b"], multiline=True)  # multi-line array

Use doc.install(path, value) for dotted-path placement, or pass a tuple to escape keys that contain a literal .:

doc.install("tool.poetry", Table.section({"name": "x"}))  # [tool.poetry]
doc.install(("weird.key",), 1)                            # "weird.key" = 1

Comment API

doc = tomlrt.loads("""
[server]
host = "localhost"  # default
port = 8080
""")

server = doc.table("server")
server.comments["port"] = "override with $PORT"
server.comments["host"] = None         # clear

print(tomlrt.dumps(doc))
# [server]
# host = "localhost"
# port = 8080 # override with $PORT

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

tomlrt-0.3.0.tar.gz (122.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tomlrt-0.3.0-py3-none-any.whl (55.5 kB view details)

Uploaded Python 3

File details

Details for the file tomlrt-0.3.0.tar.gz.

File metadata

  • Download URL: tomlrt-0.3.0.tar.gz
  • Upload date:
  • Size: 122.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tomlrt-0.3.0.tar.gz
Algorithm Hash digest
SHA256 667ec12f98a179d46ccc706599f2e4a543aaacd55c0998fef3e2e0ed78727ac1
MD5 c2b08b896716321102c341c0b97ca065
BLAKE2b-256 7e82b6b4949b2f4a5f003ad06f21de9057bfd100783f21a0fe1d1c77c503d275

See more details on using hashes here.

Provenance

The following attestation bundles were made for tomlrt-0.3.0.tar.gz:

Publisher: publish.yml on dimbleby/tomlrt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tomlrt-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: tomlrt-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 55.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tomlrt-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43066a6d7d1c3d9548f377dc54b5e343ec6bb97feec2cf494c4c0788c7a2bc01
MD5 cce48ac3e555ce2473d0fbf9b91faa53
BLAKE2b-256 d8debf03da3f15b2489e088cfcc69fbc802489070da4b3d0d11e96d14300e5a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tomlrt-0.3.0-py3-none-any.whl:

Publisher: publish.yml on dimbleby/tomlrt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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