Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 20 additions & 10 deletions src/tonpy/abi/instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ def parse_getters(self, tvm: TVM, getters: List[int] = None) -> dict:

for parser in parsers:
data = parser.parse_getters(tvm, self.tlb_sources)
if data:
if isinstance(data, dict):
result['abi_interfaces'].append(parser.name)
if 'extra_names' in parser.instance['labels']:
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
result.update(data)

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

for parser in parsers:
data = await parser.aparse_getters(tvm, self.tlb_sources)
if data:
if isinstance(data, dict):
result['abi_interfaces'].append(parser.name)
if 'extra_names' in parser.instance['labels']:
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
result.update(data)

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

for parser in parsers:
data = parser.parse_getters(tvm, self.tlb_sources)
if data:
if isinstance(data, dict):
result['abi_interfaces'].append(parser.name)
if 'extra_names' in parser.instance['labels']:
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
for key, value in data.items():
if key not in result:
result[key] = value
Expand All @@ -145,15 +151,19 @@ async def aparse_getter_lazy(self, code_hash, get_tvm: Callable, getters: List[i
tvm = await get_tvm()

for parser in parsers:
result['abi_interfaces'].append(parser.name)
for key, value in (await parser.aparse_getters(tvm, self.tlb_sources)).items():
if key not in result:
result[key] = value
else:
if result[key] is not None:
data = await parser.aparse_getters(tvm, self.tlb_sources)
if isinstance(data, dict):
result['abi_interfaces'].append(parser.name)
if 'extra_names' in parser.instance['labels']:
result['abi_interfaces'].extend(parser.instance['labels']['extra_names'])
for key, value in data.items():
if key not in result:
result[key] = value
else:
logger.warning(f"Got multiple not null answers for getter {key} in {parser.name}")
if result[key] is not None:
result[key] = value
else:
logger.warning(f"Got multiple not null answers for getter {key} in {parser.name}")
result.update()

return result
8 changes: 4 additions & 4 deletions src/tonpy/abi/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@ def parse_getters(self, tvm: TVM, tlb_sources):
tmp = getter.parse_getters(tvm, tlb_sources)

if tmp is None:
return {}
return None

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

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

return result

Expand All @@ -64,14 +64,14 @@ async def aparse_getters(self, tvm: TVM, tlb_sources):
tmp = await getter.aparse_getters(tvm, tlb_sources)

if tmp is None:
return {}
return None

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

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

return result

Loading
Loading