|
4 | 4 | from logging import error |
5 | 5 | import io |
6 | 6 | import os |
| 7 | +import platform |
7 | 8 | from pprint import pformat |
8 | 9 | import sys |
9 | 10 | from warnings import warn |
@@ -603,10 +604,44 @@ def notebook(self, s): |
603 | 604 | ) |
604 | 605 | cells.append(cell) |
605 | 606 |
|
606 | | - nb = v4.new_notebook(cells=cells) |
| 607 | + kernel_language_info = self._get_kernel_language_info() |
| 608 | + |
| 609 | + nb = v4.new_notebook( |
| 610 | + cells=cells, |
| 611 | + metadata={ |
| 612 | + "kernelspec": { |
| 613 | + "display_name": "Python 3 (ipykernel)", |
| 614 | + "language": "python", |
| 615 | + "name": "python3", |
| 616 | + }, |
| 617 | + "language_info": kernel_language_info |
| 618 | + or { |
| 619 | + "codemirror_mode": { |
| 620 | + "name": "ipython", |
| 621 | + "version": sys.version_info[0], |
| 622 | + }, |
| 623 | + "file_extension": ".py", |
| 624 | + "mimetype": "text/x-python", |
| 625 | + "name": "python", |
| 626 | + "nbconvert_exporter": "python", |
| 627 | + "pygments_lexer": "ipython3", |
| 628 | + "version": platform.python_version(), |
| 629 | + }, |
| 630 | + }, |
| 631 | + ) |
607 | 632 | with io.open(outfname, "w", encoding="utf-8") as f: |
608 | 633 | write(nb, f, version=4) |
609 | 634 |
|
| 635 | + def _get_kernel_language_info(self) -> dict | None: |
| 636 | + """Get language info from kernel, useful when used in Jupyter Console where kernels exist.""" |
| 637 | + if not hasattr(self.shell, "kernel"): |
| 638 | + return |
| 639 | + if not hasattr(self.shell.kernel, "language_info"): |
| 640 | + return |
| 641 | + if not isinstance(self.shell.kernel.language_info, dict): |
| 642 | + return |
| 643 | + return self.shell.kernel.language_info |
| 644 | + |
610 | 645 | @magics_class |
611 | 646 | class AsyncMagics(BasicMagics): |
612 | 647 |
|
|
0 commit comments