Skip to main content

uro(myces)

uromyces is a toy Rust re-implementation of parts of Beancount's functionality.

How to use / run

You can use the provided Makefile to set up a virtualenv (at .venv) and install uromyces in it with make dev and then try out e.g. uro check -v $BEANCOUNT_FILE to run a bean-check like script that will do a full parse and print out any errors. There is also a uro compare command to print out differences between Beancount and uromyces.

For more elaborate playing around it's probably best to write a Python script that uses the uromyces.load_file function.

Components

Just like Beancount, this tries to go from an input file to an usable result of entries.

It does so in the following series of steps.

  1. Parse single files with a tree-sitter grammar to obtain abstract syntax trees.
  2. Convert the syntax tree to produce Rust data structures.
  3. Combine the parsed results from multiple files and run initial validations.
  4. Booking
  5. Plugins
  6. Validation

Performance

On my personal ledger, this is faster than Beancount as follows:

  • parsing is about 2x faster
  • booking is about 40x faster
  • plugins for documents, implicit prices and validations each about 10x faster

Parsing

There's quite some room for improvement in the parser surely, it hasn't been the focus so far. Since the parser does more work per-file, parallelisation with rayon maybe could give nice speed-ups for users who have multiple includes. There's a couple other Rust parser implementations for Beancount already, maybe one of them could be adapted as well. With caching, the parsing performance should not be that relevant since we only need to reparse files that changed.

Imcremental computation

In the context of Fava, using salsa-rs ("A generic framework for on-demand, incrementalized computation.") seems like a good fit to speed up the incremental re-parses and more of a modified ledger.

Differences to Beancount (V3)

  • Not a lot of attention has been placed on generating the same kinds of errors. So, e.g., for a transaction that does not balance, the error messages from Beancount might be quite different.
  • The automatic filling of missing currencies is stricter (less powerful) than the one by Beancount and only takes the account balances into account to infer cost currencies. IMHO leaving out currencies should be discouraged and making this depend on the previous account balance seems error-prone.
  • Likewise, the interpolation is less powerful. For example it won't be able to interpolate a missing total cost. Interpolating total cost seems to be rather an edge case anyway.
  • The (deprecated) total cost syntax ({{}}) is not supported.
  • Deprecated options are not supported.
  • The options account_rounding, infer_tolerance_from_cost, and plugin_processing_mode are not supported.

Etymology

The name is derived from the genus of rust fungi that can befall bean plants.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uromyces-0.0.5.tar.gz (290.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

uromyces-0.0.5-cp310-abi3-win_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows ARM64

uromyces-0.0.5-cp310-abi3-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file uromyces-0.0.5.tar.gz.

File metadata

  • Download URL: uromyces-0.0.5.tar.gz
  • Upload date:
  • Size: 290.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5.tar.gz
Algorithm Hash digest
SHA256 225904d91861c582e9c2e3a89175bb35a8570b15fdb020a1fb72248aa74a2965
MD5 812261c709fb02945af4d4c2ee90c704
BLAKE2b-256 8e976c91f77102c093f6179b4c7a70e5582b952f8787b28e8ff97f58542ea8dc

See more details on using hashes here.

File details

Details for the file uromyces-0.0.5-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: uromyces-0.0.5-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 a5658a7d2544421962636beec66d3257acacb7bf757a407cf8ee81f9876319d6
MD5 f55f64b11b96c335b475d77da9f37fe7
BLAKE2b-256 5ed92967dd287f892e6b39f24e95b528b4d6b038f12d50f4c73e51dea23b7d4b

See more details on using hashes here.

File details

Details for the file uromyces-0.0.5-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: uromyces-0.0.5-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 da66f8f86ff6862255c750c94ff54a8185b3f3a6808b7f98510f264d267eab7e
MD5 01af7f537b29237bca831ccd79b3b6e1
BLAKE2b-256 727893b65450a30463b6500da1c9354c60606a0043ad8960267b3e40dd5f976e

See more details on using hashes here.

File details

Details for the file uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b781dbb568d897a7ffb5c4e7134be493e245d2750565dac2bd25c27390fae0b2
MD5 016543b94244c463e9d966ceaa73f317
BLAKE2b-256 ce2ca89e7f8d74e2fae08c5dc92fcc88cc5d26041d1eb1200d52360e7441b013

See more details on using hashes here.

File details

Details for the file uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b55854227785647986bcd1c44188543576ff42114c690dac1ccad5598c161a90
MD5 2ed9c58c34be433cfbade3d1206c0401
BLAKE2b-256 ae2150d3d6f30e4f925422eb1d4e1343882f0162b2796e965c599b0488f0ba42

See more details on using hashes here.

File details

Details for the file uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.10+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 194037a5dacdbadef200f5b065d6aae436a3e20cd57106ec4f4dbe03c7fa7375
MD5 d68f6eea8056f823055f13d2615bdb70
BLAKE2b-256 e024f1f63fd6cc409bcf1302e2b36d4a6d520fa97f4f061a00b048a7e7f7281d

See more details on using hashes here.

File details

Details for the file uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.10+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7bfe2a58d71bc326268d04f9d2d2fbd153f13010e5d34f8e5bdfd9ad74987981
MD5 9d3c9b9ab9ed1c1b2d6bd76ee6cca734
BLAKE2b-256 e589c895c9a6d27c7b3529296d0b1e7dca00929442bd005f379537f1affcc184

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.5 This release

7 files

0.0.4

7 files

0.0.3

7 files

0.0.2

7 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page