Skip to content

Commit 06e8fb9

Browse files
committed
improve models
1 parent 8d20c0c commit 06e8fb9

File tree

6 files changed

+170
-281
lines changed

6 files changed

+170
-281
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
- name: Run Pyright
4545
run: |
4646
pip install pyright
47-
pyright mypylib mypyconsole # wip support whole project
47+
pyright mypylib mypyconsole mytoncore/models.py # wip support whole project
4848
4949
- name: Run pytest
5050
run: |

modules/alert_bot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ def check_stake_returned(self):
532532
trs = self.ton.GetAccountHistory(self.ton.GetAccount(res["walletAddr"]), limit=10)
533533

534534
for tr in trs:
535-
if tr.time >= config['endWorkTime'] + FREEZE_PERIOD and tr.srcAddr == '3333333333333333333333333333333333333333333333333333333333333333' and tr.body.startswith('F96F7324'): # Elector Recover Stake Response
535+
if tr.time >= config['endWorkTime'] + FREEZE_PERIOD and tr.src_addr == '3333333333333333333333333333333333333333333333333333333333333333' and tr.body.startswith('F96F7324'): # Elector Recover Stake Response
536536
self.send_alert("stake_returned", stake=round(tr.value), address=res["walletAddr"], reward=round(tr.value - res.get('stake', 0), 2))
537537
return
538538
self.send_alert("stake_not_returned", address=res["walletAddr"])

modules/controller.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ def do_check_liquid_pool(self):
190190
history = self.ton.GetAccountHistory(account, 5000)
191191
addrs_list = list()
192192
for message in history:
193-
if message.srcAddr is None or message.value is None:
193+
if message.src_addr is None or message.value is None:
194194
continue
195-
src_addr_full = f"{message.srcWorkchain}:{message.srcAddr}"
196-
dest_add_full = f"{message.destWorkchain}:{message.destAddr}"
195+
src_addr_full = f"{message.src_workchain}:{message.src_addr}"
196+
dest_add_full = f"{message.dest_workchain}:{message.dest_addr}"
197197
if src_addr_full == account.addrFull:
198198
fromto = dest_add_full
199199
else:

modules/utilities.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ def get_history_table(self, addr, limit):
4444
typeText = color_text("{red}{bold}{endc}")
4545
table += [["Time", typeText, "Coins", "From/To"]]
4646
for message in history:
47-
if message.srcAddr is None:
47+
if message.src_addr is None:
4848
continue
49-
srcAddrFull = f"{message.srcWorkchain}:{message.srcAddr}"
50-
destAddFull = f"{message.destWorkchain}:{message.destAddr}"
49+
srcAddrFull = f"{message.src_workchain}:{message.src_addr}"
50+
destAddFull = f"{message.dest_workchain}:{message.dest_addr}"
5151
if srcAddrFull == account.addrFull:
5252
type = color_text("{red}{bold}>>>{endc}")
5353
fromto = destAddFull

mytoncore/models.py

Lines changed: 122 additions & 162 deletions
Original file line numberDiff line numberDiff line change
@@ -1,168 +1,128 @@
1+
# pyright: strict
2+
3+
from __future__ import annotations
14
import os
5+
from dataclasses import dataclass
26

37

