Skip to main content

Declarative JSON-to-JSON transformation engine with a built-in template language

Project description

catnose

Motor de transformación declarativa de JSON con lenguaje de plantillas integrado.

Instalación

pip install catnose

Uso rápido

API

from catnose import transform

items = [{"id": 1, "first_name": "Ana", "role": "admin"}]

mapper = {
  "id":   "id",
  "name": "first_name",
  "role": {
    "_cases": {
      "admin": "Administrador",
      "user":  "Usuario",
      "_default": "Otro"
    }
  },
  "label": {"_value": "{{ name }} ({{ role }})"}
}

result = transform(items, mapper)
# [{"id": 1, "name": "Ana", "role": "Administrador", "label": "Ana (Administrador)"}]

CLI

catnose input.json transform.json
catnose input.json transform.json -o output.json

Formato del mapeador

El JSON transformado parte de un objeto vacío; sólo se incluyen los campos declarados explícitamente. El JSON original actúa como contexto de evaluación junto con los campos ya calculados (en orden de definición).

{
  "<campo_destino>": "<campo_origen>",
  "<campo_destino>": {
    "_name":   "<campo_origen>",
    "_cases":  {"v1": "nuevo_v1", "_default": "<por_defecto>"},
    "_value":  "cadena con {{ expr }}"
  },
  "<campo_lista>": {
    "<sub_campo>": {
      "_name":  "<campo_origen>",
      "_cases": {"v1": "nv1"},
      "_value": "{{ expr }}"
    }
  }
}
Clave Descripción
"<campo>": "<origen>" Shorthand — copia el valor de <origen> del JSON original
_name Campo fuente en el JSON original (por defecto: la clave del mapper)
_cases Tabla de sustitución de valores; _default se usa si no hay coincidencia
_value Plantilla evaluada con el motor de expresiones

Un mapping dict sin ninguna clave de control (_name, _cases, _value) se trata como lista de objetos, aplicando los sub-mapeos a cada elemento.

Motor de plantillas

Las expresiones _value usan la sintaxis {{ expr }} con evaluación Python completa. También se soportan bloques {% for %}, {% if %} / {% else %} / {% endif %}:

{
  "summary": {"_value": "{{ title.upper() }} — {{ cwss_score }} puntos"},
  "tags":    {"_value": "{% for t in tags %}[{{ t }}]{% endfor %}"}
}

El contexto de evaluación incluye:

  • Todos los campos del JSON original
  • Los campos ya calculados por mappings anteriores (en orden)
  • rownum (1..N, posición del elemento en el array)

Para campos de tipo lista, el contexto incluye además los campos de cada elemento de la lista.

Licencia

MIT

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

catnose-0.1.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

catnose-0.1.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file catnose-0.1.0.tar.gz.

File metadata

  • Download URL: catnose-0.1.0.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for catnose-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8bcc6700548671fa40ef4e20a2d7c13cc67f913544b0f359143f929ff98405be
MD5 8848f29c0f2226b04141bf2234c13da0
BLAKE2b-256 59e63810248c61ad5fc1c8defaa89c474559849fa01abb26f8901e77fec8f147

See more details on using hashes here.

File details

Details for the file catnose-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: catnose-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for catnose-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b0551912a02fc32f52cd208490fd00154e4e483dd8365a9cbf3b3f89b548ac09
MD5 da18c13d1df00336806568d1aaeb2ba3
BLAKE2b-256 5415458eb8839faea83ee9fe98e0a85ca6caa888558c987b65d6cce1267b7780

See more details on using hashes here.

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