def normalize_filter_params(from_block, to_block, address, topics): yield from_block yield to_block if address is None: yield address elif is_address(address): yield to_canonical_address(address) elif is_list_like(address): yield tuple( to_canonical_address(item) for item in address ) else: raise TypeError("Address is not in a recognized format: {0}".format(address)) if topics is None: yield topics elif is_valid_topic_array(topics): yield tuple( normalize_topic_list(item) if is_list_like(item) else normalize_topic(item) for item in topics ) else: raise TypeError("Topics are not in a recognized format: {0}".format(address))
def is_rlp_structured_access_list(val): """Returns true if 'val' is a valid rlp-structured access list.""" if not is_list_like(val): return False for item in val: if not is_list_like(item): return False if len(item) != 2: return False address, storage_keys = item if not is_address(address): return False for storage_key in storage_keys: if not is_int_or_prefixed_hexstr(storage_key): return False return True
def is_rpc_structured_access_list(val): """Returns true if 'val' is a valid JSON-RPC structured access list.""" if not is_list_like(val): return False for d in val: if not is_dict(d): return False if len(d) != 2: return False address = d.get('address') storage_keys = d.get('storageKeys') if any(_ is None for _ in (address, storage_keys)): return False if not is_address(address): return False if not is_list_like(storage_keys): return False for storage_key in storage_keys: if not is_int_or_prefixed_hexstr(storage_key): return False return True