Skip to content

Commit c7e17ba

Browse files
authored
Merge pull request #18 from Divinil001/dev
Add extra_names label support
2 parents 744d57a + 8af0352 commit c7e17ba

File tree

4 files changed

+23381
-22603
lines changed

4 files changed

+23381
-22603
lines changed

src/tonpy/abi/instance.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ def parse_getters(self, tvm: TVM, getters: List[int] = None) -> dict:
8686

8787
for parser in parsers:
8888
data = parser.parse_getters(tvm, self.tlb_sources)
89-
if data:
89+
if isinstance(data, dict):
9090
result['abi_interfaces'].append(parser.name)
91+
if 'extra_names' in parser.instance['labels']:
92+
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
9193
result.update(data)
9294

9395
return result
@@ -104,8 +106,10 @@ async def aparse_getters(self, tvm: TVM, getters: List[int] = None) -> dict:
104106

105107
for parser in parsers:
106108
data = await parser.aparse_getters(tvm, self.tlb_sources)
107-
if data:
109+
if isinstance(data, dict):
108110
result['abi_interfaces'].append(parser.name)
111+
if 'extra_names' in parser.instance['labels']:
112+
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
109113
result.update(data)
110114

111115
return result
@@ -121,8 +125,10 @@ def parse_getter_lazy(self, code_hash, get_tvm: Callable, getters: List[int] = N
121125

122126
for parser in parsers:
123127
data = parser.parse_getters(tvm, self.tlb_sources)
124-
if data:
128+
if isinstance(data, dict):
125129
result['abi_interfaces'].append(parser.name)
130+
if 'extra_names' in parser.instance['labels']:
131+
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
126132
for key, value in data.items():
127133
if key not in result:
128134
result[key] = value
@@ -145,16 +151,20 @@ async def aparse_getter_lazy(self, code_hash, get_tvm: Callable, getters: List[i
145151
tvm = await get_tvm()
146152

147153
for parser in parsers:
148-
result['abi_interfaces'].append(parser.name)
149-
for key, value in (await parser.aparse_getters(tvm, self.tlb_sources)).items():
150-
if key not in result:
151-
result[key] = value
152-
else:
153-
if result[key] is not None:
154+
data = await parser.aparse_getters(tvm, self.tlb_sources)
155+
if isinstance(data, dict):
156+
result['abi_interfaces'].append(parser.name)
157+
if 'extra_names' in parser.instance['labels']:
158+
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
159+
for key, value in data.items():
160+
if key not in result:
154161
result[key] = value
155162
else:
156-
logger.warning(f"Got multiple not null answers for getter {key} in {parser.name}")
157-
result.update()
163+
if result[key] is not None:
164+
result[key] = value
165+
else:
166+
logger.warning(f"Got multiple not null answers for getter {key} in {parser.name}")
167+
result.update()
158168

159169
return result
160170

src/tonpy/abi/interface.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ def parse_getters(self, tvm: TVM, tlb_sources):
6161
tmp = getter.parse_getters(tvm, tlb_sources)
6262

6363
if tmp is None:
64-
return {}
64+
return None
6565

6666
for i in tmp:
6767
result[f"{self.dton_parse_prefix}{i}"] = tmp[i]
6868

6969
except Exception as e:
7070
logger.warning(f"Can't parse {self.name}, (getter: {getter.method_name}): {e} {traceback.format_exc()}")
71-
return {} # abi should work completely, with a result in each getter
71+
return None # abi should work completely, with a result in each getter
7272

7373
# parse storage too
7474
storage_parsed = self.parse_storage(tvm, tlb_sources)
@@ -86,14 +86,14 @@ async def aparse_getters(self, tvm: TVM, tlb_sources):
8686
tmp = await getter.aparse_getters(tvm, tlb_sources)
8787

8888
if tmp is None:
89-
return {}
89+
return None
9090

9191
for i in tmp:
9292
result[f"{self.dton_parse_prefix}{i}"] = tmp[i]
9393

9494
except Exception as e:
9595
logger.warning(f"Can't parse {self.name}, (getter: {getter.method_name}): {e} {traceback.format_exc()}")
96-
return {} # abi should work completely, with a result in each getter
96+
return None # abi should work completely, with a result in each getter
9797

9898
# parse storage too
9999
storage_parsed = self.parse_storage(tvm, tlb_sources)

0 commit comments

Comments
 (0)