diff --git a/web3/utils/events.py b/web3/utils/events.py index 8faa86bec8..a5a1f87a65 100644 --- a/web3/utils/events.py +++ b/web3/utils/events.py @@ -221,3 +221,21 @@ def get_event_data(event_abi, log_entry): } return AttributeDict.recursive(event_data) + + +@to_tuple +def pop_singlets(seq): + yield from (i[0] if is_list_like(i) and len(i) == 1 else i for i in seq) + + +@curry +def remove_trailing_from_seq(seq, remove_value=None): + index = len(seq) + while index > 0 and seq[index - 1] == remove_value: + index -= 1 + return seq[:index] + + +normalize_topic_list = compose( + remove_trailing_from_seq(remove_value=None), + pop_singlets,)