Qtoml
Another Python TOML encoder/decoder
Install / Use
/learn @alethiophile/QtomlREADME
DEPRECATION NOTE
qTOML is now deprecated. It will not be updated further.
In replacement for qTOML, I endorse the tomllib <https://docs.python.org/3/library/tomllib.html>_ standard library
module for Python 3.11+, or tomli <https://github.com/hukkin/tomli>_
for earlier versions. In either case, tomli-w <https://github.com/hukkin/tomli-w>_ is available for writing.
These libraries satisfy the use case I had for writing qTOML to begin with, making this version redundant.
qTOML
qtoml is another Python TOML encoder/decoder. I wrote it because I found uiri/toml too unstable, and PyTOML too slow.
For information concerning the TOML language, see toml-lang/toml <https://github.com/toml-lang/toml>_.
qtoml currently supports TOML v0.5.0.
Usage
qtoml is available on PyPI <https://pypi.org/project/qtoml/>_. You can install
it using pip:
.. code:: bash
$ pip install qtoml
qtoml supports the standard load/loads/dump/dumps API common to
most similar modules. Usage:
.. code:: pycon
import qtoml toml_string = """ ... test_value = 7 ... """ qtoml.loads(toml_string) {'test_value': 7} print(qtoml.dumps({'a': 4, 'b': 5.0})) a = 4 b = 5.0
infile = open('filename.toml', 'r') parsed_structure = qtoml.load(infile) outfile = open('new_filename.toml', 'w') qtoml.dump(parsed_structure, outfile)
TOML supports a fairly complete subset of the Python data model, but notably
does not include a null or None value. If you have a large dictionary from
somewhere else including None values, it can occasionally be useful to
substitute them on encode:
.. code:: pycon
print(qtoml.dumps({ 'none': None })) qtoml.encoder.TOMLEncodeError: TOML cannot encode None print(qtoml.dumps({ 'none': None }, encode_none='None')) none = 'None'
The encode_none value must be a replacement encodable by TOML, such as zero
or a string.
This breaks reversibility of the encoding, by rendering None values
indistinguishable from literal occurrences of whatever sentinel you chose. Thus,
it should not be used when exact representations are critical.
Development/testing
qtoml uses the poetry <https://github.com/sdispater/poetry>_ tool for project
management. To check out the project for development, run:
.. code:: bash
$ git clone --recurse-submodules https://github.com/alethiophile/qtoml $ cd qtoml $ poetry install
This assumes poetry is already installed. The package and dependencies will be installed in the currently active virtualenv if there is one, or a project-specific new one created if not.
qtoml is tested against the alethiophile/toml-test <https://github.com/alethiophile/toml-test>_ test suite, forked from uiri's
fork of the original by BurntSushi. To run the tests, after checking out the
project as shown above, enter the tests directory and run:
.. code:: bash
$ pytest # if you already had a virtualenv active $ poetry run pytest # if you didn't
License
This project is available under the terms of the MIT license.
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
