Esempio n. 1
0
def get_aligned_abi_inputs(abi, args):
    """
    Takes a function ABI (``abi``) and a sequence or mapping of args (``args``).
    Returns a list of type strings for the function's inputs and a list of
    arguments which have been aligned to the layout of those types.  The args
    contained in ``args`` may contain nested mappings or sequences corresponding
    to tuple-encoded values in ``abi``.
    """
    input_abis = abi.get('inputs', [])

    if isinstance(args, abc.Mapping):
        # `args` is mapping.  Align values according to abi order.
        args = tuple(args[abi['name']] for abi in input_abis)

    return (
        tuple(collapse_if_tuple(abi) for abi in input_abis),
        type(args)(_align_abi_input(abi, arg)
                   for abi, arg in zip(input_abis, args)),
    )
Esempio n. 2
0
def get_fn_abi_types(abi, name):
    if abi['type'] == 'fallback':
        return []
    else:
        return [collapse_if_tuple(arg) for arg in abi[name]]
Esempio n. 3
0
def get_abi_output_types(abi):
    if abi['type'] == 'fallback':
        return []
    else:
        return [collapse_if_tuple(arg) for arg in abi['outputs']]
Esempio n. 4
0
def get_abi_input_types(abi):
    if 'inputs' not in abi and abi['type'] == 'fallback':
        return []
    else:
        return [collapse_if_tuple(arg) for arg in abi['inputs']]
Esempio n. 5
0
def exclude_indexed_event_inputs_to_abi(event_abi):
    args_not_indexed = exclude_indexed_event_inputs(event_abi)
    result = [collapse_if_tuple(arg) for arg in args_not_indexed]
    return result