Skip to main content

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

Project description

catslap

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-1.0.0.tar.gz (204.2 kB view details)

Uploaded Source

Built Distribution

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

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for catnose-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7c1919e24ec4396f4dd8b70d3f1a7127ea462103fc9b777895560700621ec7a9
MD5 27c70e9e003f85077d23fb493131a737
BLAKE2b-256 37691227a3167a29d2b50022a8b31e5661fba02e4a0a745202c2f4072a8f00b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: catnose-1.0.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-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3af3fe3c2518f59f9887050aea316f6fd10835204c9d079e07e86d850a206d72
MD5 b0e892d1bcc835d820e598becfa0bbc7
BLAKE2b-256 0e4790a3cfd05cd92b5d426cb0e67f8e7e5b3eda9fb450f1649c50887c6de45d

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