8
8
import logging
9
9
import warnings
10
10
from datetime import datetime
11
- from pathlib import PurePath
12
- from typing import Callable , Optional , Union
11
+ from typing import Any , Callable , Coroutine , Optional , Union
13
12
14
13
from jsonschema import ValidationError
15
14
from pythonjsonlogger import jsonlogger # type:ignore
16
15
from traitlets import Dict , Instance , Set , default
17
16
from traitlets .config import Config , LoggingConfigurable
18
17
18
+ from .schema import SchemaType
19
19
from .schema_registry import SchemaRegistry
20
20
from .traits import Handlers
21
21
from .validators import JUPYTER_EVENTS_CORE_VALIDATOR
@@ -131,7 +131,7 @@ def get_handlers():
131
131
eventlogger_cfg = Config ({"EventLogger" : my_cfg })
132
132
super ()._load_config (eventlogger_cfg , section_names = None , traits = None )
133
133
134
- def register_event_schema (self , schema : Union [ dict , str , PurePath ]) :
134
+ def register_event_schema (self , schema : SchemaType ) -> None :
135
135
"""Register this schema with the schema registry.
136
136
137
137
Get this registered schema using the EventLogger.schema.get() method.
@@ -143,7 +143,7 @@ def register_event_schema(self, schema: Union[dict, str, PurePath]):
143
143
self ._modified_listeners [key ] = set ()
144
144
self ._unmodified_listeners [key ] = set ()
145
145
146
- def register_handler (self , handler : logging .Handler ):
146
+ def register_handler (self , handler : logging .Handler ) -> None :
147
147
"""Register a new logging handler to the Event Logger.
148
148
149
149
All outgoing messages will be formatted as a JSON string.
@@ -164,7 +164,7 @@ def _skip_message(record, **kwargs):
164
164
if handler not in self .handlers :
165
165
self .handlers .append (handler )
166
166
167
- def remove_handler (self , handler : logging .Handler ):
167
+ def remove_handler (self , handler : logging .Handler ) -> None :
168
168
"""Remove a logging handler from the logger and list of handlers."""
169
169
self ._logger .removeHandler (handler )
170
170
if handler in self .handlers :
@@ -175,7 +175,7 @@ def add_modifier(
175
175
* ,
176
176
schema_id : Union [str , None ] = None ,
177
177
modifier : Callable [[str , dict ], dict ],
178
- ):
178
+ ) -> None :
179
179
"""Add a modifier (callable) to a registered event.
180
180
181
181
Parameters
@@ -249,8 +249,8 @@ def add_listener(
249
249
* ,
250
250
modified : bool = True ,
251
251
schema_id : Union [str , None ] = None ,
252
- listener : Callable [["EventLogger" , str , dict ], None ],
253
- ):
252
+ listener : Callable [["EventLogger" , str , dict ], Coroutine [ Any , Any , None ] ],
253
+ ) -> None :
254
254
"""Add a listener (callable) to a registered event.
255
255
256
256
Parameters
@@ -304,7 +304,7 @@ def remove_listener(
304
304
self ,
305
305
* ,
306
306
schema_id : Optional [str ] = None ,
307
- listener : Callable [["EventLogger" , str , dict ], None ],
307
+ listener : Callable [["EventLogger" , str , dict ], Coroutine [ Any , Any , None ] ],
308
308
) -> None :
309
309
"""Remove a listener from an event or all events.
310
310
@@ -327,7 +327,9 @@ def remove_listener(
327
327
self ._modified_listeners [schema_id ].discard (listener )
328
328
self ._unmodified_listeners [schema_id ].discard (listener )
329
329
330
- def emit (self , * , schema_id : str , data : dict , timestamp_override = None ):
330
+ def emit (
331
+ self , * , schema_id : str , data : dict , timestamp_override : Optional [datetime ] = None
332
+ ) -> Optional [dict ]:
331
333
"""
332
334
Record given event with schema has occurred.
333
335
@@ -351,7 +353,7 @@ def emit(self, *, schema_id: str, data: dict, timestamp_override=None):
351
353
and not self ._modified_listeners [schema_id ]
352
354
and not self ._unmodified_listeners [schema_id ]
353
355
):
354
- return
356
+ return None
355
357
356
358
# If the schema hasn't been registered, raise a warning to make sure
357
359
# this was intended.
@@ -362,7 +364,7 @@ def emit(self, *, schema_id: str, data: dict, timestamp_override=None):
362
364
"`register_event_schema` method." ,
363
365
SchemaNotRegistered ,
364
366
)
365
- return
367
+ return None
366
368
367
369
schema = self .schemas .get (schema_id )
368
370
@@ -400,7 +402,7 @@ def emit(self, *, schema_id: str, data: dict, timestamp_override=None):
400
402
401
403
# callback for removing from finished listeners
402
404
# from active listeners set.
403
- def _listener_task_done (task : asyncio .Task ):
405
+ def _listener_task_done (task : asyncio .Task ) -> None :
404
406
# If an exception happens, log it to the main
405
407
# applications logger
406
408
err = task .exception ()
@@ -429,7 +431,7 @@ def _listener_task_done(task: asyncio.Task):
429
431
self ._active_listeners .add (task )
430
432
431
433
# Remove task from active listeners once its finished.
432
- def _listener_task_done (task : asyncio .Task ):
434
+ def _listener_task_done (task : asyncio .Task ) -> None :
433
435
# If an exception happens, log it to the main
434
436
# applications logger
435
437
err = task .exception ()
0 commit comments