home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 2.6) from datetime import datetime import IPython.ipapi as IPython ip = IPython.ipapi.get() import pickleshare import inspect import pickle import os import sys import textwrap from IPython.FakeModule import FakeModule from IPython.ipstruct import Struct def refresh_variables(ip, key = None): db = ip.db if key is None: keys = db.keys('jot/*') else: keys = db.keys('jot/' + key) for key in keys: justkey = os.path.basename(key) print 'Restoring from', justkey, '...' try: obj = db[key] except KeyError: print "Unable to restore variable '%s', ignoring (use %%jot -d to forget!)" % justkey print 'The error was:', sys.exc_info()[0] continue try: origname = obj.name except: ip.user_ns[justkey] = obj print 'Restored', justkey continue ip.user_ns[origname] = obj['val'] print 'Restored', origname def read_variables(ip, key = None): db = ip.db if key is None: return None keys = db.keys('jot/' + key) for key in keys: justkey = os.path.basename(key) print 'restoring from ', justkey try: obj = db[key] except KeyError: print "Unable to read variable '%s', ignoring (use %%jot -d to forget!)" % justkey print 'The error was:', sys.exc_info()[0] continue return obj def detail_variables(ip, key = None): db = ip.db get = ip.db.get if key is None: keys = db.keys('jot/*') else: keys = db.keys('jot/' + key) if keys: size = max(map(len, keys)) else: size = 0 fmthead = '%-' + str(size) + 's [%s]' fmtbody = 'Comment:\n %s' fmtdata = 'Data:\n %s, %s' for key in keys: v = get(key, '<unavailable>') justkey = os.path.basename(key) try: print fmthead % (justkey, datetime.ctime(v.get('time', '<unavailable>'))) print fmtbody % v.get('comment', '<unavailable>') d = v.get('val', 'unavailable') print fmtdata % (repr(type(d)), '') print repr(d)[0:200] print print continue except AttributeError: print fmt % (justkey, '<unavailable>', '<unavailable>', repr(v)[:50]) continue def intm(n): try: return int(n) except: return 0 def jot_obj(self, obj, name, comment = ''): had = self.db.keys('jot/' + name + '*') suffix = '' uname = 'jot/' + name + suffix all = ip.IP.shell.input_hist try: comment = ip.IP.magic_edit('-x').strip() except: None if len(had) > 0 else [] print 'No comment is recorded.' comment = '' self.db[uname] = Struct({ 'val': obj, 'time': datetime.now(), 'hist': all, 'name': name, 'comment': comment }) print "Jotted down notes for '%s' (%s)" % (uname, obj.__class__.__name__) def magic_jot(self, parameter_s = ''): (opts, argsl) = self.parse_options(parameter_s, 'drzl', mode = 'string') args = argsl.split(None, 1) ip = self.getapi() db = ip.db if opts.has_key('d'): try: todel = args[0] except IndexError: error('You must provide the variable to forget') try: del db['jot/' + todel] error("Can't delete variable '%s'" % todel) elif opts.has_key('z'): print 'reseting the whole database has been disabled.' elif opts.has_key('r'): try: toret = args[0] except: print 'restoring all the variables jotted down...' refresh_variables(ip) refresh_variables(ip, toret) elif opts.has_key('l'): try: tolist = args[0] except: print 'List details for all the items.' detail_variables(ip) print 'Details for', tolist, ':' detail_variables(ip, tolist) elif not args: vars = self.db.keys('jot/*') vars.sort() if vars: size = max(map(len, vars)) - 4 else: size = 0 print 'Variables and their in-db values:' fmt = '%-' + str(size) + 's [%s] -> %s' get = db.get for var in vars: justkey = os.path.basename(var) v = get(var, '<unavailable>') try: print fmt % (justkey, datetime.ctime(v.get('time', '<unavailable>')), v.get('comment', '<unavailable>')[:70].replace('\n', ' ')) continue except AttributeError: print fmt % (justkey, '<unavailable>', '<unavailable>', repr(v)[:50]) continue elif len(args) > 1 and args[1].startswith('>'): fnam = os.path.expanduser(args[1].lstrip('>').lstrip()) if args[1].startswith('>>'): fil = open(fnam, 'a') else: fil = open(fnam, 'w') obj = ip.ev(args[0]) print "Writing '%s' (%s) to file '%s'." % (args[0], obj.__class__.__name__, fnam) if not isinstance(obj, basestring): pprint = pprint import pprint pprint(obj, fil) else: fil.write(obj) if not obj.endswith('\n'): fil.write('\n') fil.close() return None try: obj = ip.user_ns[args[0]] except KeyError: print print "Error: %s doesn't exist." % args[0] print print 'Use %note -r <var> to retrieve variables. This should not be used ' + 'to store alias, for saving aliases, use %store' return None if isinstance(inspect.getmodule(obj), FakeModule): print textwrap.dedent(" Warning:%s is %s \n Proper storage of interactively declared classes (or instances\n of those classes) is not possible! Only instances\n of classes in real modules on file system can be %%store'd.\n " % (args[0], obj)) return None jot_obj(self, obj, args[0]) def magic_read(self, parameter_s = ''): (opts, argsl) = self.parse_options(parameter_s, 'drzl', mode = 'string') args = argsl.split(None, 1) ip = self.getapi() db = ip.db try: toret = args[0] except: print 'which record do you want to read out?' return None return read_variables(ip, toret) ip.expose_magic('jot', magic_jot) ip.expose_magic('read', magic_read)