Skip to content

Commit 8caf979

Browse files
Add has_registered_events method to Engine class (#3449)
* Add has_registered_events method to Engine class * Add tests for has_registered_events method and updated indent issue * Fix code style formatting with pre-commit hooks --------- Co-authored-by: vfdev <[email protected]>
1 parent 670bbee commit 8caf979

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

ignite/engine/engine.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,17 @@ class TBPTT_Events(EventEnum):
249249
# we need to update state attributes associated with new custom events
250250
self.state._update_attrs()
251251

252+
def has_registered_events(self, event: Any) -> bool:
253+
"""Check whether engine has a registered event.
254+
255+
Args:
256+
event: Event to check for registration.
257+
258+
Returns:
259+
bool: True if the event is registered, False otherwise.
260+
"""
261+
return event in self._allowed_events
262+
252263
def _handler_wrapper(self, handler: Callable, event_name: Any, event_filter: Callable) -> Callable:
253264
# signature of the following wrapper will be inspected during registering to check if engine is necessary
254265
# we have to build a wrapper with relevant signature : solution is functools.wraps

tests/ignite/engine/test_custom_events.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,24 @@ def process_func(engine, batch):
4646
assert h.called
4747

4848

49+
def test_has_registered_events_custom():
50+
"""Test has_registered_events with custom events."""
51+
52+
class TestEvents(EventEnum):
53+
CUSTOM_EVENT = "custom_event"
54+
55+
engine = Engine(lambda e, b: None)
56+
57+
# Custom event not registered yet
58+
assert not engine.has_registered_events(TestEvents.CUSTOM_EVENT)
59+
60+
# Register custom event
61+
engine.register_events(TestEvents.CUSTOM_EVENT)
62+
63+
# Now should return True
64+
assert engine.has_registered_events(TestEvents.CUSTOM_EVENT)
65+
66+
4967
def test_custom_events_asserts():
5068
# Dummy engine
5169
engine = Engine(lambda engine, batch: 0)

tests/ignite/engine/test_engine.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,6 +1174,18 @@ def update_fn(engine, batch):
11741174

11751175
assert mem_consumption1 == mem_consumption2
11761176

1177+
def test_has_registered_events_builtin(self):
1178+
"""Test has_registered_events with built-in events."""
1179+
engine = Engine(lambda e, b: None)
1180+
1181+
# Built-in events should be registered by default
1182+
assert engine.has_registered_events(Events.STARTED)
1183+
assert engine.has_registered_events(Events.COMPLETED)
1184+
assert engine.has_registered_events(Events.ITERATION_COMPLETED)
1185+
1186+
# Non-existent event should return False
1187+
assert not engine.has_registered_events("non_existent_event")
1188+
11771189
def test_engine_no_data_asserts(self):
11781190
trainer = Engine(lambda e, b: None)
11791191

0 commit comments

Comments
 (0)