Modern CLI tool to parse, transform and convert between JSON, YAML and TOON formats
Project description
🎯 Tenty Parser
Tenty Parser es una herramienta CLI moderna para parsear, transformar y convertir entre diferentes formatos de datos estructurados: JSON, YAML y TOON (Token-Oriented Object Notation).
✨ Características
- 🔍 Parse múltiples formatos: JSON, YAML, TOON
- 🌳 Visualización en árbol de estructuras de datos
- 📊 Generación de schemas: JSON Schema y OpenAPI
- 🔄 Conversión entre formatos con un solo comando
- 🎨 Salida colorida con Rich
- ⚡ Optimizado para LLMs con formato TOON (30-60% reducción de tokens)
📦 Instalación
Requisitos previos
- Python 3.12+
- uv (recomendado) o pip
Con uv (recomendado)
# Clonar el repositorio
git clone https://github.com/Keniding/tenty-parser.git
cd tenty-parser
# Instalar dependencias
uv sync
# Ejecutar
uv run python -m src.cli --help
Con pip
# Clonar el repositorio
git clone https://github.com/Keniding/tenty-parser.git
cd tenty-parser
# Crear entorno virtual
python -m venv .venv
source .venv/bin/activate # En Windows: .venv\Scripts\activate
# Instalar dependencias
pip install -e .
# Ejecutar
python -m src.cli --help
🚀 Uso
Comandos principales
1. Parse - Analizar archivos
# Visualizar estructura en árbol
uv run python -m src.cli parse data.json
# Mostrar como JSON estructurado
uv run python -m src.cli parse data.json --format json
# Generar schema
uv run python -m src.cli parse data.json --format schema
# Convertir a TOON
uv run python -m src.cli parse data.json --format toon
# Guardar resultado
uv run python -m src.cli parse data.json --format toon -o output.toon
2. Convert - Convertir entre formatos
# JSON a TOON
uv run python -m src.cli convert input.json output.toon --to toon
# YAML a JSON
uv run python -m src.cli convert config.yaml config.json --to json
# JSON a YAML
uv run python -m src.cli convert data.json data.yaml --to yaml
# TOON a JSON
uv run python -m src.cli convert data.toon data.json --to json
3. Schema - Generar schemas
# Generar JSON Schema
uv run python -m src.cli schema data.json -o schema.json
# Generar OpenAPI Schema
uv run python -m src.cli schema data.json --format openapi -o openapi.json
# Con título personalizado
uv run python -m src.cli schema data.json --title "User API Schema"
4. Version - Ver versión
uv run python -m src.cli version
📖 Formato TOON
TOON (Token-Oriented Object Notation) es un formato optimizado para modelos de lenguaje que reduce el uso de tokens en 30-60%.
Características de TOON
- ✅ Arrays con tamaño explícito:
users[2]: - ✅ Formato tabular para objetos:
users[2]{id,name,role}: - ✅ Indentación en lugar de llaves
- ✅ Sin comillas innecesarias
Ejemplo de conversión
JSON original:
{
"user": {
"name": "John Doe",
"age": 30,
"tags": ["developer", "python", "rust"]
},
"posts": [
{
"id": 1,
"title": "Hello World",
"published": true
}
]
}
TOON equivalente:
user:
name: "John Doe"
age: 30
tags[3]: developer, python, rust
posts[1]{id,title,published}:
1,"Hello World",true
Reducción de tokens: ~45% menos tokens que JSON
🏗️ Estructura del proyecto
tenty-parser/
├── src/
│ ├── models/
│ │ └── structure.py # Modelos Pydantic
│ ├── parsers/
│ │ ├── json_parser.py # Parser JSON
│ │ ├── yaml_parser.py # Parser YAML
│ │ └── toon_parser.py # Parser TOON
│ ├── transformers/
│ │ ├── to_structure.py # Transformador a estructura
│ │ ├── to_toon.py # Transformador a TOON
│ │ └── to_schema.py # Generador de schemas
│ └── cli.py # Interfaz CLI
├── tests/ # Tests (próximamente)
├── pyproject.toml # Configuración del proyecto
├── README.md # Este archivo
├── LICENSE # Licencia personalizada
└── .gitignore # Archivos ignorados
🔧 Desarrollo
Configurar entorno de desarrollo
# Clonar repositorio
git clone https://github.com/Keniding/tenty-parser.git
cd tenty-parser
# Instalar en modo desarrollo
uv sync
# Ejecutar tests (próximamente)
uv run pytest
Agregar nuevas características
- Fork el proyecto
- Crea una rama:
git checkout -b feature/nueva-caracteristica - Commit cambios:
git commit -am 'Agregar nueva característica' - Push a la rama:
git push origin feature/nueva-caracteristica - Crea un Pull Request
📚 Ejemplos
Ejemplo 1: Analizar API Response
# Descargar respuesta de API
curl https://api.example.com/users > users.json
# Visualizar estructura
uv run python -m src.cli parse users.json
# Generar schema para documentación
uv run python -m src.cli schema users.json -o users-schema.json
# Convertir a TOON para usar con LLMs
uv run python -m src.cli convert users.json users.toon --to toon
Ejemplo 2: Convertir configuración
# Convertir YAML a JSON
uv run python -m src.cli convert config.yaml config.json --to json
# Ver estructura
uv run python -m src.cli parse config.json --format tree
Ejemplo 3: Workflow completo
# 1. Parse archivo original
uv run python -m src.cli parse data.json --format tree
# 2. Generar schema
uv run python -m src.cli schema data.json -o schema.json
# 3. Convertir a TOON para LLM
uv run python -m src.cli convert data.json data.toon --to toon
# 4. Convertir de vuelta a JSON
uv run python -m src.cli convert data.toon data-restored.json --to json
🎯 Casos de uso
Para desarrolladores
- 📝 Generar schemas automáticamente desde ejemplos
- 🔄 Convertir entre formatos de configuración
- 🔍 Explorar estructuras de datos complejas
- 📊 Documentar APIs
Para trabajar con LLMs
- ⚡ Reducir tokens en prompts (formato TOON)
- 📦 Estructurar datos de forma eficiente
- 🎯 Mejorar comprensión de estructuras por LLMs
Para análisis de datos
- 🌳 Visualizar jerarquías de datos
- 📋 Validar estructuras
- 🔄 Normalizar formatos
🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor:
- Lee las guías de contribución
- Abre un issue para discutir cambios grandes
- Escribe tests para nuevas características
- Mantén el estilo de código consistente
Nota: Al contribuir, aceptas que tus contribuciones se licencien bajo los mismos términos que este proyecto.
📄 Licencia
Este proyecto está bajo una Licencia Personalizada con los siguientes términos:
✅ Uso Personal y No Comercial
- LIBRE: Puedes usar, modificar y distribuir el software gratuitamente
- Requisito: Debes dar crédito al autor original (Keniding)
⚠️ Uso Comercial
- REQUIERE AUTORIZACIÓN: Contacta para obtener una licencia comercial
- Incluye: Compensación acordada y/o reconocimiento
📝 Reconocimiento Obligatorio
En cualquier uso del software, debes incluir:
Powered by Tenty Parser - Created by Keniding
https://github.com/Keniding/tenty-parser
Para más detalles, consulta el archivo LICENSE.
Para licencias comerciales, contacta a través de:
- GitHub: @Keniding
- Issues: tenty-parser/issues
🙏 Agradecimientos
- Rich - Beautiful terminal output
- Typer - CLI framework
- Pydantic - Data validation
- TOON Format - Inspiration
📞 Contacto
- Autor: Keniding
- GitHub: @Keniding
- Repositorio: tenty-parser
🗺️ Roadmap
- Tests unitarios completos
- Parser TOON más robusto
- Soporte para más formatos (XML, TOML)
- Validación de schemas
- API Python para uso programático
- Plugins para editores (VSCode)
- Documentación interactiva
⭐ Si te gusta este proyecto, dale una estrella en GitHub!
Powered by Tenty Parser - Created by Keniding
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tenty_parser-0.1.1.tar.gz.
File metadata
- Download URL: tenty_parser-0.1.1.tar.gz
- Upload date:
- Size: 30.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
273461dda0948943121ef158553f801de73aacf1303731d7dc832d6d4ea5c071
|
|
| MD5 |
2a7a054978a9a4ac8db599668a85dfe5
|
|
| BLAKE2b-256 |
7b27a0f6a84884ab52d4893791821358f5d237d8e2b0d103e84aed67b774c5d0
|
File details
Details for the file tenty_parser-0.1.1-py3-none-any.whl.
File metadata
- Download URL: tenty_parser-0.1.1-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f58a30d8f529b6448adf63e85d53b9aa80968b2ed39145b985bc7d834621dd02
|
|
| MD5 |
2adbd2c607cfd2921282d309ef434b5b
|
|
| BLAKE2b-256 |
703763a21681f1437b0cb3a8d1f3c73299e85b950a4afa0f09166d8f47e6744e
|