Closed Asmilex closed 2 years ago
Creo que está casi todo listo. A falta de loggear más eventos, creo que debería estar finiquitado.
Los revisores que me han tocado han sido @joaquingv12 @modejota @alexespana. ¿Os importaría echarle un ojillo, porfa?
Decisiones técnicas
Esta sección se mergeará más tarde en la wiki.
Para el archivo de configuración se ha decidido optar por toml. Dado que Poetry usa toml por debajo, necesitamos instalar de todas formas esta dependencia. Por tanto, aprovecharemos para almacenar la configuración de Vin en este formato. En general, este tipo de archivos presentan un buen punto medio en la escala de complejidad, siendo JSON uno de los más sencillos y YAML uno de los más potentes. Podríamos haber considerado YAML, pero debido al anterior motivo, no merece la pena añadir otra dependencia más. No necesitamos cargar estructuras complejas, así que prescindimos directamente de YAML. Otra opción sería utilizar variables de entorno. Sin embargo, no he sido capaz de determinar ventajas. Creo que,
No es una opción. Tienes que usarlas sí o sí, porque no hay otra forma de configurar en entornos de CI/CD.
Tendrías que darle una vueltecilla. Ánimo.
A falta de actualizar el contenedor de los tests, creo que está todo listo.
Sigues con el problema de usar un logger global. Deberías crear una instancia.
Vale, creo que ahora sí que debería estar. He utilizado el patrón de diseño de Borg, que parece que funciona bien en este caso. Ahora los logs solo se invocan con el .get(config)
, lo cual debería solventar los problemas anteriores.
Decisiones técnicas
Esta sección se mergeará más tarde en la wiki.
Para el archivo de configuración se ha decidido optar por toml. Dado que Poetry usa toml por debajo, necesitamos instalar de todas formas esta dependencia. Por tanto, aprovecharemos para almacenar la configuración de Vin en este formato. En general, este tipo de archivos presentan un buen punto medio en la escala de complejidad, siendo JSON uno de los más sencillos y YAML uno de los más potentes. Podríamos haber considerado YAML, pero debido al anterior motivo, no merece la pena añadir otra dependencia más. No necesitamos cargar estructuras complejas, así que prescindimos directamente de YAML. Para la configuración del entorno se utiliza el archivo
.env
. La clase de configuración se encargará de cargarlas automáticamente si detecta un archivo válido.Para el logging usaremos loguru. Aunque al principio se usó la biblioteca logging de python, loguru aporta un par de ventajas. En primer lugar, configurarlo es mucho más sencillo. Es un logger pensado para la simpleza. Además, permite recoger errores con un simple decoradores, que no alteran la capa de abstracción (principio open - closed). Por último, ofrece salida coloreada a terminal. Aunque es únicamente un detalle visual, ayuda a identificar errores.
Este PR también soluciona un par de problemas menores en el contenedor de Docker.
Lista de comprobación
.env
no se pueda añadir accidentalente al repositorio?