| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # mypy: allow-untyped-defs
- class CompilationCallbackHandler:
- def __init__(self):
- self.start_callbacks = []
- self.end_callbacks = []
- def register_start_callback(self, callback):
- """
- Register a callback function to be called when the compilation starts.
- Args:
- - callback (callable): The callback function to register.
- """
- self.start_callbacks.append(callback)
- return callback
- def register_end_callback(self, callback):
- """
- Register a callback function to be called when the compilation ends.
- Args:
- - callback (callable): The callback function to register.
- """
- self.end_callbacks.append(callback)
- return callback
- def remove_start_callback(self, callback):
- """
- Remove a registered start callback function.
- Args:
- - callback (callable): The callback function to remove.
- """
- self.start_callbacks.remove(callback)
- def remove_end_callback(self, callback):
- """
- Remove a registered end callback function.
- Args:
- - callback (callable): The callback function to remove.
- """
- self.end_callbacks.remove(callback)
- def run_start_callbacks(self):
- """
- Execute all registered start callbacks.
- """
- for callback in self.start_callbacks:
- callback()
- def run_end_callbacks(self):
- """
- Execute all registered end callbacks.
- """
- for callback in self.end_callbacks:
- callback()
- def clear(self):
- """
- Clear all registered callbacks.
- """
- self.start_callbacks.clear()
- self.end_callbacks.clear()
- callback_handler = CompilationCallbackHandler()
- def on_compile_start(callback):
- """
- Decorator to register a callback function for the start of the compilation.
- """
- callback_handler.register_start_callback(callback)
- return callback
- def on_compile_end(callback):
- """
- Decorator to register a callback function for the end of the compilation.
- """
- callback_handler.register_end_callback(callback)
- return callback
|