mirror of
https://github.com/onyx-and-iris/vban-cmd-python.git
synced 2026-04-18 13:03:31 +00:00
major version bump due to dependency change.
now packaged with poetry. added to pypi. major version bump due to dependency change. interface reworked to match the remote-api interface. readme updated with changes to installation pre-commit hook temporarily removed
This commit is contained in:
39
vban_cmd/subject.py
Normal file
39
vban_cmd/subject.py
Normal file
@@ -0,0 +1,39 @@
|
||||
class Subject:
|
||||
"""Adds support for observers"""
|
||||
|
||||
def __init__(self):
|
||||
"""list of current observers"""
|
||||
|
||||
self._observers = list()
|
||||
|
||||
@property
|
||||
def observers(self) -> list:
|
||||
"""returns the current observers"""
|
||||
|
||||
return self._observers
|
||||
|
||||
def notify(self, modifier=None, data=None):
|
||||
"""run callbacks on update"""
|
||||
|
||||
[o.on_update(modifier, data) for o in self._observers]
|
||||
|
||||
def add(self, observer):
|
||||
"""adds an observer to _observers"""
|
||||
|
||||
if observer not in self._observers:
|
||||
self._observers.append(observer)
|
||||
else:
|
||||
print(f"Failed to add: {observer}")
|
||||
|
||||
def remove(self, observer):
|
||||
"""removes an observer from _observers"""
|
||||
|
||||
try:
|
||||
self._observers.remove(observer)
|
||||
except ValueError:
|
||||
print(f"Failed to remove: {observer}")
|
||||
|
||||
def clear(self):
|
||||
"""clears the _observers list"""
|
||||
|
||||
self._observers.clear()
|
||||
Reference in New Issue
Block a user