protobean
Protobuf schemas for Beancount ledgers, plus generated Dart and Python packages (protobean) that bind those messages.
The schemas cover a parsed ledger (parser output, including elided amounts and parse-time cost specs) and a processed ledger (booked, interpolated, and consistency-checked).
Protobuf
Sources live under proto/beancount/. Lint and format with Buf 1.72.0 (see buf.yaml):
buf lint
buf format --diff --exit-code
Dart package
Generated code is not committed. After fvm use (or otherwise putting Dart on PATH) and installing Buf:
./tool/generate_dart.sh
dart pub get
dart analyze --fatal-infos
import 'package:protobean/protobean.dart';
The Dart SDK is pinned via FVM in .fvmrc.
Python package
Generated code is not committed. After installing uv and Buf:
./tool/generate_python.sh
uv sync --group dev
uv run ruff check
uv run ruff format --check
from protobean import ledger_pb2
The Python version is pinned in .python-version.
Contributing
Commits follow Conventional Commits and should be atomic (one concern each). Local hooks are in .pre-commit-config.yaml.
Every pull request either adds one changelog line under ## [Unreleased] in CHANGELOG.md, or cuts a release.
An entry line is the squash-merge subject (the PR title) and the PR number:
- feat(proto): add processed ledger messages (#12)
Put that line in its own commit that only touches CHANGELOG.md. Open the PR first so you have a number, then add the changelog commit.
A release PR bumps the version in both pubspec.yaml and pyproject.toml and moves every Unreleased bullet under ## [<version>] - YYYY-MM-DD, leaving Unreleased empty. Publishing a v* tag fails unless Unreleased is empty.
CI runs ./tool/check-changelog.sh and rejects PRs that skip this.
License
Release files for protobean 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| protobean-0.3.0.tar.gz | 26.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| protobean-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.7 kB
Release files / protobean-0.3.0.tar.gz
| Download URL | protobean-0.3.0.tar.gz |
|---|---|
| Size | 26.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
124d95e8a4c5be3ac5f9e741da6c4751f06e630b759fdac09494828585ee19a0
|
|
BLAKE2b-256 checksum How to use checksums |
b7af74d54efb4f9ba687f512a2f07ad9e9f763920a95ece8fafb23c91500eb8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / protobean-0.3.0-py3-none-any.whl
| Download URL | protobean-0.3.0-py3-none-any.whl |
|---|---|
| Size | 33.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1efc538b46fa9a595f6c6eddb1f431abe2e66b6dcbff4842c715abdf95f35c36
|
|
BLAKE2b-256 checksum How to use checksums |
89045759008390d0be60edc6e9f6f8d2a462f4211645252ee2d9dd40ecd18194
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency log