def format_abi_args(self, fn_name: str, fn_args, needCover=False): """ format args """ if not self.contract_bin_path.endswith(".wasm"): self.gen_contract_abi(needCover) data_parser = DatatypeParser(self.contract_abi_path) contract_abi = data_parser.contract_abi self.dataparser = data_parser args = None if fn_args is None: return (contract_abi, fn_args) if fn_name in data_parser.func_abi_map_by_name.keys() is None: raise BcosException( "invalid function: {}, the right function list:".format( fn_name, ''.join(data_parser.func_abi_map_by_name.keys()))) if fn_name is not None: fn_abi = data_parser.func_abi_map_by_name[fn_name] inputabi = data_parser.get_function_inputs_abi(fn_name) #inputabi = data_parser.get_function_abi(fn_name) args = format_args_by_function_abi(fn_args, inputabi) #print("args after format:",args) # the constructor with params elif fn_args is not None and contract_abi is not None: abidata = get_constructor_abi(contract_abi) if abidata is not None: inputabi = abidata["inputs"] args = format_args_by_function_abi(fn_args, inputabi) return (contract_abi, args)
def get_aligned_function_data(contract_abi=None, fn_abi=None, args=None, kwargs=None): if fn_abi is None: fn_abi = get_constructor_abi(contract_abi) if kwargs is None: kwargs = {} fn_arguments = merge_args_and_kwargs(fn_abi, args, kwargs) _, aligned_fn_arguments = get_aligned_abi_inputs(fn_abi, fn_arguments) return add_0x_prefix(encode_abi(fn_abi, fn_arguments, ""))
def format_args(self, fn_name, fn_args, needCover=False): """ format args """ self.gen_contract_abi(needCover) data_parser = DatatypeParser(self.contract_abi_path) contract_abi = data_parser.contract_abi args = None if fn_args is None: return (contract_abi, fn_args) if fn_name in data_parser.func_abi_map_by_name.keys() is None: raise BcosException( "invalid function: {}, the right function list:".format( fn_name, ''.join(data_parser.func_abi_map_by_name.keys()))) if fn_name is not None: inputabi = data_parser.func_abi_map_by_name[fn_name]["inputs"] args = TransactionCommon.format_args_by_abi(fn_args, inputabi) # the constructor with params elif fn_args is not None and contract_abi is not None: abidata = get_constructor_abi(contract_abi) if abidata is not None: inputabi = abidata["inputs"] args = TransactionCommon.format_args_by_abi(fn_args, inputabi) return (contract_abi, args)