Skip to content

Commit 9d63d4a

Browse files
committed
Instantiate composer with network enum to pick correct metadata ini
1 parent edc20c1 commit 9d63d4a

File tree

6 files changed

+253
-72
lines changed

6 files changed

+253
-72
lines changed

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
recursive-include pyinjective/proto *.py
2-
include pyinjective/denoms.ini
2+
recursive-include pyinjective *.ini

pyinjective/composer.py

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,24 @@
88
from .utils import *
99

1010
class Composer:
11-
@staticmethod
12-
def Coin(amount: int, denom: str):
11+
def __init__(self, network: str):
12+
self.network = network
13+
14+
def Coin(self, amount: int, denom: str):
1315
return cosmos_base_coin_pb.Coin(
1416
amount=amount,
1517
denom=denom
1618
)
1719

18-
@staticmethod
19-
def OrderData(market_id: str, subaccount_id: str, order_hash: str):
20+
def OrderData(self, market_id: str, subaccount_id: str, order_hash: str):
2021
return injective_exchange_tx_pb.OrderData(
2122
market_id=market_id,
2223
subaccount_id=subaccount_id,
2324
order_hash=order_hash
2425
)
2526

26-
@staticmethod
2727
def SpotOrder(
28+
self,
2829
market_id: str,
2930
subaccount_id: str,
3031
fee_recipient: str,
@@ -33,7 +34,7 @@ def SpotOrder(
3334
isBuy: bool
3435
):
3536
# load denom metadata
36-
denom = Denoms.load_market(market_id)
37+
denom = Denoms.load_market(self.network, market_id)
3738
print('loaded market metadata for', denom.description)
3839

3940
# prepare values
@@ -54,8 +55,8 @@ def SpotOrder(
5455
trigger_price=trigger_price
5556
)
5657

57-
@staticmethod
5858
def DerivativeOrder(
59+
self,
5960
market_id: str,
6061
subaccount_id: str,
6162
fee_recipient: str,
@@ -65,7 +66,7 @@ def DerivativeOrder(
6566
isBuy: bool
6667
):
6768
# load denom metadata
68-
denom = Denoms.load_market(market_id)
69+
denom = Denoms.load_market(self.network, market_id)
6970
print('loaded market metadata for', denom.description)
7071

7172
# prepare values
@@ -89,24 +90,22 @@ def DerivativeOrder(
8990
)
9091

9192

92-
@staticmethod
93-
def MsgSend(from_address: str, to_address: str, amount: int, denom: str):
93+
def MsgSend(self, from_address: str, to_address: str, amount: int, denom: str):
9494
return cosmos_bank_tx_pb.MsgSend(
9595
from_address=from_address,
9696
to_address=to_address,
97-
amount=[Composer.Coin(amount=str(amount),denom=denom)]
97+
amount=[self.Coin(amount=str(amount),denom=denom)]
9898
)
9999

100-
@staticmethod
101-
def MsgDeposit(sender: str, subaccount_id: str, amount: int, denom: str):
100+
def MsgDeposit(self, sender: str, subaccount_id: str, amount: int, denom: str):
102101
return injective_exchange_tx_pb.MsgDeposit(
103102
sender=sender,
104103
subaccount_id=subaccount_id,
105-
amount=Composer.Coin(amount=str(amount),denom=denom)
104+
amount=self.Coin(amount=str(amount),denom=denom)
106105
)
107106

108-
@staticmethod
109107
def MsgCreateSpotLimitOrder(
108+
self,
110109
market_id: str,
111110
sender: str,
112111
subaccount_id: str,
@@ -117,7 +116,7 @@ def MsgCreateSpotLimitOrder(
117116
):
118117
return injective_exchange_tx_pb.MsgCreateSpotLimitOrder(
119118
sender=sender,
120-
order=Composer.SpotOrder(
119+
order=self.SpotOrder(
121120
market_id=market_id,
122121
subaccount_id=subaccount_id,
123122
fee_recipient=fee_recipient,
@@ -127,8 +126,8 @@ def MsgCreateSpotLimitOrder(
127126
)
128127
)
129128

130-
@staticmethod
131129
def MsgCreateSpotMarketOrder(
130+
self,
132131
market_id: str,
133132
sender: str,
134133
subaccount_id: str,
@@ -139,7 +138,7 @@ def MsgCreateSpotMarketOrder(
139138
):
140139
return injective_exchange_tx_pb.MsgCreateSpotMarketOrder(
141140
sender=sender,
142-
order=Composer.SpotOrder(
141+
order=self.SpotOrder(
143142
market_id=market_id,
144143
subaccount_id=subaccount_id,
145144
fee_recipient=fee_recipient,
@@ -149,8 +148,8 @@ def MsgCreateSpotMarketOrder(
149148
)
150149
)
151150

152-
@staticmethod
153151
def MsgCancelSpotOrder(
152+
self,
154153
market_id: str,
155154
sender: str,
156155
subaccount_id: str,
@@ -163,8 +162,8 @@ def MsgCancelSpotOrder(
163162
order_hash=order_hash
164163
)
165164

166-
@staticmethod
167165
def MsgBatchCreateSpotLimitOrders(
166+
self,
168167
sender: str,
169168
orders: list
170169
):
@@ -173,8 +172,8 @@ def MsgBatchCreateSpotLimitOrders(
173172
orders=orders
174173
)
175174

176-
@staticmethod
177175
def MsgBatchCancelSpotOrders(
176+
self,
178177
sender: str,
179178
data: list
180179
):
@@ -183,8 +182,8 @@ def MsgBatchCancelSpotOrders(
183182
data=data
184183
)
185184

186-
@staticmethod
187185
def MsgCreateDerivativeLimitOrder(
186+
self,
188187
market_id: str,
189188
sender: str,
190189
subaccount_id: str,
@@ -196,7 +195,7 @@ def MsgCreateDerivativeLimitOrder(
196195
):
197196
return injective_exchange_tx_pb.MsgCreateDerivativeLimitOrder(
198197
sender=sender,
199-
order=Composer.DerivativeOrder(
198+
order=self.DerivativeOrder(
200199
market_id=market_id,
201200
subaccount_id=subaccount_id,
202201
fee_recipient=fee_recipient,
@@ -207,8 +206,8 @@ def MsgCreateDerivativeLimitOrder(
207206
)
208207
)
209208

210-
@staticmethod
211209
def MsgCreateDerivativeMarketOrder(
210+
self,
212211
market_id: str,
213212
sender: str,
214213
subaccount_id: str,
@@ -220,7 +219,7 @@ def MsgCreateDerivativeMarketOrder(
220219
):
221220
return injective_exchange_tx_pb.MsgCreateDerivativeMarketOrder(
222221
sender=sender,
223-
order=Composer.DerivativeOrder(
222+
order=self.DerivativeOrder(
224223
market_id=market_id,
225224
subaccount_id=subaccount_id,
226225
fee_recipient=fee_recipient,
@@ -231,8 +230,8 @@ def MsgCreateDerivativeMarketOrder(
231230
)
232231
)
233232

234-
@staticmethod
235233
def MsgCancelDerivativeOrder(
234+
self,
236235
market_id: str,
237236
sender: str,
238237
subaccount_id: str,
@@ -245,8 +244,8 @@ def MsgCancelDerivativeOrder(
245244
order_hash=order_hash
246245
)
247246

248-
@staticmethod
249247
def MsgBatchCreateDerivativeLimitOrders(
248+
self,
250249
sender: str,
251250
orders: list
252251
):
@@ -255,8 +254,8 @@ def MsgBatchCreateDerivativeLimitOrders(
255254
orders=orders
256255
)
257256

258-
@staticmethod
259257
def MsgBatchCancelDerivativeOrders(
258+
self,
260259
sender: str,
261260
data: list
262261
):

pyinjective/constant.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
MAX_DATA_SIZE = 256
66
MAX_MEMO_CHARACTERS = 256
77

8-
config = ConfigParser()
9-
config.read(os.path.join(os.path.dirname(__file__), 'denoms.ini'))
8+
testnet_config = ConfigParser()
9+
testnet_config.read(os.path.join(os.path.dirname(__file__), 'testnet_denoms.ini'))
10+
11+
mainnet_config = ConfigParser()
12+
mainnet_config.read(os.path.join(os.path.dirname(__file__), 'mainnet_denoms.ini'))
1013

1114
class Denoms:
1215
def __init__(
@@ -24,7 +27,13 @@ def __init__(
2427
self.min_quantity_tick_size = min_quantity_tick_size
2528

2629
@classmethod
27-
def load_market(cls, market_id):
30+
def load_market(cls, network, market_id):
31+
config = None
32+
if network == 'testnet':
33+
config = testnet_config
34+
if network == 'mainnet':
35+
config =mainnet_config
36+
2837
return cls(
2938
description=config._sections[market_id]['description'],
3039
base=int(config._sections[market_id]['base']),
@@ -40,13 +49,15 @@ def __init__(
4049
grpc_endpoint: str = None,
4150
grpc_exchange_endpoint: str = None,
4251
chain_id: str = None,
43-
fee_denom: str = None
52+
fee_denom: str = None,
53+
env: str = None
4454
):
4555
self.lcd_endpoint = lcd_endpoint
4656
self.grpc_endpoint = grpc_endpoint
4757
self.grpc_exchange_endpoint = grpc_exchange_endpoint
4858
self.chain_id = chain_id
4959
self.fee_denom = fee_denom
60+
self.env = env
5061

5162
@classmethod
5263
def local(cls):
@@ -55,7 +66,8 @@ def local(cls):
5566
grpc_endpoint='localhost:9900',
5667
grpc_exchange_endpoint='localhost:9110',
5768
chain_id='injective-1',
58-
fee_denom='inj'
69+
fee_denom='inj',
70+
env = 'local'
5971
)
6072

6173
@classmethod
@@ -65,7 +77,8 @@ def testnet(cls):
6577
grpc_endpoint='testnet-sentry0.injective.network:9900',
6678
grpc_exchange_endpoint='testnet-sentry0.injective.network:9910',
6779
chain_id='injective-888',
68-
fee_denom='inj'
80+
fee_denom='inj',
81+
env = 'testnet'
6982
)
7083

7184
@classmethod
@@ -75,5 +88,9 @@ def mainnet(cls):
7588
grpc_endpoint='sentry0.injective.network:9900',
7689
grpc_exchange_endpoint='sentry0.injective.network:9910',
7790
chain_id='injective-1',
78-
fee_denom='inj'
91+
fee_denom='inj',
92+
env = 'mainnet'
7993
)
94+
95+
def string(self):
96+
return self.env

pyinjective/fetch_metadata.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,54 +9,65 @@
99

1010
from pyinjective.constant import Network
1111

12-
network = Network.testnet()
13-
1412
metadata_template = """[{}]
15-
description = '{} {}'
13+
description = '{} {} {}'
1614
base = {}
1715
quote = {}
1816
min_price_tick_size = {}
1917
min_quantity_tick_size = {}
2018
2119
"""
2220

23-
denom_output = ''
21+
testnet_denom_output = ''
22+
mainnet_denom_output = ''
2423

25-
async def main() -> None:
26-
global denom_output
24+
async def fetch_denom(network) -> str:
25+
denom_output = ''
26+
27+
# fetch meta data for spot markets
2728
async with grpc.aio.insecure_channel(network.grpc_exchange_endpoint) as channel:
2829
spot_exchange_rpc = spot_exchange_rpc_grpc.InjectiveSpotExchangeRPCStub(channel)
2930
status = "active"
3031
mresp = await spot_exchange_rpc.Markets(spot_exchange_rpc_pb.MarketsRequest(market_status=status))
3132
for market in mresp.markets:
3233
config = metadata_template.format(
3334
market.market_id,
34-
'Spot', market.ticker,
35+
network.string().capitalize(), 'Spot', market.ticker,
3536
market.base_token_meta.decimals,
3637
market.quote_token_meta.decimals,
3738
market.min_price_tick_size,
3839
market.min_quantity_tick_size
3940
)
4041
denom_output += config
4142

42-
43+
# fetch meta data for derivative markets
4344
async with grpc.aio.insecure_channel(network.grpc_exchange_endpoint) as channel:
4445
derivative_exchange_rpc = derivative_exchange_rpc_grpc.InjectiveDerivativeExchangeRPCStub(channel)
4546
status = "active"
4647
mresp = await derivative_exchange_rpc.Markets(derivative_exchange_rpc_pb.MarketsRequest(market_status=status))
4748
for market in mresp.markets:
4849
config = metadata_template.format(
4950
market.market_id,
50-
'Derivative', market.ticker,
51+
network.string().capitalize(), 'Derivative', market.ticker,
5152
18,
5253
market.quote_token_meta.decimals,
5354
market.min_price_tick_size,
5455
market.min_quantity_tick_size
5556
)
5657
denom_output += config
5758

58-
with open("./pyinjective/denoms.ini", "w") as text_file:
59-
text_file.write(denom_output)
59+
return denom_output
60+
61+
async def main() -> None:
62+
testnet = Network.testnet()
63+
data = await fetch_denom(testnet)
64+
with open("./pyinjective/testnet_denoms.ini", "w") as text_file:
65+
text_file.write(data)
66+
67+
mainnet = Network.mainnet()
68+
data = await fetch_denom(mainnet)
69+
with open("./pyinjective/mainnet_denoms.ini", "w") as text_file:
70+
text_file.write(data)
6071

6172
if __name__ == '__main__':
6273
logging.basicConfig(level=logging.INFO)

0 commit comments

Comments
 (0)