Skip to content

Commit cd3273d

Browse files
authored
Deprecated and replaced Events.default_event_filter with None (#2644)
* Deprecated and replaced Events.default_event_filter with None * Added more tests
1 parent ed13aa9 commit cd3273d

File tree

4 files changed

+45
-49
lines changed

4 files changed

+45
-49
lines changed

ignite/contrib/handlers/tqdm_logger.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ def attach( # type: ignore[override]
206206
raise ValueError(f"Logging event {event_name.name} is not in allowed events for this engine")
207207

208208
if isinstance(closing_event_name, CallableEventWithFilter):
209-
if closing_event_name.filter != CallableEventWithFilter.default_event_filter:
209+
if closing_event_name.filter is not None:
210210
raise ValueError("Closing Event should not be a filtered event")
211211

212212
if not self._compare_lt(event_name, closing_event_name):

ignite/engine/engine.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -292,10 +292,7 @@ def execute_something():
292292
for e in event_name:
293293
self.add_event_handler(e, handler, *args, **kwargs)
294294
return RemovableEventHandle(event_name, handler, self)
295-
if (
296-
isinstance(event_name, CallableEventWithFilter)
297-
and event_name.filter != CallableEventWithFilter.default_event_filter
298-
):
295+
if isinstance(event_name, CallableEventWithFilter) and event_name.filter is not None:
299296
event_filter = event_name.filter
300297
handler = self._handler_wrapper(handler, event_name, event_filter)
301298

@@ -312,16 +309,6 @@ def execute_something():
312309

313310
return RemovableEventHandle(event_name, handler, self)
314311

315-
@staticmethod
316-
def _assert_non_filtered_event(event_name: Any) -> None:
317-
if (
318-
isinstance(event_name, CallableEventWithFilter)
319-
and event_name.filter != CallableEventWithFilter.default_event_filter
320-
):
321-
raise TypeError(
322-
"Argument event_name should not be a filtered event, " "please use event without any event filtering"
323-
)
324-
325312
def has_event_handler(self, handler: Callable, event_name: Optional[Any] = None) -> bool:
326313
"""Check if the specified event has the specified handler.
327314

ignite/engine/events.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import numbers
2+
import warnings
23
import weakref
34
from enum import Enum
45
from types import DynamicClassAttribute
@@ -27,8 +28,6 @@ class CallableEventWithFilter:
2728
"""
2829

2930
def __init__(self, value: str, event_filter: Optional[Callable] = None, name: Optional[str] = None) -> None:
30-
if event_filter is None:
31-
event_filter = CallableEventWithFilter.default_event_filter
3231
self.filter = event_filter
3332

3433
if not hasattr(self, "_value_"):
@@ -117,11 +116,15 @@ def wrapper(engine: "Engine", event: int) -> bool:
117116

118117
@staticmethod
119118
def default_event_filter(engine: "Engine", event: int) -> bool:
120-
"""Default event filter."""
119+
"""Default event filter. This method is is deprecated and will be removed. Please, use None instead"""
120+
warnings.warn("Events.default_event_filter is deprecated and will be removed. Please, use None instead")
121121
return True
122122

123-
def __str__(self) -> str:
124-
return "<event=%s, filter=%r>" % (self.name, self.filter)
123+
def __repr__(self) -> str:
124+
out = f"Events.{self.name}"
125+
if self.filter is not None:
126+
out += f"(filter={self.filter})"
127+
return out
125128

126129
def __eq__(self, other: Any) -> bool:
127130
if isinstance(other, CallableEventWithFilter):

tests/ignite/engine/test_custom_events.py

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -148,46 +148,52 @@ def test_callable_events_with_wrong_inputs():
148148
with pytest.raises(ValueError, match=r"but will be called with"):
149149
Events.ITERATION_STARTED(event_filter=lambda x: x)
150150

151-
152-
def test_callable_events():
153-
154-
assert isinstance(Events.ITERATION_STARTED.value, str)
155-
156-
def foo(engine, event):
151+
with pytest.warns(UserWarning, match=r"default_event_filter is deprecated and will be removed"):
152+
Events.default_event_filter(None, None)
153+
154+
155+
@pytest.mark.parametrize(
156+
"event",
157+
[
158+
Events.ITERATION_STARTED,
159+
Events.ITERATION_COMPLETED,
160+
Events.EPOCH_STARTED,
161+
Events.EPOCH_COMPLETED,
162+
Events.GET_BATCH_STARTED,
163+
Events.GET_BATCH_COMPLETED,
164+
Events.STARTED,
165+
Events.COMPLETED,
166+
],
167+
)
168+
def test_callable_events(event):
169+
170+
assert isinstance(event.value, str)
171+
172+
def foo(engine, _):
157173
return True
158174

159-
ret = Events.ITERATION_STARTED(event_filter=foo)
175+
ret = event(event_filter=foo)
160176
assert isinstance(ret, CallableEventWithFilter)
161-
assert ret == Events.ITERATION_STARTED
177+
assert ret == event
162178
assert ret.filter == foo
163-
assert isinstance(Events.ITERATION_STARTED.value, str)
164-
165-
# assert ret in Events
166-
assert Events.ITERATION_STARTED.name in f"{ret}"
167-
# assert ret in State.event_to_attr
179+
assert event.name in f"{ret}"
168180

169-
ret = Events.ITERATION_STARTED(every=10)
181+
ret = event(every=10)
170182
assert isinstance(ret, CallableEventWithFilter)
171-
assert ret == Events.ITERATION_STARTED
183+
assert ret == event
172184
assert ret.filter is not None
185+
assert event.name in f"{ret}"
173186

174-
# assert ret in Events
175-
assert Events.ITERATION_STARTED.name in f"{ret}"
176-
# assert ret in State.event_to_attr
177-
178-
ret = Events.ITERATION_STARTED(once=10)
187+
ret = event(once=10)
179188
assert isinstance(ret, CallableEventWithFilter)
180-
assert ret == Events.ITERATION_STARTED
189+
assert ret == event
181190
assert ret.filter is not None
191+
assert event.name in f"{ret}"
182192

183-
# assert ret in Events
184-
assert Events.ITERATION_STARTED.name in f"{ret}"
185-
# assert ret in State.event_to_attr
186-
187-
def _attach(e1, e2):
188-
assert id(e1) != id(e2)
189-
190-
_attach(Events.ITERATION_STARTED(every=10), Events.ITERATION_COMPLETED(every=10))
193+
ret = event
194+
assert isinstance(ret, CallableEventWithFilter)
195+
assert ret.filter is None
196+
assert event.name in f"{ret}"
191197

192198

193199
def test_callable_events_every_eq_one():

0 commit comments

Comments
 (0)