def mk_full_signature_from_json(abi): funcs = [func for func in abi if func["type"] == "function"] sigs = [] for func in funcs: args = [] returns = None for a in func["inputs"]: arg = vy_ast.arg( arg=a["name"], annotation=abi_type_to_ast(a["type"], 1048576), lineno=0, col_offset=0, ) args.append(arg) if len(func["outputs"]) == 1: returns = abi_type_to_ast(func["outputs"][0]["type"], 1) elif len(func["outputs"]) > 1: returns = vy_ast.Tuple(elements=[ abi_type_to_ast(a["type"], 1) for a in func["outputs"] ]) decorator_list = [vy_ast.Name(id="external")] # Handle either constant/payable or stateMutability field if ("constant" in func and func["constant"]) or ("stateMutability" in func and func["stateMutability"] == "view"): decorator_list.append(vy_ast.Name(id="view")) if ("payable" in func and func["payable"]) or ("stateMutability" in func and func["stateMutability"] == "payable"): decorator_list.append(vy_ast.Name(id="payable")) sig = FunctionSignature.from_definition( code=vy_ast.FunctionDef( name=func["name"], args=vy_ast.arguments(args=args), decorator_list=decorator_list, returns=returns, ), custom_structs=dict(), constants=Constants(), is_from_json=True, ) sigs.append(sig) return sigs
def mk_full_signature_from_json(abi): funcs = [func for func in abi if func['type'] == 'function'] sigs = [] for func in funcs: args = [] returns = None for a in func['inputs']: arg = ast.arg( arg=a['name'], annotation=abi_type_to_ast(a['type']), lineno=0, col_offset=0 ) args.append(arg) if len(func['outputs']) == 1: returns = abi_type_to_ast(func['outputs'][0]['type']) elif len(func['outputs']) > 1: returns = ast.Tuple( elts=[ abi_type_to_ast(a['type']) for a in func['outputs'] ] ) decorator_list = [ast.Name(id='public')] if func['constant']: decorator_list.append(ast.Name(id='constant')) if func['payable']: decorator_list.append(ast.Name(id='payable')) sig = FunctionSignature.from_definition( code=ast.FunctionDef( name=func['name'], args=ast.arguments(args=args), decorator_list=decorator_list, returns=returns, ), custom_units=set(), custom_structs=dict(), constants=Constants() ) sigs.append(sig) return sigs