Skip to content

Commit 2de2c1a

Browse files
committed
avoid wrapping logger adapter once traitlets support it
1 parent bdafcd6 commit 2de2c1a

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

jupyter_sphinx/execute.py

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Execution and managing kernels."""
22

33
import os
4+
import warnings
45
from pathlib import Path
56
from logging import Logger
67

@@ -19,6 +20,22 @@
1920
else:
2021
from nbclient.client import execute as executenb
2122

23+
import traitlets
24+
# Workaround of https://github.com/ipython/traitlets/issues/606
25+
if traitlets.version_info < (5, 1):
26+
class LoggerAdapterWrapper(Logger):
27+
"""Wrap a logger adapter, while pretending to be a logger."""
28+
def __init__(self, wrapped):
29+
self._wrapped = wrapped
30+
31+
def __getattribute__(self, attr):
32+
if attr == "_wrapped":
33+
return object.__getattribute__(self, attr)
34+
return self._wrapped.__getattribute__(attr)
35+
else:
36+
def LoggerAdapterWrapper(logger_adapter):
37+
return logger_adapter
38+
2239
import nbformat
2340

2441
import jupyter_sphinx as js
@@ -41,20 +58,6 @@
4158
)
4259

4360

44-
class LoggerAdapterWrapper(Logger):
45-
"""Wrap a logger adapter, while pretending to be a logger.
46-
47-
Workaround of https://github.com/ipython/traitlets/issues/606
48-
"""
49-
def __init__(self, wrapped):
50-
self._wrapped = wrapped
51-
52-
def __getattribute__(self, attr):
53-
if attr == "_wrapped":
54-
return object.__getattribute__(self, attr)
55-
return self._wrapped.__getattribute__(attr)
56-
57-
5861
class JupyterKernel(Directive):
5962
"""Specify a new Jupyter Kernel.
6063
@@ -278,10 +281,13 @@ def write_notebook_output(notebook, output_dir, notebook_name, location=None):
278281
os.path.join(output_dir, notebook_name + ".ipynb"),
279282
)
280283

281-
# Write a script too. Due to https://github.com/ipython/traitlets/issues/606
282-
# we're using a wrapper to make a LoggerAdapter look like a wrapper.
283-
exporter = nbconvert.exporters.ScriptExporter(log=LoggerAdapterWrapper(js.logger))
284-
contents, resources = exporter.from_notebook_node(notebook)
284+
exporter = nbconvert.exporters.ScriptExporter(
285+
log=LoggerAdapterWrapper(js.logger)
286+
)
287+
with warnings.catch_warnings():
288+
# See https://github.com/jupyter/nbconvert/issues/1388
289+
warnings.simplefilter('ignore', DeprecationWarning)
290+
contents, resources = exporter.from_notebook_node(notebook)
285291

286292
notebook_file = notebook_name + resources['output_extension']
287293
output_dir = Path(output_dir)

0 commit comments

Comments
 (0)