mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-06 01:21:38 -05:00

EIN tries to build a cached of pdef's for all potential completion symbols. This is problematic because not all completion symbols have a pdef and can cause python to throw exceptions in entertaining and hard to catch ways. We take a liberal approach and ignore anything that throws an exception when we try to inspect it. Eldoc support should also be more robust because of these changes as well.
470 lines
75 KiB
Text
470 lines
75 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"execute-time": [
|
|
"2018-11-01T22:10:57.982938Z",
|
|
"2018-11-01T22:10:58.047627Z"
|
|
],
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import ein\n",
|
|
"import ast"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"None\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(ein.maybe_undefined_object('ast'))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"{\"type_name\": \"module\", \"base_class\": \"<class 'module'>\", \"string_form\": \"<module 'ast' from 'C:\\\\\\\\Users\\\\\\\\mille\\\\\\\\Miniconda3\\\\\\\\envs\\\\\\\\datascience\\\\\\\\lib\\\\\\\\ast.py'>\", \"namespace\": null, \"length\": null, \"file\": \"c:\\\\users\\\\mille\\\\miniconda3\\\\envs\\\\datascience\\\\lib\\\\ast.py\", \"definition\": null, \"docstring\": \"ast\\n~~~\\n\\nThe `ast` module helps Python applications to process trees of the Python\\nabstract syntax grammar. The abstract syntax itself might change with\\neach Python release; this module helps to find out programmatically what\\nthe current grammar looks like and allows modifications of it.\\n\\nAn abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as\\na flag to the `compile()` builtin function or by using the `parse()`\\nfunction from this module. The result will be a tree of objects whose\\nclasses all inherit from `ast.AST`.\\n\\nA modified abstract syntax tree can be compiled into a Python code object\\nusing the built-in `compile()` function.\\n\\nAdditionally various helper functions are provided that make working with\\nthe trees simpler. The main intention of the helper functions and this\\nmodule in general is to provide an easy to use interface for libraries\\nthat work tightly with the python syntax (template engines for example).\\n\\n\\n:copyright: Copyright 2008 by Armin Ronacher.\\n:license: Python License.\", \"source\": null, \"init_definition\": null, \"class_docstring\": null, \"init_docstring\": null, \"call_def\": null, \"call_docstring\": null, \"ismagic\": false, \"isalias\": false, \"isclass\": null, \"argspec\": null, \"found\": true, \"name\": \"\"}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"ein.print_object_info_for(ast)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"execute-time": [
|
|
"2018-11-01T21:49:11.179156Z",
|
|
"2018-11-01T21:49:11.210429Z"
|
|
],
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'3.6.6 | packaged by conda-forge | (default, Jul 26 2018, 11:48:23) [MSC v.1900 64 bit (AMD64)]'"
|
|
]
|
|
},
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"import sys\n",
|
|
"sys.version\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"execute-time": [
|
|
"2018-11-01T21:42:59.363763Z",
|
|
"2018-11-01T21:42:59.395043Z"
|
|
],
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"['C:\\\\Users\\\\mille\\\\Miniconda3\\\\envs\\\\datascience\\\\lib\\\\site-packages\\\\ipykernel_launcher.py',\n",
|
|
" '-f',\n",
|
|
" 'C:\\\\Users\\\\mille\\\\AppData\\\\Roaming\\\\jupyter\\\\runtime\\\\kernel-e3b8b8fe-d913-4e95-81b4-edcbcb21789c.json']"
|
|
]
|
|
},
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"np.zeros"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"execute-time": [
|
|
"2018-11-01T22:12:22.853327Z",
|
|
"2018-11-01T22:12:23.633093Z"
|
|
],
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x1c1cc0ecac8>]"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"%matplotlib inline\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import numpy as np\n",
|
|
"def plotnormal():\n",
|
|
" return plt.plot(np.random.randn(1000), np.random.randn(1000), 'o', alpha=0.3)\n",
|
|
"plotnormal()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.zeros_like()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"source": [
|
|
"Errors are shown in informative ways:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"ERROR: File `'non_existent_file.py'` not found.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%run non_existent_file"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"ename": "ZeroDivisionError",
|
|
"evalue": "division by zero",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m<ipython-input-4-dc39888fd1d2>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mz\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
|
"\u001b[1;31mZeroDivisionError\u001b[0m: division by zero"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"x = 1\n",
|
|
"y = 4\n",
|
|
"z = y/(1-x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"ip = get_ipython()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Installed hierarchymagic.py. To use it, type:\n",
|
|
" %load_ext hierarchymagic\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%install_ext https://raw.github.com/anaderi/ipython-hierarchymagic/master/hierarchymagic.py"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"%load_ext hierarchymagic"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"source": [
|
|
"You need graphviz installed and on your PATH for the following to work."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"ename": "FileNotFoundError",
|
|
"evalue": "[WinError 2] The system cannot find the file specified",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[1;32m<ipython-input-2-9d6fb4693659>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'hierarchy get_ipython()'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\u001b[0m in \u001b[0;36mmagic\u001b[1;34m(self, arg_s)\u001b[0m\n\u001b[0;32m 2161\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marg_s\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpartition\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m' '\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2162\u001b[0m \u001b[0mmagic_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mprefilter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mESC_MAGIC\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2163\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmagic_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2164\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2165\u001b[0m \u001b[1;31m#-------------------------------------------------------------------------\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\u001b[0m in \u001b[0;36mrun_line_magic\u001b[1;34m(self, magic_name, line)\u001b[0m\n\u001b[0;32m 2082\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'local_ns'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2083\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2084\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2085\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2086\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32m<decorator-gen-126>\u001b[0m in \u001b[0;36mhierarchy\u001b[1;34m(self, parameter_s)\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\Anaconda3\\lib\\site-packages\\IPython\\core\\magic.py\u001b[0m in \u001b[0;36m<lambda>\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 191\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 192\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 193\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 194\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\.ipython\\extensions\\hierarchymagic.py\u001b[0m in \u001b[0;36mhierarchy\u001b[1;34m(self, parameter_s)\u001b[0m\n\u001b[0;32m 245\u001b[0m graph_attrs={'rankdir': args.rankdir,\n\u001b[0;32m 246\u001b[0m 'size': '\"{0}\"'.format(args.size)})\n\u001b[1;32m--> 247\u001b[1;33m \u001b[0mstdout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrun_dot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mformat\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'png'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 248\u001b[0m \u001b[0mdisplay_png\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstdout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mraw\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 249\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\.ipython\\extensions\\hierarchymagic.py\u001b[0m in \u001b[0;36mrun_dot\u001b[1;34m(code, options, format)\u001b[0m\n\u001b[0;32m 111\u001b[0m \u001b[1;31m# * http://stackoverflow.com/a/2935727/727827\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 112\u001b[0m p = Popen(dot_args, stdout=PIPE, stdin=PIPE, stderr=PIPE,\n\u001b[1;32m--> 113\u001b[1;33m creationflags=0x08000000)\n\u001b[0m\u001b[0;32m 114\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 115\u001b[0m \u001b[0mp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mPopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdot_args\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstdout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstdin\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstderr\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mPIPE\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\Anaconda3\\lib\\subprocess.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds)\u001b[0m\n\u001b[0;32m 948\u001b[0m \u001b[0mc2pread\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mc2pwrite\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 949\u001b[0m \u001b[0merrread\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0merrwrite\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 950\u001b[1;33m restore_signals, start_new_session)\n\u001b[0m\u001b[0;32m 951\u001b[0m \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 952\u001b[0m \u001b[1;31m# Cleanup if the child failed starting.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;32mC:\\Users\\millejoh\\Anaconda3\\lib\\subprocess.py\u001b[0m in \u001b[0;36m_execute_child\u001b[1;34m(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)\u001b[0m\n\u001b[0;32m 1218\u001b[0m \u001b[0menv\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1219\u001b[0m \u001b[0mcwd\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1220\u001b[1;33m startupinfo)\n\u001b[0m\u001b[0;32m 1221\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1222\u001b[0m \u001b[1;31m# Child is launched. Close the parent's copy of those pipe\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
|
"\u001b[1;31mFileNotFoundError\u001b[0m: [WinError 2] The system cannot find the file specified"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%hierarchy get_ipython()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"source": [
|
|
"EIN also supports pretty printing from SymPy."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 0,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sympy.interactive import printing\n",
|
|
"printing.init_printing()\n",
|
|
"\n",
|
|
"import sympy as sym\n",
|
|
"from sympy import *\n",
|
|
"x, y, z = symbols(\"x y z\")\n",
|
|
"\n",
|
|
"Rational(3,2)*pi + exp(I*x) / (x**2 + y)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"source": [
|
|
"If you install px can you get the below to work?\n",
|
|
"\n",
|
|
"$a^2=b$\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 0,
|
|
"metadata": {
|
|
"autoscroll": false,
|
|
"collapsed": false,
|
|
"ein.hy_cell": true,
|
|
"ein.hycell": false,
|
|
"ein.tags": "worksheet-0",
|
|
"slideshow": {
|
|
"slide_type": "-"
|
|
}
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Data Science (py36)",
|
|
"name": "datascience"
|
|
},
|
|
"name": "Demo.ipynb"
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|