rustfava 0.1.0__tar.gz → 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rustfava-0.1.3/PKG-INFO +133 -0
- rustfava-0.1.3/README.md +82 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/_build_backend.py +4 -2
- rustfava-0.1.3/contrib/docker/README.md +129 -0
- rustfava-0.1.3/contrib/pyinstaller_spec.spec +102 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/capabilities/default.json +5 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/src/main.rs +27 -12
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/tauri.conf.json +3 -0
- rustfava-0.1.3/desktop-sources.json +7 -0
- rustfava-0.1.3/docs/deployment.md +92 -0
- rustfava-0.1.3/docs/index.md +35 -0
- rustfava-0.1.3/docs/screenshot.png +0 -0
- rustfava-0.1.3/docs/upstream-sync.md +128 -0
- rustfava-0.1.3/docs/usage.md +84 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/flake.lock +4 -25
- rustfava-0.1.3/flake.nix +201 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/bun.lock +3 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/package.json +1 -0
- rustfava-0.1.3/frontend/src/extension-api.d.ts +45 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/extensions.ts +23 -48
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/router.ts +11 -0
- rustfava-0.1.3/packaging/rpm/rustfava.spec +62 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/portfolio_list/PortfolioList.js +4 -4
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/RustfavaExtTest.js +2 -2
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/extensions.md +4 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.js +4 -4
- rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js → rustfava-0.1.3/src/rustfava/static/beancount-MH465CAD.js +2 -2
- rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js → rustfava-0.1.3/src/rustfava/static/chunk-P3BY4CCB.js +28 -23
- rustfava-0.1.0/src/rustfava/static/chunk-V24TLQHT.js.map → rustfava-0.1.3/src/rustfava/static/chunk-P3BY4CCB.js.map +2 -2
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/bg/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ca/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/de/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/es/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fa/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/nl/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ru/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sk/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sv/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/uk/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo +0 -0
- rustfava-0.1.3/src/rustfava.egg-info/PKG-INFO +133 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/SOURCES.txt +9 -5
- rustfava-0.1.0/PKG-INFO +0 -102
- rustfava-0.1.0/README.md +0 -51
- rustfava-0.1.0/RUSTLEDGER_WASI_SPEC.md +0 -451
- rustfava-0.1.0/contrib/docker/README.md +0 -249
- rustfava-0.1.0/contrib/pyinstaller_spec.spec +0 -54
- rustfava-0.1.0/docs/deployment.md +0 -35
- rustfava-0.1.0/docs/index.md +0 -24
- rustfava-0.1.0/docs/usage.md +0 -53
- rustfava-0.1.0/flake.nix +0 -133
- rustfava-0.1.0/src/rustfava.egg-info/PKG-INFO +0 -102
- {rustfava-0.1.0 → rustfava-0.1.3}/.dev-bin/rustfava +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/.dockerignore +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/AUTHORS +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/CONTRIBUTING.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/Dockerfile +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/LICENSE +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/MANIFEST.in +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/SECURITY.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/biome.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/contrib/docker/Dockerfile +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/contrib/examples/budgets-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/contrib/examples/example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/contrib/examples/huge-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/contrib/icon.svg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/contrib/scripts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/.dev-bin/rustfava +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/README.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/build-sidecar.sh +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/bun.lock +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/index.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/package.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/scripts/ensure-rustledger.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/index.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/logo.svg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/main.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src/styles.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/Cargo.lock +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/Cargo.toml +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/build.rs +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/acl-manifests.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/capabilities.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/desktop-schema.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/gen/schemas/linux-schema.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/128x128.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/128x128@2x.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/32x32.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/icon.icns +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/icon.ico +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/src-tauri/icons/icon.png +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/desktop/vite.config.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/docs/api.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/docs/changelog.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/docs/development.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/docs/logo.svg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/.npmrc +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/build.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/base.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/charts.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/components.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/editor.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/fonts.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/grid.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/help.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/journal-table.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/layout.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/notifications.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/style.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/css/tree-table.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/deno.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/eslint.config.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/prettier.config.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/setup.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/AutocompleteInput.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/ambient.d.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/api/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/api/validators.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/app.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Axis.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/BarChart.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Chart.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ChartLegend.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ChartSwitcher.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ConversionAndInterval.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/HierarchyContainer.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Icicle.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/LineChart.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ModeSwitch.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/ScatterPlot.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/SelectCombobox.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Sunburst.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/Treemap.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/bar.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/context.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/hierarchy.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/line.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/query-charts.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/scatterplot.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/charts/tooltip.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/clipboard.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/base-extensions.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-autocomplete.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-fold.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-format.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-highlight.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-indent.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-language.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount-snippets.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/beancount.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-autocomplete.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-grammar.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-highlight.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-language.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql-stream-parser.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/bql.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/dom.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/editor-transactions.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/ruler.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/tree-sitter-beancount.wasm +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/tree-sitter-parser.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/codemirror/types.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/DeleteButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/DocumentPreviewEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/SaveButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/editor/SliceEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/amount.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/cost.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/metadata.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entries/position.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/AccountInput.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/AddMetadataButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Balance.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Entry.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/EntryMetadata.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Note.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Posting.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/entry-forms/Transaction.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/format.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/i18n.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/keyboard-shortcuts.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/account.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/array.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/dom.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/equals.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/errors.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/fetch.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/focus.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/fuzzy.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/interval.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/iso4217.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/json.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/objects.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/paths.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/regex.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/result.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/set.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/sources.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/store.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/tree.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/lib/validation.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/log.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/AddEntry.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/Context.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/DocumentUpload.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/EntryContextBalances.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/EntryContextLocation.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/Export.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/ModalBase.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/Modals.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/modals/document-upload.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/notifications.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/ReportLoadError.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/accounts/AccountReport.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/accounts/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/commodities/Commodities.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/commodities/CommodityTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/commodities/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/Accounts.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/DocumentPreview.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/Documents.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/Table.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/documents/stores.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/AppMenu.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/AppMenuItem.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/AppMenuSubItem.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/Editor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/EditorMenu.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/Key.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/Sources.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/editor/stores.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/errors/Errors.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/errors/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/events/EventTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/events/Events.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/events/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/holdings/Holdings.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/holdings/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/Extract.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/FileList.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/Import.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/ImportFileUpload.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/import/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/Journal.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/JournalFilters.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/JournalHeaders.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/JournalTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/click_handler.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/journal/sort.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/options/Options.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/options/OptionsTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/options/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/Query.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryBox.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryLinks.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/QueryTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/ReadonlyQueryEditor.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/query/query_table.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/route.svelte.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/route.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/routes.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/EntriesByType.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/Statistics.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/UpdateActivity.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/statistics/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/BalanceSheet.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/IncomeStatement.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/TrialBalance.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/reports/tree_reports/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AccountIndicator.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AccountPageTitle.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AccountSelector.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AsideContents.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/AsideWithButton.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/FilterForm.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/Header.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/HeaderAndAside.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/HeaderIcon.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/PageTitle.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/SidebarLink.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sidebar/page-title.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sort/SortHeader.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sort/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/sort/sortable-table.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/accounts.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/chart.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/color_scheme.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/editor.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/fava_options.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/filters.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/format.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/index.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/journal.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/mtime.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/options.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/query.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/stores/url.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/svelte-custom-elements.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/AccountCell.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/AccountCellHeader.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/Diff.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/IntervalTreeTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/IntervalTreeTableNode.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/TreeTable.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/TreeTableNode.svelte +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/src/tree-table/tree-table-custom-element.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/stylelint.config.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/sync-pre-commit.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/AutocompleteInput.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/account.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/charts.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/dom.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/editor.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/end-to-end-validation.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/entries.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/format.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/fuzzy.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/helpers.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/misc.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/parser.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/paths.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/result.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/sources.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/store.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/tree.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/urls.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test/validation.test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/test.ts +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/frontend/tsconfig.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/justfile +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/mkdocs.yml +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/pyproject.toml +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/setup.cfg +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/_ctx_globals_class.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/api_models.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/application.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/abc.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/account.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/create.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/flags.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/funcs.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/helpers.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/ingest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/load.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/prices.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/protocols.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/str.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/beans/types.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/cli.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/context.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/accounts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/attributes.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/budgets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/charts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/commodities.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/conversion.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/extensions.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/fava_options.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/file.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/group_entries.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/ingest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/inventory.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/misc.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/module_base.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/number.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/query.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/query_shell.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/tree.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/core/watcher.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/auto_commit.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/portfolio_list/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/portfolio_list/templates/PortfolioList.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTest.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/ext/rustfava_ext_test/templates/RustfavaExtTestInclude.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/_index.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/beancount_syntax.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/budgets.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/conversion.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/features.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/filters.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/import.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/help/options.md +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/helpers.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/internal_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/json_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/plugins/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/plugins/link_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/plugins/tag_discovered_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/py.typed +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/constants.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/engine.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/loader.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/options.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/query.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/rustledger/types.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/serialisation.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.css.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/app.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/beancount-JFV44ZVZ.css +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/beancount-JFV44ZVZ.css.map +0 -0
- /rustfava-0.1.0/src/rustfava/static/beancount-VTTKRGSK.js.map → /rustfava-0.1.3/src/rustfava/static/beancount-MH465CAD.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/bql-MGFRUMBP.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/bql-MGFRUMBP.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/chunk-E7ZF4ASL.js +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/chunk-E7ZF4ASL.js.map +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/favicon.ico +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-400-normal-BLAGXRCE.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-500-normal-EN7JUAAW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-ext-400-normal-EX7VARTS.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-cyrillic-ext-500-normal-ZDPTUPRR.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-400-normal-COGHKMOA.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-500-normal-4EN2PKZT.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-ext-400-normal-DYEQIJH7.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-greek-ext-500-normal-SG73CVKQ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-400-normal-NA3VLV7E.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-500-normal-YC77GFWD.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-ext-400-normal-DIKTZ5PW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-latin-ext-500-normal-ZWY4UO4V.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-symbols2-400-normal-UITXT77Q.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-mono-symbols2-500-normal-VWPC2EFN.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-400-normal-KLQMBCA6.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-500-normal-NFG7UD6J.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-ext-400-normal-GWO44OPC.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-cyrillic-ext-500-normal-SP47E5SC.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-400-normal-UMQBTLC3.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-500-normal-4ZKHN4FQ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-ext-400-normal-O2DVJAJZ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-greek-ext-500-normal-SK6GNWGO.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-400-normal-OYYTPMAV.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-500-normal-SMQPZW5A.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-ext-400-normal-OAUP3WK5.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-latin-ext-500-normal-LY3YDR5Y.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-vietnamese-400-normal-OBMQ72MR.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/fira-sans-vietnamese-500-normal-Y4NZR5EU.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-400-normal-TO22V6M3.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-500-normal-OGBWWWYW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-ext-400-normal-XH44UCIA.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-cyrillic-ext-500-normal-3Z6MMVM6.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-400-normal-OUXXUQWK.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-500-normal-JA2Z5UXO.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-ext-400-normal-WCDKMX7U.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-greek-ext-500-normal-ZHVI4VKW.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-400-normal-QOGTXED5.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-500-normal-X57QEOLQ.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-ext-400-normal-QXC74NBF.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-latin-ext-500-normal-QGOY7MTT.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-vietnamese-400-normal-NPDCDTBA.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/source-code-pro-vietnamese-500-normal-M6PJKTR5.woff2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/tree-sitter-beancount-MLXFQBZ5.wasm +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/static/web-tree-sitter-RNOQ6E74.wasm +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/template_filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/_journal_table.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/_layout.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/_query_table.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/beancount_file +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/help.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/macros/_account_macros.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/templates/macros/_commodity_macros.html +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/bg/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ca/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/de/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/es/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fa/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/fr/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ja/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/nl/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/pt_BR/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/ru/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sk/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/sv/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/uk/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.po +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/date.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/excel.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/ranking.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/sets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava/util/unreachable.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/dependency_links.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/entry_points.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/requires.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/src/rustfava.egg-info/top_level.txt +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/stubs/beangulp/__init__.pyi +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/stubs/beangulp/cache.pyi +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__init__.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_application-test_download_journal +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_attributes-test_narrations.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_interval_totals_inverted.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data-3.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data-4.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_linechart_data.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_net_worth.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_charts-test_net_worth_off_by_one.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_file-test_render_entries +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_ingest-test_ingest_examplefile.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_query_shell-test_query_balances +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_query_shell-test_query_to_file +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_query_shell-test_text_queries +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_tree-test_tree_cap +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_tree-test_tree_from_entries +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_core_tree-test_tree_from_entries-2 +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_internal_api-test_chart_api.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_internal_api-test_get_ledger_data.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-account_report_off_by_one_journal.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-balance_sheet.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-balance_sheet_with_cost.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-commodities.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-documents.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-events.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-income_statement.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-journal.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-narrations.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-options.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-statistics.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api-trial_balance.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context-3.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context-4.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_context.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_errors +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_imports-2.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_imports.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_payee_accounts.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_payee_transaction.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-balances.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-help.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-journal.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-misc.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_json_api-test_api_query_result-sum.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_serialisation-test_deserialise_posting_and_format +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/__snapshots__/test_serialisation-test_serialise_entry_types.json +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/conftest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/edit-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/errors.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/example-balances.csv +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/example-utf8-/360/237/246/201.txt" +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/extension-report-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import.csv +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import_config.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/import_config_with_duplicate_names.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/invalid-unicode.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/long-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/off-by-one.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/query-example.beancount +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/data/receipt.pdf +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_application.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_beans.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_beans_str.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_build_backend.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_cli.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_accounts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_attributes.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_budgets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_charts.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_commodities.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_conversion.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_fava_options.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_file.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_ingest.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_inventory.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_misc.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_number.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_query_shell.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_tree.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_core_watcher.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_ext.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_extensions.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_internal_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_json_api.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_plugins_link_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_plugins_tag_discovered_documents.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_serialisation.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_template_filters.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_templates.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_date.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_excel.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_ranking.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/tests/test_util_sets.py +0 -0
- {rustfava-0.1.0 → rustfava-0.1.3}/uv.lock +0 -0
rustfava-0.1.3/PKG-INFO
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rustfava
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: Web interface for the accounting tool rustledger.
|
|
5
|
+
Author-email: Dominik Aumayr <dominik@aumayr.name>
|
|
6
|
+
Maintainer-email: Jakob Schnitzer <mail@jakobschnitzer.de>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Repository, https://github.com/rustledger/rustfava
|
|
9
|
+
Project-URL: Documentation, https://rustledger.github.io/rustfava
|
|
10
|
+
Project-URL: Issues, https://github.com/rustledger/rustfava/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/rustledger/rustfava/releases
|
|
12
|
+
Keywords: rustfava,fava,beancount,accounting,rustledger
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Framework :: Flask
|
|
16
|
+
Classifier: Intended Audience :: Education
|
|
17
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
18
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
19
|
+
Classifier: Intended Audience :: Information Technology
|
|
20
|
+
Classifier: Natural Language :: English
|
|
21
|
+
Classifier: Programming Language :: JavaScript
|
|
22
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
26
|
+
Classifier: Topic :: Office/Business :: Financial :: Accounting
|
|
27
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
28
|
+
Requires-Python: >=3.13
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
License-File: AUTHORS
|
|
32
|
+
Requires-Dist: Babel<3,>=2.11
|
|
33
|
+
Requires-Dist: Flask-Babel<5,>=3
|
|
34
|
+
Requires-Dist: Flask<4,>=2.2
|
|
35
|
+
Requires-Dist: Jinja2<4,>=3
|
|
36
|
+
Requires-Dist: Werkzeug<4,>=2.2
|
|
37
|
+
Requires-Dist: beangulp>=0.1
|
|
38
|
+
Requires-Dist: cheroot<12,>=8
|
|
39
|
+
Requires-Dist: click<9,>=7
|
|
40
|
+
Requires-Dist: markdown2<3,>=2.3.0
|
|
41
|
+
Requires-Dist: ply>=3.11
|
|
42
|
+
Requires-Dist: pydantic>=2.0
|
|
43
|
+
Requires-Dist: watchfiles>=0.20.0
|
|
44
|
+
Provides-Extra: excel
|
|
45
|
+
Requires-Dist: pyexcel>=0.5; extra == "excel"
|
|
46
|
+
Requires-Dist: pyexcel-ods3>=0.5; extra == "excel"
|
|
47
|
+
Requires-Dist: pyexcel-xlsx>=0.5; extra == "excel"
|
|
48
|
+
Provides-Extra: beancount-compat
|
|
49
|
+
Requires-Dist: beancount<4,>=2; extra == "beancount-compat"
|
|
50
|
+
Dynamic: license-file
|
|
51
|
+
|
|
52
|
+
<div align="center">
|
|
53
|
+
|
|
54
|
+
# rustfava
|
|
55
|
+
|
|
56
|
+
**A beautiful desktop app for [rustledger](https://github.com/rustledger/rustledger)**
|
|
57
|
+
|
|
58
|
+
Manage your finances with plain text accounting.
|
|
59
|
+
|
|
60
|
+
[](https://github.com/rustledger/rustfava/actions/workflows/test.yml)
|
|
61
|
+
[](https://github.com/rustledger/rustfava/releases)
|
|
62
|
+
[](LICENSE)
|
|
63
|
+
[](https://pypi.org/project/rustfava/)
|
|
64
|
+
|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Why rustfava?
|
|
72
|
+
|
|
73
|
+
| | |
|
|
74
|
+
|---|---|
|
|
75
|
+
| **Native app** | Double-click to launch, no terminal required |
|
|
76
|
+
| **Fava interface** | The familiar Fava web UI you know and love |
|
|
77
|
+
| **rustledger backend** | Blazing fast parsing via WebAssembly |
|
|
78
|
+
| **Cross-platform** | Linux, macOS (Intel & Apple Silicon), Windows |
|
|
79
|
+
| **Offline first** | Your financial data stays on your machine |
|
|
80
|
+
| **Multiple files** | Open multiple ledgers in tabs |
|
|
81
|
+
|
|
82
|
+
## Install
|
|
83
|
+
|
|
84
|
+
### Desktop App
|
|
85
|
+
|
|
86
|
+
Download the latest release for your platform from the [Releases page](https://github.com/rustledger/rustfava/releases/latest).
|
|
87
|
+
|
|
88
|
+
| Platform | Format |
|
|
89
|
+
|----------|--------|
|
|
90
|
+
| **macOS** | `.dmg` (Intel & Apple Silicon) |
|
|
91
|
+
| **Windows** | `.exe` installer or `.msi` |
|
|
92
|
+
| **Linux** | `.AppImage`, `.deb`, `.rpm`, or `.tar.gz` |
|
|
93
|
+
|
|
94
|
+
### Other Installation Methods
|
|
95
|
+
|
|
96
|
+
| Method | Command |
|
|
97
|
+
|--------|---------|
|
|
98
|
+
| **Docker** | `docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount` |
|
|
99
|
+
| **PyPI** | `uv tool install rustfava` (requires Python 3.13+ and [wasmtime](https://wasmtime.dev/)) |
|
|
100
|
+
| **Nix** | `nix run github:rustledger/rustfava#desktop` |
|
|
101
|
+
|
|
102
|
+
<sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustfava/issues/new) to request it.</sub>
|
|
103
|
+
|
|
104
|
+
## Quick Start
|
|
105
|
+
|
|
106
|
+
### Desktop App
|
|
107
|
+
|
|
108
|
+
1. Download the app for your platform
|
|
109
|
+
2. Double-click to launch
|
|
110
|
+
3. Open your `.beancount` file
|
|
111
|
+
|
|
112
|
+
### Command Line
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
rustfava ledger.beancount
|
|
116
|
+
# Then visit http://localhost:5000
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## What is this?
|
|
120
|
+
|
|
121
|
+
rustfava is a fork of [Fava](https://github.com/beancount/fava) that replaces the Python beancount parser with [rustledger](https://github.com/rustledger/rustledger), compiled to WebAssembly for faster parsing and processing.
|
|
122
|
+
|
|
123
|
+
The desktop app bundles everything into a native application using [Tauri](https://tauri.app/), so you get a fast, lightweight app with no dependencies.
|
|
124
|
+
|
|
125
|
+
## Links
|
|
126
|
+
|
|
127
|
+
- **Website**: https://rustledger.github.io/rustfava/
|
|
128
|
+
- **Documentation**: https://rustledger.github.io/rustfava/docs/
|
|
129
|
+
- **rustledger**: https://github.com/rustledger/rustledger
|
|
130
|
+
|
|
131
|
+
## License
|
|
132
|
+
|
|
133
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
rustfava-0.1.3/README.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# rustfava
|
|
4
|
+
|
|
5
|
+
**A beautiful desktop app for [rustledger](https://github.com/rustledger/rustledger)**
|
|
6
|
+
|
|
7
|
+
Manage your finances with plain text accounting.
|
|
8
|
+
|
|
9
|
+
[](https://github.com/rustledger/rustfava/actions/workflows/test.yml)
|
|
10
|
+
[](https://github.com/rustledger/rustfava/releases)
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
[](https://pypi.org/project/rustfava/)
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Why rustfava?
|
|
21
|
+
|
|
22
|
+
| | |
|
|
23
|
+
|---|---|
|
|
24
|
+
| **Native app** | Double-click to launch, no terminal required |
|
|
25
|
+
| **Fava interface** | The familiar Fava web UI you know and love |
|
|
26
|
+
| **rustledger backend** | Blazing fast parsing via WebAssembly |
|
|
27
|
+
| **Cross-platform** | Linux, macOS (Intel & Apple Silicon), Windows |
|
|
28
|
+
| **Offline first** | Your financial data stays on your machine |
|
|
29
|
+
| **Multiple files** | Open multiple ledgers in tabs |
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
### Desktop App
|
|
34
|
+
|
|
35
|
+
Download the latest release for your platform from the [Releases page](https://github.com/rustledger/rustfava/releases/latest).
|
|
36
|
+
|
|
37
|
+
| Platform | Format |
|
|
38
|
+
|----------|--------|
|
|
39
|
+
| **macOS** | `.dmg` (Intel & Apple Silicon) |
|
|
40
|
+
| **Windows** | `.exe` installer or `.msi` |
|
|
41
|
+
| **Linux** | `.AppImage`, `.deb`, `.rpm`, or `.tar.gz` |
|
|
42
|
+
|
|
43
|
+
### Other Installation Methods
|
|
44
|
+
|
|
45
|
+
| Method | Command |
|
|
46
|
+
|--------|---------|
|
|
47
|
+
| **Docker** | `docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount` |
|
|
48
|
+
| **PyPI** | `uv tool install rustfava` (requires Python 3.13+ and [wasmtime](https://wasmtime.dev/)) |
|
|
49
|
+
| **Nix** | `nix run github:rustledger/rustfava#desktop` |
|
|
50
|
+
|
|
51
|
+
<sub>Missing your platform? [Open an issue](https://github.com/rustledger/rustfava/issues/new) to request it.</sub>
|
|
52
|
+
|
|
53
|
+
## Quick Start
|
|
54
|
+
|
|
55
|
+
### Desktop App
|
|
56
|
+
|
|
57
|
+
1. Download the app for your platform
|
|
58
|
+
2. Double-click to launch
|
|
59
|
+
3. Open your `.beancount` file
|
|
60
|
+
|
|
61
|
+
### Command Line
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
rustfava ledger.beancount
|
|
65
|
+
# Then visit http://localhost:5000
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## What is this?
|
|
69
|
+
|
|
70
|
+
rustfava is a fork of [Fava](https://github.com/beancount/fava) that replaces the Python beancount parser with [rustledger](https://github.com/rustledger/rustledger), compiled to WebAssembly for faster parsing and processing.
|
|
71
|
+
|
|
72
|
+
The desktop app bundles everything into a native application using [Tauri](https://tauri.app/), so you get a fast, lightweight app with no dependencies.
|
|
73
|
+
|
|
74
|
+
## Links
|
|
75
|
+
|
|
76
|
+
- **Website**: https://rustledger.github.io/rustfava/
|
|
77
|
+
- **Documentation**: https://rustledger.github.io/rustfava/docs/
|
|
78
|
+
- **rustledger**: https://github.com/rustledger/rustledger
|
|
79
|
+
|
|
80
|
+
## License
|
|
81
|
+
|
|
82
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
@@ -9,8 +9,6 @@ from os import walk
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import TYPE_CHECKING
|
|
11
11
|
|
|
12
|
-
from babel.messages.mofile import write_mo
|
|
13
|
-
from babel.messages.pofile import read_po
|
|
14
12
|
from setuptools import build_meta
|
|
15
13
|
from setuptools.build_meta import get_requires_for_build_editable
|
|
16
14
|
from setuptools.build_meta import get_requires_for_build_sdist
|
|
@@ -69,6 +67,10 @@ def _compile_frontend() -> None:
|
|
|
69
67
|
|
|
70
68
|
def _compile_translations() -> None:
|
|
71
69
|
"""Compile the translations from .po to .mo (if changed or missing)."""
|
|
70
|
+
# Lazy import to avoid requiring Babel for metadata preparation
|
|
71
|
+
from babel.messages.mofile import write_mo
|
|
72
|
+
from babel.messages.pofile import read_po
|
|
73
|
+
|
|
72
74
|
for source in Path().glob("src/rustfava/translations/**/messages.po"):
|
|
73
75
|
target = source.parent / "messages.mo"
|
|
74
76
|
if (
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Deploying with Docker
|
|
2
|
+
|
|
3
|
+
## Quick Start (Pre-built Image)
|
|
4
|
+
|
|
5
|
+
The easiest way to run rustfava with Docker is using the pre-built image from GitHub Container Registry:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Then visit http://localhost:5000.
|
|
12
|
+
|
|
13
|
+
## Building Your Own Image
|
|
14
|
+
|
|
15
|
+
The Dockerfile in this directory allows you to build a custom rustfava image.
|
|
16
|
+
|
|
17
|
+
### Building
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
docker build -t rustfava .
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
To incorporate a new version of rustfava, use the `--no-cache` flag:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
docker build --no-cache -t rustfava .
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Running
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
docker run --detach --name="rustfava" --publish 5000:5000 \
|
|
33
|
+
--volume $(pwd)/ledger.beancount:/data/ledger.beancount \
|
|
34
|
+
rustfava /data/ledger.beancount
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Arguments explained:
|
|
38
|
+
|
|
39
|
+
- `--detach`: Run in the background as a daemon
|
|
40
|
+
- `--name`: Name for the container instance
|
|
41
|
+
- `--publish`: Expose container port 5000 to localhost:5000
|
|
42
|
+
- `--volume`: Mount your beancount file into the container
|
|
43
|
+
|
|
44
|
+
Visit http://localhost:5000 to access rustfava.
|
|
45
|
+
|
|
46
|
+
## Advanced Deployment
|
|
47
|
+
|
|
48
|
+
For production deployments with authentication and HTTPS, see the following sections.
|
|
49
|
+
|
|
50
|
+
### Reverse Proxy with Authentication
|
|
51
|
+
|
|
52
|
+
For a secure, authenticated deployment, use a reverse proxy like nginx or Caddy with OAuth2 authentication.
|
|
53
|
+
|
|
54
|
+
Example with [oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy):
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Run rustfava
|
|
58
|
+
docker run --detach --name="rustfava" \
|
|
59
|
+
--volume $(pwd)/ledger:/data \
|
|
60
|
+
ghcr.io/rustledger/rustfava /data/main.beancount
|
|
61
|
+
|
|
62
|
+
# Run oauth2-proxy in front
|
|
63
|
+
docker run --detach --name="rustfava-auth" \
|
|
64
|
+
--link rustfava \
|
|
65
|
+
--publish 4180:4180 \
|
|
66
|
+
quay.io/oauth2-proxy/oauth2-proxy \
|
|
67
|
+
--upstream="http://rustfava:5000" \
|
|
68
|
+
--provider=google \
|
|
69
|
+
--client-id="YOUR_CLIENT_ID" \
|
|
70
|
+
--client-secret="YOUR_CLIENT_SECRET" \
|
|
71
|
+
--cookie-secret="YOUR_COOKIE_SECRET" \
|
|
72
|
+
--email-domain="yourdomain.com"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### HTTPS with Let's Encrypt
|
|
76
|
+
|
|
77
|
+
For automatic HTTPS certificates, use [Caddy](https://caddyserver.com/) as a reverse proxy:
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
# docker-compose.yml
|
|
81
|
+
services:
|
|
82
|
+
rustfava:
|
|
83
|
+
image: ghcr.io/rustledger/rustfava
|
|
84
|
+
command: /data/main.beancount
|
|
85
|
+
volumes:
|
|
86
|
+
- ./ledger:/data
|
|
87
|
+
|
|
88
|
+
caddy:
|
|
89
|
+
image: caddy:2
|
|
90
|
+
ports:
|
|
91
|
+
- "80:80"
|
|
92
|
+
- "443:443"
|
|
93
|
+
volumes:
|
|
94
|
+
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
95
|
+
- caddy_data:/data
|
|
96
|
+
|
|
97
|
+
volumes:
|
|
98
|
+
caddy_data:
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
# Caddyfile
|
|
103
|
+
your-domain.com {
|
|
104
|
+
reverse_proxy rustfava:5000
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Caddy automatically obtains and renews Let's Encrypt certificates.
|
|
109
|
+
|
|
110
|
+
### Docker Compose Example
|
|
111
|
+
|
|
112
|
+
A complete example with persistent data:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
# docker-compose.yml
|
|
116
|
+
services:
|
|
117
|
+
rustfava:
|
|
118
|
+
image: ghcr.io/rustledger/rustfava
|
|
119
|
+
command: /data/main.beancount
|
|
120
|
+
ports:
|
|
121
|
+
- "5000:5000"
|
|
122
|
+
volumes:
|
|
123
|
+
- ./ledger:/data
|
|
124
|
+
restart: unless-stopped
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
docker compose up -d
|
|
129
|
+
```
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# vim: set ft=python:
|
|
2
|
+
"""Pyinstaller spec file for building a binary from rustfava's cli.py
|
|
3
|
+
|
|
4
|
+
This spec works without pip installing rustfava - it uses the source directly.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
from PyInstaller.utils.hooks import collect_data_files
|
|
14
|
+
from PyInstaller.utils.hooks import collect_submodules
|
|
15
|
+
|
|
16
|
+
# Get the project root (parent of contrib/)
|
|
17
|
+
spec_dir = Path(SPECPATH)
|
|
18
|
+
project_root = spec_dir.parent
|
|
19
|
+
src_dir = project_root / "src"
|
|
20
|
+
rustfava_dir = src_dir / "rustfava"
|
|
21
|
+
|
|
22
|
+
# Add src/ to path so PyInstaller can find rustfava
|
|
23
|
+
sys.path.insert(0, str(src_dir))
|
|
24
|
+
|
|
25
|
+
# Collect data files from source directory
|
|
26
|
+
datas = []
|
|
27
|
+
|
|
28
|
+
# Static files (CSS, JS, etc.)
|
|
29
|
+
static_dir = rustfava_dir / "static"
|
|
30
|
+
if static_dir.exists():
|
|
31
|
+
for f in static_dir.rglob("*"):
|
|
32
|
+
if f.is_file():
|
|
33
|
+
rel_path = f.relative_to(rustfava_dir)
|
|
34
|
+
datas.append((str(f), f"rustfava/{rel_path.parent}"))
|
|
35
|
+
|
|
36
|
+
# Templates
|
|
37
|
+
templates_dir = rustfava_dir / "templates"
|
|
38
|
+
if templates_dir.exists():
|
|
39
|
+
for f in templates_dir.rglob("*"):
|
|
40
|
+
if f.is_file():
|
|
41
|
+
rel_path = f.relative_to(rustfava_dir)
|
|
42
|
+
datas.append((str(f), f"rustfava/{rel_path.parent}"))
|
|
43
|
+
|
|
44
|
+
# Translations (.mo files)
|
|
45
|
+
translations_dir = rustfava_dir / "translations"
|
|
46
|
+
if translations_dir.exists():
|
|
47
|
+
for f in translations_dir.rglob("*.mo"):
|
|
48
|
+
rel_path = f.relative_to(rustfava_dir)
|
|
49
|
+
datas.append((str(f), f"rustfava/{rel_path.parent}"))
|
|
50
|
+
|
|
51
|
+
# WASM file for rustledger
|
|
52
|
+
wasm_file = rustfava_dir / "rustledger" / "rustledger-wasi.wasm"
|
|
53
|
+
if wasm_file.exists():
|
|
54
|
+
datas.append((str(wasm_file), "rustfava/rustledger"))
|
|
55
|
+
|
|
56
|
+
# Help files
|
|
57
|
+
help_dir = rustfava_dir / "help"
|
|
58
|
+
if help_dir.exists():
|
|
59
|
+
for f in help_dir.rglob("*"):
|
|
60
|
+
if f.is_file():
|
|
61
|
+
rel_path = f.relative_to(rustfava_dir)
|
|
62
|
+
datas.append((str(f), f"rustfava/{rel_path.parent}"))
|
|
63
|
+
|
|
64
|
+
# Hidden imports
|
|
65
|
+
hiddenimports = [
|
|
66
|
+
"rustfava",
|
|
67
|
+
"rustfava.application",
|
|
68
|
+
"rustfava.cli",
|
|
69
|
+
"rustfava.core",
|
|
70
|
+
"rustfava.rustledger",
|
|
71
|
+
"rustfava.serialisation",
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
# Optionally add beancount for legacy plugin support
|
|
75
|
+
try:
|
|
76
|
+
hiddenimports += collect_submodules("beancount")
|
|
77
|
+
datas += collect_data_files("beancount")
|
|
78
|
+
except Exception:
|
|
79
|
+
pass
|
|
80
|
+
|
|
81
|
+
a = Analysis(
|
|
82
|
+
[str(rustfava_dir / "cli.py")],
|
|
83
|
+
pathex=[str(src_dir)],
|
|
84
|
+
datas=datas,
|
|
85
|
+
hiddenimports=hiddenimports,
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
pyz = PYZ(
|
|
89
|
+
a.pure,
|
|
90
|
+
a.zipped_data,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
exe = EXE(
|
|
94
|
+
pyz,
|
|
95
|
+
a.scripts,
|
|
96
|
+
a.binaries,
|
|
97
|
+
a.zipfiles,
|
|
98
|
+
a.datas,
|
|
99
|
+
[],
|
|
100
|
+
name="rustfava",
|
|
101
|
+
upx=True,
|
|
102
|
+
)
|
|
@@ -39,8 +39,8 @@ fn get_example_file_path(app: AppHandle) -> Result<String, String> {
|
|
|
39
39
|
let resource_dir = app.path().resource_dir()
|
|
40
40
|
.map_err(|e| format!("Failed to get resource dir: {}", e))?;
|
|
41
41
|
|
|
42
|
-
// Try bundled resource first
|
|
43
|
-
let bundled_path = resource_dir.join("
|
|
42
|
+
// Try bundled resource first (copied to resources root by Tauri)
|
|
43
|
+
let bundled_path = resource_dir.join("example.beancount");
|
|
44
44
|
if bundled_path.exists() {
|
|
45
45
|
return Ok(bundled_path.to_string_lossy().to_string());
|
|
46
46
|
}
|
|
@@ -115,16 +115,8 @@ fn open_file(
|
|
|
115
115
|
// Find a free port
|
|
116
116
|
let port = find_free_port();
|
|
117
117
|
|
|
118
|
-
//
|
|
119
|
-
let
|
|
120
|
-
.shell()
|
|
121
|
-
.sidecar("rustfava-server")
|
|
122
|
-
.map_err(|e| format!("Failed to create sidecar command: {}", e))?
|
|
123
|
-
.args([&path, "-p", &port.to_string()]);
|
|
124
|
-
|
|
125
|
-
let (mut _rx, child) = sidecar
|
|
126
|
-
.spawn()
|
|
127
|
-
.map_err(|e| format!("Failed to spawn sidecar: {}", e))?;
|
|
118
|
+
// Try sidecar first (bundled releases), then fall back to PATH (NixOS/system install)
|
|
119
|
+
let child = spawn_rustfava_server(&app, &path, port)?;
|
|
128
120
|
|
|
129
121
|
// Generate tab ID and store
|
|
130
122
|
let tab_id = generate_id(&state, "tab");
|
|
@@ -147,6 +139,29 @@ fn open_file(
|
|
|
147
139
|
}))
|
|
148
140
|
}
|
|
149
141
|
|
|
142
|
+
/// Spawn rustfava server - tries sidecar first, then falls back to PATH
|
|
143
|
+
fn spawn_rustfava_server(app: &AppHandle, path: &str, port: u16) -> Result<CommandChild, String> {
|
|
144
|
+
// Try bundled sidecar first (for AppImage/DMG/MSI releases)
|
|
145
|
+
if let Ok(sidecar) = app.shell().sidecar("rustfava-server") {
|
|
146
|
+
if let Ok((_, child)) = sidecar.args([path, "-p", &port.to_string()]).spawn() {
|
|
147
|
+
return Ok(child);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Fall back to rustfava-server from PATH (for NixOS flake installs)
|
|
152
|
+
// The flake creates symlinks without the target triple suffix
|
|
153
|
+
let command = app
|
|
154
|
+
.shell()
|
|
155
|
+
.command("rustfava-server")
|
|
156
|
+
.args([path, "-p", &port.to_string()]);
|
|
157
|
+
|
|
158
|
+
let (_, child) = command
|
|
159
|
+
.spawn()
|
|
160
|
+
.map_err(|e| format!("Failed to spawn rustfava-server: {}. Make sure the desktop app is properly installed.", e))?;
|
|
161
|
+
|
|
162
|
+
Ok(child)
|
|
163
|
+
}
|
|
164
|
+
|
|
150
165
|
/// Close a tab and kill its server
|
|
151
166
|
#[tauri::command]
|
|
152
167
|
fn close_tab(tab_id: String, state: State<AppState>) -> Result<(), String> {
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Deployment
|
|
2
|
+
|
|
3
|
+
There are several ways to deploy rustfava depending on your needs.
|
|
4
|
+
|
|
5
|
+
## Desktop App
|
|
6
|
+
|
|
7
|
+
For personal use, the [desktop app](https://github.com/rustledger/rustfava/releases) is the simplest option. It runs entirely locally with no server setup required.
|
|
8
|
+
|
|
9
|
+
## Docker
|
|
10
|
+
|
|
11
|
+
For server deployments, Docker is recommended:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For advanced Docker configurations (authentication, HTTPS, docker-compose), see the [Docker deployment guide](../contrib/docker/README.md).
|
|
18
|
+
|
|
19
|
+
## Systemd Service
|
|
20
|
+
|
|
21
|
+
To run rustfava as a system service on Linux:
|
|
22
|
+
|
|
23
|
+
```ini
|
|
24
|
+
# /etc/systemd/system/rustfava.service
|
|
25
|
+
[Unit]
|
|
26
|
+
Description=rustfava Web UI for Beancount
|
|
27
|
+
After=network.target
|
|
28
|
+
|
|
29
|
+
[Service]
|
|
30
|
+
Type=simple
|
|
31
|
+
ExecStart=/usr/bin/rustfava --host 127.0.0.1 --port 5000 /path/to/main.beancount
|
|
32
|
+
User=your-user
|
|
33
|
+
Restart=on-failure
|
|
34
|
+
|
|
35
|
+
[Install]
|
|
36
|
+
WantedBy=multi-user.target
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Then:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sudo systemctl enable rustfava
|
|
43
|
+
sudo systemctl start rustfava
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Reverse Proxy
|
|
47
|
+
|
|
48
|
+
### Apache
|
|
49
|
+
|
|
50
|
+
```apache
|
|
51
|
+
ProxyPass "/rustfava" "http://localhost:5000/rustfava"
|
|
52
|
+
ProxyPassReverse "/rustfava" "http://localhost:5000/rustfava"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Run rustfava with the `--prefix` option:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
rustfava --prefix /rustfava /path/to/main.beancount
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Nginx
|
|
62
|
+
|
|
63
|
+
```nginx
|
|
64
|
+
location /rustfava/ {
|
|
65
|
+
proxy_pass http://127.0.0.1:5000/rustfava/;
|
|
66
|
+
proxy_set_header Host $host;
|
|
67
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
68
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
69
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Caddy
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
your-domain.com {
|
|
77
|
+
reverse_proxy localhost:5000
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Caddy automatically handles HTTPS with Let's Encrypt.
|
|
82
|
+
|
|
83
|
+
## Security Considerations
|
|
84
|
+
|
|
85
|
+
When exposing rustfava to the internet:
|
|
86
|
+
|
|
87
|
+
1. **Use HTTPS** - Never expose plain HTTP to the public internet
|
|
88
|
+
2. **Add authentication** - Use a reverse proxy with OAuth2 or basic auth
|
|
89
|
+
3. **Restrict access** - Use firewall rules to limit access to trusted IPs
|
|
90
|
+
4. **Keep updated** - Regularly update rustfava for security patches
|
|
91
|
+
|
|
92
|
+
See [SECURITY.md](../SECURITY.md) for more security best practices.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Welcome to rustfava!
|
|
2
|
+
|
|
3
|
+
rustfava is a web interface for double-entry bookkeeping, powered by
|
|
4
|
+
[rustledger](https://github.com/rustledger/rustledger), a Rust-based parser for
|
|
5
|
+
the Beancount file format compiled to WebAssembly for fast processing.
|
|
6
|
+
|
|
7
|
+
rustfava is a fork of [Fava](https://beancount.github.io/fava/) that replaces
|
|
8
|
+
the Python Beancount parser with rustledger for improved performance. Your
|
|
9
|
+
existing Beancount files are fully compatible.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
If you are new to rustfava or Beancount-format files, begin with the
|
|
14
|
+
[Getting Started](usage.md) guide.
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
### Desktop App (Recommended)
|
|
19
|
+
|
|
20
|
+
Download the desktop app from [GitHub Releases](https://github.com/rustledger/rustfava/releases) - no installation required, just double-click to run.
|
|
21
|
+
|
|
22
|
+
### Command Line
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
uv tool install rustfava
|
|
26
|
+
rustfava ledger.beancount
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Then visit [http://localhost:5000](http://localhost:5000).
|
|
30
|
+
|
|
31
|
+
### Docker
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
|
|
35
|
+
```
|
|
Binary file
|