|
39 | 39 | from .util import ensure_async, run_hook, run_sync
|
40 | 40 |
|
41 | 41 |
|
42 |
| -def timestamp(msg: t.Optional[Dict] = None) -> str: |
| 42 | +def timestamp(msg: t.Optional[t.Dict] = None) -> str: |
43 | 43 | if msg and 'header' in msg: # The test mocks don't provide a header, so tolerate that
|
44 | 44 | msg_header = msg['header']
|
45 | 45 | if 'date' in msg_header and isinstance(msg_header['date'], datetime.datetime):
|
@@ -288,7 +288,9 @@ class NotebookClient(LoggingConfigurable):
|
288 | 288 | """,
|
289 | 289 | ).tag(config=True)
|
290 | 290 |
|
291 |
| - kernel_manager_class: KernelManager = Type(config=True, help='The kernel manager class to use.') |
| 291 | + kernel_manager_class = Type( |
| 292 | + config=True, klass=KernelManager, help='The kernel manager class to use.' |
| 293 | + ) |
292 | 294 |
|
293 | 295 | on_notebook_start: t.Optional[t.Callable] = Callable(
|
294 | 296 | default_value=None,
|
@@ -390,7 +392,7 @@ def _kernel_manager_class_default(self) -> t.Type[KernelManager]:
|
390 | 392 |
|
391 | 393 | return AsyncKernelManager
|
392 | 394 |
|
393 |
| - _display_id_map: t.Dict[str, t.Dict] = Dict( |
| 395 | + _display_id_map = Dict( |
394 | 396 | help=dedent(
|
395 | 397 | """
|
396 | 398 | mapping of locations of outputs with a given display_id
|
@@ -423,7 +425,7 @@ def _kernel_manager_class_default(self) -> t.Type[KernelManager]:
|
423 | 425 | """,
|
424 | 426 | ).tag(config=True)
|
425 | 427 |
|
426 |
| - resources: t.Dict = Dict( |
| 428 | + resources = Dict( |
427 | 429 | help=dedent(
|
428 | 430 | """
|
429 | 431 | Additional resources used in the conversion process. For example,
|
@@ -557,11 +559,16 @@ async def async_start_new_kernel_client(self) -> KernelClient:
|
557 | 559 | Kernel client as created by the kernel manager ``km``.
|
558 | 560 | """
|
559 | 561 | assert self.km is not None
|
560 |
| - self.kc = self.km.client() |
561 |
| - await ensure_async(self.kc.start_channels()) # type:ignore[func-returns-value] |
562 | 562 | try:
|
563 |
| - await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout)) |
564 |
| - except RuntimeError: |
| 563 | + self.kc = self.km.client() |
| 564 | + await ensure_async(self.kc.start_channels()) # type:ignore[func-returns-value] |
| 565 | + await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout)) # type:ignore |
| 566 | + except Exception as e: |
| 567 | + self.log.error( |
| 568 | + "Error occurred while starting new kernel client for kernel {}: {}".format( |
| 569 | + self.km.kernel_id, str(e) |
| 570 | + ) |
| 571 | + ) |
565 | 572 | await self._async_cleanup_kernel()
|
566 | 573 | raise
|
567 | 574 | self.kc.allow_stdin = False
|
@@ -846,7 +853,7 @@ async def _async_handle_timeout(
|
846 | 853 |
|
847 | 854 | async def _async_check_alive(self) -> None:
|
848 | 855 | assert self.kc is not None
|
849 |
| - if not await ensure_async(self.kc.is_alive()): |
| 856 | + if not await ensure_async(self.kc.is_alive()): # type:ignore |
850 | 857 | self.log.error("Kernel died while waiting for execute reply.")
|
851 | 858 | raise DeadKernelError("Kernel died")
|
852 | 859 |
|
|
0 commit comments