fava

Fava - Beancount 的网页界面。

fava._ctx_globals_class

为 Flask 应用上下文指定类型。

fava._ctx_globals_class。上下文

上下文值——此值用于 flask.g

beancount_file_slug: str | None

当前激活的 Beancount 文件的简短标识符。

属性 conv: Conversion

要应用的转换(已解析)。

属性 conversion: str

要应用的转换(原始字符串)。

extension: FavaExtensionBase | None

当前扩展名(如果是扩展端点)。

属性 filtered: FilteredLedger

已过滤的账本。

属性 interval: Interval

分组依据的时间区间。

ledger: FavaLedger

账本

fava.application

Fava 的主 WSGI 应用程序。

你可以使用 create_app 为给定的文件列表创建一个 Fava WSGI 应用。要启动一个简单的服务器:

from fava.application import create_app

app = create_app(['/path/to/file.beancount'])
app.run('localhost', 5000)
fava.application.app(environ, start_response) = <Flask 'fava'>

此功能仍保留以确保兼容性,但将在未来某个版本中移除。

fava.application.create_app(files, *, load=False, incognito=False, read_only=False, poll_watcher=False)

创建一个 Fava Flask 应用。

参数
  • files (Iterable[Path | str]) – Beancount 文件(路径)的列表。

  • load (bool) – 是否直接加载 Beancount 文件。

  • incognito (bool) – 是否以无痕模式运行。

  • read_only (bool) – 是否以只读模式运行。

  • poll_watcher (bool) – 是否使用旧的轮询监视器

返回类型

Flask

fava.application.static_url(filename)

返回一个带有 mtime 查询字符串的静态 URL,用于清除缓存。

返回类型

str

fava.application.translations()

获取翻译目录。

返回类型

dict[str, str]

fava.application.url_for(endpoint, **values)

使用缓存包装 flask.url_for。

返回类型

str

fava.cli

Fava 的命令行接口。

exception fava.cli.AddressInUse(port)
exception fava.cli.NoFileSpecifiedError
exception fava.cli.NonAbsolutePathError(path)

fava.context

为 Flask 应用上下文指定类型。

fava.helpers

异常和模块基类。

class fava.helpers.BeancountError(source: Meta | None, message: str, entry: Directive | None)

Beancount 风格错误的 NamedTuple 基类。

exception fava.helpers.FavaAPIError(message)

Fava 的基异常类。

fava.internal_api

内部 API。

用于预处理模板中使用的部分数据,使这部分功能可测试,并允许对前端数据验证进行端到端测试。

fava.internal_api.BalancesChart(label, data, type='balances')

余额图表的数据。

data: 序列[DateAndBalance]
label: str
type: Literal['balances'] = 'balances'
fava.internal_api.BarChart(label, data, type='bar')

条形图的数据。

data: 序列[DateAndBalanceWithBudget]
label: str
type: Literal['bar'] = 'bar'
fava.internal_api.图表 API

用于生成图表数据的函数。

静态 account_balance(account_name)

生成账户余额图表的数据。

返回类型

BalancesChart | BarChart | HierarchyChart

静态 层级结构(账户名称, *, 标签=)

生成账户层级图表的数据。

返回类型

BalancesChart | BarChart | HierarchyChart

静态 interval_totals(区间, 账户名称, 标签=, *, 反转=)

为每个区间的账户生成数据图表。

返回类型

BalancesChart | BarChart | HierarchyChart

静态 净资产()

为净资产图表生成数据。

返回类型

BalancesChart | BarChart | HierarchyChart

fava.internal_api.HierarchyChart(标签, 数据, 类型='hierarchy')

层级图表的数据。

data: SerialisedTreeNode
label: str
type: Literal['hierarchy'] = 'hierarchy'
fava.internal_api.LedgerData(accounts, account_details, base_url, currencies, currency_names, errors, fava_options, incognito, have_excel, links, options, payees, precisions, tags, years, user_queries, upcoming_events_count, extensions, sidebar_links, other_ledgers)

这在前端中用作与报表无关的数据。

账户详情: AccountDict
账户: 序列[str]
基础 URL: str
货币: 序列[str]
货币名称: 字典[str, str]
错误: 序列[SerialisedError]
扩展: 序列[ExtensionDetails]
Fava 选项: FavaOptions
有 Excel: 布尔值
隐身模式: 布尔值
options: 字典[str, str | 序列[str]]
其他账本: 序列[元组[str, str]]
交易对手: 序列[str]
精度: 字典[str, 整数]
标签: 序列[str]
即将发生的事件数量: 整数
用户查询: 序列[查询]
年份: 序列[str]
class fava.internal_api.SerialisedError(type, source, message)

