Apéndice · Entorno reproducible de referencia
Este apéndice fija el entorno con el que se ejecuta todo el código del libro, de modo que cualquier cifra marcada como medida sea reproducible.
Gestor de proyecto y dependencias
Se usa uv (Astral). Para clonar el entorno exacto del libro:
uv sync # instala las versiones EXACTAS del uv.lock
uv run python src/cap07_numpy.py # ejecuta dentro del entornoLas versiones se declaran con rango en pyproject.toml y se congelan en uv.lock (versión exacta y hash de cada dependencia del árbol completo).
Bibliotecas usadas (versiones de referencia).
Todo el código de esta edición se ejecutó y verificó sobre CPython 3.11.14 con las siguientes versiones, recogidas también en requirements-lock.txt:
| Biblioteca | Versión |
|---|---|
| NumPy | 2.3.3 |
| pandas | 2.3.3 |
| polars | 1.42.1 |
| PyArrow | 22.0.0 |
| SciPy | 1.17.1 |
| scikit-learn | 1.7.2 |
| matplotlib | 3.10.7 |
| pandera | 0.32.1 |
| hypothesis | 6.155.7 |
| DuckDB | 1.5.4 |
Registrar las versiones exactas no es un formalismo: una cifra medida solo es reproducible si se sabe con qué versión de cada biblioteca se obtuvo, porque el comportamiento puede cambiar entre versiones.
Semillas y determinismo
Toda medición fija la semilla del generador antes de usarlo:
import numpy as np
rng = np.random.default_rng(2026) # generador con semilla fija
Las medidas de tiempo de reloj (latencias) se reportan por su cociente o su orden de magnitud, no por su valor absoluto, que depende de la máquina. Antes de citar una cifra de tiempo se re-ejecuta la medición y se comprueba que el cociente es estable.