mango-explorer/tests/data.py

51 lines
2.1 KiB
Python

import glob
import mango
import typing
from decimal import Decimal
def load_group(filename: str, root_banks: typing.Sequence[mango.RootBank]) -> mango.Group:
account_info: mango.AccountInfo = mango.AccountInfo.load_json(filename)
mainnet_token_lookup: mango.TokenLookup = mango.IdsJsonTokenLookup("mainnet", "mainnet.1")
devnet_token_lookup: mango.TokenLookup = mango.IdsJsonTokenLookup("devnet", "devnet.2")
token_lookup: mango.TokenLookup = mango.CompoundTokenLookup([mainnet_token_lookup, devnet_token_lookup])
return mango.Group.parse_locally(account_info, "devnet.2", root_banks, token_lookup)
def load_account(filename: str, group: mango.Group) -> mango.Account:
account_info: mango.AccountInfo = mango.AccountInfo.load_json(filename)
return mango.Account.parse(account_info, group)
def load_openorders(filename: str) -> mango.OpenOrders:
account_info: mango.AccountInfo = mango.AccountInfo.load_json(filename)
# Just hard-code the decimals for now.
return mango.OpenOrders.parse(account_info, Decimal(6), Decimal(6))
def load_cache(filename: str) -> mango.Cache:
account_info: mango.AccountInfo = mango.AccountInfo.load_json(filename)
return mango.Cache.parse(account_info)
def load_root_bank(filename: str) -> mango.RootBank:
account_info: mango.AccountInfo = mango.AccountInfo.load_json(filename)
return mango.RootBank.parse(account_info)
def load_data_from_directory(directory_path: str) -> typing.Tuple[mango.Group, mango.Cache, mango.Account, typing.Dict[str, mango.OpenOrders]]:
root_banks = []
for filepath in glob.iglob(f"{directory_path}/root_bank*.json"):
root_bank = load_root_bank(filepath)
root_banks += [root_bank]
all_openorders = {}
for filepath in glob.iglob(f"{directory_path}/openorders*.json"):
openorders = load_openorders(filepath)
all_openorders[str(openorders.address)] = openorders
group = load_group(f"{directory_path}/group.json", root_banks)
account = load_account(f"{directory_path}/account.json", group)
cache = load_cache(f"{directory_path}/cache.json")
return group, cache, account, all_openorders