Explain Python decorators and generators
Asked in the Round 1 technical stage. For this hands-on version, implement normalize_stream using both a decorator and a generator.
The function receives a list of strings. Return a dictionary with items, containing non-empty strings stripped of surrounding whitespace and converted to lowercase, and generator_calls, containing the number of times the decorated generator is consumed.
Example: [' Hello ', ' ', 'WORLD'] returns {'items': ['hello', 'world'], 'generator_calls': 1}.
def normalize_stream(values):