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.

Metadata

Release files for uromyces 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uromyces 0.0.5
File Size Uploaded Provenance
uromyces-0.0.5.tar.gz 290.3 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for uromyces 0.0.5
File
uromyces-0.0.5-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
uromyces-0.0.5-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 8.9 MB

Release files / uromyces-0.0.5.tar.gz

Download URL uromyces-0.0.5.tar.gz
Size 290.3 kB
Tags Source
SHA-256 checksum
How to use checksums
225904d91861c582e9c2e3a89175bb35a8570b15fdb020a1fb72248aa74a2965
BLAKE2b-256 checksum
How to use checksums
8e976c91f77102c093f6179b4c7a70e5582b952f8787b28e8ff97f58542ea8dc
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / uromyces-0.0.5-cp310-abi3-win_arm64.whl

Download URL uromyces-0.0.5-cp310-abi3-win_arm64.whl
Size 1.2 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
a5658a7d2544421962636beec66d3257acacb7bf757a407cf8ee81f9876319d6
BLAKE2b-256 checksum
How to use checksums
5ed92967dd287f892e6b39f24e95b528b4d6b038f12d50f4c73e51dea23b7d4b
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / uromyces-0.0.5-cp310-abi3-win_amd64.whl

Download URL uromyces-0.0.5-cp310-abi3-win_amd64.whl
Size 1.3 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
da66f8f86ff6862255c750c94ff54a8185b3f3a6808b7f98510f264d267eab7e
BLAKE2b-256 checksum
How to use checksums
727893b65450a30463b6500da1c9354c60606a0043ad8960267b3e40dd5f976e
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL uromyces-0.0.5-cp310-abi3-manylinux_2_28_x86_64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
b781dbb568d897a7ffb5c4e7134be493e245d2750565dac2bd25c27390fae0b2
BLAKE2b-256 checksum
How to use checksums
ce2ca89e7f8d74e2fae08c5dc92fcc88cc5d26041d1eb1200d52360e7441b013
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL uromyces-0.0.5-cp310-abi3-manylinux_2_28_aarch64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
b55854227785647986bcd1c44188543576ff42114c690dac1ccad5598c161a90
BLAKE2b-256 checksum
How to use checksums
ae2150d3d6f30e4f925422eb1d4e1343882f0162b2796e965c599b0488f0ba42
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl

Download URL uromyces-0.0.5-cp310-abi3-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
194037a5dacdbadef200f5b065d6aae436a3e20cd57106ec4f4dbe03c7fa7375
BLAKE2b-256 checksum
How to use checksums
e024f1f63fd6cc409bcf1302e2b36d4a6d520fa97f4f061a00b048a7e7f7281d
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl

Download URL uromyces-0.0.5-cp310-abi3-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7bfe2a58d71bc326268d04f9d2d2fbd153f13010e5d34f8e5bdfd9ad74987981
BLAKE2b-256 checksum
How to use checksums
e589c895c9a6d27c7b3529296d0b1e7dca00929442bd005f379537f1affcc184
Upload date
Uploaded using Trusted Publishing?
What is 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}

Security for uromyces 0.0.5

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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