fava.beans

用于处理 Beancount 类型的类型、函数和包装器。

fava.beans.abc

Beancount 类型的抽象基类。

fava.beans.abc.余额

一个 Beancount 余额指令。

抽象 属性 账户: str

指令的账户。

抽象 属性 差额: 金额 | None

指令的账户。

fava.beans.abc.销户

一个 Beancount 关闭指令。

抽象 属性 账户: str

指令的账户。

fava.beans.abc.商品

一个 Beancount 币种指令。

抽象 属性 货币: str

货币。

fava.beans.abc.自定义

一个 Beancount 自定义指令。

抽象 属性 type: str

指令类型。

抽象 属性 : 序列[任意类型]

自定义值。

fava.beans.abc.Directive

一个 Beancount 指令。

抽象 属性 date: date

指令的元数据。

抽象 属性 meta: Mapping[str, str | 整数 | 布尔值 | Decimal | date | 金额]

指令的元数据。

fava.beans.abc.文档

一个 Beancount 文档指令。

抽象 属性 账户: str

指令的账户。

抽象 属性 filename: str

文档的文件名。

条目链接。

抽象 属性 标签: frozenset[str]

条目标签。

fava.beans.abc.事件

一个 Beancount 事件指令。

抽象 属性 账户: str

指令的账户。

fava.beans.abc.备注

一个 Beancount 注释指令。

抽象 属性 账户: str

指令的账户。

抽象 属性 注释: str

注释内容。

fava.beans.abc.开户

一个 Beancount 开户指令。

抽象 属性 账户: str

指令的账户。

抽象 属性 记账: 预订 | None

账户的预订方式。

抽象 属性 货币: 序列[str]

账户的有效货币。

fava.beans.abc.填充

一个 Beancount 填充指令。

抽象 属性 账户: str

指令的账户。

抽象 属性 源账户: str

填充的源账户。

fava.beans.abc.头寸

一个 Beancount 仓位——仅包含成本和数量。

抽象 属性 cost: 成本 | None

仓位的数量。

抽象 属性 units: 金额

分录的数量。

fava.beans.abc.分录

一个 Beancount 分录。

抽象 属性 账户: str

分录的账户。

抽象 属性 cost: 成本 | None

分录的数量。

抽象 属性 flag: str | None

分录的标记。

抽象 属性 meta: Mapping[str, str | 整数 | 布尔值 | Decimal | date | 金额] | None

分录的元数据。

抽象 属性 价格: 金额 | None

分录的价格。

抽象 属性 units: 金额

分录的数量。

fava.beans.abc.价格

一个 Beancount 价格指令。

抽象 属性 金额: 金额

价格金额。

抽象 属性 货币: str

此价格对应的货币。

fava.beans.abc.查询

一个 Beancount 查询指令。

抽象 属性 名称: str

此查询的名称。

抽象 属性 query_string: str

BQL 查询。

fava.beans.abc.交易

一个 Beancount 交易指令。

抽象 属性 flag: str

交易的标记。

条目链接。

抽象 属性 narration: str

交易的说明。

抽象 属性 payee: str

交易的收款方。

抽象 属性 分录: 序列[分录]

交易的收款方。

抽象 属性 标签: frozenset[str]

条目标签。

fava.beans.abc.TxnPosting

一笔交易和一个分录。

抽象 属性 记账: 分录

分录。

抽象 属性 交易: 交易

交易。

fava.beans.account

账户名称辅助函数。

fava.beans.account.account_tester(账户, *, 包含子账户)

获取一个函数,用于检查账户是否等于指定账户。

参数
  • 账户 (str) – 要检查的账户名称。

  • 包含子账户 (bool) – 是否包含所有子账户。

返回类型

Callable[[str], bool]

fava.beans.account.child_account_tester(账户)

获取一个函数,用于检查账户是否为指定账户的子账户。

返回类型

Callable[[str], bool]

fava.beans.account.get_entry_accounts(条目)

交易条目的账户。

参数

条目 (Directive) – 一个条目。

返回

对于交易,记账账户按逆序列出。

返回类型

按优先级排序的条目账户列表。

fava.beans.account.parent(账户)

获取给定账户的父账户名称。

返回类型

str | None

fava.beans.account.root(账户)

获取给定账户的根账户。

返回类型

str

fava.beans.create

用于创建条目的辅助函数。

fava.beans.create.amount(金额, 货币=None)

从字符串或元组创建金额。

返回类型

金额

fava.beans.create.balance(meta, date, account, amount, tolerance=None, diff_amount=None)

创建一个 Beancount 余额。

返回类型

余额

fava.beans.create.close(meta, date, account)

创建一个 Beancount 关闭记录。

返回类型

销户

fava.beans.create.cost(number, currency, date, label=None)

创建一个成本。

返回类型

成本

fava.beans.create.document(meta, date, account, filename, tags=None, links=None)

创建一个 Beancount 文档。

返回类型

文档

fava.beans.create.note(meta, date, account, comment, tags=None, links=None)

创建一个 Beancount 注释。

返回类型

备注

fava.beans.create.open(meta, date, account, currencies, booking=None)

创建一个 Beancount 关闭记录。

返回类型

开户

fava.beans.create.position(units, cost)

创建一个持仓。

返回类型

头寸

fava.beans.create.posting(账户, 数量, 成本=None, 价格=None, 标记=None, 元数据=None)

创建一个 Beancount 记录。

返回类型

分录

fava.beans.create.transaction(元数据, 日期, 标记, 收款方, 描述, 标签=None, 链接=None, 记录=None)

创建一个 Beancount 交易。

返回类型

交易

