You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.5 KiB
49 lines
1.5 KiB
import json
|
|
from sys import getsizeof
|
|
|
|
from IPython import get_ipython
|
|
from IPython.core.magics.namespace import NamespaceMagics
|
|
|
|
_nms = NamespaceMagics()
|
|
_Jupyter = get_ipython()
|
|
_nms.shell = _Jupyter.kernel.shell
|
|
|
|
try:
|
|
import numpy as np # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
def _getsizeof(x):
|
|
# return the size of variable x. Amended version of sys.getsizeof
|
|
# which also supports ndarray, Series and DataFrame
|
|
if type(x).__name__ in ['ndarray', 'Series']:
|
|
return x.nbytes
|
|
elif type(x).__name__ == 'DataFrame':
|
|
return x.memory_usage().sum()
|
|
else:
|
|
return getsizeof(x)
|
|
|
|
|
|
def _getshapeof(x):
|
|
# returns the shape of x if it has one
|
|
# returns None otherwise - might want to return an empty string for an empty collum
|
|
try:
|
|
return x.shape
|
|
except AttributeError: # x does not have a shape
|
|
return None
|
|
|
|
|
|
def var_dic_list():
|
|
types_to_exclude = ['module', 'function', 'builtin_function_or_method',
|
|
'instance', '_Feature', 'type', 'ufunc']
|
|
values = _nms.who_ls()
|
|
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
|
|
|
|
for v in values if (v not in ['_html', '_nms', 'NamespaceMagics', '_Jupyter']) & (type(eval(v)).__name__ not in types_to_exclude)] # noqa
|
|
return json.dumps(vardic)
|
|
|
|
|
|
# command to refresh the list of variables
|
|
print(var_dic_list())
|