Metadata-Version: 2.1
Name: fancy-eventbus
Version: 0.1.0a0
Summary: a event bus
Home-page: UNKNOWN
Author: su-rin
Author-email: susautw@gmail.com
License: MIT
Project-URL: Source Code, https://github.com/susautw/fancy-eventbus
Keywords: event
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: fancy-descriptor (>=1.2.0a0)

# fancy-event

# Usage

```python
import fancy.eventbus as fe


class MyEvent:
    value: int

    def __init__(self, value):
        self.value = value


class MyEvent2:
    pass


class Target:
    def __init__(self):
        fe.register(self)

    @fe.SubscribeEvent()
    def on_start(self, event: fe.StartEvent):
        print("start!")
        fe.post(MyEvent(1))

    @fe.SubscribeEvent()
    def my_event(self, event: MyEvent):
        print("my_event", event.value)
        fe.post(MyEvent2())
        fe.post(self)

    @fe.SubscribeEvent()
    def my_event2(self, event: MyEvent2):
        print("my_event2")
        raise RuntimeError("an error")

    @fe.SubscribeEvent(priority=fe.EventPriority.HIGHEST)  # execute before my_event2
    def self_as_event(self, event: "Target"):  # forwarding ref
        print("self_as_event", event is self)

    @fe.SubscribeEvent()
    def error_handler(self, e: RuntimeError):
        print("handle by runtime error", e)

    @fe.SubscribeEvent(priority=fe.EventPriority.LOW)  # method name should different
    def error_handler2(self, e: Exception):
        print("handle by exception", e)
        return False  # returned false will cancel the event

    @fe.SubscribeEvent(priority=fe.EventPriority.LOWEST)
    def error_handler3(self, e: BaseException):
        print("this should be canceled.", e)


loop = fe.EventLoop()
# registers
Target()

loop.start()

```


```output
start!
my_event 1
self_as_event True
my_event2
handle by runtime error an error
handle by exception an error
```

