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.
rekt_pps
Tyler Goodlet 2023-03-15 21:59:16 -04:00
parent cf9442f4d5
commit 7b28c7a43f
1 changed files with 24 additions and 25 deletions
piker/accounting

View File

@ -38,6 +38,7 @@ from ..log import get_logger
from ._mktinfo import ( from ._mktinfo import (
Symbol, # legacy Symbol, # legacy
MktPair, MktPair,
Asset,
) )
log = get_logger(__name__) log = get_logger(__name__)
@ -98,7 +99,18 @@ class Transaction(Struct, frozen=True):
# once we have that as a required field, # once we have that as a required field,
# we don't really need the fqsn any more.. # we don't really need the fqsn any more..
fqsn: str 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 tid: Union[str, int] # unique transaction id
size: float size: float
@ -107,35 +119,22 @@ class Transaction(Struct, frozen=True):
dt: datetime dt: datetime
expiry: datetime | None = None 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 # remap for back-compat
@property @property
def fqme(self) -> str: def fqme(self) -> str:
return self.fqsn return self.fqsn
# optional key normally derived from the broker # (optional) key-id defined by the broker-service backend which
# backend which ensures the instrument-symbol this record # ensures the instrument-symbol market key for this record is unique
# is for is truly unique. # in the "their backend/system" sense; i.e. this uid for the market
bsuid: Union[str, int] | None = None # 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` # XXX NOTE: this will come from the `MktPair`
# instead of defined here right? # instead of defined here right?