Beancount v3: ¿Qué hay de nuevo?
Beancount versión 3, lanzada a mediados de 2024, marca una evolución arquitectónica significativa para la popular herramienta de contabilidad de texto plano. Si bien mantiene la compatibilidad con versiones anteriores para los archivos de libro mayor del usuario, la estructura subyacente y las herramientas que la acompañan han experimentado cambios sustanciales. A continuación, se presenta un desglose de las novedades en Beancount v3.
Una Arquitectura Más Modular y Optimizada
El cambio más significativo en Beancount v3 es el paso a un ecosistema más modular. Varias funcionalidades clave que antes estaban incluidas en el núcleo se han escindido en proyectos separados e independientes. Esto hace que el núcleo de Beancount sea más ligero y permite un desarrollo más enfocado en componentes individuales.
Los componentes clave que ahora son paquetes separados incluyen:
- beanquery: La potente herramienta de consulta tipo SQL para sus archivos de libro mayor ahora está en su propio paquete.
- beangulp: Este es el nuevo hogar para el marco de importación de datos, reemplazando el antiguo módulo
beancount.ingest
. - beanprice: Una herramienta dedicada para obtener precios de materias primas y acciones.
Esta separación significa que los usuarios deberán instalar estos paquetes además de beancount
para conservar toda la funcionalidad a la que estaban acostumbrados en la versión 2.
Cambios en las Herramientas de Línea de Comandos y Flujos de Trabajo
Reflejando la nueva arquitectura modular, hay algunos cambios notables en las herramientas de línea de comandos:
bean-report
ha desaparecido: Esta herramienta ha sido eliminada. Ahora se anima a los usuarios a utilizarbean-query
(del paquetebeanquery
) para sus necesidades de informes.- Nuevo Flujo de Trabajo de Importación: Los comandos
bean-extract
ybean-identify
han sido eliminados del núcleo. El nuevo enfoque conbeangulp
se basa en scripts. Los usuarios ahora crearán sus propios scripts de Python para manejar la importación de datos de fuentes externas como extractos bancarios.
Mejoras de Sintaxis y Características
Si bien los principios contables fundamentales siguen siendo los mismos, Beancount v3 introduce una flexibilidad bienvenida en su sintaxis:
- Códigos de Moneda Más Flexibles: Las restricciones anteriores sobre la longitud y los caracteres para los nombres de las monedas se han flexibilizado. Ahora se admiten símbolos de moneda de un solo carácter.
- Banderas de Transacción Expandidas: Los usuarios ahora pueden usar cualquier letra mayúscula de la A a la Z como bandera para las transacciones, lo que permite una categorización más granular.
Es importante destacar que estos cambios son compatibles con versiones anteriores, por lo que sus archivos de libro mayor de Beancount v2 existentes funcionarán sin modificaciones.
La Reescritura en C++ y el Rendimiento
Uno de los objetivos a largo plazo para Beancount ha sido la reescritura de sus componentes críticos de rendimiento en C++. Si bien este trabajo está en curso, la versión inicial de Beancount v3 no incluye el núcleo basado en C++. Esto significa que, por ahora, el rendimiento de la v3 es comparable al de la v2. El código C++ permanece en una rama de desarrollo separada para futuras integraciones.
Migración de v2 a v3
Para la mayoría de los usuarios, la migración de Beancount v2 a v3 es relativamente sencilla:
- Archivos de Libro Mayor: No se necesitan cambios para sus archivos
.beancount
. - Instalación: Deberá instalar los nuevos paquetes separados como
beanquery
ybeangulp
usandopip
. - Scripts de Importación: Si tiene importadores personalizados, deberá actualizarlos para usar la nueva API de
beangulp
. Esto implica principalmente cambiar la clase base de la que heredan sus importadores y ajustar algunas firmas de métodos. - Fava: La popular interfaz web para Beancount, Fava, ha sido actualizada para ser compatible con v3. Asegúrese de tener la última versión de Fava para una experiencia sin problemas.
En esencia, Beancount v3 es una versión fundamental que optimiza la arquitectura del proyecto, haciéndola más modular y fácil de mantener y extender a largo plazo. Si bien requiere algunos ajustes en los flujos de trabajo del usuario, especialmente en torno a la importación de datos, sienta las bases para el desarrollo futuro de esta potente herramienta de contabilidad.