Permite renderizar un SUBCONJUNTO de capítulos del informe AutomaticEDA
(only_chapters=[...]) para iterar/testear un capítulo concreto sin generar el
documento entero, garantizando que el capítulo pedido SIEMPRE llegue poblado.
- Nuevo módulo automatic_eda/chapter_deps.py: mapa central CHAPTER_DEPS (fuente
de verdad) que declara, por capítulo de CHAPTER_ORDER, qué flags de cómputo
(run_models/run_series/run_llm) y qué piezas de ctx (raw_numeric, timeseries_raw,
geo_points, head_rows, db_path/table) necesita para no salir degradado. Helpers
puros: resolve_requirements, resolve_profile_flags, needs_render_ctx,
resolve_ctx_data_keys, validate_chapter_ids.
- build_document(profile, ctx, only=None): parámetro only opcional que restringe
el cuerpo a esos capítulos (portada primera + glosario última siempre). Lee la
clave reservada ctx['_only_chapters'] cuando only es None, para propagar la
selección a través de los renderers sin modificarlos. Retrocompatible.
- render_automatic_eda(..., only_chapters=None): valida los ids (error claro
dict-no-throw), resuelve las dependencias activando el cómputo necesario aunque
el caller no lo pidiera (un flag explícito siempre prima) y construyendo solo
las piezas de ctx que los capítulos pedidos leen (salta build_eda_render_ctx
entero si ninguno necesita datos crudos). only_chapters=None produce el
documento completo idéntico al de hoy.
- Tests: chapter_deps_test.py (resolución pura), build_document_only_test.py
(filtro), render_automatic_eda_only_test.py (golden con DuckDB: outliers suelto
con IsolationForest poblado por resolución; timeseries activa run_series;
eficiencia geospatial sin modelos; edge cases).
- .md del pipeline: documenta only_chapters + emit_md; version 1.1.0 -> 1.2.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>