From 7b28c7a43f013b67e4cf42dea0e46f2a6e625174 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Wed, 15 Mar 2023 21:59:16 -0400 Subject: [PATCH] Prep for dropping `Transaction.sym` Instead let's name it `.sys` for "system", the thing we use to conduct the "transactions" .. Also rename `.bsuid` -> `.bs_mktid` for "backend system market id` which is more explicit, easier to remember and read. --- piker/accounting/_ledger.py | 49 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/piker/accounting/_ledger.py b/piker/accounting/_ledger.py index 73df9064..1718dda1 100644 --- a/piker/accounting/_ledger.py +++ b/piker/accounting/_ledger.py @@ -38,6 +38,7 @@ from ..log import get_logger from ._mktinfo import ( Symbol, # legacy MktPair, + Asset, ) log = get_logger(__name__) @@ -98,7 +99,18 @@ class Transaction(Struct, frozen=True): # once we have that as a required field, # we don't really need the fqsn any more.. fqsn: str - sym: Symbol | MktPair + + # TODO: drop the Symbol type + + # the underlying "transaction system", normally one of a ``MktPair`` + # (a description of a tradable double auction) or a ledger-recorded + # ("ledger" in any sense as long as you can record transfers) of any + # sort) ``Asset``. + sym: MktPair | Asset | Symbol + + @property + def sys(self) -> Symbol: + return self.sym tid: Union[str, int] # unique transaction id size: float @@ -107,35 +119,22 @@ class Transaction(Struct, frozen=True): dt: datetime expiry: datetime | None = None - @property - def mktpair(self) -> MktPair: - sym = self.sym - - if isinstance(sym, MktPair): - # presume it's already set as our desired - # ``MktPair`` type: - return sym - - # cast to new type - return MktPair.from_fqme( - sym.fqme, - price_tick=digits_to_dec( - Decimal(str(sym.tick_size)), - ), - size_tick=digits_to_dec( - Decimal(str(sym.lot_tick_size)), - ), - ) - # remap for back-compat @property def fqme(self) -> str: return self.fqsn - # optional key normally derived from the broker - # backend which ensures the instrument-symbol this record - # is for is truly unique. - bsuid: Union[str, int] | None = None + # (optional) key-id defined by the broker-service backend which + # ensures the instrument-symbol market key for this record is unique + # in the "their backend/system" sense; i.e. this uid for the market + # as defined (internally) in some namespace defined by the broker + # service. + bsuid: str | int | None = None + + @property + def bs_mktid(self) -> str | int | None: + print(f'STOP USING .bsuid` for {self.fqme}') + return self.bs_mktid # XXX NOTE: this will come from the `MktPair` # instead of defined here right?