Spaces:
No application file
No application file
|
Download readme/extensions/callbacks.md from mrtroydev/audio-webui: direct link, hf CLI and curl.
- Browser
- Download file 2.89 kB
-
https://huggingface.co/spaces/mrtroydev/audio-webui/resolve/main/readme/extensions/callbacks.md
- Command line
-
hf download hf://spaces/mrtroydev/audio-webui/readme/extensions/callbacks.md
-
curl -L -o callbacks.md https://huggingface.co/spaces/mrtroydev/audio-webui/resolve/main/readme/extensions/callbacks.md
2.89 kB
| # Extension callbacks | |
| If you find something that you'd want a callback in, please suggest it on discord or create an issue. | |
| ## Hooking callbacks | |
| Hooking callbacks is the main use for callbacks from the extension developer's side, callbacks are basically events, | |
| which can easily be hooked. | |
| You can hook a callback like this: | |
| ```python | |
| # Define a function for the callback to run | |
| def callback_function(*args, **kwargs): | |
| print('Callback was triggered!') | |
| # Import the callback script | |
| import webui.extensionlib.callbacks as cb | |
| # Register callback through manager | |
| callback = cb.CallBack(callback_function) | |
| cb.get_manager('webui.init').register(callback) | |
| # Register by name in a single line | |
| callback = cb.register_by_name('webui.init', callback_function) | |
| ``` | |
| And you can remove a callback if needed, assuming you have a reference to the registered callback, like this: | |
| ```python | |
| import webui.extensionlib.callbacks as cb | |
| # Remove callback through manager | |
| cb.get_manager('webui.init').unregister(callback) | |
| # Remove callback through function | |
| cb.unregister_by_name('webui.init', callback) | |
| ``` | |
| ## Registering new callbacks (callback managers) | |
| You can register callbacks through extensionlib's callbacks manager. Use this if you want users to be able to expand | |
| your extension. | |
| (For example, an API extension which has a callback to register additional routes.) | |
| (Not required, as callbacks will be auto-registered if missing) | |
| ```python | |
| import webui.extensionlib.callbacks as cb | |
| new_manager = cb.register_new('example_extension.example') | |
| manager_from_name = cb.get_manager('example_extension.example') | |
| assert new_manager == manager_from_name | |
| # These 2 will be the same, | |
| # unless there was already a callback registered with the same name | |
| # You can activate a callback like this: | |
| new_manager() | |
| # You can supply parameters too | |
| new_manager('Positional', 2, example='keyword') | |
| # You can access outputs as an array | |
| outputs = new_manager() | |
| # [] - no callbacks were ran as none were registered | |
| # This will store raw return values from the callbacks, make sure to check them. | |
| ``` | |
| ## List of callbacks | |
| Indents get replaced with ".", so for example: | |
| * example | |
| * indented (example.indented) | |
| * indented2 (example.indented2) | |
| * *non-callback* | |
| * callback (example.non-callback.callback) | |
| * webui | |
| * init [Called when the webui is initiated, after extensions have been initialized.] | |
| * [settings](callbacks/webui/settings.md) [Called to fetch settings for this extension.] | |
| * [tabs](your_first_extension.md) [Called after the base tabs have been registered, allows you to add new tabs] | |
| * utils [Same as tabs, but on the utils tab] | |
| * *tts* | |
| * [list](callbacks/webui/tts/list.md) [Called on tts list init, register new tts modules here] | |
| Please request new callbacks if you need them, don't monkeypatch them in, that might break compatibility with updates and other extensions. | |