Source code for app.portfolio.portfolio

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

from pydantic import Field

from ..components.providers.provider import ProviderBase
from ..util.helpers.frozendict import frozendict, FrozenDict

from .models.ledger import Ledger
from .models.instrument import Instrument

from .models import IncrementingUidEntity


[docs] class Portfolio(IncrementingUidEntity): ledgers : FrozenDict[Instrument, Ledger] = Field(default_factory=lambda: frozendict[Instrument, Ledger](), description="A mapping of ledger IDs to Ledger instances.") providers: FrozenDict[str, ProviderBase ] = Field(default_factory=lambda: frozendict[str, ProviderBase ](), description="A mapping of provider IDs to provider instances.")
# def get_ledger(self, security_id: str) -> Ledger | None: ... # def add_transaction(self, tx: Transaction): ... # def replace_transaction(self, old_tx_id: str, new_tx: Transaction): ... # def log_audit(self, event: 'AuditEvent'): ... # def view_builder(self) -> 'ViewBuilder': ...