|
1 | 1 | """Execution and managing kernels.""" |
2 | 2 |
|
3 | 3 | import os |
| 4 | +import warnings |
4 | 5 | from pathlib import Path |
5 | 6 | from logging import Logger |
6 | 7 |
|
|
19 | 20 | else: |
20 | 21 | from nbclient.client import execute as executenb |
21 | 22 |
|
| 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 | + |
22 | 39 | import nbformat |
23 | 40 |
|
24 | 41 | import jupyter_sphinx as js |
|
41 | 58 | ) |
42 | 59 |
|
43 | 60 |
|
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 | | - |
58 | 61 | class JupyterKernel(Directive): |
59 | 62 | """Specify a new Jupyter Kernel. |
60 | 63 |
|
@@ -278,10 +281,13 @@ def write_notebook_output(notebook, output_dir, notebook_name, location=None): |
278 | 281 | os.path.join(output_dir, notebook_name + ".ipynb"), |
279 | 282 | ) |
280 | 283 |
|
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) |
285 | 291 |
|
286 | 292 | notebook_file = notebook_name + resources['output_extension'] |
287 | 293 | output_dir = Path(output_dir) |
|
0 commit comments