-
-
Notifications
You must be signed in to change notification settings - Fork 324
/
Copy path_event_proxy.py
38 lines (33 loc) · 1.3 KB
/
_event_proxy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from typing import Any, Dict, Sequence
from warnings import warn
def _wrap_in_warning_event_proxies(values: Sequence[Any]) -> Sequence[Any]:
return [_EventProxy(x) if isinstance(x, dict) else x for x in values]
class _EventProxy(Dict[Any, Any]):
def __getitem__(self, key: Any) -> Any: # pragma: no cover
try:
return super().__getitem__(key)
except KeyError:
target = self.get("target")
if isinstance(target, dict) and key in target:
warn(
f"The event key event[{key!r}] has been moved event['target'][{key!r}",
DeprecationWarning,
stacklevel=2,
)
return target[key]
else:
raise
def get(self, key: Any, default: Any = None) -> Any: # pragma: no cover
try:
return super().__getitem__(key)
except KeyError:
target = self.get("target")
if isinstance(target, dict) and key in target:
warn(
f"The event key event[{key!r}] has been moved event['target'][{key!r}",
DeprecationWarning,
stacklevel=2,
)
return target[key]
else:
return default