| :mod:`tomllib` --- Parse TOML files |
| =================================== |
| |
| .. module:: tomllib |
| :synopsis: Parse TOML files. |
| |
| .. versionadded:: 3.11 |
| |
| .. moduleauthor:: Taneli Hukkinen |
| .. sectionauthor:: Taneli Hukkinen |
| |
| **Source code:** :source:`Lib/tomllib` |
| |
| -------------- |
| |
| This module provides an interface for parsing TOML (Tom's Obvious Minimal |
| Language, `https://toml.io <https://toml.io/en/>`_). This module does not |
| support writing TOML. |
| |
| .. seealso:: |
| |
| The `Tomli-W package <https://pypi.org/project/tomli-w/>`__ |
| is a TOML writer that can be used in conjunction with this module, |
| providing a write API familiar to users of the standard library |
| :mod:`marshal` and :mod:`pickle` modules. |
| |
| .. seealso:: |
| |
| The `TOML Kit package <https://pypi.org/project/tomlkit/>`__ |
| is a style-preserving TOML library with both read and write capability. |
| It is a recommended replacement for this module for editing already |
| existing TOML files. |
| |
| |
| This module defines the following functions: |
| |
| .. function:: load(fp, /, *, parse_float=float) |
| |
| Read a TOML file. The first argument should be a readable and binary file object. |
| Return a :class:`dict`. Convert TOML types to Python using this |
| :ref:`conversion table <toml-to-py-table>`. |
| |
| *parse_float* will be called with the string of every TOML |
| float to be decoded. By default, this is equivalent to ``float(num_str)``. |
| This can be used to use another datatype or parser for TOML floats |
| (e.g. :class:`decimal.Decimal`). The callable must not return a |
| :class:`dict` or a :class:`list`, else a :exc:`ValueError` is raised. |
| |
| A :exc:`TOMLDecodeError` will be raised on an invalid TOML document. |
| |
| |
| .. function:: loads(s, /, *, parse_float=float) |
| |
| Load TOML from a :class:`str` object. Return a :class:`dict`. Convert TOML |
| types to Python using this :ref:`conversion table <toml-to-py-table>`. The |
| *parse_float* argument has the same meaning as in :func:`load`. |
| |
| A :exc:`TOMLDecodeError` will be raised on an invalid TOML document. |
| |
| |
| The following exceptions are available: |
| |
| .. exception:: TOMLDecodeError |
| |
| Subclass of :exc:`ValueError`. |
| |
| |
| Examples |
| -------- |
| |
| Parsing a TOML file:: |
| |
| import tomllib |
| |
| with open("pyproject.toml", "rb") as f: |
| data = tomllib.load(f) |
| |
| Parsing a TOML string:: |
| |
| import tomllib |
| |
| toml_str = """ |
| python-version = "3.11.0" |
| python-implementation = "CPython" |
| """ |
| |
| data = tomllib.loads(toml_str) |
| |
| |
| Conversion Table |
| ---------------- |
| |
| .. _toml-to-py-table: |
| |
| +------------------+--------------------------------------------------------------------------------------+ |
| | TOML | Python | |
| +==================+======================================================================================+ |
| | table | dict | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | string | str | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | integer | int | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | float | float (configurable with *parse_float*) | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | boolean | bool | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | offset date-time | datetime.datetime (``tzinfo`` attribute set to an instance of ``datetime.timezone``) | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | local date-time | datetime.datetime (``tzinfo`` attribute set to ``None``) | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | local date | datetime.date | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | local time | datetime.time | |
| +------------------+--------------------------------------------------------------------------------------+ |
| | array | list | |
| +------------------+--------------------------------------------------------------------------------------+ |