emacs-ipython-notebook/Development Ideas.ipynb
John Miller db310073c4 Robustly build oinfo cache.
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.
2018-11-01 20:26:42 -05:00

833 lines
88 KiB
Text

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"source": [
"# Object Inspector"
]
},
{
"cell_type": "markdown",
"metadata": {
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"source": [
"Need to get python objects from strings. Is eval the best way?"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"execute-time": [
"2018-11-01T21:27:17.435516Z",
"2018-11-01T21:27:17.469860Z"
],
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"import inspect"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"execute-time": [
"2018-11-01T21:33:50.033296Z",
"2018-11-01T21:33:50.064574Z"
],
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"import ein"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"ein.pyto"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"execute-time": [
"2018-11-01T21:33:55.629201Z",
"2018-11-01T21:33:55.663747Z"
],
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['CodeMagics',\n '__builtins__',\n '__cached__',\n '__doc__',\n '__file__',\n '__loader__',\n '__name__',\n '__package__',\n '__spec__',\n '_find_edit_target',\n '_find_edit_target_012',\n '_find_edit_target_013',\n '_find_edit_target_python',\n 'eval_hy_string',\n 'export_nb',\n 'find_source',\n 'print_object_info_for',\n 'run_docstring_examples',\n 'set_figure_size']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(ein)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"execute-time": [
"2018-11-01T21:34:15.247868Z",
"2018-11-01T21:34:15.283595Z"
],
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\"type_name\": \"module\", \"base_class\": \"<class 'module'>\", \"string_form\": \"<module 'inspect' from 'C:\\\\\\\\Users\\\\\\\\mille\\\\\\\\Miniconda3\\\\\\\\lib\\\\\\\\inspect.py'>\", \"namespace\": null, \"length\": null, \"file\": \"c:\\\\users\\\\mille\\\\miniconda3\\\\lib\\\\inspect.py\", \"definition\": null, \"docstring\": \"Get useful information from live Python objects.\\n\\nThis module encapsulates the interface provided by the internal special\\nattributes (co_*, im_*, tb_*, etc.) in a friendlier fashion.\\nIt also provides some help for examining source code and class layout.\\n\\nHere are some of the useful functions provided by this module:\\n\\n ismodule(), isclass(), ismethod(), isfunction(), isgeneratorfunction(),\\n isgenerator(), istraceback(), isframe(), iscode(), isbuiltin(),\\n isroutine() - check object types\\n getmembers() - get members of an object that satisfy a given condition\\n\\n getfile(), getsourcefile(), getsource() - find an object's source code\\n getdoc(), getcomments() - get documentation on an object\\n getmodule() - determine the module that an object came from\\n getclasstree() - arrange classes so as to represent their hierarchy\\n\\n getargvalues(), getcallargs() - get info about function arguments\\n getfullargspec() - same, with support for Python 3 features\\n formatargspec(), formatargvalues() - format an argument spec\\n getouterframes(), getinnerframes() - get info about frames\\n currentframe() - get the current stack frame\\n stack(), trace() - get info about frames on the stack or in a traceback\\n\\n signature() - get a Signature object for the callable\", \"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": [
"__import__('ein').print_object_info_for(inspect)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"inspect.B"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"a=10"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'error': 'Object ax not found.', 'name': 'ax'}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\"name\": \"ax\", \"error\": \"Object ax not found.\"}\n"
]
}
],
"source": [
"__import__('ein_inspector').generate_inspector_data('ax', globals(), locals())"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"module"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mylst = [1, 2, 3]\n",
"type(inspect)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"ename": "TypeError",
"evalue": "[1, 2, 3] is not a module, class, method, function, traceback, frame, or code object",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-6-5ce9bb5a72b4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0minspect\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetsourcefile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmylst\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32mc:\\Users\\mille\\Miniconda3\\envs\\anaconda\\lib\\inspect.py\u001b[0m in \u001b[0;36mgetsourcefile\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 658\u001b[0m \u001b[0mReturn\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mno\u001b[0m \u001b[0mway\u001b[0m \u001b[0mcan\u001b[0m \u001b[0mbe\u001b[0m \u001b[0midentified\u001b[0m \u001b[0mto\u001b[0m \u001b[0mget\u001b[0m \u001b[0mthe\u001b[0m \u001b[0msource\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 659\u001b[0m \"\"\"\n\u001b[0;32m--> 660\u001b[0;31m \u001b[0mfilename\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetfile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 661\u001b[0m \u001b[0mall_bytecode_suffixes\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimportlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmachinery\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDEBUG_BYTECODE_SUFFIXES\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 662\u001b[0m \u001b[0mall_bytecode_suffixes\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mimportlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmachinery\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOPTIMIZED_BYTECODE_SUFFIXES\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;32mc:\\Users\\mille\\Miniconda3\\envs\\anaconda\\lib\\inspect.py\u001b[0m in \u001b[0;36mgetfile\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 623\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mco_filename\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 624\u001b[0m raise TypeError('{!r} is not a module, class, method, '\n\u001b[0;32m--> 625\u001b[0;31m 'function, traceback, frame, or code object'.format(object))\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mModuleInfo\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnamedtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'ModuleInfo'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'name suffix mode module_type'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;31mTypeError\u001b[0m: [1, 2, 3] is not a module, class, method, function, traceback, frame, or code object"
]
}
],
"source": [
"inspect.getsourcefile(mylst)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<module 'inspect' from 'c:\\\\Users\\\\mille\\\\Anaconda3\\\\lib\\\\inspect.py'>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eval('inspect')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"ename": "TypeError",
"evalue": "10 is not a module, class, method, function, traceback, frame, or code object",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-7-01e131c13b92>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0minspect\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetsource\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32mc:\\Users\\mille\\Anaconda3\\lib\\inspect.py\u001b[0m in \u001b[0;36mgetsource\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 942\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mcode\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m \u001b[0mThe\u001b[0m \u001b[0msource\u001b[0m \u001b[0mcode\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mreturned\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0ma\u001b[0m \u001b[0msingle\u001b[0m \u001b[0mstring\u001b[0m\u001b[1;33m.\u001b[0m \u001b[0mAn\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 943\u001b[0m OSError is raised if the source code cannot be retrieved.\"\"\"\n\u001b[0;32m--> 944\u001b[0;31m \u001b[0mlines\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlnum\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetsourcelines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 945\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlines\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 946\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;32mc:\\Users\\mille\\Anaconda3\\lib\\inspect.py\u001b[0m in \u001b[0;36mgetsourcelines\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 929\u001b[0m raised if the source code cannot be retrieved.\"\"\"\n\u001b[1;32m 930\u001b[0m \u001b[0mobject\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0munwrap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 931\u001b[0;31m \u001b[0mlines\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlnum\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfindsource\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 932\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 933\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mismodule\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;32mc:\\Users\\mille\\Anaconda3\\lib\\inspect.py\u001b[0m in \u001b[0;36mfindsource\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 742\u001b[0m is raised if the source code cannot be retrieved.\"\"\"\n\u001b[1;32m 743\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m--> 744\u001b[0;31m \u001b[0mfile\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetsourcefile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 745\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfile\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 746\u001b[0m \u001b[1;31m# Invalidate cache if needed.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;32mc:\\Users\\mille\\Anaconda3\\lib\\inspect.py\u001b[0m in \u001b[0;36mgetsourcefile\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 658\u001b[0m \u001b[0mReturn\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mno\u001b[0m \u001b[0mway\u001b[0m \u001b[0mcan\u001b[0m \u001b[0mbe\u001b[0m \u001b[0midentified\u001b[0m \u001b[0mto\u001b[0m \u001b[0mget\u001b[0m \u001b[0mthe\u001b[0m \u001b[0msource\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 659\u001b[0m \"\"\"\n\u001b[0;32m--> 660\u001b[0;31m \u001b[0mfilename\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetfile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobject\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 661\u001b[0m \u001b[0mall_bytecode_suffixes\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimportlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmachinery\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDEBUG_BYTECODE_SUFFIXES\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 662\u001b[0m \u001b[0mall_bytecode_suffixes\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mimportlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmachinery\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOPTIMIZED_BYTECODE_SUFFIXES\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;32mc:\\Users\\mille\\Anaconda3\\lib\\inspect.py\u001b[0m in \u001b[0;36mgetfile\u001b[0;34m(object)\u001b[0m\n\u001b[1;32m 623\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mco_filename\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 624\u001b[0m raise TypeError('{!r} is not a module, class, method, '\n\u001b[0;32m--> 625\u001b[0;31m 'function, traceback, frame, or code object'.format(object))\n\u001b[0m\u001b[1;32m 626\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[0mModuleInfo\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnamedtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'ModuleInfo'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'name suffix mode module_type'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[0;31mTypeError\u001b[0m: 10 is not a module, class, method, function, traceback, frame, or code object"
]
}
],
"source": [
"inspect.getsource(a)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inspect.isbuiltin(a)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"image/png": "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\nGXaFQqEYMv4/kyesq/afEWYAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x2835e82b518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"ax = plt.plot(np.random.randn(1000), np.random.randn(1000), 'o', alpha=0.3)\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x230960ff588>]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ax"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x230960ff588>]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eval('ax')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\"list() -> new empty list\\nlist(iterable) -> new list initialized from iterable's items\""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inspect.getdoc(ax)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[('__abs__', <method-wrapper '__abs__' of int object at 0x00000000664B0310>),\n",
" ('__add__', <method-wrapper '__add__' of int object at 0x00000000664B0310>),\n",
" ('__and__', <method-wrapper '__and__' of int object at 0x00000000664B0310>),\n",
" ('__bool__', <method-wrapper '__bool__' of int object at 0x00000000664B0310>),\n",
" ('__ceil__', <function int.__ceil__>),\n",
" ('__class__', int),\n",
" ('__delattr__',\n",
" <method-wrapper '__delattr__' of int object at 0x00000000664B0310>),\n",
" ('__dir__', <function int.__dir__>),\n",
" ('__divmod__',\n",
" <method-wrapper '__divmod__' of int object at 0x00000000664B0310>),\n",
" ('__doc__',\n",
" \"int(x=0) -> integer\\nint(x, base=10) -> integer\\n\\nConvert a number or string to an integer, or return 0 if no arguments\\nare given. If x is a number, return x.__int__(). For floating point\\nnumbers, this truncates towards zero.\\n\\nIf x is not a number or if base is given, then x must be a string,\\nbytes, or bytearray instance representing an integer literal in the\\ngiven base. The literal can be preceded by '+' or '-' and be surrounded\\nby whitespace. The base defaults to 10. Valid bases are 0 and 2-36.\\nBase 0 means to interpret the base from the string as an integer literal.\\n>>> int('0b100', base=0)\\n4\"),\n",
" ('__eq__', <method-wrapper '__eq__' of int object at 0x00000000664B0310>),\n",
" ('__float__',\n",
" <method-wrapper '__float__' of int object at 0x00000000664B0310>),\n",
" ('__floor__', <function int.__floor__>),\n",
" ('__floordiv__',\n",
" <method-wrapper '__floordiv__' of int object at 0x00000000664B0310>),\n",
" ('__format__', <function int.__format__>),\n",
" ('__ge__', <method-wrapper '__ge__' of int object at 0x00000000664B0310>),\n",
" ('__getattribute__',\n",
" <method-wrapper '__getattribute__' of int object at 0x00000000664B0310>),\n",
" ('__getnewargs__', <function int.__getnewargs__>),\n",
" ('__gt__', <method-wrapper '__gt__' of int object at 0x00000000664B0310>),\n",
" ('__hash__', <method-wrapper '__hash__' of int object at 0x00000000664B0310>),\n",
" ('__index__',\n",
" <method-wrapper '__index__' of int object at 0x00000000664B0310>),\n",
" ('__init__', <method-wrapper '__init__' of int object at 0x00000000664B0310>),\n",
" ('__int__', <method-wrapper '__int__' of int object at 0x00000000664B0310>),\n",
" ('__invert__',\n",
" <method-wrapper '__invert__' of int object at 0x00000000664B0310>),\n",
" ('__le__', <method-wrapper '__le__' of int object at 0x00000000664B0310>),\n",
" ('__lshift__',\n",
" <method-wrapper '__lshift__' of int object at 0x00000000664B0310>),\n",
" ('__lt__', <method-wrapper '__lt__' of int object at 0x00000000664B0310>),\n",
" ('__mod__', <method-wrapper '__mod__' of int object at 0x00000000664B0310>),\n",
" ('__mul__', <method-wrapper '__mul__' of int object at 0x00000000664B0310>),\n",
" ('__ne__', <method-wrapper '__ne__' of int object at 0x00000000664B0310>),\n",
" ('__neg__', <method-wrapper '__neg__' of int object at 0x00000000664B0310>),\n",
" ('__new__', <function int.__new__>),\n",
" ('__or__', <method-wrapper '__or__' of int object at 0x00000000664B0310>),\n",
" ('__pos__', <method-wrapper '__pos__' of int object at 0x00000000664B0310>),\n",
" ('__pow__', <method-wrapper '__pow__' of int object at 0x00000000664B0310>),\n",
" ('__radd__', <method-wrapper '__radd__' of int object at 0x00000000664B0310>),\n",
" ('__rand__', <method-wrapper '__rand__' of int object at 0x00000000664B0310>),\n",
" ('__rdivmod__',\n",
" <method-wrapper '__rdivmod__' of int object at 0x00000000664B0310>),\n",
" ('__reduce__', <function int.__reduce__>),\n",
" ('__reduce_ex__', <function int.__reduce_ex__>),\n",
" ('__repr__', <method-wrapper '__repr__' of int object at 0x00000000664B0310>),\n",
" ('__rfloordiv__',\n",
" <method-wrapper '__rfloordiv__' of int object at 0x00000000664B0310>),\n",
" ('__rlshift__',\n",
" <method-wrapper '__rlshift__' of int object at 0x00000000664B0310>),\n",
" ('__rmod__', <method-wrapper '__rmod__' of int object at 0x00000000664B0310>),\n",
" ('__rmul__', <method-wrapper '__rmul__' of int object at 0x00000000664B0310>),\n",
" ('__ror__', <method-wrapper '__ror__' of int object at 0x00000000664B0310>),\n",
" ('__round__', <function int.__round__>),\n",
" ('__rpow__', <method-wrapper '__rpow__' of int object at 0x00000000664B0310>),\n",
" ('__rrshift__',\n",
" <method-wrapper '__rrshift__' of int object at 0x00000000664B0310>),\n",
" ('__rshift__',\n",
" <method-wrapper '__rshift__' of int object at 0x00000000664B0310>),\n",
" ('__rsub__', <method-wrapper '__rsub__' of int object at 0x00000000664B0310>),\n",
" ('__rtruediv__',\n",
" <method-wrapper '__rtruediv__' of int object at 0x00000000664B0310>),\n",
" ('__rxor__', <method-wrapper '__rxor__' of int object at 0x00000000664B0310>),\n",
" ('__setattr__',\n",
" <method-wrapper '__setattr__' of int object at 0x00000000664B0310>),\n",
" ('__sizeof__', <function int.__sizeof__>),\n",
" ('__str__', <method-wrapper '__str__' of int object at 0x00000000664B0310>),\n",
" ('__sub__', <method-wrapper '__sub__' of int object at 0x00000000664B0310>),\n",
" ('__subclasshook__', <function int.__subclasshook__>),\n",
" ('__truediv__',\n",
" <method-wrapper '__truediv__' of int object at 0x00000000664B0310>),\n",
" ('__trunc__', <function int.__trunc__>),\n",
" ('__xor__', <method-wrapper '__xor__' of int object at 0x00000000664B0310>),\n",
" ('bit_length', <function int.bit_length>),\n",
" ('conjugate', <function int.conjugate>),\n",
" ('denominator', 1),\n",
" ('from_bytes', <function int.from_bytes>),\n",
" ('imag', 0),\n",
" ('numerator', 10),\n",
" ('real', 10),\n",
" ('to_bytes', <function int.to_bytes>)]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inspect.getmembers(a)"
]
},
{
"cell_type": "markdown",
"metadata": {
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"source": [
"# Adding Imenu Support"
]
},
{
"cell_type": "markdown",
"metadata": {
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"source": [
"## Subheader"
]
},
{
"cell_type": "markdown",
"metadata": {
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"source": [
"Seems to be a couple ways of doing this:\n",
"\n",
"1. Configuring a [imenu-generic-expression](http://emacswiki.org/emacs/ImenuMode#toc12) regex's.\n",
"\n",
"2. Redifining imenu-create-index ala python.el.\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"def func():\n",
" pass\n",
"\n",
"\n",
"class my_class(object):\n",
" def __init__(self):\n",
" pass\n",
"\n",
"\n",
"class my_class(object):\n",
" def __init__(self):\n",
" pass\n",
"\n",
" def funcme(arg1):\n",
" pass\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"source": [
"# Another Header"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"autoscroll": false,
"collapsed": false,
"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-2-05c9758a9c21>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m1\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mZeroDivisionError\u001b[0m: division by zero"
]
}
],
"source": [
"1/0"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"import inspect"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1+1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<module 'inspect' from 'C:\\\\Users\\\\millejoh\\\\Miniconda3\\\\envs\\\\py34\\\\lib\\\\inspect.py'>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inspect"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"autoscroll": false,
"collapsed": false,
"ein.hycell": false,
"ein.tags": "worksheet-0",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.4.3"
},
"name": "Development Ideas.ipynb"
},
"nbformat": 4,
"nbformat_minor": 0
}