from IPython.core import ipapi from IPython.core import macro ip = ipapi.get() import os,pprint def export(filename = None): lines = ['import IPython.core.ipapi', 'ip = IPython.core.ipapi.get()',''] vars = ip.db.keys('autorestore/*') vars.sort() varstomove = [] get = ip.db.get macros = [] variables = [] for var in vars: k = os.path.basename(var) v = get(var) if k.startswith('_'): continue if isinstance(v, macro.Macro): macros.append((k,v)) if type(v) in [int, str, float]: variables.append((k,v)) if macros: lines.extend(['# === Macros ===' ,'']) for k,v in macros: lines.append("ip.defmacro('%s'," % k) for line in v.value.splitlines(): lines.append(' ' + repr(line+'\n')) lines.extend([')', '']) if variables: lines.extend(['','# === Variables ===','']) for k,v in variables: varstomove.append(k) lines.append('%s = %s' % (k,repr(v))) lines.append('ip.push("%s")' % (' '.join(varstomove))) bkms = ip.db.get('bookmarks',{}) if bkms: lines.extend(['','# === Bookmarks ===','']) lines.append("ip.db['bookmarks'] = %s " % pprint.pformat(bkms, indent = 2) ) aliases = ip.db.get('stored_aliases', {} ) if aliases: lines.extend(['','# === Alias definitions ===','']) for k,v in aliases.items(): try: lines.append("ip.define_alias('%s', %s)" % (k, repr(v[1]))) except (AttributeError, TypeError): pass env = ip.db.get('stored_env') if env: lines.extend(['','# === Stored env vars ===','']) lines.append("ip.db['stored_env'] = %s " % pprint.pformat(env, indent = 2) ) out = '\n'.join(lines) if filename: open(filename,'w').write(out) else: print out