{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# A Python kernel backed by Pyodide\n", "\n", "![](https://raw.githubusercontent.com/pyodide/pyodide/master/docs/_static/img/pyodide-logo.png)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "import pyodide_kernel\n", "pyodide_kernel.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Simple code execution" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "a = 3" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "a" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "b = 89\n", "\n", "def sq(x):\n", " return x * x\n", "\n", "sq(b)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "print" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Redirected streams" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "import sys\n", "\n", "print(\"Error !!\", file=sys.stderr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Error handling" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true, "trusted": true }, "outputs": [], "source": [ "\"Hello\"\n", "\n", "def dummy_function():\n", " import missing_module" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "dummy_function()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Code completion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### press `tab` to see what is available in `sys` module" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from sys import " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Code inspection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### using the question mark" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "?print" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### by pressing `shift+tab`" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "print(" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Input support" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "name = await input('Enter your name: ')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "'Hello, ' + name" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Rich representation" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import display, Markdown, HTML, JSON, Latex" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## HTML" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "print('Before display')\n", "\n", "s = '

HTML Title

'\n", "display(HTML(s))\n", "\n", "print('After display')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Markdown" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "Markdown('''\n", "# Title\n", "\n", "**in bold**\n", "\n", "~~Strikthrough~~\n", "''')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pandas DataFrame" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "from string import ascii_uppercase as letters\n", "from IPython.display import display\n", "\n", "df = pd.DataFrame(np.random.randint(0, 100, size=(100, len(letters))), columns=list(letters))\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Show the same DataFrame " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## IPython.display module" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import clear_output, display, update_display\n", "from asyncio import sleep" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Update display" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "class Square:\n", " color = 'PeachPuff'\n", " def _repr_html_(self):\n", " return '''\n", "
\n", "
''' % self.color\n", "square = Square()\n", "\n", "display(square, display_id='some-square')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "square.color = 'OliveDrab'\n", "update_display(square, display_id='some-square')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Clear output" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "print(\"hello\")\n", "await sleep(3)\n", "clear_output() # will flicker when replacing \"hello\" with \"goodbye\"\n", "print(\"goodbye\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "print(\"hello\")\n", "await sleep(3)\n", "clear_output(wait=True) # prevents flickering\n", "print(\"goodbye\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Display classes" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import HTML\n", "HTML('''\n", "
\n", "
''')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import Math\n", "Math(r'F(k) = \\int_{-\\infty}^{\\infty} f(x) e^{2\\pi i k} dx')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import Latex\n", "Latex(r\"\"\"\\begin{eqnarray}\n", "\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\\n", "\\nabla \\times \\vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\\n", "\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \n", "\\end{eqnarray}\"\"\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import ProgressBar\n", "\n", "for i in ProgressBar(10):\n", " await sleep(0.1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import JSON\n", "JSON(['foo', {'bar': ('baz', None, 1.0, 2)}], metadata={}, expanded=True, root='test')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from IPython.display import GeoJSON\n", "GeoJSON(\n", " data={\n", " \"type\": \"Feature\",\n", " \"geometry\": {\n", " \"type\": \"Point\",\n", " \"coordinates\": [11.8, -45.04]\n", " }\n", " }, url_template=\"http://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/{basemap_id}/{z}/{x}/{y}.png\",\n", " layer_options={\n", " \"basemap_id\": \"celestia_mars-shaded-16k_global\",\n", " \"attribution\" : \"Celestia/praesepe\",\n", " \"tms\": True,\n", " \"minZoom\" : 0,\n", " \"maxZoom\" : 5\n", " }\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Network requests and JSON" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "import json\n", "from js import fetch" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "res = await fetch('https://httpbin.org/get')\n", "text = await res.text()\n", "obj = json.loads(text) \n", "JSON(obj)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sympy" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "from sympy import Integral, sqrt, symbols, init_printing\n", "\n", "init_printing()\n", "\n", "x = symbols('x')\n", "\n", "Integral(sqrt(1 / x), x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Magics" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "import os\n", "os.listdir()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "%cd /home" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "%pwd" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "current_path = %pwd\n", "print(current_path)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "%%writefile test.txt\n", "\n", "This will create a new file. \n", "With the text that you see here." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "%history" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "import time" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": true }, "outputs": [], "source": [ "%%timeit \n", "\n", "time.sleep(0.1)" ] } ], "metadata": { "kernelspec": { "display_name": "Python (Pyodide)", "language": "python", "name": "python" }, "language_info": { "codemirror_mode": { "name": "python", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 4 }