##// END OF EJS Templates
fix(jupyter): fixing rendering of legacy jupyter notebooks. Fixes|References: RCCE-10
ilin.s -
r5249:3bbf2d7d default
parent child Browse files
Show More
@@ -475,7 +475,8 b' class MarkupRenderer(object):'
475
475
476 def as_html(notebook):
476 def as_html(notebook):
477 conf = config.Config()
477 conf = config.Config()
478 conf.CustomHTMLExporter.preprocessors = [Sandbox]
478 conf.CustomHTMLExporter.default_preprocessors = [Sandbox]
479 conf.Sandbox.enabled = True
479 html_exporter = CustomHTMLExporter(config=conf)
480 html_exporter = CustomHTMLExporter(config=conf)
480
481
481 (body, resources) = html_exporter.from_notebook_node(notebook)
482 (body, resources) = html_exporter.from_notebook_node(notebook)
@@ -518,7 +519,8 b' class MarkupRenderer(object):'
518 body = '\n'.join([header, css, js, body])
519 body = '\n'.join([header, css, js, body])
519 return body, resources
520 return body, resources
520
521
521 notebook = nbformat.reads(source, as_version=nbformat.NO_CONVERT)
522 # TODO: In the event of a newer jupyter notebook version, consider increasing the as_version parameter
523 notebook = nbformat.reads(source, as_version=4)
522 (body, resources) = as_html(notebook)
524 (body, resources) = as_html(notebook)
523 return body
525 return body
524
526
@@ -683,3 +683,103 b' def test_relative_path(src_path, server_'
683 def test_relative_links(src_html, expected_html):
683 def test_relative_links(src_html, expected_html):
684 server_paths = {'raw': '/path/raw/file.md', 'standard': '/path/file.md'}
684 server_paths = {'raw': '/path/raw/file.md', 'standard': '/path/file.md'}
685 assert relative_links(src_html, server_paths=server_paths) == expected_html
685 assert relative_links(src_html, server_paths=server_paths) == expected_html
686
687
688 @pytest.mark.parametrize("notebook_source, expected_output", [
689 ("""
690 {
691 "nbformat": 3,
692 "nbformat_minor": 0,
693 "worksheets": [
694 {
695 "cells": [
696 {
697 "cell_type": "code",
698 "execution_count": 1,
699 "metadata": {},
700 "outputs": [
701 {
702 "name": "stdout",
703 "output_type": "stream",
704 "text": [
705 "Hello, World!\\n"
706 ]
707 }
708 ],
709 "input": "print('Hello, World!')"
710 }
711 ]
712 }
713 ],
714 "metadata": {
715 "kernelspec": {
716 "display_name": "Python 3",
717 "language": "python",
718 "name": "python3"
719 },
720 "language_info": {
721 "codemirror_mode": {
722 "name": "ipython",
723 "version": 3
724 },
725 "file_extension": ".py",
726 "mimetype": "text/x-python",
727 "name": "python",
728 "nbconvert_exporter": "python",
729 "pygments_lexer": "ipython3",
730 "version": "3.8.5"
731 }
732 }
733 }
734 """, "Hello, World!"),
735 ("""
736 {
737 "nbformat": 4,
738 "nbformat_minor": 1,
739 "cells": [
740 {
741 "cell_type": "code",
742 "execution_count": 1,
743 "metadata": {},
744 "outputs": [
745 {
746 "name": "stdout",
747 "output_type": "stream",
748 "text": [
749 "Hello, World!\\n"
750 ]
751 }
752 ],
753 "source": [
754 "print('Hello, World!')"
755 ]
756 }
757 ],
758 "metadata": {
759 "kernelspec": {
760 "display_name": "Python 3",
761 "language": "python",
762 "name": "python3"
763 },
764 "language_info": {
765 "codemirror_mode": {
766 "name": "ipython",
767 "version": 4
768 },
769 "file_extension": ".py",
770 "mimetype": "text/x-python",
771 "name": "python",
772 "nbconvert_exporter": "python",
773 "pygments_lexer": "ipython3",
774 "version": "3.9.1"
775 }
776 }
777 }
778 """, "Hello, World!")
779 ])
780 def test_jp_notebook_html_generation(notebook_source, expected_output):
781 import mock
782 with mock.patch('rhodecode.lib.helpers.asset'):
783 body = MarkupRenderer.jupyter(notebook_source)
784 assert "<!-- ## IPYTHON NOTEBOOK RENDERING ## -->" in body
785 assert expected_output in body
General Comments 0
You need to be logged in to leave comments. Login now