rustfava 0.1.0__py3-none-any.whl
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/__init__.py +30 -0
- rustfava/_ctx_globals_class.py +55 -0
- rustfava/api_models.py +36 -0
- rustfava/application.py +534 -0
- rustfava/beans/__init__.py +6 -0
- rustfava/beans/abc.py +327 -0
- rustfava/beans/account.py +79 -0
- rustfava/beans/create.py +377 -0
- rustfava/beans/flags.py +20 -0
- rustfava/beans/funcs.py +38 -0
- rustfava/beans/helpers.py +52 -0
- rustfava/beans/ingest.py +75 -0
- rustfava/beans/load.py +31 -0
- rustfava/beans/prices.py +151 -0
- rustfava/beans/protocols.py +82 -0
- rustfava/beans/str.py +454 -0
- rustfava/beans/types.py +63 -0
- rustfava/cli.py +187 -0
- rustfava/context.py +13 -0
- rustfava/core/__init__.py +729 -0
- rustfava/core/accounts.py +161 -0
- rustfava/core/attributes.py +145 -0
- rustfava/core/budgets.py +207 -0
- rustfava/core/charts.py +301 -0
- rustfava/core/commodities.py +37 -0
- rustfava/core/conversion.py +229 -0
- rustfava/core/documents.py +87 -0
- rustfava/core/extensions.py +132 -0
- rustfava/core/fava_options.py +255 -0
- rustfava/core/file.py +542 -0
- rustfava/core/filters.py +484 -0
- rustfava/core/group_entries.py +97 -0
- rustfava/core/ingest.py +509 -0
- rustfava/core/inventory.py +167 -0
- rustfava/core/misc.py +105 -0
- rustfava/core/module_base.py +18 -0
- rustfava/core/number.py +106 -0
- rustfava/core/query.py +180 -0
- rustfava/core/query_shell.py +301 -0
- rustfava/core/tree.py +265 -0
- rustfava/core/watcher.py +219 -0
- rustfava/ext/__init__.py +232 -0
- rustfava/ext/auto_commit.py +61 -0
- rustfava/ext/portfolio_list/PortfolioList.js +34 -0
- rustfava/ext/portfolio_list/__init__.py +29 -0
- rustfava/ext/portfolio_list/templates/PortfolioList.html +15 -0
- rustfava/ext/rustfava_ext_test/RustfavaExtTest.js +42 -0
- rustfava/ext/rustfava_ext_test/__init__.py +207 -0
- rustfava/ext/rustfava_ext_test/templates/RustfavaExtTest.html +45 -0
- rustfava/ext/rustfava_ext_test/templates/RustfavaExtTestInclude.html +1 -0
- rustfava/help/__init__.py +15 -0
- rustfava/help/_index.md +29 -0
- rustfava/help/beancount_syntax.md +156 -0
- rustfava/help/budgets.md +31 -0
- rustfava/help/conversion.md +29 -0
- rustfava/help/extensions.md +111 -0
- rustfava/help/features.md +179 -0
- rustfava/help/filters.md +103 -0
- rustfava/help/import.md +27 -0
- rustfava/help/options.md +289 -0
- rustfava/helpers.py +30 -0
- rustfava/internal_api.py +221 -0
- rustfava/json_api.py +952 -0
- rustfava/plugins/__init__.py +3 -0
- rustfava/plugins/link_documents.py +107 -0
- rustfava/plugins/tag_discovered_documents.py +44 -0
- rustfava/py.typed +0 -0
- rustfava/rustledger/__init__.py +31 -0
- rustfava/rustledger/constants.py +76 -0
- rustfava/rustledger/engine.py +485 -0
- rustfava/rustledger/loader.py +273 -0
- rustfava/rustledger/options.py +202 -0
- rustfava/rustledger/query.py +331 -0
- rustfava/rustledger/types.py +830 -0
- rustfava/serialisation.py +220 -0
- rustfava/static/app.css +2988 -0
- rustfava/static/app.css.map +7 -0
- rustfava/static/app.js +12854 -0
- rustfava/static/app.js.map +7 -0
- rustfava/static/beancount-JFV44ZVZ.css +5 -0
- rustfava/static/beancount-JFV44ZVZ.css.map +7 -0
- rustfava/static/beancount-VTTKRGSK.js +4642 -0
- rustfava/static/beancount-VTTKRGSK.js.map +7 -0
- rustfava/static/bql-MGFRUMBP.js +333 -0
- rustfava/static/bql-MGFRUMBP.js.map +7 -0
- rustfava/static/chunk-E7ZF4ASL.js +23061 -0
- rustfava/static/chunk-E7ZF4ASL.js.map +7 -0
- rustfava/static/chunk-V24TLQHT.js +12673 -0
- rustfava/static/chunk-V24TLQHT.js.map +7 -0
- rustfava/static/favicon.ico +0 -0
- rustfava/static/fira-mono-cyrillic-400-normal-BLAGXRCE.woff2 +0 -0
- rustfava/static/fira-mono-cyrillic-500-normal-EN7JUAAW.woff2 +0 -0
- rustfava/static/fira-mono-cyrillic-ext-400-normal-EX7VARTS.woff2 +0 -0
- rustfava/static/fira-mono-cyrillic-ext-500-normal-ZDPTUPRR.woff2 +0 -0
- rustfava/static/fira-mono-greek-400-normal-COGHKMOA.woff2 +0 -0
- rustfava/static/fira-mono-greek-500-normal-4EN2PKZT.woff2 +0 -0
- rustfava/static/fira-mono-greek-ext-400-normal-DYEQIJH7.woff2 +0 -0
- rustfava/static/fira-mono-greek-ext-500-normal-SG73CVKQ.woff2 +0 -0
- rustfava/static/fira-mono-latin-400-normal-NA3VLV7E.woff2 +0 -0
- rustfava/static/fira-mono-latin-500-normal-YC77GFWD.woff2 +0 -0
- rustfava/static/fira-mono-latin-ext-400-normal-DIKTZ5PW.woff2 +0 -0
- rustfava/static/fira-mono-latin-ext-500-normal-ZWY4UO4V.woff2 +0 -0
- rustfava/static/fira-mono-symbols2-400-normal-UITXT77Q.woff2 +0 -0
- rustfava/static/fira-mono-symbols2-500-normal-VWPC2EFN.woff2 +0 -0
- rustfava/static/fira-sans-cyrillic-400-normal-KLQMBCA6.woff2 +0 -0
- rustfava/static/fira-sans-cyrillic-500-normal-NFG7UD6J.woff2 +0 -0
- rustfava/static/fira-sans-cyrillic-ext-400-normal-GWO44OPC.woff2 +0 -0
- rustfava/static/fira-sans-cyrillic-ext-500-normal-SP47E5SC.woff2 +0 -0
- rustfava/static/fira-sans-greek-400-normal-UMQBTLC3.woff2 +0 -0
- rustfava/static/fira-sans-greek-500-normal-4ZKHN4FQ.woff2 +0 -0
- rustfava/static/fira-sans-greek-ext-400-normal-O2DVJAJZ.woff2 +0 -0
- rustfava/static/fira-sans-greek-ext-500-normal-SK6GNWGO.woff2 +0 -0
- rustfava/static/fira-sans-latin-400-normal-OYYTPMAV.woff2 +0 -0
- rustfava/static/fira-sans-latin-500-normal-SMQPZW5A.woff2 +0 -0
- rustfava/static/fira-sans-latin-ext-400-normal-OAUP3WK5.woff2 +0 -0
- rustfava/static/fira-sans-latin-ext-500-normal-LY3YDR5Y.woff2 +0 -0
- rustfava/static/fira-sans-vietnamese-400-normal-OBMQ72MR.woff2 +0 -0
- rustfava/static/fira-sans-vietnamese-500-normal-Y4NZR5EU.woff2 +0 -0
- rustfava/static/source-code-pro-cyrillic-400-normal-TO22V6M3.woff2 +0 -0
- rustfava/static/source-code-pro-cyrillic-500-normal-OGBWWWYW.woff2 +0 -0
- rustfava/static/source-code-pro-cyrillic-ext-400-normal-XH44UCIA.woff2 +0 -0
- rustfava/static/source-code-pro-cyrillic-ext-500-normal-3Z6MMVM6.woff2 +0 -0
- rustfava/static/source-code-pro-greek-400-normal-OUXXUQWK.woff2 +0 -0
- rustfava/static/source-code-pro-greek-500-normal-JA2Z5UXO.woff2 +0 -0
- rustfava/static/source-code-pro-greek-ext-400-normal-WCDKMX7U.woff2 +0 -0
- rustfava/static/source-code-pro-greek-ext-500-normal-ZHVI4VKW.woff2 +0 -0
- rustfava/static/source-code-pro-latin-400-normal-QOGTXED5.woff2 +0 -0
- rustfava/static/source-code-pro-latin-500-normal-X57QEOLQ.woff2 +0 -0
- rustfava/static/source-code-pro-latin-ext-400-normal-QXC74NBF.woff2 +0 -0
- rustfava/static/source-code-pro-latin-ext-500-normal-QGOY7MTT.woff2 +0 -0
- rustfava/static/source-code-pro-vietnamese-400-normal-NPDCDTBA.woff2 +0 -0
- rustfava/static/source-code-pro-vietnamese-500-normal-M6PJKTR5.woff2 +0 -0
- rustfava/static/tree-sitter-beancount-MLXFQBZ5.wasm +0 -0
- rustfava/static/web-tree-sitter-RNOQ6E74.wasm +0 -0
- rustfava/template_filters.py +64 -0
- rustfava/templates/_journal_table.html +156 -0
- rustfava/templates/_layout.html +26 -0
- rustfava/templates/_query_table.html +88 -0
- rustfava/templates/beancount_file +18 -0
- rustfava/templates/help.html +23 -0
- rustfava/templates/macros/_account_macros.html +5 -0
- rustfava/templates/macros/_commodity_macros.html +13 -0
- rustfava/translations/bg/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/bg/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/ca/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/ca/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/de/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/de/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/es/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/es/LC_MESSAGES/messages.po +619 -0
- rustfava/translations/fa/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/fa/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/fr/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/fr/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/ja/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/ja/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/nl/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/nl/LC_MESSAGES/messages.po +617 -0
- rustfava/translations/pt/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/pt/LC_MESSAGES/messages.po +617 -0
- rustfava/translations/pt_BR/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/pt_BR/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/ru/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/ru/LC_MESSAGES/messages.po +617 -0
- rustfava/translations/sk/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/sk/LC_MESSAGES/messages.po +623 -0
- rustfava/translations/sv/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/sv/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/uk/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/uk/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/zh/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/zh/LC_MESSAGES/messages.po +618 -0
- rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo +0 -0
- rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.po +618 -0
- rustfava/util/__init__.py +157 -0
- rustfava/util/date.py +576 -0
- rustfava/util/excel.py +118 -0
- rustfava/util/ranking.py +79 -0
- rustfava/util/sets.py +18 -0
- rustfava/util/unreachable.py +20 -0
- rustfava-0.1.0.dist-info/METADATA +102 -0
- rustfava-0.1.0.dist-info/RECORD +187 -0
- rustfava-0.1.0.dist-info/WHEEL +5 -0
- rustfava-0.1.0.dist-info/entry_points.txt +2 -0
- rustfava-0.1.0.dist-info/licenses/AUTHORS +11 -0
- rustfava-0.1.0.dist-info/licenses/LICENSE +21 -0
- rustfava-0.1.0.dist-info/top_level.txt +1 -0
rustfava/util/ranking.py
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""Ranking utilities."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import math
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
9
|
+
import datetime
|
|
10
|
+
from collections.abc import Sequence
|
|
11
|
+
|
|
12
|
+
ZERO = 0.0
|
|
13
|
+
DEFAULT_RATE = math.log(2) * 1 / 365
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ExponentialDecayRanker:
|
|
17
|
+
"""Rank a list by exponential decay.
|
|
18
|
+
|
|
19
|
+
Maintains scores for the items in a list. We can think of this as the sum
|
|
20
|
+
of all 'likes', where the value of a 'like' starts at 1 and decays
|
|
21
|
+
exponentially. So the current score would be given by (where `t` is the
|
|
22
|
+
current time and `l` is the time of the 'like')
|
|
23
|
+
|
|
24
|
+
s = Σ exp(-RATE * (t - l))
|
|
25
|
+
|
|
26
|
+
As only the relative order on the items is relevant, we can multiply all
|
|
27
|
+
scores by exp(RATE * t) and so we need to compute the following
|
|
28
|
+
score:
|
|
29
|
+
|
|
30
|
+
s = Σ exp(RATE * l)
|
|
31
|
+
|
|
32
|
+
To avoid huge numbers, we actually compute and store the logarithm of that
|
|
33
|
+
sum.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
list_: If given, this list is ranked is by ``.sort()`` otherwise all
|
|
37
|
+
items with at least one 'like' will be ranked.
|
|
38
|
+
rate: This sets the rate of decay. ``1/rate`` will be the time (in
|
|
39
|
+
days) that it takes for the value of a 'like' to decrease by
|
|
40
|
+
``1/e``. The default rate is set to ``math.log(2) * 1/365`` so
|
|
41
|
+
that a 'like' from a year ago will count half as much as one from
|
|
42
|
+
today.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
__slots__ = ("list", "rate", "scores")
|
|
46
|
+
|
|
47
|
+
def __init__(
|
|
48
|
+
self,
|
|
49
|
+
list_: Sequence[str] | None = None,
|
|
50
|
+
rate: float = DEFAULT_RATE,
|
|
51
|
+
) -> None:
|
|
52
|
+
self.list = list_
|
|
53
|
+
self.rate = rate
|
|
54
|
+
# We don't need to start with float('-inf') here as only the relative
|
|
55
|
+
# scores matter.
|
|
56
|
+
self.scores: dict[str, float] = {}
|
|
57
|
+
|
|
58
|
+
def update(self, item: str, date: datetime.date) -> None:
|
|
59
|
+
"""Add 'like' for item.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
item: An item in the list that is being ranked.
|
|
63
|
+
date: The date on which the item has been liked.
|
|
64
|
+
"""
|
|
65
|
+
score = self.get(item)
|
|
66
|
+
time = date.toordinal()
|
|
67
|
+
higher = max(score, time * self.rate)
|
|
68
|
+
lower = min(score, time * self.rate)
|
|
69
|
+
self.scores[item] = higher + math.log1p(math.exp(lower - higher))
|
|
70
|
+
|
|
71
|
+
def get(self, item: str) -> float:
|
|
72
|
+
"""Get the current score for an item, or zero."""
|
|
73
|
+
return self.scores.get(item, ZERO)
|
|
74
|
+
|
|
75
|
+
def sort(self) -> list[str]:
|
|
76
|
+
"""Return items sorted by rank."""
|
|
77
|
+
if self.list is None:
|
|
78
|
+
return sorted(self.scores.keys(), key=self.get, reverse=True)
|
|
79
|
+
return sorted(self.list, key=self.get, reverse=True)
|
rustfava/util/sets.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"""Utils for Python sets."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
8
|
+
from collections.abc import Set as AbstractSet
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def add_to_set(set_: AbstractSet[str] | None, new: str) -> set[str]:
|
|
12
|
+
"""Add an entry to a set (or create it if doesn't exist).
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
set_: The (optional) set to add an element to.
|
|
16
|
+
new: The string to add to the set.
|
|
17
|
+
"""
|
|
18
|
+
return set(set_).union([new]) if set_ is not None else {new}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Type checking helper for unreachable code."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING: # pragma: no cover
|
|
8
|
+
from typing import Never
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UnreachableCodeAssertionError(AssertionError):
|
|
12
|
+
"""Expected code to be unreachable."""
|
|
13
|
+
|
|
14
|
+
def __init__(self) -> None: # pragma: no cover
|
|
15
|
+
super().__init__("Expected code to be unreachable")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def assert_never(_: Never) -> Never: # pragma: no cover
|
|
19
|
+
"""Assert that this code is unreachable."""
|
|
20
|
+
raise UnreachableCodeAssertionError
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rustfava
|
|
3
|
+
Version: 0.1.0
|
|
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
|
+
# Rustfava
|
|
53
|
+
|
|
54
|
+
Rustfava is a web interface for the double-entry bookkeeping software
|
|
55
|
+
[rustledger](https://github.com/rustledger/rustledger), a Rust-based
|
|
56
|
+
implementation of the Beancount format.
|
|
57
|
+
|
|
58
|
+
This is a fork of [Fava](https://github.com/beancount/fava) that replaces the
|
|
59
|
+
Python beancount parser with rustledger, compiled to WebAssembly for faster
|
|
60
|
+
parsing and processing.
|
|
61
|
+
|
|
62
|
+
## Getting Started
|
|
63
|
+
|
|
64
|
+
### Option 1: Desktop App (Recommended)
|
|
65
|
+
|
|
66
|
+
Download the desktop app from [GitHub Releases](https://github.com/rustledger/rustfava/releases):
|
|
67
|
+
|
|
68
|
+
- **macOS**: `rustfava_x.x.x_universal.dmg`
|
|
69
|
+
- **Windows**: `rustfava_x.x.x_x64-setup.exe`
|
|
70
|
+
- **Linux**: `rustfava_x.x.x_amd64.AppImage`
|
|
71
|
+
|
|
72
|
+
Double-click to launch, then open your `.beancount` file.
|
|
73
|
+
|
|
74
|
+
### Option 2: Docker
|
|
75
|
+
|
|
76
|
+
Run the server in a container:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
docker run -p 5000:5000 -v /path/to/ledger:/data ghcr.io/rustledger/rustfava /data/main.beancount
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Then visit [http://localhost:5000](http://localhost:5000).
|
|
83
|
+
|
|
84
|
+
### Option 3: uv install
|
|
85
|
+
|
|
86
|
+
For developers or advanced users. Requires Python 3.13+ and [wasmtime](https://wasmtime.dev/):
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
uv tool install rustfava
|
|
90
|
+
rustfava ledger.beancount
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Then visit [http://localhost:5000](http://localhost:5000).
|
|
94
|
+
|
|
95
|
+
## Development
|
|
96
|
+
|
|
97
|
+
See the repository for development instructions. Contributions are welcome!
|
|
98
|
+
|
|
99
|
+
## Links
|
|
100
|
+
|
|
101
|
+
- Source: https://github.com/rustledger/rustfava
|
|
102
|
+
- Documentation: https://rustledger.github.io/rustfava/
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
rustfava/__init__.py,sha256=7XI4ubkePWCoW1tPgNvAW0joObipdFNAmiqXaUdjBrM,452
|
|
2
|
+
rustfava/_ctx_globals_class.py,sha256=9yAFZesTGipq9BlsjqQ-UoZGSmyVJccuwLkSqraKHaE,1705
|
|
3
|
+
rustfava/api_models.py,sha256=vrBOctgUM1VI1BhhqAmvrVCMKcNRW5kHQMIVzsTGTlw,1052
|
|
4
|
+
rustfava/application.py,sha256=-6SFXtjl0f6wdBTLxLzEvVSJNbfHJsPBbST4Jc4cWpc,18797
|
|
5
|
+
rustfava/cli.py,sha256=IcUAYdno990iujz3NIBZp_n3qrX7DS6xTcWmewlmFdM,5406
|
|
6
|
+
rustfava/context.py,sha256=K4KZ0q-kqwoJRGCHfX7Nou48a6_8WtxLse-vmlvNjTY,299
|
|
7
|
+
rustfava/helpers.py,sha256=8JJ6MJMY8uzntcF1x-XsyNf9aGfvgkkmMQCD8GJghCE,687
|
|
8
|
+
rustfava/internal_api.py,sha256=SPp2q8WWHCSTbI19jzlh7GQ6nDbAy9Dpx6U7NuU4bvg,6458
|
|
9
|
+
rustfava/json_api.py,sha256=9Hf70scaJX9oWRXIkJghuDPaQOBfRPzK5PeW0pRUjuI,27314
|
|
10
|
+
rustfava/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
rustfava/serialisation.py,sha256=K4wK0iXCWJ0iCpY-vZ_2RtoyGyZq971DSkQ_QPNGpxY,7105
|
|
12
|
+
rustfava/template_filters.py,sha256=OXXKdxq8re9l7XsnldMV_saz1aKMBR6rBS2MeHqtOaY,1624
|
|
13
|
+
rustfava/beans/__init__.py,sha256=q1REpeo3Kqd-9CXtYei-nY4GTlcmuGQeclQbRtkED0s,172
|
|
14
|
+
rustfava/beans/abc.py,sha256=Ahiq1OiTyBuAEH6rjcOhkxnKLzWCu9vz3wztqGGARU8,7108
|
|
15
|
+
rustfava/beans/account.py,sha256=ht2Q1b3VjxP6lN6uUUktBzwI49ialX5z9BkfwzVwZzc,2268
|
|
16
|
+
rustfava/beans/create.py,sha256=tQaiiXTtMervHhCUw26NJ0EiFOGAdQUQMzTpGvxqXUo,11459
|
|
17
|
+
rustfava/beans/flags.py,sha256=YXqFICdwLjXaZniVZkE_ysCzQdgf1DdN673FXFn2maU,377
|
|
18
|
+
rustfava/beans/funcs.py,sha256=UOD2Zl8a22pzl-OOQD_mqSkOQO6bQI7qF3qsrF16ees,1481
|
|
19
|
+
rustfava/beans/helpers.py,sha256=iuUxdQ_nA7x2vC_MkJDnXoGf6JBi9C2bINut2PNEEEI,1568
|
|
20
|
+
rustfava/beans/ingest.py,sha256=pDFplJ6BuR17uizZgiJ4hhbk72FpPUQrLoIdCyNDAwg,2116
|
|
21
|
+
rustfava/beans/load.py,sha256=4VTGFW_Dil_HcXcXpmojorGuWXeF7IlfO_Cc1UFS4Nc,910
|
|
22
|
+
rustfava/beans/prices.py,sha256=jhzI6PDdM2t6-thD9US9IudMI6OIfPW4mzZO4SczysM,4711
|
|
23
|
+
rustfava/beans/protocols.py,sha256=39X6MpXYk-EAkSfIBQNRN9DnrbmChbOwjfwTCPCfsqk,1789
|
|
24
|
+
rustfava/beans/str.py,sha256=OIxaYFyhgy5pa7DR-6sjTKcwepTAG8fCsYAeUvmI8Q0,14085
|
|
25
|
+
rustfava/beans/types.py,sha256=bL25CGzlwzaF0rrTM-ttySoVrTqKJfx5ZkhVMXLP4Os,1622
|
|
26
|
+
rustfava/core/__init__.py,sha256=5-6hAa3q6TtrIPBvN5bFhyNxoNyPU3w675aYErySUw0,24120
|
|
27
|
+
rustfava/core/accounts.py,sha256=T3Eo-0vhPX5oaRFfG_CgzxXAgT9ZlZNcdu0KbETJYjs,5322
|
|
28
|
+
rustfava/core/attributes.py,sha256=xnn-gx9hXiiHvJpiGEpYlm_0mkXneELAcMWH8zbc5B0,5068
|
|
29
|
+
rustfava/core/budgets.py,sha256=xXPEgPIb4yb9ZzHYjmX64I2atrAUYX4hVNJEtvWp7fc,5829
|
|
30
|
+
rustfava/core/charts.py,sha256=O9E2psopmOJMaMmxzqfiV0RG_siyFvRZfhPv2_JXfIo,9658
|
|
31
|
+
rustfava/core/commodities.py,sha256=znmPq4HrugVYgeP5j4g1bN6EGm7ytR05rETwmaAT6pY,1274
|
|
32
|
+
rustfava/core/conversion.py,sha256=JphwmxMJk1XpzBp1V59JW8TgOzSqRyziUNaSR_cXmnI,6723
|
|
33
|
+
rustfava/core/documents.py,sha256=LyeFrwLeTWfIp5aNi5NqM6ZbElMqR6RdkOjOys0va8s,2534
|
|
34
|
+
rustfava/core/extensions.py,sha256=4K4vdjLy9Gc9BTNRC_jJMSnIrQvj_JAhE1a3KmHo9Lo,4551
|
|
35
|
+
rustfava/core/fava_options.py,sha256=tltcZ2jDG-sAeRFe2_ijmPKT9lJQGFOlmm_Nu3JJNg0,8614
|
|
36
|
+
rustfava/core/file.py,sha256=gNyOOED7JVKQ7V2yY_0Lw8BuW5XzNgi9cUbiyQkJ2y4,17202
|
|
37
|
+
rustfava/core/filters.py,sha256=lfJbUHloDcubVV0BjAjFSYcC3Tr_IWPLbwQS0GcOK18,13265
|
|
38
|
+
rustfava/core/group_entries.py,sha256=5r3p4efCMbkApErq8F30T061tG1jLvTWHi9L_eLnRG4,2536
|
|
39
|
+
rustfava/core/ingest.py,sha256=Iw4NPnaEB4ix9LPPYLn56nNjP56jckqW7B9XXebcTzk,15143
|
|
40
|
+
rustfava/core/inventory.py,sha256=B5agnG8ugntlsQIxDKcwObXxvXO608M-tZNh_yv0y4E,5147
|
|
41
|
+
rustfava/core/misc.py,sha256=1sQb-FaKAZFqLBnm2m-ZkDjuhgJLU5pEbtdoCxG83DQ,2910
|
|
42
|
+
rustfava/core/module_base.py,sha256=rjtSVV8BjT7klpjgXHtLu4A8hE8iQbZvf5Gs_bWotZI,459
|
|
43
|
+
rustfava/core/number.py,sha256=_OgBF4y-n5OVk11NLHtDpTvMIxqfwChcXGixeV1ax5I,3316
|
|
44
|
+
rustfava/core/query.py,sha256=ygbgV6n0v2aQlJaVGJDP3h8fnKI1IaBwt11Jim4g780,4066
|
|
45
|
+
rustfava/core/query_shell.py,sha256=BtCZpHCLZ7aBc8kIopZyh1E_MPUUdcH_ozmSABBEqdE,10032
|
|
46
|
+
rustfava/core/tree.py,sha256=1Jb8ORH1PGaDhkO9jd4SPVtg9UhcEdyXQXXDjGOQYuI,8349
|
|
47
|
+
rustfava/core/watcher.py,sha256=qKf38Y4Yt7tbHqWyUgLHt4OssxW6xRFhT-HPidDvsv4,6982
|
|
48
|
+
rustfava/ext/__init__.py,sha256=Rmd7TbMOmo8Hq9Otm4uz7qySVIvR6k5gkstOMEuEw78,7011
|
|
49
|
+
rustfava/ext/auto_commit.py,sha256=1nB2ZcutDLIAcv42N0jAtFF0wM53aWQ53wRlzwgK29s,2043
|
|
50
|
+
rustfava/ext/portfolio_list/PortfolioList.js,sha256=IBDLXgXnnUDw3oYXk2zxw1EMSUMQ00GLfkIgSI_9AO0,1184
|
|
51
|
+
rustfava/ext/portfolio_list/__init__.py,sha256=wHAAqLDmIHywttfdqFoDw8ZTMdcB47Iny8o8ZjvmJos,826
|
|
52
|
+
rustfava/ext/portfolio_list/templates/PortfolioList.html,sha256=KKNp-WGHOT2qUVXRY-QnwXgS8LKb4azPTF7pD6rDBWI,600
|
|
53
|
+
rustfava/ext/rustfava_ext_test/RustfavaExtTest.js,sha256=e-YxrL9w2krMNUmlNCFFKpE6kTnT8lcMGCe0W0zh7sM,1476
|
|
54
|
+
rustfava/ext/rustfava_ext_test/__init__.py,sha256=ueP8Sr8rkmwICq9NbMC_2N3vD_CvQGMI_ZDvMbb1t4Y,6212
|
|
55
|
+
rustfava/ext/rustfava_ext_test/templates/RustfavaExtTest.html,sha256=qoyZfkbeGknkXS0ypkntM8LpGnzT9X31A-aAUUgZSck,1753
|
|
56
|
+
rustfava/ext/rustfava_ext_test/templates/RustfavaExtTestInclude.html,sha256=yCzzf9ByEh7_PtyX7s5Flqpz2mTGLqiIbCEAgbr1IZY,29
|
|
57
|
+
rustfava/help/__init__.py,sha256=nFSnj_6UnyyACURLTEd57kDw0X4UMYrLQBWqvXP46gg,372
|
|
58
|
+
rustfava/help/_index.md,sha256=34DyhTvp2HiMrkfGf8wyXdYvKdg1d65eH_e_L6-9_RM,1373
|
|
59
|
+
rustfava/help/beancount_syntax.md,sha256=CBHUxPWmB6N1ELU511QperkNvOSkUYCcHaxAmJym6NU,5637
|
|
60
|
+
rustfava/help/budgets.md,sha256=2PT-lZm8SoOQY09Uij2y61Lt5VdVffMb1LVvzxKqSrQ,1517
|
|
61
|
+
rustfava/help/conversion.md,sha256=E-WPJWp1i8K-w0GAiljWnas4GzDpoUQCMyS4cnBNVy8,1688
|
|
62
|
+
rustfava/help/extensions.md,sha256=RJ5Eg8Chv_dh174txebXym04fJCxGoqmSsYXJpluXLE,4276
|
|
63
|
+
rustfava/help/features.md,sha256=jutmOCoRluZ77xdI4kupfrgdCtFN6_hI9qxkMYmKX48,6927
|
|
64
|
+
rustfava/help/filters.md,sha256=gUTCgdvrNDoQ81QH0mIRHxCYeVLvzQXew4ygvTfm1uw,5537
|
|
65
|
+
rustfava/help/import.md,sha256=kxYmgxGQLNjFJ9dyobe_DNTwQb80UuIO-BSLJJ_zfLs,1447
|
|
66
|
+
rustfava/help/options.md,sha256=6p5ifQXuuooK1xc-S9hN65Xnud2649bMNIH5CO-iG0I,9337
|
|
67
|
+
rustfava/plugins/__init__.py,sha256=2A0n66vvMOc6W3hb1NqjuUsL54JJjpH1LaAV3y75d2w,66
|
|
68
|
+
rustfava/plugins/link_documents.py,sha256=NDlx5mptKTbQ6_KI8VYwai-K89uqrqGcsgQLpe-IutM,3611
|
|
69
|
+
rustfava/plugins/tag_discovered_documents.py,sha256=hAewOfF4ewFdPGz4oMEXORdLp4erD9hdXi5sRq3O1ns,1364
|
|
70
|
+
rustfava/rustledger/__init__.py,sha256=nqIQsU5fyEY3S4lWYc1mgFLfU89dKAPTQ-4aPUqPF8A,719
|
|
71
|
+
rustfava/rustledger/constants.py,sha256=jn1Ha5WTmpBgEOZIJsxa00-6QL-gBFkiURL3A27VHDk,1487
|
|
72
|
+
rustfava/rustledger/engine.py,sha256=-jjSj_QPCDy_fT0LVtFqlhJw8EPrr28pewgFv20FIps,15423
|
|
73
|
+
rustfava/rustledger/loader.py,sha256=zM7o0GW7Ibv6K9NnSaHbew_OSj2LQX4E_ceILPIJ0xU,9011
|
|
74
|
+
rustfava/rustledger/options.py,sha256=REWdyy8RI1xa1-XRGury6O5e47aYJJqY9YnxhWAHgjc,7081
|
|
75
|
+
rustfava/rustledger/query.py,sha256=dF3qhAChphFqUIrcy2XaJb1mI-iO9lY6NJpDJ8Ol0G0,10147
|
|
76
|
+
rustfava/rustledger/types.py,sha256=ZC_cLtaM1ETAQOOqmpgX-NGDSD6kfvxKnmyYLoOMPAU,25981
|
|
77
|
+
rustfava/static/app.css,sha256=if2-AQCgMTUxdsDJQejlyTHXwam9e5K6cDBcSx3HCsU,67161
|
|
78
|
+
rustfava/static/app.css.map,sha256=Nhet7SWnCQjDaV479AZgAZholqFQ5kWIb_e7gul8C_g,242434
|
|
79
|
+
rustfava/static/app.js,sha256=D3HL9iIgPb_Oy02Wfwg5B0h75lN2KVOlL2Dw3E0p3PU,422004
|
|
80
|
+
rustfava/static/app.js.map,sha256=sKf28tQ_cOZdWrFGKMzL4Qx1Vzr8A6Z1jnKYD4g-h8w,594509
|
|
81
|
+
rustfava/static/beancount-JFV44ZVZ.css,sha256=jqis7W0I9G78fjhaZ76ZxjNZJD4NQtftRalsiozMjfE,208
|
|
82
|
+
rustfava/static/beancount-JFV44ZVZ.css.map,sha256=0qwVcvyXzx_YUMT0A0lShm3SFbeCx5NfpX1KLLeEztU,505
|
|
83
|
+
rustfava/static/beancount-VTTKRGSK.js,sha256=ILREien-CnY5wiogg9ZXUN7SO3AKNO5kIca530yjS2Y,172601
|
|
84
|
+
rustfava/static/beancount-VTTKRGSK.js.map,sha256=BtnWm5-_szN8OmUbx9-Ks6xMpKNPQYE-_FmW7ouBh8Y,309955
|
|
85
|
+
rustfava/static/bql-MGFRUMBP.js,sha256=bauU-IHBi9NQv5HQ-OHyX5J5cHuBFwFH0w0qimV2r7s,6313
|
|
86
|
+
rustfava/static/bql-MGFRUMBP.js.map,sha256=xGPAzKzUJiuoyGrNVUi8oizUfiWQ8M2XO3nngPN4H_I,12962
|
|
87
|
+
rustfava/static/chunk-E7ZF4ASL.js,sha256=-vO5WvJePY98F7IzOM8QBSg1P2BoFCguuQOdRmLUsJ4,807146
|
|
88
|
+
rustfava/static/chunk-E7ZF4ASL.js.map,sha256=n-Zu-W7n2rPiTTg1WX5e7N3lt7WalUQuaSU1ZYcgioc,1711502
|
|
89
|
+
rustfava/static/chunk-V24TLQHT.js,sha256=Hp-VNjEbKvDt2AWAMqFTfhEAsDI_f9yi5DoufmLPZic,376852
|
|
90
|
+
rustfava/static/chunk-V24TLQHT.js.map,sha256=h093RfwBoVbd5x5h-rM2RP5_CwBa0bfnrtvqpuyogc0,947538
|
|
91
|
+
rustfava/static/favicon.ico,sha256=FWEuFw_v94U3aVd0i2hJKOfYNvw0QeQmYelRFmF2ZFo,2802
|
|
92
|
+
rustfava/static/fira-mono-cyrillic-400-normal-BLAGXRCE.woff2,sha256=YMj-PijS2W06j3WBiF-PWLzreYLdTTTTso3zbZaqtf8,9324
|
|
93
|
+
rustfava/static/fira-mono-cyrillic-500-normal-EN7JUAAW.woff2,sha256=s8xVRH6AnJmcZxAyU_fjzdjioLoi4jtdu5HFXy6UU_0,9332
|
|
94
|
+
rustfava/static/fira-mono-cyrillic-ext-400-normal-EX7VARTS.woff2,sha256=zfaaQ1uaO1xRGVx_3EF2Qus08P8O08GxLg2qsrroGCA,15784
|
|
95
|
+
rustfava/static/fira-mono-cyrillic-ext-500-normal-ZDPTUPRR.woff2,sha256=VwLmFQwEcaSRYH6v9xsv69O4zwIytNMHOAKfjOFLe-I,15732
|
|
96
|
+
rustfava/static/fira-mono-greek-400-normal-COGHKMOA.woff2,sha256=Yb56AMNFgdTCW3j3pRBquyyAP_k-Yl4tFvh4WaMyBWY,10528
|
|
97
|
+
rustfava/static/fira-mono-greek-500-normal-4EN2PKZT.woff2,sha256=UnUe2djJLcAZV8Tu60n5KX6mvV9CbJusgA1-DaKAf4I,10464
|
|
98
|
+
rustfava/static/fira-mono-greek-ext-400-normal-DYEQIJH7.woff2,sha256=XeP_oAQwlgxizbI5QUnxb57zHMLWG_NQS6QT3CqnbO4,7556
|
|
99
|
+
rustfava/static/fira-mono-greek-ext-500-normal-SG73CVKQ.woff2,sha256=uLk1reQ3j4-FgIJhSoGU1zMbGthKXwsMTcowSIEysaQ,7440
|
|
100
|
+
rustfava/static/fira-mono-latin-400-normal-NA3VLV7E.woff2,sha256=jR51NWnqeWSjvqzaEmRQ-EabcMFMFhroBiz0wSg16Uc,16640
|
|
101
|
+
rustfava/static/fira-mono-latin-500-normal-YC77GFWD.woff2,sha256=KR-Q4_C68fNX7Oe4JjS4vNbAgN73ZIaUiUVIrz0oryY,16480
|
|
102
|
+
rustfava/static/fira-mono-latin-ext-400-normal-DIKTZ5PW.woff2,sha256=IwLb-kl8VW5PsJ_VnsF08mFWAtscJ4_HKGFHnSvt8sk,11932
|
|
103
|
+
rustfava/static/fira-mono-latin-ext-500-normal-ZWY4UO4V.woff2,sha256=gfkmHirizK0_GRZ86Ik-2_PQyq90qQ71YKnnygxYAmM,11936
|
|
104
|
+
rustfava/static/fira-mono-symbols2-400-normal-UITXT77Q.woff2,sha256=jcosKSeejcBk0rJB3Gz_dXOPYYRW_iHFgp07tRAgdlw,5032
|
|
105
|
+
rustfava/static/fira-mono-symbols2-500-normal-VWPC2EFN.woff2,sha256=gpeRTjAHUA9_HRuekYAokryRvmPHWDGaI0aBHCUTv-M,5136
|
|
106
|
+
rustfava/static/fira-sans-cyrillic-400-normal-KLQMBCA6.woff2,sha256=LOn5HM1Zh5D3NEQrCiA_Sy6Tg853iXNbT06BanvcfFM,10788
|
|
107
|
+
rustfava/static/fira-sans-cyrillic-500-normal-NFG7UD6J.woff2,sha256=cogQPWE1IAz_flunc4PLLkLbo_XTXWBj6rmmWkSByVc,10820
|
|
108
|
+
rustfava/static/fira-sans-cyrillic-ext-400-normal-GWO44OPC.woff2,sha256=NNY_VMthDg-Kvl4NYtJ4QfcrLdbxjIBD2-L_cknfU8M,17692
|
|
109
|
+
rustfava/static/fira-sans-cyrillic-ext-500-normal-SP47E5SC.woff2,sha256=2VL2gYIlD0vnDj9Gc_o8xDyEE7TYgGbhUv0PZEqD7xw,17880
|
|
110
|
+
rustfava/static/fira-sans-greek-400-normal-UMQBTLC3.woff2,sha256=1IAaE144FJ_rv-uAVJbmD1c07y5i34KkjSWOTj2jO2w,12780
|
|
111
|
+
rustfava/static/fira-sans-greek-500-normal-4ZKHN4FQ.woff2,sha256=E2OOuuZjFjzd6MpFzFfVg5Ac_wrQy8KC-eiXgKLwA-c,12980
|
|
112
|
+
rustfava/static/fira-sans-greek-ext-400-normal-O2DVJAJZ.woff2,sha256=p9PpdtYE6Op4h4Bi3FUeHAxEDx3viQhlYLiRsfmkhQ8,7964
|
|
113
|
+
rustfava/static/fira-sans-greek-ext-500-normal-SK6GNWGO.woff2,sha256=JwHS3SOrQFFu_SU0mNoEw_RT3pBe2rvnpR99c25QOcs,8128
|
|
114
|
+
rustfava/static/fira-sans-latin-400-normal-OYYTPMAV.woff2,sha256=PjjYwB_pdSn78KCGv5WNcktyPKf8i-d7S6V0X2JZtso,23872
|
|
115
|
+
rustfava/static/fira-sans-latin-500-normal-SMQPZW5A.woff2,sha256=iNPkIK3uP6ma5QwVsSPjyaB84OwMA6Ab1r3VIygi2ig,24056
|
|
116
|
+
rustfava/static/fira-sans-latin-ext-400-normal-OAUP3WK5.woff2,sha256=7U0Lc42TYStEMQvz8pk9LOIg2ijwZMLN2jey_LwjZiw,46400
|
|
117
|
+
rustfava/static/fira-sans-latin-ext-500-normal-LY3YDR5Y.woff2,sha256=Yw0FfXJgRa6bnVBjVzhiGAZZ2c5hSl2K5UGOx5nK6hU,46996
|
|
118
|
+
rustfava/static/fira-sans-vietnamese-400-normal-OBMQ72MR.woff2,sha256=vOmCojMl7rBWyuHer6TX2os82nOWWHOPPNI6Z2YrIXg,8500
|
|
119
|
+
rustfava/static/fira-sans-vietnamese-500-normal-Y4NZR5EU.woff2,sha256=pv6CP7PEPCgLQy1_RmsMRCC_Q5eihdX1kvtgb7Bs_YA,8448
|
|
120
|
+
rustfava/static/source-code-pro-cyrillic-400-normal-TO22V6M3.woff2,sha256=FaqzZEDHtqkOxqgyd8exB5A_eEazNo9ArSaQ_D3z7pg,6788
|
|
121
|
+
rustfava/static/source-code-pro-cyrillic-500-normal-OGBWWWYW.woff2,sha256=YwqNNT5ENECR5A9AGWhdGOIQvIK-uXyb3P8_ogLBgaw,6836
|
|
122
|
+
rustfava/static/source-code-pro-cyrillic-ext-400-normal-XH44UCIA.woff2,sha256=cco75Og0SBQkqVvHMx9amNPn4y1ApSw7-ce1p1CD2o8,4516
|
|
123
|
+
rustfava/static/source-code-pro-cyrillic-ext-500-normal-3Z6MMVM6.woff2,sha256=bkQ3YCitAgFtVxR-DSRJILfp-Z_0g07A7dsQIfaUlGI,4556
|
|
124
|
+
rustfava/static/source-code-pro-greek-400-normal-OUXXUQWK.woff2,sha256=t8MppXhw3jT5Su1Y58TZzEa1X42tQ1RnZBzVBPzx_3s,5528
|
|
125
|
+
rustfava/static/source-code-pro-greek-500-normal-JA2Z5UXO.woff2,sha256=rPFHZdNSptfnc3IhBTgdyuxuM7gPq57quBedRLGDLH8,5584
|
|
126
|
+
rustfava/static/source-code-pro-greek-ext-400-normal-WCDKMX7U.woff2,sha256=J3ZptPnB_I0WXtI_Ley54GbtzM0siWgyVa4aJhJtcDU,1852
|
|
127
|
+
rustfava/static/source-code-pro-greek-ext-500-normal-ZHVI4VKW.woff2,sha256=wCPAbWUoScfQEN-EOPgPQ251v5AmHfT0xeq2orpeM1w,1856
|
|
128
|
+
rustfava/static/source-code-pro-latin-400-normal-QOGTXED5.woff2,sha256=daqMrP1FnVjXwJPz_wq4dFzIeN_JPF1M2gUnka6s6Hg,11656
|
|
129
|
+
rustfava/static/source-code-pro-latin-500-normal-X57QEOLQ.woff2,sha256=iWb6P75w9jZ1u-3tuDiQI8ByWLxGqDH9bRRssGKlgR8,11604
|
|
130
|
+
rustfava/static/source-code-pro-latin-ext-400-normal-QXC74NBF.woff2,sha256=HUICXV2Y8HO_C6upb9XtsCCsjJ7U2YtVDyKtgCZ-yqM,17748
|
|
131
|
+
rustfava/static/source-code-pro-latin-ext-500-normal-QGOY7MTT.woff2,sha256=LJkwLZ33fWaLNortreceI83bose_JI-Ir6xIgFgTZ0M,17752
|
|
132
|
+
rustfava/static/source-code-pro-vietnamese-400-normal-NPDCDTBA.woff2,sha256=9bdQN4lCF25Evqcff7mTRrWdTDVq7m7WztzvRN-ZWec,4752
|
|
133
|
+
rustfava/static/source-code-pro-vietnamese-500-normal-M6PJKTR5.woff2,sha256=yT1i8vu-zR-SLFRPhTrYwxCGXl7wGlHsaSO5gbU-Obs,4804
|
|
134
|
+
rustfava/static/tree-sitter-beancount-MLXFQBZ5.wasm,sha256=TdbXw7POdgyHDeAiQifq8msNK3LT74GBsxMgsDXczkU,59682
|
|
135
|
+
rustfava/static/web-tree-sitter-RNOQ6E74.wasm,sha256=mxabo4c8ql7K5Do0gOcb2hDlTm7xEFMXGJJp_wJT130,195953
|
|
136
|
+
rustfava/templates/_journal_table.html,sha256=mbLqf6_v592TAtUiGczHa2IRQ7SdeBPDhaAVt05gS_w,7523
|
|
137
|
+
rustfava/templates/_layout.html,sha256=H5zSOo5osUitD_lZKhiIxBUUfbKyYjsA7RGs43evj3U,1186
|
|
138
|
+
rustfava/templates/_query_table.html,sha256=MUlkghcSXeWBSkWE34vp4Lah_Jx1AS88gYiTdG6Tylc,2926
|
|
139
|
+
rustfava/templates/beancount_file,sha256=2RFGIKTFk-CwLqyjGoYNM_SCuEfMUvOPTYTEKAdHhqA,669
|
|
140
|
+
rustfava/templates/help.html,sha256=roEArF4YfBGPBEwv7JVh3ZsqTxJ_0Ja-jGG78IGDBIc,526
|
|
141
|
+
rustfava/templates/macros/_account_macros.html,sha256=geYo0gzJ2BuS4irOfBSng8OAPEd6IofLHdwVnw9_l0w,163
|
|
142
|
+
rustfava/templates/macros/_commodity_macros.html,sha256=M8-iYmzdvsBim4exBDDVXNQKDqG5cMFH6UsZ-7MQs0Y,559
|
|
143
|
+
rustfava/translations/bg/LC_MESSAGES/messages.mo,sha256=hRML-avYl70U6QDhjGmHxAzAfOloNdbK0rhpSP0yjJk,8301
|
|
144
|
+
rustfava/translations/bg/LC_MESSAGES/messages.po,sha256=fR-HahPWg7k8ln5hQTEYfG9Hgt2WFV0dvZ0fV61L3vY,18043
|
|
145
|
+
rustfava/translations/ca/LC_MESSAGES/messages.mo,sha256=S51aPf8xzigbxMZjedxmDWD5jrWDYXEMDnqKsvMJmk8,6760
|
|
146
|
+
rustfava/translations/ca/LC_MESSAGES/messages.po,sha256=XOBtw5znsY_p5IMHtsCtnGVB5NXFZZnCqlZnQ6lxnxQ,16467
|
|
147
|
+
rustfava/translations/de/LC_MESSAGES/messages.mo,sha256=DjqJw0DceAvLFj4ChQZlTaacvfJIRPVg3ghhBMSg0Cs,6932
|
|
148
|
+
rustfava/translations/de/LC_MESSAGES/messages.po,sha256=afBa81v_fd8y64NL7TiUHlffwH_S2MW8lCaXHbzglM8,16542
|
|
149
|
+
rustfava/translations/es/LC_MESSAGES/messages.mo,sha256=R4yE9sCLwk0IK4iZbcvURV_LQdOCQXhOFmh008SJglg,4618
|
|
150
|
+
rustfava/translations/es/LC_MESSAGES/messages.po,sha256=qJjfHQLODhfzSLkmEHs0Tpp2Lq46GsAY-2BSjLC0pIs,15573
|
|
151
|
+
rustfava/translations/fa/LC_MESSAGES/messages.mo,sha256=ZaP0xdeRLZVb9lgjl6bGfHBBn0yp-yfdytiuxFpULMM,6872
|
|
152
|
+
rustfava/translations/fa/LC_MESSAGES/messages.po,sha256=IaZ5ddX-5EcwkpcPo579fVqX_uRgsKdt2W0MYr5OXlQ,17086
|
|
153
|
+
rustfava/translations/fr/LC_MESSAGES/messages.mo,sha256=ZmxR2CNkvlNYLjR7qFtKqugRDoj02q9ymbztlnkp86M,6614
|
|
154
|
+
rustfava/translations/fr/LC_MESSAGES/messages.po,sha256=U5qt631B8RUPErs1FPI5SdcI93S9cupr70I8iJU_Puk,16357
|
|
155
|
+
rustfava/translations/ja/LC_MESSAGES/messages.mo,sha256=tWf6FMEdIAzTAgP3VZFJb5F3ywi2_za2d0dUfQhDrYc,7117
|
|
156
|
+
rustfava/translations/ja/LC_MESSAGES/messages.po,sha256=DEFaRfDW3JTS9oaQyxI-dA4dRkTTk-yV03RtWJcysss,16831
|
|
157
|
+
rustfava/translations/nl/LC_MESSAGES/messages.mo,sha256=irY7Lm_nAUTYzLLEqbciCV6EDg5Nff9e2NF7rtrAvjk,3610
|
|
158
|
+
rustfava/translations/nl/LC_MESSAGES/messages.po,sha256=yKdPBzjeI3UmydBxVqz2Tv164QKScCdii0UzE4pu_48,15195
|
|
159
|
+
rustfava/translations/pt/LC_MESSAGES/messages.mo,sha256=6XFxLD9WFDHHtfZUbRRNevTTylYFZv7_2YUlcLAuvIc,3290
|
|
160
|
+
rustfava/translations/pt/LC_MESSAGES/messages.po,sha256=JlDeJN7Pkc9lcjRHcMHl7yEKFYQ9YZL2NszDGh_wLVQ,15076
|
|
161
|
+
rustfava/translations/pt_BR/LC_MESSAGES/messages.mo,sha256=0dy5cbelCJ3Zzvc3rQPaQDLgQgy29delfyHbKkL_CPM,6574
|
|
162
|
+
rustfava/translations/pt_BR/LC_MESSAGES/messages.po,sha256=TMVfs6WMU1b__WgNWUjLvieaAajEo7OYzVRPzlL97aI,16279
|
|
163
|
+
rustfava/translations/ru/LC_MESSAGES/messages.mo,sha256=uBtT7WcRfEYmSpDq09yBmWI7bJRLDwFs2CfGl0n2hiE,5435
|
|
164
|
+
rustfava/translations/ru/LC_MESSAGES/messages.po,sha256=3pRya4Zo45uvGdfaZNT_qC84E_30jbJJ_0yjRi6T420,16455
|
|
165
|
+
rustfava/translations/sk/LC_MESSAGES/messages.mo,sha256=SvpBfXW2SbrdGZoHBHnf4IsiHw7S39doK54RYtNtmRY,4817
|
|
166
|
+
rustfava/translations/sk/LC_MESSAGES/messages.po,sha256=accAPL9hLVnIDYCnyjAkprFp2pFruOpzpTmSKXi0fEc,15805
|
|
167
|
+
rustfava/translations/sv/LC_MESSAGES/messages.mo,sha256=3WRAtqkicUnEQsuDXXwphMaW77GaxBeIsECoBRaEFco,5852
|
|
168
|
+
rustfava/translations/sv/LC_MESSAGES/messages.po,sha256=9nVwO9IC9U9o0Q8eR2HlCKXFSI7Wp8yLJZHTP0GBFKE,15975
|
|
169
|
+
rustfava/translations/uk/LC_MESSAGES/messages.mo,sha256=y0LdPFUFQHsn6h76CnLQrNU9eSNYingnrtO16jjK4d0,7239
|
|
170
|
+
rustfava/translations/uk/LC_MESSAGES/messages.po,sha256=Oc0kRES9u_gfDYXnMox8doJ6ECpncBmG6U0XoYA_VAc,17372
|
|
171
|
+
rustfava/translations/zh/LC_MESSAGES/messages.mo,sha256=boZpX4tAVhWRykSuBEGxE8wyyrhkbqbKXHuIAl8J2Ss,6198
|
|
172
|
+
rustfava/translations/zh/LC_MESSAGES/messages.po,sha256=JSzl6wOilMrxs3yIedb8bmNeNQ_2XMGUnK8xB0aN-cU,15909
|
|
173
|
+
rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo,sha256=tq4lRpl-D3ESezZm3SrtXMuaGxSS8DpAnKRCm2xMgzA,6127
|
|
174
|
+
rustfava/translations/zh_Hant_TW/LC_MESSAGES/messages.po,sha256=swehL4EpPKWoaKxsg0_shYF7h-UvB2I-ELJVvOjN6BE,15873
|
|
175
|
+
rustfava/util/__init__.py,sha256=ymstIBvY7mkTzhUCtOiG6NFvhPbLnsg-7oMd6wsvXrM,4830
|
|
176
|
+
rustfava/util/date.py,sha256=rK6bg9zuM1eY2Kla2VsHUBy8eZbx6vBbKV3xXmVTvsU,16437
|
|
177
|
+
rustfava/util/excel.py,sha256=IY4ufX_8UkzfwjO1r5cXPN2BP5IQdOg_PU0UzQzyJm4,3438
|
|
178
|
+
rustfava/util/ranking.py,sha256=WRKrSR1A8rIf4f6aQib82msYCGlT7bsmLWjXRrncBpM,2618
|
|
179
|
+
rustfava/util/sets.py,sha256=CtKozfPJc21GS8HSnm08sDe66KJwmacUSseuxEQ9UPU,504
|
|
180
|
+
rustfava/util/unreachable.py,sha256=lzimgiRnmUegIApnZ16rdhg9Wqc2iJMzz_JdyBPKOuI,545
|
|
181
|
+
rustfava-0.1.0.dist-info/licenses/AUTHORS,sha256=AQS1TKV7SVw3jSfJun0Ju2T6HxeHOBAQTNhXF6VqQlU,505
|
|
182
|
+
rustfava-0.1.0.dist-info/licenses/LICENSE,sha256=FDq5QA5ezz_h7AdyXheB7GDCT6J2WmvSLGoO2mdw1Wc,1108
|
|
183
|
+
rustfava-0.1.0.dist-info/METADATA,sha256=893kS_KvbdEWKDlMJFyDwEUA1UAEynH5Gko6B7qbMjo,3510
|
|
184
|
+
rustfava-0.1.0.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
185
|
+
rustfava-0.1.0.dist-info/entry_points.txt,sha256=iPnJjOd2igdtcFVGIFSlLby0h_Rvuf_Qpg6iI5a5UnI,47
|
|
186
|
+
rustfava-0.1.0.dist-info/top_level.txt,sha256=PJYc1n7UGuv1x-OPTcQIfd07esxZrGo6eGZRmN8lrjo,9
|
|
187
|
+
rustfava-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Rustfava is a fork of Fava, which was created by Dominik Aumayr <dominik@aumayr.name>.
|
|
2
|
+
Fava is maintained by Dominik Aumayr and Jakob Schnitzer.
|
|
3
|
+
|
|
4
|
+
See the Issue Tracker and the Git log for other contributors, e.g., with:
|
|
5
|
+
git log --format='%aN' | sort -u
|
|
6
|
+
|
|
7
|
+
Translations: The translations are maintained on POEditor. See the project
|
|
8
|
+
there (https://poeditor.com/join/project/TlraSxOCxt) for details.
|
|
9
|
+
|
|
10
|
+
A big thank you goes to Martin Blais for creating Beancount and all the
|
|
11
|
+
invaluable documentation for it.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2015-2016 Dominik Aumayr <dominik@aumayr.name>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rustfava
|