diff --git a/bug-string-reviewnb.ipynb b/bug-string-reviewnb.ipynb
new file mode 100644
index 000000000..9635e30f2
--- /dev/null
+++ b/bug-string-reviewnb.ipynb
@@ -0,0 +1,72 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " select name\n",
+ " from table\n",
+ " where app_id = 'test_id'\n",
+ " and event_time > 20200310\n",
+ " group by 1\n",
+ " \n",
+ "101\n"
+ ]
+ }
+ ],
+ "source": [
+ "import datetime\n",
+ "app_id = 'test_id'\n",
+ "sql = \"\"\"\n",
+ " select name\n",
+ " from table\n",
+ " where app_id = {app_id}\n",
+ " and event_time > {datetime.datetime.now().strftime('%Y%m%d')}\n",
+ " group by 1\n",
+ " \"\"\"\n",
+ " \n",
+ "print(sql)\n",
+ "\n",
+ "a = 100\n",
+ "a = a + 1\n",
+ "print(a)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# new code cell"
+ ]
+ }
+ ],
+ "metadata": {
+ "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.6.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/notebooks/01.03-Magic-Commands.ipynb b/notebooks/01.03-Magic-Commands.ipynb
index 4a47b373a..5e734b2a9 100644
--- a/notebooks/01.03-Magic-Commands.ipynb
+++ b/notebooks/01.03-Magic-Commands.ipynb
@@ -11,6 +11,17 @@
"*The text is released under the [CC-BY-NC-ND license](https://creativecommons.org/licenses/by-nc-nd/3.0/us/legalcode), and code is released under the [MIT license](https://opensource.org/licenses/MIT). If you find this content useful, please consider supporting the work by [buying the book](http://shop.oreilly.com/product/0636920034919.do)!*"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "New list items\n",
+ "\n",
+ "- The previous two sections showed how and explore Python efficiently and interactively. Here we'll begin discussing some\n",
+ "- versionChanged-The previous two sections added showed how IPython lets you use and explore Python efficiently and interactively. Here we'll begin discussing some\n",
+ "- newWord3The previous two sections showed how IModified lets you use and explore Python efficiently and interactively. Here we'll begin discussing some"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -225,9 +236,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.5.1"
+ "version": "3.6.8"
}
},
"nbformat": 4,
- "nbformat_minor": 0
+ "nbformat_minor": 1
}
diff --git a/notebooks/02.08-Sorting.ipynb b/notebooks/02.08-Sorting.ipynb
index fdb02d56c..52efb57e8 100644
--- a/notebooks/02.08-Sorting.ipynb
+++ b/notebooks/02.08-Sorting.ipynb
@@ -30,7 +30,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Up to this point we have been concerned mainly with tools to access and operate on array data with NumPy.\n",
+ "--Change--Up to this point we have been concerned mainly with tools to access and operate on array data with NumPy.\n",
"This section covers algorithms related to sorting values in NumPy arrays.\n",
"These algorithms are a favorite topic in introductory computer science courses: if you've ever taken one, you probably have had dreams (or, depending on your temperament, nightmares) about *insertion sorts*, *selection sorts*, *merge sorts*, *quick sorts*, *bubble sorts*, and many, many more.\n",
"All are means of accomplishing a similar task: sorting the values in a list or array.\n",
@@ -729,9 +729,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.4"
+ "version": "3.6.8"
}
},
"nbformat": 4,
- "nbformat_minor": 1
+ "nbformat_minor": 4
}
diff --git a/notebooks/Plotly-v2.ipynb b/notebooks/Plotly-v2.ipynb
new file mode 100644
index 000000000..06f8aa9a7
--- /dev/null
+++ b/notebooks/Plotly-v2.ipynb
@@ -0,0 +1,945 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "type": "bar",
+ "y": [
+ 2,
+ 3,
+ 1
+ ]
+ }
+ ],
+ "layout": {
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ }
+ }
+ },
+ "text/html": [
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import plotly.graph_objects as go\n",
+ "fig = go.Figure(data=go.Bar(y=[2, 3, 1]))\n",
+ "fig.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "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.6.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/notebooks/Plotly-v4.ipynb b/notebooks/Plotly-v4.ipynb
new file mode 100644
index 000000000..e072def88
--- /dev/null
+++ b/notebooks/Plotly-v4.ipynb
@@ -0,0 +1,1006 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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"
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import plotly.express as px\n",
+ "fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])\n",
+ "fig.show(renderer=\"png\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.plotly.v1+json": {
+ "config": {
+ "plotlyServerURL": "https://plot.ly"
+ },
+ "data": [
+ {
+ "hoverlabel": {
+ "namelength": 0
+ },
+ "hovertemplate": "x=%{x}
y=%{y}",
+ "legendgroup": "",
+ "marker": {
+ "color": "#636efa",
+ "symbol": "circle"
+ },
+ "mode": "markers",
+ "name": "",
+ "showlegend": false,
+ "type": "scatter",
+ "x": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4
+ ],
+ "xaxis": "x",
+ "y": [
+ 0,
+ 1,
+ 4,
+ 9,
+ 16
+ ],
+ "yaxis": "y"
+ }
+ ],
+ "layout": {
+ "legend": {
+ "tracegroupgap": 0
+ },
+ "margin": {
+ "t": 60
+ },
+ "template": {
+ "data": {
+ "bar": [
+ {
+ "error_x": {
+ "color": "#2a3f5f"
+ },
+ "error_y": {
+ "color": "#2a3f5f"
+ },
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ }
+ },
+ "type": "bar"
+ }
+ ],
+ "barpolar": [
+ {
+ "marker": {
+ "line": {
+ "color": "#E5ECF6",
+ "width": 0.5
+ }
+ },
+ "type": "barpolar"
+ }
+ ],
+ "carpet": [
+ {
+ "aaxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "baxis": {
+ "endlinecolor": "#2a3f5f",
+ "gridcolor": "white",
+ "linecolor": "white",
+ "minorgridcolor": "white",
+ "startlinecolor": "#2a3f5f"
+ },
+ "type": "carpet"
+ }
+ ],
+ "choropleth": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "choropleth"
+ }
+ ],
+ "contour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "contour"
+ }
+ ],
+ "contourcarpet": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "contourcarpet"
+ }
+ ],
+ "heatmap": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmap"
+ }
+ ],
+ "heatmapgl": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "heatmapgl"
+ }
+ ],
+ "histogram": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "histogram"
+ }
+ ],
+ "histogram2d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2d"
+ }
+ ],
+ "histogram2dcontour": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "histogram2dcontour"
+ }
+ ],
+ "mesh3d": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "type": "mesh3d"
+ }
+ ],
+ "parcoords": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "parcoords"
+ }
+ ],
+ "pie": [
+ {
+ "automargin": true,
+ "type": "pie"
+ }
+ ],
+ "scatter": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter"
+ }
+ ],
+ "scatter3d": [
+ {
+ "line": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatter3d"
+ }
+ ],
+ "scattercarpet": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattercarpet"
+ }
+ ],
+ "scattergeo": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergeo"
+ }
+ ],
+ "scattergl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattergl"
+ }
+ ],
+ "scattermapbox": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scattermapbox"
+ }
+ ],
+ "scatterpolar": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolar"
+ }
+ ],
+ "scatterpolargl": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterpolargl"
+ }
+ ],
+ "scatterternary": [
+ {
+ "marker": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "type": "scatterternary"
+ }
+ ],
+ "surface": [
+ {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ },
+ "colorscale": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "type": "surface"
+ }
+ ],
+ "table": [
+ {
+ "cells": {
+ "fill": {
+ "color": "#EBF0F8"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "header": {
+ "fill": {
+ "color": "#C8D4E3"
+ },
+ "line": {
+ "color": "white"
+ }
+ },
+ "type": "table"
+ }
+ ]
+ },
+ "layout": {
+ "annotationdefaults": {
+ "arrowcolor": "#2a3f5f",
+ "arrowhead": 0,
+ "arrowwidth": 1
+ },
+ "coloraxis": {
+ "colorbar": {
+ "outlinewidth": 0,
+ "ticks": ""
+ }
+ },
+ "colorscale": {
+ "diverging": [
+ [
+ 0,
+ "#8e0152"
+ ],
+ [
+ 0.1,
+ "#c51b7d"
+ ],
+ [
+ 0.2,
+ "#de77ae"
+ ],
+ [
+ 0.3,
+ "#f1b6da"
+ ],
+ [
+ 0.4,
+ "#fde0ef"
+ ],
+ [
+ 0.5,
+ "#f7f7f7"
+ ],
+ [
+ 0.6,
+ "#e6f5d0"
+ ],
+ [
+ 0.7,
+ "#b8e186"
+ ],
+ [
+ 0.8,
+ "#7fbc41"
+ ],
+ [
+ 0.9,
+ "#4d9221"
+ ],
+ [
+ 1,
+ "#276419"
+ ]
+ ],
+ "sequential": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ],
+ "sequentialminus": [
+ [
+ 0,
+ "#0d0887"
+ ],
+ [
+ 0.1111111111111111,
+ "#46039f"
+ ],
+ [
+ 0.2222222222222222,
+ "#7201a8"
+ ],
+ [
+ 0.3333333333333333,
+ "#9c179e"
+ ],
+ [
+ 0.4444444444444444,
+ "#bd3786"
+ ],
+ [
+ 0.5555555555555556,
+ "#d8576b"
+ ],
+ [
+ 0.6666666666666666,
+ "#ed7953"
+ ],
+ [
+ 0.7777777777777778,
+ "#fb9f3a"
+ ],
+ [
+ 0.8888888888888888,
+ "#fdca26"
+ ],
+ [
+ 1,
+ "#f0f921"
+ ]
+ ]
+ },
+ "colorway": [
+ "#636efa",
+ "#EF553B",
+ "#00cc96",
+ "#ab63fa",
+ "#FFA15A",
+ "#19d3f3",
+ "#FF6692",
+ "#B6E880",
+ "#FF97FF",
+ "#FECB52"
+ ],
+ "font": {
+ "color": "#2a3f5f"
+ },
+ "geo": {
+ "bgcolor": "white",
+ "lakecolor": "white",
+ "landcolor": "#E5ECF6",
+ "showlakes": true,
+ "showland": true,
+ "subunitcolor": "white"
+ },
+ "hoverlabel": {
+ "align": "left"
+ },
+ "hovermode": "closest",
+ "mapbox": {
+ "style": "light"
+ },
+ "paper_bgcolor": "white",
+ "plot_bgcolor": "#E5ECF6",
+ "polar": {
+ "angularaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "radialaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "scene": {
+ "xaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "yaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ },
+ "zaxis": {
+ "backgroundcolor": "#E5ECF6",
+ "gridcolor": "white",
+ "gridwidth": 2,
+ "linecolor": "white",
+ "showbackground": true,
+ "ticks": "",
+ "zerolinecolor": "white"
+ }
+ },
+ "shapedefaults": {
+ "line": {
+ "color": "#2a3f5f"
+ }
+ },
+ "ternary": {
+ "aaxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "baxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ },
+ "bgcolor": "#E5ECF6",
+ "caxis": {
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": ""
+ }
+ },
+ "title": {
+ "x": 0.05
+ },
+ "xaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ },
+ "yaxis": {
+ "automargin": true,
+ "gridcolor": "white",
+ "linecolor": "white",
+ "ticks": "",
+ "title": {
+ "standoff": 15
+ },
+ "zerolinecolor": "white",
+ "zerolinewidth": 2
+ }
+ }
+ },
+ "xaxis": {
+ "anchor": "y",
+ "domain": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "x"
+ }
+ },
+ "yaxis": {
+ "anchor": "x",
+ "domain": [
+ 0,
+ 1
+ ],
+ "title": {
+ "text": "y"
+ }
+ }
+ }
+ },
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
\n",
+ " \n",
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import plotly.express as px\n",
+ "fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])\n",
+ "fig.show()"
+ ]
+ }
+ ],
+ "metadata": {
+ "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.6.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/v2-bug-string-reviewnb.ipynb b/v2-bug-string-reviewnb.ipynb
new file mode 100644
index 000000000..0c5b1cb67
--- /dev/null
+++ b/v2-bug-string-reviewnb.ipynb
@@ -0,0 +1,69 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " select name\n",
+ " from table\n",
+ " where app_id = 'test_id'\n",
+ " and event_time > 20200310\n",
+ " group by 1\n",
+ " \n",
+ "101\n"
+ ]
+ }
+ ],
+ "source": [
+ "import datetime\n",
+ "app_id = 'test_id'\n",
+ "sql = f\"\"\"\n",
+ " select name\n",
+ " from table\n",
+ " where app_id = '{app_id}'\n",
+ " and event_time > {datetime.datetime.now().strftime('%Y%m%d')}\n",
+ " group by 1\n",
+ " \"\"\"\n",
+ " \n",
+ "print(sql)\n",
+ "a = 100\n",
+ "a = a + 1\n",
+ "print(a)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "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.6.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/v3-bug-string-reviewnb.ipynb b/v3-bug-string-reviewnb.ipynb
new file mode 100644
index 000000000..e520825c7
--- /dev/null
+++ b/v3-bug-string-reviewnb.ipynb
@@ -0,0 +1,72 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ " select name\n",
+ " from table\n",
+ " where app_id = 'test_id'\n",
+ " and event_time > 20200310\n",
+ " group by 1\n",
+ " \n",
+ "101\n"
+ ]
+ }
+ ],
+ "source": [
+ "import datetime\n",
+ "app_id = 'test_id'\n",
+ "sql = \"\"\"\n",
+ " select name\n",
+ " from table\n",
+ " where app_id = '{app_id}'\n",
+ " and event_time > {datetime.datetime.now().strftime('%Y%m%d')}\n",
+ " group by 1\n",
+ " \"\"\"\n",
+ " \n",
+ "print(sql)\n",
+ "a = 100\n",
+ "a = a + 1\n",
+ "print(a)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "u'abc' + foo\n",
+ "f'abc' + foo"
+ ]
+ }
+ ],
+ "metadata": {
+ "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.6.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}