Beancount v3: Was ist neu?
Beancount Version 3, Mitte 2024 veröffentlicht, markiert eine bedeutende architektonische Weiterentwicklung für das beliebte Klartext-Buchhaltungstool. Während es die Abwärtskompatibilität für Benutzer-Ledger-Dateien beibehält, wurden die zugrunde liegende Struktur und die begleitenden Tools erheblich verändert. Hier ist eine Übersicht über die Neuerungen in Beancount v3.
Eine modularere und schlankere Architektur
Die bedeutendste Änderung in Beancount v3 ist der Übergang zu einem modulareren Ökosystem. Mehrere Schlüsselfunktionalitäten, die zuvor im Kern gebündelt waren, wurden in separate, unabhängige Projekte ausgegliedert. Dies macht den Kern von Beancount schlanker und ermöglicht eine fokussiertere Entwicklung einzelner Komponenten.
Die wichtigsten Komponenten, die nun separate Pakete sind, umfassen:
- beanquery: Das leistungsstarke SQL-ähnliche Abfragetool für Ihre Ledger-Dateien ist jetzt in einem eigenen Paket.
- beangulp: Dies ist das neue Zuhause für das Datenimport-Framework und ersetzt das frühere Modul
beancount.ingest
. - beanprice: Ein dediziertes Tool zum Abrufen von Preisen für Rohstoffe und Aktien.
Diese Trennung bedeutet, dass Benutzer diese Pakete zusätzlich zu beancount
selbst installieren müssen, um die volle Funktionalität beizubehalten, die sie aus Version 2 gewohnt waren.
Änderungen an Befehlszeilen-Tools und Workflows
Die neue modulare Architektur spiegelt sich in einigen bemerkenswerten Änderungen an den Befehlszeilen-Tools wider:
bean-report
wurde entfernt: Dieses Tool wurde entfernt. Benutzer werden nun ermutigt,bean-query
(aus dembeanquery
-Paket) für ihre Berichterstellungsbedürfnisse zu verwenden.- Neuer Importer-Workflow: Die Befehle
bean-extract
undbean-identify
wurden aus dem Kern entfernt. Der neue Ansatz mitbeangulp
ist skriptbasiert. Benutzer werden nun ihre eigenen Python-Skripte erstellen, um den Import von Daten aus externen Quellen wie Kontoauszügen zu handhaben.
Syntax- und Funktionserweiterungen
Während die grundlegenden Buchhaltungsprinzipien gleich bleiben, führt Beancount v3 einige willkommene Flexibilität in seine Syntax ein:
- Flexiblere Währungscodes: Die früheren Einschränkungen bezüglich Länge und Zeichen für Währungsnamen wurden gelockert. Einzeichen-Währungssymbole werden nun unterstützt.
- Erweiterte Transaktions-Flags: Benutzer können nun jeden Großbuchstaben von A bis Z als Flag für Transaktionen verwenden, was eine granularere Kategorisierung ermöglicht.
Wichtig ist, dass diese Änderungen abwärtskompatibel sind, sodass Ihre bestehenden Beancount v2 Ledger-Dateien ohne Änderungen funktionieren werden.
Die C++-Neuentwicklung und Leistung
Eines der langfristigen Ziele für Beancount war eine Neuentwicklung seiner leistungskritischen Komponenten in C++. Während diese Arbeit noch im Gange ist, enthält die erste Veröffentlichung von Beancount v3 nicht den C++-basierten Kern. Dies bedeutet, dass die Leistung von v3 vorerst mit v2 vergleichbar ist. Der C++-Code verbleibt in einem separaten Entwicklungszweig für die zukünftige Integration.
Migration von v2 zu v3
Für die meisten Benutzer ist die Migration von Beancount v2 zu v3 relativ unkompliziert:
- Ledger-Dateien: Für Ihre
.beancount
-Dateien sind keine Änderungen erforderlich. - Installation: Sie müssen die neuen, separaten Pakete wie
beanquery
undbeangulp
mitpip
installieren. - Importer-Skripte: Wenn Sie benutzerdefinierte Importer haben, müssen Sie diese aktualisieren, um die neue
beangulp
-API zu verwenden. Dies beinhaltet hauptsächlich die Änderung der Basisklasse, von der Ihre Importer erben, und die Anpassung einiger Methodensignaturen. - Fava: Die beliebte Weboberfläche für Beancount, Fava, wurde aktualisiert, um mit v3 kompatibel zu sein. Stellen Sie sicher, dass Sie die neueste Version von Fava haben, um ein nahtloses Erlebnis zu gewährleisten.
Im Wesentlichen ist Beancount v3 eine grundlegende Veröffentlichung, die die Architektur des Projekts optimiert, sie modularer und langfristig einfacher zu warten und zu erweitern macht. Während es einige Anpassungen der Benutzer-Workflows erfordert, insbesondere beim Datenimport, ebnet es den Weg für die zukünftige Entwicklung dieses leistungsstarken Buchhaltungstools.