def construct_event_filter_params( event_abi: ABIEvent, abi_codec: ABICodec, contract_address: Optional[ChecksumAddress] = None, argument_filters: Optional[Dict[str, Any]] = None, topics: Optional[Sequence[HexStr]] = None, fromBlock: Optional[BlockIdentifier] = None, toBlock: Optional[BlockIdentifier] = None, address: Optional[ChecksumAddress] = None ) -> Tuple[List[List[Optional[HexStr]]], FilterParams]: filter_params: FilterParams = {} topic_set: Sequence[HexStr] = construct_event_topic_set( event_abi, abi_codec, argument_filters) if topics is not None: if len(topic_set) > 1: raise TypeError( "Merging the topics argument with topics generated " "from argument_filters is not supported.") topic_set = topics if len(topic_set) == 1 and is_list_like(topic_set[0]): # type ignored b/c list-like check on line 88 filter_params['topics'] = topic_set[0] # type: ignore else: filter_params['topics'] = topic_set if address and contract_address: if is_list_like(address): filter_params['address'] = [address] + [contract_address] elif is_string(address): filter_params['address'] = [address, contract_address] else: raise ValueError( "Unsupported type for `address` parameter: {0}".format( type(address))) elif address: filter_params['address'] = address elif contract_address: filter_params['address'] = contract_address if 'address' not in filter_params: pass elif is_list_like(filter_params['address']): for addr in filter_params['address']: validate_address(addr) else: validate_address(filter_params['address']) if fromBlock is not None: filter_params['fromBlock'] = fromBlock if toBlock is not None: filter_params['toBlock'] = toBlock data_filters_set = construct_event_data_set(event_abi, abi_codec, argument_filters) return data_filters_set, filter_params
def test_construct_event_data_set_strict_with_errors(w3_strict_abi, arguments, expected_error): with pytest.raises(expected_error): construct_event_data_set(EVENT_2_ABI, w3_strict_abi.codec, arguments)
def test_construct_event_data_set_strict(w3_strict_abi, arguments, expected): actual = construct_event_data_set(EVENT_1_ABI, w3_strict_abi.codec, arguments) assert actual == expected
def test_construct_event_data_set(web3, arguments, expected): actual = construct_event_data_set(EVENT_1_ABI, web3.codec, arguments) assert actual == expected
def test_construct_event_data_set(event_abi, arguments, expected): actual = construct_event_data_set(event_abi, arguments) assert actual == expected