def data_tree_map(func, data_tree): """ Map func to every ABITypedData element in the tree. func will receive two args: abi_type, and data """ def map_to_typed_data(elements): if isinstance(elements, ABITypedData) and elements.abi_type is not None: return ABITypedData(func(*elements)) else: return elements return recursive_map(map_to_typed_data, data_tree)
def data_tree_map(func, data_tree): ''' Map func to every ABITypedData element in the tree. func will receive two args: abi_type, and data ''' def map_to_typed_data(elements): if isinstance(elements, ABITypedData) and elements.abi_type is not None: return ABITypedData(func(*elements)) else: return elements return recursive_map(map_to_typed_data, data_tree)
def data_tree_map( func: Callable[[TypeStr, Any], Tuple[TypeStr, Any]], data_tree: Any ) -> "ABITypedData": """ Map func to every ABITypedData element in the tree. func will receive two args: abi_type, and data """ def map_to_typed_data(elements: Any) -> "ABITypedData": if isinstance(elements, ABITypedData) and elements.abi_type is not None: return ABITypedData(func(*elements)) else: return elements return recursive_map(map_to_typed_data, data_tree)
def recursive(cls, value): return recursive_map(cls._apply_if_mapping, value)
def recursive(cls, value: TValue) -> 'ReadableAttributeDict[TKey, TValue]': return recursive_map(cls._apply_if_mapping, value)
def test_recursive_collection_cycle(): data = [3] data.append(data) with pytest.raises(ValueError): recursive_map(square_int, data)
def test_recursive_collection_apply(): assert recursive_map(square_int, [[3]]) == [[9]]