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

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())