一个 Beancount 错误,传递给前端。

静态 from_beancount_error(err)

从一个 Beancount 错误获取可序列化的错误。

返回类型

SerialisedError

message: str
source: Mapping[str, str | 整数 | 布尔值 | Decimal | date | 金额] | None
type: str
fava.internal_api.get_errors()

序列化错误(不要传递 entry,因为这可能导致序列化失败)。

返回类型

list[SerialisedError]

fava.internal_api.get_ledger_data()

获取与报表无关的账本数据。

返回类型

账本数据

fava.json_api

JSON API。

此模块包含 Web 界面用于异步功能的 JSON API 的 URL 端点。

class fava.json_api.AccountBudget(budget, budget_children)

账户的预算。

budget: Mapping[str, Decimal]
budget_children: Mapping[str, Decimal]
class fava.json_api.AccountReportJournal(charts, journal)

日记账账户报告的数据。

charts: 序列[BalancesChart | 条形图 | 层级图]
journal: str
fava.json_api.AccountReportTree(charts, interval_balances, budgets, dates)

树状账户报告的数据。

预算: Mapping[str, 序列[AccountBudget]]
charts: 序列[BalancesChart | 条形图 | 层级图]
日期: 序列[DateRange]
区间余额: 序列[SerialisedTreeNode]
fava.json_api.CommodityPairWithPrices(base, quote, prices)

一对商品及其价格。

基础商品: str
价格: 序列[元组[date, Decimal]]
报价商品: str
fava.json_api.Context(entry, balances_before, balances_after, sha256sum, slice)

条目的上下文信息。

之后余额: Mapping[str, 序列[str]] | None
之前余额: Mapping[str, 序列[str]] | None
条目: 任意类型
sha256sum: str
切片: str
exception fava.json_api.DocumentDirectoryMissingError

未指定文档目录。

状态 = 422
exception fava.json_api.FavaJSONAPIError(message)

带有 HTTPStatus 的错误。

抽象 属性 状态: HTTPStatus

用于响应的 HTTP 状态码。

exception fava.json_api.FileDoesNotExistError(filename)

指定的文件不存在。

异常 fava.json_api.IncorrectTypeValidationError(参数, 预期类型)

由于参数类型不正确,验证失败。

exception fava.json_api.无效 JSON 请求错误

由于请求体中包含无效的 JSON 数据,验证失败。

exception fava.json_api.MissingParameterValidationError(参数)

由于缺少参数,验证失败。

exception fava.json_api.NoFileUploadedError

未上传文件。

状态 = 400
exception fava.json_api.NotAFileError(filename)

不是文件。

状态 = 422
exception fava.json_api.NotAValidDocumentOrImportFileError(filename)

不是有效的账本或导入文件。

状态 = 400
fava.json_api.Options(fava 选项, beancount 选项)

Fava 和 Beancount 的选项(字符串形式)。

beancount 选项: Mapping[str, str]
Fava 选项: Mapping[str, str]
fava.json_api.Statistics(所有余额指令, 余额, 按类型分组的条目)

统计报告所需的数据。

所有余额指令: str
余额: Mapping[str, SimpleCounterInventory]
按类型分组的条目: Mapping[str, 整数]
exception fava.json_api.TargetPathAlreadyExistsError(path)

指定的路径已存在。

状态 = 409
fava.json_api.TreeReport(日期范围, 图表, 树状结构)

树状报告所需的数据。

charts: 序列[BalancesChart | 条形图 | 层级图]
日期范围: DateRange | None
树状结构: 序列[SerialisedTreeNode]
exception fava.json_api.UploadedFileIsMissingFilenameError

上传的文件缺少文件名。

状态 = 400
exception fava.json_api.ValidationError

数据验证失败。

fava.json_api.api_endpoint(func)

注册一个 API 端点。

函数名中第一个下划线之前的部分决定所接受的 HTTP 方法。对于 GET 和 DELETE 端点,函数参数从 URL 查询字符串中提取并传递给装饰的端点处理函数。

返回类型

可调用对象[[], 响应]

fava.json_api.delete_document(filename)

删除一个文档。

返回类型

str

fava.json_api.delete_source_slice(条目哈希, sha256sum)

删除一个条目源片段。

返回类型

str

fava.json_api.get_account_report()

获取账户报告的数据。

返回类型

AccountReportJournal | AccountReportTree

fava.json_api.get_balance_sheet()

获取资产负债表的数据。

返回类型

TreeReport

fava.json_api.get_changed()

检查文件是否发生更改。

返回类型

布尔值

fava.json_api.get_commodities()

获取所有商品对的价格。

返回类型

序列[CommodityPairWithPrices]

fava.json_api.get_context(entry_hash)