fava.beans.flags

Beancount 条目标记。

fava.beans.funcs

用于处理 Beancount 数据的各种函数。

fava.beans.funcs.get_position(条目)

从条目元数据中获取文件名和位置。

返回类型

tuple[str, int]

fava.beans.funcs.hash_entry(条目)

对条目进行哈希处理。

返回类型

str

fava.beans.helpers

Beancount 条目的辅助函数。

fava.beans.helpers.replace(entry, **kwargs)

创建给定指令的副本,并替换部分参数。

返回类型

TypeVar(T, bound= Directive | Posting)

fava.beans.helpers.slice_entry_dates(entries, begin, end)

获取指定日期范围内的条目切片。

参数
  • entries (Sequence[TypeVar(T, bound= Directive | Posting)]) – 按日期排序的带日期指令列表。

  • begin (date) – 包含的起始日期。

  • end (date) – 超出最后一个日期的一天。

返回

Sequence[TypeVar(T, bound= Directive | Posting)] – 在给定日期之间的切片。

fava.beans.ingest

Beancount 导入器的类型定义。

class fava.beans.ingest.BeanImporterProtocol(*args, **kwargs)

Beancount 导入器的接口。

beancount.ingest.importer.ImporterProtocol 的 typing.Protocol 版本

导入器可以继承此类而非 Beancount 的原始类,以获得对方法的类型检查支持。

extract(file, *, existing_entries=None)

从文件中提取交易记录。

返回类型

list[Directive] | None

file_account(file)

返回与给定文件关联的账户。

返回类型

str

file_date(file)

尝试获取与给定文件对应的日期。

返回类型

date | None

file_name(file)

一个可选的文件重命名过滤器,用于文件归档前的重命名。

返回类型

str | None

identify(file)

如果此导入器匹配给定文件,则返回 True。

返回类型

布尔值

名称()

为此导入器返回一个唯一的 ID 或名称。

返回类型

str

class fava.beans.ingest.FileMemo(*args, **kwargs)

传递给导入器的带有缓存支持的文件对象。

contents()

获取文件内容。

返回类型

str

convert(converter_func)

对文件运行转换函数。

返回类型

TypeVar(T)

mimetype()

获取文件的 MIME 类型。

返回类型

str

名称: str

fava.beans.load

加载 Beancount 文件和字符串。

fava.beans.load.load_string(value)

加载一个 Beancount 字符串。

返回类型

tuple[list[Directive], list[BeancountError], BeancountOptions]

fava.beans.load.load_uncached(beancount_file_path, *, is_encrypted)

加载一个 Beancount 文件。

返回类型

tuple[list[Directive], list[BeancountError], BeancountOptions]

fava.beans.prices

价格辅助工具。

fava.beans.prices.DateKeyWrapper(inner)

一个包装价格列表以用于二分查找的类。

这在 Python 3.10 之前是必需的,因为 3.10 版本增加了 key 参数。

inner
fava.beans.prices.FavaPriceMap(price_entries)

Beancount 的 PriceMap 的 Fava 替代实现。

通过在此类上添加更多方法,可以减少需要导入的辅助函数数量。此外,此实现具有完整的类型注解,便于更轻松地复现整个价格逻辑中的问题。

此行为与 Beancount 略有不同。Beancount 会为每种货币对创建一个列表,然后合并反向汇率;而我们则同时创建两个方向的列表,并统计价格出现的方向。

参数

price_entries (Iterable[Price]) – 一个已排序的价格条目列表。

commodity_pairs(operating_currencies)

列出商品对。

参数

operating_currencies (Sequence[str]) – 一组运营货币。

返回

list[tuple[str, str]] – 商品对列表。运营货币之间的组合将双向列出,而不仅限于文件中更常见的方向。

get_all_prices(base_quote)

获取指定货币对的所有价格。

返回类型

列表[元组[日期, Decimal]] | None

get_price(base_quote, date=None)

获取给定货币对的价格。

返回类型

Decimal | None

get_price_point(base_quote, date=None)

获取给定货币对的价格点。

返回类型

元组[日期, Decimal] | 元组[None, Decimal] | 元组[None, None]

fava.beans.protocols

Beancount 类型的抽象基类。

fava.beans.protocols.Amount(*args, **kwargs)

某种货币的金额。

属性 货币: str

金额的货币。

属性 数字: Decimal

金额中的单位数量。

fava.beans.protocols.Cost(*args, **kwargs)

成本(基本上是带有日期和标签的数量)。

属性 货币: str

成本的货币。

属性 date: date

成本的日期。

属性 label: str | None

成本的标签。

属性 数字: Decimal

成本中的单位数量。

fava.beans.protocols.Position(*args, **kwargs)

一个 Beancount 仓位——仅包含成本和数量。

属性 cost: 成本 | None

仓位的数量。

属性 units: 金额

分录的数量。

fava.beans.str

将 Beancount 类型转换为字符串。

fava.beans.str.amount_to_string(obj)

将数量转换为字符串。

返回类型

str

fava.beans.str.cost_to_string(cost)

将成本转换为字符串。

返回类型

str

fava.beans.str.to_string(obj, _currency_column=None, _indent=None)

转换为字符串。

返回类型

str

fava.beans.types

类型辅助工具。

fava.beans.types.BeancountOptions

Beancount 选项。

account_current_conversions: str
account_current_earnings: str
dcontext: DisplayContext
documents: Sequence[str]
filename: str
include: Sequence[str]
name_assets: str
name_equity: str
name_expenses: str
name_income: str
name_liabilities: str
operating_currency: Sequence[str]
render_commas: 布尔值
title: str