from __future__ import annotations from gradio.component_meta import create_or_modify_pyi from gradio.events import EventListener, Events BLOCKS_EVENTS: list[EventListener | str] = [Events.load] class BlocksMeta(type): def __new__(cls, name, bases, attrs): for event in BLOCKS_EVENTS: trigger = ( event if isinstance(event, EventListener) else EventListener(event_name=event) ).copy() trigger.set_doc(component=name) attrs[event] = trigger.listener component_class = super().__new__(cls, name, bases, attrs) create_or_modify_pyi(BlocksEvents, "BlocksEvents", BLOCKS_EVENTS) return component_class class BlocksEvents: """ This class is used to hold the events for the Blocks component. It is populated dynamically by the BlocksMeta metaclass. """ pass