Beancount v3: Какво е новото?
Beancount версия 3, пусната в средата на 2024 г., отбелязва значителна архитектурна еволюция за популярния инструмент за счетоводство в обикновен текст. Въпреки че поддържа обратна съвместимост за потребителските файлове с регистри, основната структура и придружаващите инструменти са претърпели съществени промени. Ето преглед на новостите в Beancount v3.
По-модулна и оптимизирана архитектура
Най-значителната промяна в Beancount v3 е преминаването към по-модулна екосистема. Няколко ключови функционалности, които преди това бяха пакетирани с ядрото, са отделени в самостоятелни, независими проекти. Това прави ядрото на Beancount по-леко и позволява по-фокусирано развитие на отде лни компоненти.
Ключовите компоненти, които сега са отделни пакети, включват:
- beanquery: Мощният SQL-подобен инструмент за заявки за вашите файлове с регистри вече е в собствен пакет.
- beangulp: Това е новият дом за рамката за импортиране на данни, заместваща бившия модул
beancount.ingest
. - beanprice: Специализиран инструмент за извличане на цени на стоки и акции.
Това разделение означава, че потребителите ще трябва да инсталират тези пакети в допълнение към beancount
сам по себе си, за да запазят пълната функционалност, с която са свикнали във версия 2.
Промени в инструментите на командния ред и работните потоци
Отразявайки новата модулна архитектура, има някои забележителни промени в инструментите на командния ред:
bean-report
е премахнат: Този инструмент е премахнат. Потребителите вече се насърчават да използватbean-query
(от пакетаbeanquery
) за своите нужди от отчети.- Нов работен поток за импортиране: Командите
bean-extract
иbean-identify
са премахнати от ядрото. Новият подход сbeangulp
е базиран на скриптове. Потребителите вече ще създават свои собствени Python скриптове за обработка на импортирането на данни от външни източници като банкови извлечения.
Подобрения в синтаксиса и функциите
Докато основните счетоводни принципи остават същите, Beancount v3 въвежда известна желана гъвкавост в своя синтаксис:
- По-гъвкави кодове на валути: Предишните ограничения за дължината и символите на имената на валутите са облекчени. Вече се поддържат едносимволни валутни символи.
- Разширени флагове за транзакции: Потребителите вече могат да използват всяка главна буква от А до Я като флаг за транзакции, което позволява по-детайлна категоризация.
Важно е, че тези промени са обратно съвместими, така че вашите съществуващи Beancount v2 файлове с регистри ще работят без никакви модификации.
Пренаписването на C++ и производителността
Една от дългосрочните цели за Beancount е пренаписването на неговите критични за производителността компоненти на C++. Докато тази работа продължава, първоначалната версия на Beancount v3 не включва ядрото, базирано на C++. Това означава, че засега производителността на v3 е сравнима с тази на v2. Кодът на C++ остава в отделен клон за разработка за бъдеща интеграция.
Миграция от v2 към v3
За повечето потребители миграцията от Beancount v2 към v3 е сравнително лесна:
- Файлове с регистри: Не са необходими промени за вашите
.beancount
файлове. - Инсталация: Ще трябва да инсталирате новите, отделни пакети като
beanquery
иbeangulp
с помощта наpip
. - Скриптове за импортиране: Ако имате персонализирани импортери, ще трябва да ги актуализирате, за да използват новия API на
beangulp
. Това включва главно промяна на базовия клас, от който наследяват вашите импортери, и коригиране на някои сигнатури на методи. - Fava: Популярният уеб интерфейс за Beancount, Fava, е актуализиран, за да бъде съвместим с v3. Уверете се, че разполагате с най-новата версия на Fava за безпроблемно изживяване.
По същество Beancount v3 е фундаментална версия, която оптимизира архитектурата на проекта, правейки го по-модулен и по-лесен за поддръжка и разширяване в дългосрочен план. Въпреки че изисква някои корекции в работните потоци на потребителите, особено по отношение на импортирането на данни, тя поставя основите за бъдещото развитие на този мощен счетоводен инструмент.