条目上下文。

返回类型

上下文

fava.json_api.get_documents()

获取所有(已过滤的)文档。

返回类型

序列[文档]

fava.json_api.get_events()

获取所有(已过滤的)事件。

返回类型

序列[事件]

fava.json_api.get_extract(文件名, 导入器)

使用 ingest 框架提取条目。

返回类型

序列[任意类型]

fava.json_api.get_imports()

获取可导入文件的列表。

返回类型

序列[FileImporters]

fava.json_api.get_income_statement()

获取损益表的数据。

返回类型

TreeReport

fava.json_api.get_journal()

获取所有(已过滤的)条目。

返回类型

Sequence[Directive]

fava.json_api.get_narration_transaction(narration)

给定描述的最后一条交易。

返回类型

任意类型

fava.json_api.get_narrations()

账本中所有描述的列表。

返回类型

Sequence[str]

fava.json_api.get_options()

获取所有选项,并将其渲染为字符串以便在前端显示。

返回类型

选项

fava.json_api.get_payee_accounts(payee)

为给定收款方对账户进行排序。

返回类型

Sequence[str]

fava.json_api.get_payee_transaction(payee)

给定收款方的最后一条交易。

返回类型

任意类型

fava.json_api.get_query(query_string)

运行一个 Beancount 查询。

返回类型

QueryResultTable | QueryResultText

fava.json_api.get_source(filename)

加载其中一个源文件。

返回类型

Mapping[str, str]

fava.json_api.get_statistics()

获取统计报告的数据。

返回类型

Statistics

fava.json_api.get_trial_balance()

获取试算平衡表的数据。

返回类型

TreeReport

fava.json_api.json_err(msg, status)

将错误消息转换为 JSON 格式。

返回类型

响应

fava.json_api.json_success(data)

将响应转换为 JSON 格式。

返回类型

响应

fava.json_api.put_add_document()

上传一个文档。

返回类型

str

fava.json_api.put_add_entries(entries)

添加多个条目。

返回类型

str

fava.json_api.put_attach_document(filename, entry_hash)

将文档附加到一个条目。

返回类型

str

fava.json_api.put_format_source(source)

格式化 Beancount 文件。

返回类型

str

fava.json_api.put_move(账户, 新名称, 文件名)

移动文档。

返回类型

str

fava.json_api.put_source(file_path, source, sha256sum)

写入一个源文件并返回更新后的 sha256sum。

返回类型

str

fava.json_api.put_source_slice(entry_hash, source, sha256sum)

写入一个条目源片段并返回更新后的 sha256sum。

返回类型

str

fava.json_api.put_upload_import_file()

上传一个用于导入的文件。

返回类型

str

fava.json_api.validate_func_arguments(func)

验证函数的参数。

目前仅支持字符串和列表(但对列表仅进行浅层验证)。

参数

func (Callable[..., Any]) – 要检查参数的函数。

返回

Callable[[Mapping[str, str]], list[str]] | None — 一个函数,接受一个 Mapping 并尝试为给定函数构造位置参数列表;如果函数没有参数,则返回 None。

fava.serialisation

条目的序列化与反序列化。

添加条目时,这些条目通过 JSON API 保存——使用本模块的功能从 beancount.core.data 获取适当的数据结构。同样,在完整条目补全时,会提供条目的 JSON 表示。

目前尚不适用于完整的双向转换。

exception fava.serialisation.InvalidAmountError(金额)

无效的金额。

fava.serialisation.反序列化(json_entry)

将 JSON 解析为 Beancount 条目。

参数

json_entry (Any) — 条目。

抛出
  • KeyError — 如果缺少任一必需的条目字段。

  • FavaAPIError — 如果给定条目的类型不受支持。

返回类型

Directive

fava.serialisation.deserialise_posting(记账)

将 JSON 解析为 Beancount 明细。

返回类型

分录

fava.serialisation.serialise(条目)

序列化一个条目或明细。

返回类型

任意类型

fava.template_filters

Fava 的模板过滤器。

本模块中的所有函数将自动作为模板过滤器添加。

fava.template_filters.basename(file_path)

返回文件路径的基名。

返回类型

str

fava.template_filters.flag_to_type(flag)

条目标志的名称。

返回类型

str

fava.template_filters.format_currency(value, currency=None)

使用指定货币的派生精度格式化值。

返回类型

str

fava.template_filters.meta_items(meta)

从字典中移除键。

返回类型

list[tuple[str, str | int | bool | Decimal | date | Amount]]

fava.template_filters.passthrough_numbers(value)

原样传递值。

返回类型

TypeVar(T)

fava.template_filters.replace_numbers(value)

替换数字,用于隐身模式。

返回类型

str | None