code: def event_timer_timer_demo():
      env = StreamExecutionEnvironment.get_execution_environment()
  
      ds = env.from_collection(
          collection=[
              (1000, "Alice", 110.1),
              (4000, "Bob", 30.2),
              (3000, "Alice", 20.0),
              (2000, "Bob", 53.1),
              (5000, "Alice", 13.1),
              (3000, "Bob", 3.1),
              (7000, "Bob", 16.1),
              (10000, "Alice", 20.1),
          ],
          type_info=Types.TUPLE(
              [Types.LONG(), Types.STRING(), Types.FLOAT()]
          ),
      )
  
      ds = ds.assign_timestamps_and_watermarks(
          WatermarkStrategy.for_bounded_out_of_orderness(
              Duration.of_seconds(2)
          ).with_timestamp_assigner(MyTimestampAssigner())
      )
  
      # apply the process function onto a keyed stream
      ds.key_by(lambda value: value[1]).process(Sum()).print()
  
      # submit for execution
      env.execute()
  
file_path: flink/flink-python/pyflink/examples/datastream/event_time_timer.py
imports: from pyflink.common import Time, WatermarkStrategy, Duration
  from pyflink.common.typeinfo import Types
  from pyflink.common.watermark_strategy import TimestampAssigner
  from pyflink.datastream import StreamExecutionEnvironment
  from pyflink.datastream.functions import KeyedProcessFunction, RuntimeContext
  from pyflink.datastream.state import ValueStateDescriptor, StateTtlConfig
label_desc: Use image node_id 1 for calling a global function with example usage: event_timer_timer_demo() without return types