Source code for app.portfolio.models.ledger.ledger_schema

# SPDX-License-Identifier: GPLv3-or-later
# Copyright © 2025 pygaindalf Rui Pinheiro

from abc import ABCMeta
from typing import TYPE_CHECKING

from pydantic import Field, InstanceOf

from ...collections import OrderedViewSet
from ..entity import EntitySchemaBase
from ..instrument import Instrument
from ..transaction import Transaction


[docs] class LedgerSchema[T_Transaction_Set: OrderedViewSet[Transaction]](EntitySchemaBase, metaclass=ABCMeta): # MARK: InstrumentRecord instrument: InstanceOf[Instrument] = Field( json_schema_extra={"readOnly": True}, description="The financial instrument associated with this ledger, such as a stock, bond, or currency.", ) # MARK: Transactions if TYPE_CHECKING: transactions: T_Transaction_Set = Field(default=...) else: transactions: OrderedViewSet[Transaction] = Field( default_factory=OrderedViewSet[Transaction], description="A set of transactions associated with this ledger.", )