Skip to content

Commit 7ff9bbd

Browse files
authored
Merge pull request #1237 from Tadaboody/master
Add numpy shape column
2 parents 8a540bf + dbe8864 commit 7ff9bbd

File tree

2 files changed

+34
-14
lines changed

2 files changed

+34
-14
lines changed

src/jupyter_contrib_nbextensions/nbextensions/varInspector/main.js

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,22 +129,31 @@ function html_table(jsonVars) {
129129
var kernel_config = cfg.kernels_config[kernelLanguage];
130130
var varList = JSON.parse(String(jsonVars))
131131

132+
var shape_str = '';
133+
var has_shape = false;
134+
if (varList.some(listVar => "varShape" in listVar && listVar.varShape !== '')) { //if any of them have a shape
135+
shape_str = '<th >Shape</th>';
136+
has_shape = true;
137+
}
132138
var beg_table = '<div class=\"inspector\"><table class=\"table fixed table-condensed table-nonfluid \"><col /> \
133-
<col /><col /><thead><tr><th >X</th><th >Name</th><th >Type</th><th >Size</th><th >Value</th></tr></thead><tr><td> \
134-
</td></tr>'
135-
var nb_vars = varList.length;
136-
for (var i = 0; i < nb_vars; i++) {
137-
beg_table = beg_table +
139+
<col /><col /><thead><tr><th >X</th><th >Name</th><th >Type</th><th >Size</th>' + shape_str + '<th >Value</th></tr></thead><tr><td> \
140+
</td></tr>';
141+
varList.forEach(listVar => {
142+
var shape_col_str = '</td><td>';
143+
if (has_shape) {
144+
shape_col_str = '</td><td>' + listVar.varShape + '</td><td>';
145+
}
146+
beg_table +=
138147
'<tr><td><a href=\"#\" onClick=\"Jupyter.notebook.kernel.execute(\'' +
139-
kernel_config.delete_cmd_prefix + varList[i].varName + kernel_config.delete_cmd_postfix + '\'' + '); ' +
148+
kernel_config.delete_cmd_prefix + listVar.varName + kernel_config.delete_cmd_postfix + '\'' + '); ' +
140149
'Jupyter.notebook.events.trigger(\'varRefresh\'); \">x</a></td>' +
141-
'<td>' + _trunc(varList[i].varName, cfg.cols.lenName) + '</td><td>' + _trunc(varList[i].varType, cfg.cols.lenType) +
142-
'</td><td>' + varList[i].varSize + '</td><td>' + _trunc(varList[i].varContent, cfg.cols.lenVar) +
143-
'</td></tr>'
150+
'<td>' + _trunc(listVar.varName, cfg.cols.lenName) + '</td><td>' + _trunc(listVar.varType, cfg.cols.lenType) +
151+
'</td><td>' + listVar.varSize + shape_col_str + _trunc(listVar.varContent, cfg.cols.lenVar) +
152+
'</td></tr>';
153+
});
154+
var full_table = beg_table + '</table></div>';
155+
return full_table;
144156
}
145-
var full_table = beg_table + '</table></div>'
146-
return full_table
147-
}
148157

149158

150159

src/jupyter_contrib_nbextensions/nbextensions/varInspector/var_list.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33

44
from IPython import get_ipython
55
from IPython.core.magics.namespace import NamespaceMagics
6-
76
_nms = NamespaceMagics()
87
_Jupyter = get_ipython()
98
_nms.shell = _Jupyter.kernel.shell
109

10+
try:
11+
import numpy as np
12+
except ImportError:
13+
pass
1114

1215
def _getsizeof(x):
1316
# return the size of variable x. Amended version of sys.getsizeof
@@ -19,12 +22,20 @@ def _getsizeof(x):
1922
else:
2023
return getsizeof(x)
2124

25+
def _getshapeof(x):
26+
#returns the shape of x if it has one
27+
#returns None otherwise - might want to return an empty string for an empty collum
28+
try:
29+
return x.shape
30+
except AttributeError: #x does not have a shape
31+
return None
2232

2333
def var_dic_list():
2434
types_to_exclude = ['module', 'function', 'builtin_function_or_method',
2535
'instance', '_Feature', 'type', 'ufunc']
2636
values = _nms.who_ls()
27-
vardic = [{'varName': v, 'varType': type(eval(v)).__name__, 'varSize': str(_getsizeof(eval(v))), 'varContent': str(eval(v))[:200]} # noqa
37+
vardic = [{'varName': v, 'varType': type(eval(v)).__name__, 'varSize': str(_getsizeof(eval(v))), 'varShape': str(_getshapeof(eval(v))) if _getshapeof(eval(v)) else '', 'varContent': str(eval(v))[:200]} # noqa
38+
2839
for v in values if (v not in ['_html', '_nms', 'NamespaceMagics', '_Jupyter']) & (type(eval(v)).__name__ not in types_to_exclude)] # noqa
2940
return json.dumps(vardic)
3041

0 commit comments

Comments
 (0)