From b3dffe99fb300e7e995d2f7ff8c56488966789bb Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Fri, 3 Oct 2025 06:46:29 +0300 Subject: [PATCH] pyflix: add passing event name to off method --- tools/pyflix/README.md | 7 +++++++ tools/pyflix/flix.py | 13 +++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/pyflix/README.md b/tools/pyflix/README.md index 9f49d7b..47d5633 100644 --- a/tools/pyflix/README.md +++ b/tools/pyflix/README.md @@ -59,6 +59,13 @@ flix.on('disconnected', lambda: print('Disconnected from Flix')) flix.on('print', lambda text: print(f'Flix says: {text}')) ``` +Unsubscribe from events using `off` method: + +```python +flix.off('print') # unsubscribe from print events +flix.off(callback) # unsubscribe specific callback +``` + You can also wait for specific events using `wait` method. This method returns the data associated with the event: ```python diff --git a/tools/pyflix/flix.py b/tools/pyflix/flix.py index 472a9b1..6b9bcd6 100644 --- a/tools/pyflix/flix.py +++ b/tools/pyflix/flix.py @@ -87,10 +87,15 @@ class Flix: self._event_listeners[event] = [] self._event_listeners[event].append(callback) - def off(self, callback: Callable): - for event in self._event_listeners: - if callback in self._event_listeners[event]: - self._event_listeners[event].remove(callback) + def off(self, event_or_callback: Union[str, Callable]): + if isinstance(event_or_callback, str): + event = event_or_callback.lower() + if event in self._event_listeners: + del self._event_listeners[event] + else: + for event in self._event_listeners: + if event_or_callback in self._event_listeners[event]: + self._event_listeners[event].remove(event_or_callback) def _trigger(self, event: str, *args): event = event.lower()