Replaced NamedTuples with dataclasses.

This commit is contained in:
Geoff Taylor 2022-01-12 14:04:54 +00:00
parent c9db50d07a
commit ced9d209d8
8 changed files with 24 additions and 11 deletions

View File

@ -13,15 +13,15 @@
# [Github](https://github.com/blockworks-foundation)
# [Email](mailto:hello@blockworks.foundation)
import typing
from dataclasses import dataclass
from decimal import Decimal
from ..instrumentvalue import InstrumentValue
from ..token import Token
class UnsettledFundingParams(typing.NamedTuple):
@dataclass
class UnsettledFundingParams:
quote_token: Token
base_position: InstrumentValue
long_funding: Decimal

View File

@ -20,6 +20,7 @@ import json
import os.path
import typing
from dataclasses import dataclass
from solana.publickey import PublicKey
@ -135,7 +136,8 @@ with open(os.path.join(DATA_PATH, "ids.json")) as json_file:
#
# Runtime details of the current version of mango-explorer.
#
class PackageVersion(typing.NamedTuple):
@dataclass
class PackageVersion:
version: str
last_commit: str

View File

@ -19,6 +19,7 @@ import pandas
import pyserum.enums
import typing
from dataclasses import dataclass
from decimal import Decimal
from pyserum.market.types import Order as PySerumOrder
from solana.publickey import PublicKey
@ -139,7 +140,8 @@ class OrderType(enum.Enum):
#
# A package that encapsulates common information about an order.
#
class Order(typing.NamedTuple):
@dataclass
class Order:
id: int
client_id: int
owner: PublicKey

View File

@ -44,7 +44,7 @@ class OutputFormattter:
format: OutputFormat
def out(self, *obj: typing.Any) -> None:
if len(obj) == 1 and isinstance(obj[0], collections.abc.Sequence) and not isinstance(obj, str):
if len(obj) == 1 and isinstance(obj[0], collections.abc.Sequence) and not isinstance(obj[0], str):
for item in obj[0]:
self.single_out(item)
else:

View File

@ -19,6 +19,7 @@ import rx.subject
import rx.operators as ops
import typing
from dataclasses import dataclass
from datetime import datetime
from dateutil import parser
from decimal import Decimal
@ -42,7 +43,8 @@ from .token import Instrument, Token
#
# A simple way to package details of a funding rate in a single object.
#
class FundingRate(typing.NamedTuple):
@dataclass
class FundingRate:
symbol: str
rate: Decimal
oracle_price: Decimal

View File

@ -16,6 +16,7 @@
import typing
from dataclasses import dataclass
from decimal import Decimal
from .orders import Side
@ -29,7 +30,8 @@ from .orders import Side
# The information is usually split across 3 collections - 'is bid', 'orders' and 'client ID's. That can be a
# little awkward to use, so this tuple packages it all together, per order.
#
class PlacedOrder(typing.NamedTuple):
@dataclass
class PlacedOrder:
id: int
client_id: int
side: Side

View File

@ -16,6 +16,7 @@
import logging
import typing
from dataclasses import dataclass
from datetime import datetime
from decimal import Decimal
from solana.publickey import PublicKey
@ -35,7 +36,8 @@ from .version import Version
#
# A simple way to package borrow and deposit rates together in a single object.
#
class InterestRates(typing.NamedTuple):
@dataclass
class InterestRates:
deposit: Decimal
borrow: Decimal
@ -50,7 +52,8 @@ class InterestRates(typing.NamedTuple):
#
# A simple way to package borrow and deposit balances together in a single object.
#
class BankBalances(typing.NamedTuple):
@dataclass
class BankBalances:
deposits: Decimal
borrows: Decimal

View File

@ -4,12 +4,14 @@ import typing
from ...context import mango
from ...fakes import fake_context, fake_model_state, fake_order, fake_price, fake_inventory
from dataclasses import dataclass
from decimal import Decimal
from mango.marketmaking.orderchain.biasquantityonpositionelement import BiasQuantityOnPositionElement
class BQOPInput(typing.NamedTuple):
@dataclass()
class BQOPInput:
buy: mango.Order
sell: mango.Order
current: Decimal