Skip to content

Commit

Permalink
docs: python docstring explaining functions
Browse files Browse the repository at this point in the history
  • Loading branch information
vinyguedess committed May 9, 2020
1 parent 8628ec7 commit 0ed968a
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
citest:
coverage run -m unittest discover
coverage xml

clear:
rm -rf build coverage dist onany.egg-info .coverage

deploy:
python setup.py sdist bdist_wheel
Expand Down
66 changes: 66 additions & 0 deletions onany/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,30 @@


def clear_listeners():
"""Clear listeners registered"""

EventManager.clear()


def dispatch(event: str, *args, **kwargs) -> None:
"""Dispatch an event to registered listeners.
:param event: Event to be triggered
:param *args: Optional args to be redirect to listeners
:param **kwargs: Optional keyed args to be redirect to listeners
"""

return EventManager.emit(event, *args, **kwargs)


def disthread(event: str, *args, **kwargs) -> Thread:
"""Through a thread dispatch an event to registered listeners.
:param event: Event to be triggered
:param *args: Optional args to be redirect to listeners
:param **kwargs: Optional keyed args to be redirect to listeners
"""

thread: Thread = Thread(
target=EventManager.emit,
args=(event, *args,),
Expand All @@ -23,6 +39,56 @@ def disthread(event: str, *args, **kwargs) -> Thread:


def listener(event: str, callback: Union[callable, Dict[str, Any]] = None) -> callable:
"""Register a listener to be triggered by defined event on the future.
There're two different types of listeners:
1. Callable: The common one, listener is defined as a callable
and can be triggered whenever desired.
2. Hook: Listener is defined as a dictionary with rules indicating
how an API andpoint can be called.
Callable:
Decorator:
>>> from onany import dispatch, listener
@listener("event.name")
def on_event():
print("Do something")
>>> dispatch("event.name")
Register:
>>> from onany import dispatch, listener
def on_event():
print("Do something")
>>> listener("event.name", on_event)
>>> dispatch("event.name")
Hook:
>>> from onany import dispatch, listener
def api_callback_if_i_need_to_know_response(response):
if response.status_code !== 200:
print("some thing happen'd")
>>> listener("event.name", {
"route": "https://my.api.io/hook",
"callback": api_callback_if_i_need_to_know_response
})
>>> data = {
"optional": "hook",
"json": "payload"
}
>>> dispatch("event.name", data=data)
:param event: Event to be listened
:param callback: (Optional) can be a listener or rules to a hook dispatch
"""

if callable(callback):
return EventManager.listen(event, callback)

Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
with open(os.path.join("requirements.txt")) as file:
requirements = file.read().split("\n")


setup(
name="onany",
packages=["onany"],
Expand Down

0 comments on commit 0ed968a

Please sign in to comment.