aboutsummaryrefslogtreecommitdiff
path: root/circuitpython/extmod/ulab/docs/ulab-convert.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'circuitpython/extmod/ulab/docs/ulab-convert.ipynb')
-rw-r--r--circuitpython/extmod/ulab/docs/ulab-convert.ipynb507
1 files changed, 507 insertions, 0 deletions
diff --git a/circuitpython/extmod/ulab/docs/ulab-convert.ipynb b/circuitpython/extmod/ulab/docs/ulab-convert.ipynb
new file mode 100644
index 0000000..70c6fa4
--- /dev/null
+++ b/circuitpython/extmod/ulab/docs/ulab-convert.ipynb
@@ -0,0 +1,507 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2020-05-01T09:27:13.438054Z",
+ "start_time": "2020-05-01T09:27:13.191491Z"
+ }
+ },
+ "source": [
+ "# conf.py"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2022-01-07T18:24:12.745063Z",
+ "start_time": "2022-01-07T18:24:12.733067Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Overwriting manual/source/conf.py\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%writefile manual/source/conf.py\n",
+ "# Configuration file for the Sphinx documentation builder.\n",
+ "#\n",
+ "# This file only contains a selection of the most common options. For a full\n",
+ "# list see the documentation:\n",
+ "# http://www.sphinx-doc.org/en/master/config\n",
+ "\n",
+ "# -- Path setup --------------------------------------------------------------\n",
+ "\n",
+ "# If extensions (or modules to document with autodoc) are in another directory,\n",
+ "# add these directories to sys.path here. If the directory is relative to the\n",
+ "# documentation root, use os.path.abspath to make it absolute, like shown here.\n",
+ "#\n",
+ "import os\n",
+ "# import sys\n",
+ "# sys.path.insert(0, os.path.abspath('.'))\n",
+ "\n",
+ "#import sphinx_rtd_theme\n",
+ "\n",
+ "from sphinx.transforms import SphinxTransform\n",
+ "from docutils import nodes\n",
+ "from sphinx import addnodes\n",
+ "\n",
+ "# -- Project information -----------------------------------------------------\n",
+ "\n",
+ "project = 'The ulab book'\n",
+ "copyright = '2019-2022, Zoltán Vörös and contributors'\n",
+ "author = 'Zoltán Vörös'\n",
+ "\n",
+ "# The full version, including alpha/beta/rc tags\n",
+ "release = '4.0.0'\n",
+ "\n",
+ "\n",
+ "# -- General configuration ---------------------------------------------------\n",
+ "\n",
+ "# Add any Sphinx extension module names here, as strings. They can be\n",
+ "# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n",
+ "# ones.\n",
+ "extensions = [\n",
+ "]\n",
+ "\n",
+ "# Add any paths that contain templates here, relative to this directory.\n",
+ "templates_path = ['_templates']\n",
+ "\n",
+ "# List of patterns, relative to source directory, that match files and\n",
+ "# directories to ignore when looking for source files.\n",
+ "# This pattern also affects html_static_path and html_extra_path.\n",
+ "exclude_patterns = []\n",
+ "\n",
+ "\n",
+ "# Add any paths that contain custom static files (such as style sheets) here,\n",
+ "# relative to this directory. They are copied after the builtin static files,\n",
+ "# so a file named \"default.css\" will overwrite the builtin \"default.css\".\n",
+ "html_static_path = ['_static']\n",
+ "\n",
+ "latex_maketitle = r'''\n",
+ "\\begin{titlepage}\n",
+ "\\begin{flushright}\n",
+ "\\Huge\\textbf{The $\\mu$lab book}\n",
+ "\\vskip 0.5em\n",
+ "\\LARGE\n",
+ "\\textbf{Release %s}\n",
+ "\\vskip 5em\n",
+ "\\huge\\textbf{Zoltán Vörös}\n",
+ "\\end{flushright}\n",
+ "\\begin{flushright}\n",
+ "\\LARGE\n",
+ "\\vskip 2em\n",
+ "with contributions by\n",
+ "\\vskip 2em\n",
+ "\\textbf{Roberto Colistete Jr.}\n",
+ "\\vskip 0.2em\n",
+ "\\textbf{Jeff Epler}\n",
+ "\\vskip 0.2em\n",
+ "\\textbf{Taku Fukada}\n",
+ "\\vskip 0.2em\n",
+ "\\textbf{Diego Elio Pettenò}\n",
+ "\\vskip 0.2em\n",
+ "\\textbf{Scott Shawcroft}\n",
+ "\\vskip 5em\n",
+ "\\today\n",
+ "\\end{flushright}\n",
+ "\\end{titlepage}\n",
+ "'''%release\n",
+ "\n",
+ "latex_elements = {\n",
+ " 'maketitle': latex_maketitle\n",
+ "}\n",
+ "\n",
+ "\n",
+ "master_doc = 'index'\n",
+ "\n",
+ "author=u'Zoltán Vörös'\n",
+ "copyright=author\n",
+ "language='en'\n",
+ "\n",
+ "latex_documents = [\n",
+ "(master_doc, 'the-ulab-book.tex', 'The $\\mu$lab book',\n",
+ "'Zoltán Vörös', 'manual'),\n",
+ "]\n",
+ "\n",
+ "# Read the docs theme\n",
+ "on_rtd = os.environ.get('READTHEDOCS', None) == 'True'\n",
+ "if not on_rtd:\n",
+ " try:\n",
+ " import sphinx_rtd_theme\n",
+ " html_theme = 'sphinx_rtd_theme'\n",
+ " html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), '.']\n",
+ " except ImportError:\n",
+ " html_theme = 'default'\n",
+ " html_theme_path = ['.']\n",
+ "else:\n",
+ " html_theme_path = ['.']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2021-05-09T06:06:28.491158Z",
+ "start_time": "2021-05-09T06:06:28.477127Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Overwriting manual/source/index.rst\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%writefile manual/source/index.rst\n",
+ "\n",
+ ".. ulab-manual documentation master file, created by\n",
+ " sphinx-quickstart on Sat Oct 19 12:48:00 2019.\n",
+ " You can adapt this file completely to your liking, but it should at least\n",
+ " contain the root `toctree` directive.\n",
+ "\n",
+ "Welcome to the ulab book!\n",
+ "=======================================\n",
+ "\n",
+ ".. toctree::\n",
+ " :maxdepth: 2\n",
+ " :caption: Introduction\n",
+ "\n",
+ " ulab-intro\n",
+ "\n",
+ ".. toctree::\n",
+ " :maxdepth: 2\n",
+ " :caption: User's guide:\n",
+ "\n",
+ " ulab-ndarray\n",
+ " numpy-functions\n",
+ " numpy-universal\n",
+ " numpy-fft\n",
+ " numpy-linalg\n",
+ " scipy-linalg\n",
+ " scipy-optimize\n",
+ " scipy-signal\n",
+ " scipy-special\n",
+ " ulab-utils\n",
+ " ulab-tricks\n",
+ " ulab-programming\n",
+ "\n",
+ "Indices and tables\n",
+ "==================\n",
+ "\n",
+ "* :ref:`genindex`\n",
+ "* :ref:`modindex`\n",
+ "* :ref:`search`"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Notebook conversion"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2022-01-07T18:24:27.671415Z",
+ "start_time": "2022-01-07T18:24:24.933205Z"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "import nbformat as nb\n",
+ "import nbformat.v4.nbbase as nb4\n",
+ "from nbconvert import RSTExporter\n",
+ "\n",
+ "from jinja2 import FileSystemLoader\n",
+ "rstexporter = RSTExporter(\n",
+ " extra_loaders=[FileSystemLoader('./templates')],\n",
+ " template_file = './templates/manual.tpl'\n",
+ ")\n",
+ "\n",
+ "def convert_notebook(fn):\n",
+ " source = nb.read(fn+'.ipynb', nb.NO_CONVERT)\n",
+ " notebook = nb4.new_notebook()\n",
+ " notebook.cells = []\n",
+ " append_cell = False\n",
+ " for cell in source['cells']:\n",
+ " if append_cell:\n",
+ " notebook.cells.append(cell)\n",
+ " else:\n",
+ " if cell.cell_type == 'markdown':\n",
+ " if cell.source == '__END_OF_DEFS__':\n",
+ " append_cell = True\n",
+ " \n",
+ " (rst, resources) = rstexporter.from_notebook_node(notebook)\n",
+ " with open('./manual/source/' + fn + '.rst', 'w') as fout:\n",
+ " # it's a bit odd, but even an emtpy notebook is converted into a \"None\" string\n",
+ " rst = rst.lstrip('None')\n",
+ " fout.write(rst)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2022-01-07T19:52:29.910335Z",
+ "start_time": "2022-01-07T19:52:28.432391Z"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "files = ['ulab-intro',\n",
+ " 'ulab-ndarray',\n",
+ " 'numpy-functions', \n",
+ " 'numpy-universal',\n",
+ " 'numpy-fft',\n",
+ " 'numpy-linalg',\n",
+ " 'scipy-linalg',\n",
+ " 'scipy-optimize',\n",
+ " 'scipy-signal',\n",
+ " 'scipy-special',\n",
+ " 'ulab-utils',\n",
+ " 'ulab-tricks',\n",
+ " 'ulab-programming']\n",
+ "\n",
+ "for file in files:\n",
+ " convert_notebook(file)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Template"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2020-10-30T19:04:50.295563Z",
+ "start_time": "2020-10-30T19:04:50.227535Z"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Overwriting ./templates/manual.tpl\n"
+ ]
+ }
+ ],
+ "source": [
+ "%%writefile ./templates/manual.tpl\n",
+ "\n",
+ "{%- extends 'display_priority.tpl' -%}\n",
+ "\n",
+ "\n",
+ "{% block in_prompt %}\n",
+ "{% endblock in_prompt %}\n",
+ "\n",
+ "{% block output_prompt %}\n",
+ "{% endblock output_prompt %}\n",
+ "\n",
+ "{% block input scoped%}\n",
+ "\n",
+ "{%- if cell.source.split('\\n')[0].startswith('%%micropython') -%}\n",
+ ".. code::\n",
+ " \n",
+ "{{ '\\n'.join(['# code to be run in micropython'] + cell.source.strip().split('\\n')[1:]) | indent}}\n",
+ "\n",
+ "{%- else -%}\n",
+ ".. code::\n",
+ "\n",
+ "{{ '\\n'.join(['# code to be run in CPython\\n'] + cell.source.strip().split('\\n')) | indent}}\n",
+ "{%- endif -%}\n",
+ "{% endblock input %}\n",
+ "\n",
+ "{% block error %}\n",
+ "::\n",
+ "\n",
+ "{{ super() }}\n",
+ "{% endblock error %}\n",
+ "\n",
+ "{% block traceback_line %}\n",
+ "{{ line | indent | strip_ansi }}\n",
+ "{% endblock traceback_line %}\n",
+ "\n",
+ "{% block execute_result %}\n",
+ "{% block data_priority scoped %}\n",
+ "{{ super() }}\n",
+ "{% endblock %}\n",
+ "{% endblock execute_result %}\n",
+ "\n",
+ "{% block stream %}\n",
+ ".. parsed-literal::\n",
+ "\n",
+ "{{ output.text | indent }}\n",
+ "{% endblock stream %}\n",
+ "\n",
+ "{% block data_svg %}\n",
+ ".. image:: {{ output.metadata.filenames['image/svg+xml'] | urlencode }}\n",
+ "{% endblock data_svg %}\n",
+ "\n",
+ "{% block data_png %}\n",
+ ".. image:: {{ output.metadata.filenames['image/png'] | urlencode }}\n",
+ "{%- set width=output | get_metadata('width', 'image/png') -%}\n",
+ "{%- if width is not none %}\n",
+ " :width: {{ width }}px\n",
+ "{%- endif %}\n",
+ "{%- set height=output | get_metadata('height', 'image/png') -%}\n",
+ "{%- if height is not none %}\n",
+ " :height: {{ height }}px\n",
+ "{%- endif %}\n",
+ "{% endblock data_png %}\n",
+ "\n",
+ "{% block data_jpg %}\n",
+ ".. image:: {{ output.metadata.filenames['image/jpeg'] | urlencode }}\n",
+ "{%- set width=output | get_metadata('width', 'image/jpeg') -%}\n",
+ "{%- if width is not none %}\n",
+ " :width: {{ width }}px\n",
+ "{%- endif %}\n",
+ "{%- set height=output | get_metadata('height', 'image/jpeg') -%}\n",
+ "{%- if height is not none %}\n",
+ " :height: {{ height }}px\n",
+ "{%- endif %}\n",
+ "{% endblock data_jpg %}\n",
+ "\n",
+ "{% block data_markdown %}\n",
+ "{{ output.data['text/markdown'] | convert_pandoc(\"markdown\", \"rst\") }}\n",
+ "{% endblock data_markdown %}\n",
+ "\n",
+ "{% block data_latex %}\n",
+ ".. math::\n",
+ "\n",
+ "{{ output.data['text/latex'] | strip_dollars | indent }}\n",
+ "{% endblock data_latex %}\n",
+ "\n",
+ "{% block data_text scoped %}\n",
+ ".. parsed-literal::\n",
+ "\n",
+ "{{ output.data['text/plain'] | indent }}\n",
+ "{% endblock data_text %}\n",
+ "\n",
+ "{% block data_html scoped %}\n",
+ ".. raw:: html\n",
+ "\n",
+ "{{ output.data['text/html'] | indent }}\n",
+ "{% endblock data_html %}\n",
+ "\n",
+ "{% block markdowncell scoped %}\n",
+ "{{ cell.source | convert_pandoc(\"markdown\", \"rst\") }}\n",
+ "{% endblock markdowncell %}\n",
+ "\n",
+ "{%- block rawcell scoped -%}\n",
+ "{%- if cell.metadata.get('raw_mimetype', '').lower() in resources.get('raw_mimetypes', ['']) %}\n",
+ "{{cell.source}}\n",
+ "{% endif -%}\n",
+ "{%- endblock rawcell -%}\n",
+ "\n",
+ "{% block headingcell scoped %}\n",
+ "{{ (\"#\" * cell.level + cell.source) | replace('\\n', ' ') | convert_pandoc(\"markdown\", \"rst\") }}\n",
+ "{% endblock headingcell %}\n",
+ "\n",
+ "{% block unknowncell scoped %}\n",
+ "unknown type {{cell.type}}\n",
+ "{% endblock unknowncell %}\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "interpreter": {
+ "hash": "ce9a02f9f7db620716422019cafa4bc1786ca85daa298b819f6da075e7993842"
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.5"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": true,
+ "sideBar": true,
+ "skip_h1_title": false,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {
+ "height": "calc(100% - 180px)",
+ "left": "10px",
+ "top": "150px",
+ "width": "382.797px"
+ },
+ "toc_section_display": true,
+ "toc_window_display": true
+ },
+ "varInspector": {
+ "cols": {
+ "lenName": 16,
+ "lenType": 16,
+ "lenVar": 40
+ },
+ "kernels_config": {
+ "python": {
+ "delete_cmd_postfix": "",
+ "delete_cmd_prefix": "del ",
+ "library": "var_list.py",
+ "varRefreshCmd": "print(var_dic_list())"
+ },
+ "r": {
+ "delete_cmd_postfix": ") ",
+ "delete_cmd_prefix": "rm(",
+ "library": "var_list.r",
+ "varRefreshCmd": "cat(var_dic_list()) "
+ }
+ },
+ "types_to_exclude": [
+ "module",
+ "function",
+ "builtin_function_or_method",
+ "instance",
+ "_Feature"
+ ],
+ "window_display": false
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}