Main classes and functions¶
minevent ¶
Contain the main features of the minevent
package.
minevent.BaseCondition ¶
Bases: ABC
Define the base class to implement a condition for
ConditionalEventHandler
.
A child class has to implement the following methods:
- ``evaluate``
- ``equal``
Example usage:
>>> from minevent import PeriodicCondition
>>> condition = PeriodicCondition(freq=3)
>>> condition.evaluate()
True
>>> condition.evaluate()
False
>>> condition.evaluate()
False
>>> condition.evaluate()
True
>>> condition.evaluate()
False
>>> condition.evaluate()
False
>>> condition.evaluate()
True
minevent.BaseCondition.equal
abstractmethod
¶
equal(other: Any) -> bool
Compare two conditions.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
other
|
Any
|
Specifies the other object to compare with. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from minevent import PeriodicCondition
>>> condition = PeriodicCondition(freq=3)
>>> condition.equal(PeriodicCondition(freq=3))
True
>>> condition.equal(PeriodicCondition(freq=2))
False
minevent.BaseCondition.evaluate
abstractmethod
¶
evaluate() -> bool
Evaluate the condition given the current state.
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from minevent import EventHandler
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = EventHandler(hello_handler)
>>> handler.handle()
Hello!
minevent.BaseEventHandler ¶
Bases: ABC
Define the base class to implement an event handler.
A child class has to implement the following methods:
- ``handle``
- ``equal``
Example usage:
>>> from minevent import EventHandler
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = EventHandler(hello_handler)
>>> handler
EventHandler(
(handler): <function hello_handler at 0x...>
(handler_args): ()
(handler_kwargs): {}
)
>>> handler.handle()
Hello!
minevent.BaseEventHandler.equal
abstractmethod
¶
equal(other: Any) -> bool
Compare two event handlers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
other
|
Any
|
Specifies the other object to compare with. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from minevent import EventHandler
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = EventHandler(hello_handler)
>>> handler.equal(EventHandler(hello_handler))
True
>>> handler.equal(EventHandler(print, handler_args=["Hello!"]))
False
minevent.BaseEventHandler.handle
abstractmethod
¶
handle() -> None
Handle the event.
Example usage:
>>> from minevent import EventHandler
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = EventHandler(hello_handler)
>>> handler.handle()
Hello!
minevent.BaseEventHandlerWithArguments ¶
Bases: BaseEventHandler
Define a base class to implement an event handler with positional and/or keyword arguments.
A child class has to implement the equal
method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
handler
|
Callable
|
Specifies the handler. |
required |
handler_args
|
Sequence | None
|
Specifies the positional arguments of the handler. |
None
|
handler_kwargs
|
dict | None
|
Specifies the arbitrary keyword arguments of the handler. |
None
|
Example usage:
>>> from minevent import EventHandler
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = EventHandler(hello_handler)
>>> handler
EventHandler(
(handler): <function hello_handler at 0x...>
(handler_args): ()
(handler_kwargs): {}
)
>>> handler.handle()
Hello!
>>> handler = EventHandler(print, handler_args=["Hello!"])
>>> handler.handle()
Hello!
minevent.ConditionalEventHandler ¶
Bases: BaseEventHandlerWithArguments
Implement a conditional event handler.
The handler is executed only if the condition is True
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
handler
|
Callable
|
Specifies the handler. |
required |
condition
|
BaseCondition
|
Specifies the condition for this event handler. The condition should be callable without arguments. |
required |
handler_args
|
Sequence | None
|
Specifies the positional arguments of the handler. |
None
|
handler_kwargs
|
dict | None
|
Specifies the arbitrary keyword arguments of the handler. |
None
|
Example usage:
>>> from minevent import ConditionalEventHandler, PeriodicCondition
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = ConditionalEventHandler(hello_handler, PeriodicCondition(freq=3))
>>> handler
ConditionalEventHandler(
(handler): <function hello_handler at 0x...>
(handler_args): ()
(handler_kwargs): {}
(condition): PeriodicCondition(freq=3, step=0)
)
>>> handler.handle()
Hello!
>>> handler.handle()
>>> handler.handle()
>>> handler.handle()
Hello!
minevent.EventHandler ¶
Bases: BaseEventHandlerWithArguments
Implement a simple event handler.
Example usage:
>>> from minevent import EventHandler
>>> def hello_handler() -> None:
... print("Hello!")
...
>>> handler = EventHandler(hello_handler)
>>> handler
EventHandler(
(handler): <function hello_handler at 0x...>
(handler_args): ()
(handler_kwargs): {}
)
>>> handler.handle()
Hello!
minevent.EventManager ¶
Implement an event manager.
This event manager allows adding event handlers and firing events. An event is represented by a case-sensitive string.
Example usage:
>>> from minevent import EventHandler, EventManager
>>> def hello_handler():
... print("Hello!")
...
>>> manager = EventManager()
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
>>> manager.trigger_event("my_event")
Hello!
minevent.EventManager.last_triggered_event
property
¶
last_triggered_event: str | None
Get the last event name that was triggered.
Returns:
Type | Description |
---|---|
str | None
|
The last event name that was fired of |
Example usage:
>>> from minevent import EventHandler, EventManager
>>> manager = EventManager()
>>> def hello_handler():
... print("Hello!")
...
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
>>> manager.trigger_event("my_event")
Hello!
>>> manager.last_triggered_event
minevent.EventManager.add_event_handler ¶
add_event_handler(
event: str, event_handler: BaseEventHandler
) -> None
Add an event handler to an event.
The event handler will be called everytime the event happens.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event
|
str
|
Specifies the event to attach the event handler. |
required |
event_handler
|
BaseEventHandler
|
Specifies the event handler to attach to the event. |
required |
Example usage:
>>> from minevent import EventManager, EventHandler
>>> def hello_handler():
... print("Hello!")
...
>>> manager = EventManager()
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
minevent.EventManager.has_event_handler ¶
has_event_handler(
event_handler: BaseEventHandler,
event: str | None = None,
) -> bool
Indicate if a handler is registered in the event manager.
Note that this method relies on the equal
method of the
input event handler to compare event handlers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event_handler
|
BaseEventHandler
|
Specifies the event handler to check. |
required |
event
|
str | None
|
Specifies an event to check. If the value is
|
None
|
Example usage:
>>> from minevent import EventHandler, EventManager
>>> def hello_handler():
... print("Hello!")
...
>>> manager = EventManager()
>>> # Check if `hello_handler` is registered in the event manager
>>> manager.has_event_handler(EventHandler(hello_handler))
False
>>> # Check if `hello_handler` is registered in the event manager for 'my_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_event")
False
>>> # Add an event handler
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
>>> # Check if `hello_handler` is registered in the event manager
>>> manager.has_event_handler(EventHandler(hello_handler))
True
>>> # Check if `hello_handler` is registered in the event manager for 'my_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_event")
True
>>> # Check if `hello_handler` is registered in the event manager for 'my_other_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_other_event")
False
minevent.EventManager.remove_event_handler ¶
remove_event_handler(
event: str, event_handler: BaseEventHandler
) -> None
Remove an event handler of a given event.
Note that if the same event handler was added multiple times
the event, all the duplicated handlers are removed. This
method relies on the equal
method of the input event
handler to compare event handlers.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event
|
str
|
Specifies the event handler is attached to. |
required |
event_handler
|
BaseEventHandler
|
Specifies the event handler to remove. |
required |
Raises:
Type | Description |
---|---|
ValueError
|
if the event does not exist or if the handler is not attached to the event. |
Example usage:
>>> from minevent import EventHandler, EventManager
>>> manager = EventManager()
>>> def hello_handler():
... print("Hello!")
...
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
>>> # Check if `hello_handler` is registered in the event manager for 'my_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_event")
True
>>> # Remove the event handler of the engine
>>> manager.remove_event_handler("my_event", EventHandler(hello_handler))
>>> # Check if `hello_handler` is registered in the event manager for 'my_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_event")
False
minevent.EventManager.reset ¶
reset() -> None
Reset the event manager.
This method removes all the event handlers from the event manager.
Example usage:
>>> # Create an event manager
>>> from minevent import EventManager
>>> manager = EventManager()
>>> # Add an event handler to the engine
>>> def hello_handler():
... print("Hello!")
...
>>> from minevent import EventHandler
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
>>> # Check if `hello_handler` is registered in the event manager for 'my_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_event")
True
>>> manager.trigger_event("my_event")
>>> manager.last_triggered_event
my_event
>>> # Reset the event manager
>>> manager.reset()
>>> # Check if `hello_handler` is registered in the event manager for 'my_event' event
>>> manager.has_event_handler(EventHandler(hello_handler), "my_event")
False
>>> manager.last_triggered_event
None
minevent.EventManager.trigger_event ¶
trigger_event(event: str) -> None
Trigger the handler(s) for the given event.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
event
|
str
|
Specifies the event to fire. |
required |
Example usage:
>>> from minevent import EventHandler, EventManager
>>> manager = EventManager()
>>> manager.trigger_event("my_event") # do nothing because there is no event handler
>>> def hello_handler():
... print("Hello!")
...
>>> manager.add_event_handler("my_event", EventHandler(hello_handler))
>>> manager.trigger_event("my_event")
Hello!
minevent.PeriodicCondition ¶
Bases: BaseCondition
Implement a periodic condition.
This condition is true every freq
events.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
freq
|
int
|
Specifies the frequency. |
required |
Example usage:
>>> from minevent import PeriodicCondition
>>> condition = PeriodicCondition(freq=3)
>>> condition.evaluate()
True
>>> condition.evaluate()
False
>>> condition.evaluate()
False
>>> condition.evaluate()
True
>>> condition.evaluate()
False
>>> condition.evaluate()
False
>>> condition.evaluate()
True