8+
@dataclass
49
class Wallet:
5-
def __init__(self, name, path, version):
6-
self.name = name
7-
self.path = path
8-
self.addrFilePath = f"{path}.addr"
9-
self.privFilePath = f"{path}.pk"
10-
self.bocFilePath = f"{path}-query.boc"
11-
self.addrFull = None
12-
self.workchain = None
13-
self.addr = None
14-
self.addrB64 = None
15-
self.addrB64_init = None
16-
self.oldseqno = None
17-
self.account = None
18-
self.subwallet = None
19-
self.version = version
20-
#end define
21-
22-
def Delete(self):
23-
os.remove(self.addrFilePath)
24-
os.remove(self.privFilePath)
25-
#end define
26-
#end class
27-
28-
10+
name: str
11+
path: str
12+
version: str
13+
addrFull: str | None = None
14+
workchain: int | None = None
15+
addr: str | None = None
16+
addrB64: str | None = None
17+
addrB64_init: str | None = None
18+
oldseqno: int | None = None
19+
subwallet: int | None = None
20+
21+
def __post_init__(self):
22+
self.addrFilePath: str = f"{self.path}.addr"
23+
self.privFilePath: str = f"{self.path}.pk"
24+
self.bocFilePath: str = f"{self.path}-query.boc"
25+
26+
def Delete(self):
27+
os.remove(self.addrFilePath)
28+
os.remove(self.privFilePath)
29+
30+
31+
@dataclass
2932
class Account:
30-
def __init__(self, workchain, addr):
31-
self.workchain = workchain
32-
self.addr = addr
33-
self.addrB64 = None
34-
self.addrFull = None
35-
self.status = "empty"
36-
self.balance = 0
37-
self.lt = None
38-
self.hash = None
39-
self.codeHash = None
40-
#end define
41-
#end class
42-
43-
44-
class Block():
45-
def __init__(self, str=None):
46-
self.workchain = None
47-
self.shardchain = None
48-
self.seqno = None
49-
self.rootHash = None
50-
self.fileHash = None
51-
self.ParsBlock(str)
52-
#end define
53-
54-
def ParsBlock(self, str):
55-
if str is None:
56-
return
57-
buff = str.split(':')
58-
self.rootHash = buff[1]
59-
self.fileHash = buff[2]
60-
buff = buff[0]
61-
buff = buff.replace('(', '')
62-
buff = buff.replace(')', '')
63-
buff = buff.split(',')
64-
self.workchain = int(buff[0])
65-
self.shardchain = buff[1]
66-
self.seqno = int(buff[2])
67-
#end define
68-
69-
def __str__(self):
70-
result = f"({self.workchain},{self.shardchain},{self.seqno}):{self.rootHash}:{self.fileHash}"
71-
return result
72-
#end define
73-
74-
def __repr__(self):
75-
return self.__str__()
76-
#end define
77-
78-
def __eq__(self, other):
79-
if other is None:
80-
return False
81-
return self.rootHash == other.rootHash and self.fileHash == other.fileHash
82-
#end define
83-
#end class
84-
85-
86-
class Trans():
87-
def __init__(self, block, addr=None, lt=None, hash=None):
88-
self.block = block
89-
self.addr = addr
90-
self.lt = lt
91-
self.hash = hash
92-
#end define
93-
94-
def __str__(self):
95-
return str(self.__dict__)
96-
#end define
97-
98-
def __repr__(self):
99-
return self.__str__()
100-
#end define
101-
102-
def __eq__(self, other):
103-
if other is None:
104-
return False
105-
return self.hash == other.hash
106-
#end define
107-
#end class
108-
109-
110-
class Message():
111-
def __init__(self):
112-
self.trans = None
113-
self.type = None
114-
self.time = None
115-
self.srcWorkchain = None
116-
self.destWorkchain = None
117-
self.srcAddr = None
118-
self.destAddr = None
119-
self.value = None
120-
self.body = None
121-
self.comment = None
122-
self.ihr_fee = None
123-
self.fwd_fee = None
124-
self.total_fees = None
125-
self.ihr_disabled = None
126-
self.hash = None
127-
#end define
128-
129-
def GetFullAddr(self, workchain, addr):
130-
if addr is None:
131-
return
132-
return f"{workchain}:{addr}"
133-
#end define
134-
135-
def __str__(self):
136-
return str(self.__dict__)
137-
#end define
138-
139-
def __repr__(self):
140-
return self.__str__()
141-
#end define
142-
143-
def __eq__(self, other):
144-
if other is None:
145-
return False
146-
return self.hash == other.hash
147-
#end define
148-
#end class
149-
150-
33+
workchain: int
34+
addr: str
35+
addrB64: str | None = None
36+
addrFull: str | None = None
37+
status: str = "empty"
38+
balance: float = 0
39+
lt: str | None = None
40+
hash: str | None = None
41+
codeHash: str | None = None
42+
43+
44+
@dataclass
45+
class Block:
46+
workchain: int
47+
shardchain: str
48+
seqno: int
49+
rootHash: str
50+
fileHash: str
51+
52+
@classmethod
53+
def from_str(cls, s: str):
54+
buff = s.split(":")
55+
root_hash = buff[1]
56+
file_hash = buff[2]
57+
buff = buff[0]
58+
buff = buff.replace("(", "")
59+
buff = buff.replace(")", "")
60+
buff = buff.split(",")
61+
workchain = int(buff[0])
62+
shardchain = buff[1]
63+
seqno = int(buff[2])
64+
return cls(workchain, shardchain, seqno, root_hash, file_hash)
65+
66+
def __str__(self):
67+
result = f"({self.workchain},{self.shardchain},{self.seqno}):{self.rootHash}:{self.fileHash}"
68+
return result
69+
70+
def __repr__(self):
71+
return self.__str__()
72+
73+
74+
@dataclass
75+
class Transaction:
76+
block: Block
77+
type: str | None
78+
time: int | None
79+
total_fees: float | None
80+
81+
def __str__(self):
82+
return str(self.__dict__)
83+
84+
def __repr__(self):
85+
return self.__str__()
86+
87+
88+
@dataclass
89+
class Message:
90+
transaction: Transaction
91+
src_workchain: int | None
92+
dest_workchain: int | None
93+
src_addr: str | None
94+
dest_addr: str | None
95+
value: float | None
96+
body: str | None
97+
comment: str | None
98+
ihr_fee: float | None
99+
fwd_fee: float | None
100+
ihr_disabled: bool | None
101+
102+
@property
103+
def time(self):
104+
return self.transaction.time
105+
106+
def __str__(self):
107+
return str(self.__dict__)
108+
109+
def __repr__(self):
110+
return self.__str__()
111+
112+
113+
@dataclass
151114
class Pool:
152-
def __init__(self, name, path):
153-
self.name = name
154-
self.path = path
155-
self.addrFilePath = f"{path}.addr"
156-
self.bocFilePath = f"{path}-query.boc"
157-
self.addrFull = None
158-
self.workchain = None
159-
self.addr = None
160-
self.addrB64 = None
161-
self.addrB64_init = None
162-
self.account = None
163-
#end define
164-
165-
def Delete(self):
166-
os.remove(self.addrFilePath)
167-
#end define
168-
#end class
115+
name: str
116+
path: str
117+
addrFull: str | None = None
118+
workchain: int | None = None
119+
addr: str | None = None
120+
addrB64: str | None = None
121+
addrB64_init: str | None = None
122+
123+
def __post_init__(self):
124+
self.addrFilePath: str = f"{self.path}.addr"
125+
self.bocFilePath: str = f"{self.path}-query.boc"
126+
127+
def Delete(self):
128+
os.remove(self.addrFilePath)

0 commit comments

Comments
 (0)