Python:
Trabajando con TOML

Cómo:

Antes de sumergirnos, instala el paquete toml con pip install toml. Vamos a analizar un archivo TOML:

import toml

# Ejemplo de contenido TOML como una cadena
toml_string = """
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00Z # Fechas de primera clase

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
"""

# Analizar la cadena TOML
parsed_toml = toml.loads(toml_string)

# Acceder a los datos
print(parsed_toml['owner']['name'])  # Salida: Tom Preston-Werner
print(parsed_toml['database']['ports'])  # Salida: [8001, 8001, 8002]

Profundización

TOML fue creado por Tom Preston-Werner, uno de los fundadores de GitHub, como un formato de archivo de configuración más amigable para el usuario. Está diseñado para mapear de manera no ambigua a una tabla hash y ser fácilmente analizable por máquinas.

Comparado con JSON, TOML es más legible para archivos de configuración y admite comentarios. YAML, otra alternativa, puede ser más compacto, pero su dependencia de la indentación y problemas sutiles, como la prohibición de tabulaciones, pueden confundir a las personas.

En cuanto a los detalles de implementación, los valores TOML están tipados, lo que incluye cadenas, enteros, flotantes, booleanos, fechas y horas, arreglos y tablas. Todo es sensible a mayúsculas y minúsculas. Además, TOML admite cadenas de múltiples líneas y, a partir de la última versión, incluso permite arreglos de tipos heterogéneos.

Python utiliza la biblioteca toml, la cual se asemeja a las bibliotecas JSON y YAML en términos de API. Tienes toml.load y toml.loads para leer TOML de un archivo o una cadena, respectivamente, y toml.dump y toml.dumps para escribirlo.

Ver También

  • El repositorio oficial de TOML en GitHub para especificaciones: github.com/toml-lang/toml
  • La documentación de la biblioteca toml de Python: pypi.org/project/toml/
  • Ejemplos del mundo real de TOML: Archivos de configuración para el administrador de paquetes de Rust cargo o la herramienta de empaquetado de Python poetry.