home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import __main__
- import commands
-
- try:
- import doctest
- except ImportError:
- pass
-
- import os
- import platform
- import re
- import shlex
- import shutil
- import subprocess
- import sys
- import tempfile
- import time
- import types
- import warnings
-
- try:
- import curses
- import termios
- except ImportError:
- USE_CURSES = False
-
- USE_CURSES = hasattr(curses, 'initscr')
- import IPython
- from IPython.Itpl import Itpl, itpl, printpl
- from IPython import DPyGetOpt, platutils
- from IPython.generics import result_display
- import IPython.ipapi as IPython
- from IPython.external.path import path
- if os.name == 'nt':
- from IPython.winconsole import get_console_size
-
-
- try:
- set
- except:
- from sets import Set as set
-
-
- class Error(Exception):
- pass
-
-
- class IOStream:
-
- def __init__(self, stream, fallback):
- if not hasattr(stream, 'write') or not hasattr(stream, 'flush'):
- stream = fallback
-
- self.stream = stream
- self._swrite = stream.write
- self.flush = stream.flush
-
-
- def write(self, data):
-
- try:
- self._swrite(data)
- except:
-
- try:
- print >>self.stream, data,
- print >>sys.stderr, 'ERROR - failed to write data to stream:', self.stream
-
-
-
-
- def close(self):
- pass
-
-
-
- class IOTerm:
-
- def __init__(self, cin = None, cout = None, cerr = None):
- self.cin = IOStream(cin, sys.stdin)
- self.cout = IOStream(cout, sys.stdout)
- self.cerr = IOStream(cerr, sys.stderr)
-
-
- Term = IOTerm()
- import IPython.rlineimpl as readline
- if sys.platform == 'win32' and readline.have_readline:
- Term = IOTerm(cout = readline._outputfile, cerr = readline._outputfile)
-
-
- def warn(msg, level = 2, exit_val = 1):
- if level > 0:
- header = [
- '',
- '',
- 'WARNING: ',
- 'ERROR: ',
- 'FATAL ERROR: ']
- print >>Term.cerr, '%s%s' % (header[level], msg)
- if level == 4:
- print >>Term.cerr, 'Exiting.\n'
- sys.exit(exit_val)
-
-
-
-
- def info(msg):
- warn(msg, level = 1)
-
-
- def error(msg):
- warn(msg, level = 3)
-
-
- def fatal(msg, exit_val = 1):
- warn(msg, exit_val = exit_val, level = 4)
-
-
- def debugx(expr, pre_msg = ''):
- cf = sys._getframe(1)
- print '[DBG:%s] %s%s -> %r' % (cf.f_code.co_name, pre_msg, expr, eval(expr, cf.f_globals, cf.f_locals))
-
- StringTypes = types.StringTypes
-
- try:
- import resource
-
- def clocku():
- return resource.getrusage(resource.RUSAGE_SELF)[0]
-
-
- def clocks():
- return resource.getrusage(resource.RUSAGE_SELF)[1]
-
-
- def clock():
- (u, s) = resource.getrusage(resource.RUSAGE_SELF)[:2]
- return u + s
-
-
- def clock2():
- return resource.getrusage(resource.RUSAGE_SELF)[:2]
-
- except ImportError:
- clocku = clocks = clock = time.clock
-
- def clock2():
- return (time.clock(), 0)
-
-
-
- def timings_out(reps, func, *args, **kw):
- reps = int(reps)
- if reps == 1:
- start = clock()
- out = func(*args, **kw)
- tot_time = clock() - start
- else:
- rng = xrange(reps - 1)
- start = clock()
- for dummy in rng:
- func(*args, **kw)
-
- out = func(*args, **kw)
- tot_time = clock() - start
- av_time = tot_time / reps
- return (tot_time, av_time, out)
-
-
- def timings(reps, func, *args, **kw):
- return timings_out(reps, func, *args, **kw)[0:2]
-
-
- def timing(func, *args, **kw):
- return timings_out(1, func, *args, **kw)[0]
-
-
- def arg_split(s, posix = False):
- lex = shlex.shlex(s, posix = posix)
- lex.whitespace_split = True
- return list(lex)
-
-
- def system(cmd, verbose = 0, debug = 0, header = ''):
- stat = 0
- if verbose or debug:
- print header + cmd
-
- sys.stdout.flush()
- if not debug:
- stat = os.system(cmd)
-
- return stat
-
-
- def abbrev_cwd():
- cwd = os.getcwd().replace('\\', '/')
- drivepart = ''
- tail = cwd
- if sys.platform == 'win32':
- if len(cwd) < 4:
- return cwd
- (drivepart, tail) = os.path.splitdrive(cwd)
-
- parts = tail.split('/')
- if len(parts) > 2:
- tail = '/'.join(parts[-2:])
-
- if not cwd == '/' or '/':
- pass
- return drivepart + tail
-
-
- def shell(cmd, verbose = 0, debug = 0, header = ''):
- stat = 0
- if verbose or debug:
- print header + cmd
-
- sys.stdout.flush()
- if not debug:
- platutils.set_term_title('IPy ' + cmd)
- os.system(cmd)
- platutils.set_term_title('IPy ' + abbrev_cwd())
-
-
- if os.name in ('nt', 'dos'):
- shell_ori = shell
-
- def shell(cmd, verbose = 0, debug = 0, header = ''):
- if os.getcwd().startswith('\\\\'):
- path = os.getcwd()
- os.chdir('c:')
-
- try:
- shell_ori('"pushd %s&&"' % path + cmd, verbose, debug, header)
- finally:
- os.chdir(path)
-
- else:
- shell_ori(cmd, verbose, debug, header)
-
- shell.__doc__ = shell_ori.__doc__
-
-
- def getoutput(cmd, verbose = 0, debug = 0, header = '', split = 0):
- if verbose or debug:
- print header + cmd
-
- if not debug:
- output = os.popen(cmd).read()
- if output.endswith('\n'):
- output = output[:-1]
-
- if split:
- return output.split('\n')
- return output
- debug
-
-
- def getoutputerror(cmd, verbose = 0, debug = 0, header = '', split = 0):
- if verbose or debug:
- print header + cmd
-
- if not cmd:
- if split:
- return ([], [])
- return ('', '')
- cmd
- if not debug:
- (pin, pout, perr) = os.popen3(cmd)
- tout = pout.read().rstrip()
- terr = perr.read().rstrip()
- pin.close()
- pout.close()
- perr.close()
- if split:
- return (tout.split('\n'), terr.split('\n'))
- return (tout, terr)
- debug
-
- xsys = system
- bq = getoutput
-
- class SystemExec:
-
- def __init__(self, verbose = 0, debug = 0, header = '', split = 0):
- setattr_list(self, 'verbose debug header split')
-
-
- def system(self, cmd):
- system(cmd, self.verbose, self.debug, self.header)
-
-
- def shell(self, cmd):
- shell(cmd, self.verbose, self.debug, self.header)
-
- xsys = system
-
- def getoutput(self, cmd):
- return getoutput(cmd, self.verbose, self.debug, self.header, self.split)
-
-
- def getoutputerror(self, cmd):
- return getoutputerror(cmd, self.verbose, self.debug, self.header, self.split)
-
- bq = getoutput
-
-
- def mutex_opts(dict, ex_op):
- for op1, op2 in ex_op:
- if op1 in dict and op2 in dict:
- raise ValueError, '\n*** ERROR in Arguments *** Options ' + op1 + ' and ' + op2 + ' are mutually exclusive.'
- op2 in dict
-
-
-
- def get_py_filename(name):
- name = os.path.expanduser(name)
- if not os.path.isfile(name) and not name.endswith('.py'):
- name += '.py'
-
- if os.path.isfile(name):
- return name
- raise IOError, 'File `%s` not found.' % name
-
-
- def filefind(fname, alt_dirs = None):
- if alt_dirs is None:
-
- try:
- alt_dirs = get_home_dir()
- except HomeDirError:
- alt_dirs = os.getcwd()
- except:
- None<EXCEPTION MATCH>HomeDirError
-
-
- None<EXCEPTION MATCH>HomeDirError
- search = [
- fname] + list_strings(alt_dirs)
- search = map(os.path.expanduser, search)
- fname = search[0]
- if os.path.isfile(fname):
- return fname
- for direc in search[1:]:
- testname = os.path.join(direc, fname)
- if os.path.isfile(testname):
- return testname
-
- raise IOError, 'File' + `fname` + ' not found in current or supplied directories:' + `alt_dirs`
-
-
- def file_read(filename):
- fobj = open(filename, 'r')
- source = fobj.read()
- fobj.close()
- return source
-
-
- def file_readlines(filename):
- fobj = open(filename, 'r')
- lines = fobj.readlines()
- fobj.close()
- return lines
-
-
- def target_outdated(target, deps):
-
- try:
- target_time = os.path.getmtime(target)
- except os.error:
- return 1
-
- for dep in deps:
- dep_time = os.path.getmtime(dep)
- if dep_time > target_time:
- return 1
-
- return 0
-
-
- def target_update(target, deps, cmd):
- if target_outdated(target, deps):
- xsys(cmd)
-
-
-
- def unquote_ends(istr):
- if not istr:
- return istr
- if (istr[0] == "'" or istr[-1] == "'" or istr[0] == '"') and istr[-1] == '"':
- return istr[1:-1]
- return istr
-
-
- def process_cmdline(argv, names = [], defaults = { }, usage = ''):
- getopt = DPyGetOpt.DPyGetOpt()
- getopt.setIgnoreCase(0)
- getopt.parseConfiguration(names)
-
- try:
- getopt.processArguments(argv)
- except DPyGetOpt.ArgumentError:
- exc = None
- print usage
- warn('"%s"' % exc, level = 4)
-
- defaults.update(getopt.optionValues)
- args = getopt.freeValues
- return (defaults, args)
-
-
- def optstr2types(ostr):
- typeconv = {
- None: '',
- int: '',
- float: '' }
- typemap = {
- 's': None,
- 'i': int,
- 'f': float }
- opt_re = re.compile('([\\w]*)([^:=]*:?=?)([sif]?)')
- for w in ostr.split():
- (oname, alias, otype) = opt_re.match(w).groups()
- if otype == '' or alias == '!':
- otype = 'i'
-
- typeconv[typemap[otype]] += oname + ' '
-
- return typeconv
-
-
- def read_dict(filename, type_conv = None, **opt):
- opt.setdefault('purge', 0)
- opt.setdefault('fs', None)
- opt.setdefault('strip', 0)
- opt.setdefault('warn', 1)
- opt.setdefault('no_empty', 0)
- opt.setdefault('unique', '')
- if type(opt['unique']) in StringTypes:
- unique_keys = qw(opt['unique'])
- elif type(opt['unique']) in (types.TupleType, types.ListType):
- unique_keys = opt['unique']
- else:
- raise ValueError, 'Unique keys must be given as a string, List or Tuple'
- dict = type(opt['unique']) in StringTypes
- if '\n' in filename:
- lines = filename.splitlines()
- file = None
- else:
- file = open(filename, 'r')
- lines = file.readlines()
- for line in lines:
- line = line.strip()
- if len(line) and line[0] == '#':
- continue
-
- if len(line) > 0:
- lsplit = line.split(opt['fs'], 1)
-
- try:
- (key, val) = lsplit
- except ValueError:
- key = lsplit[0]
- val = ''
-
- key = key.strip()
- if opt['strip']:
- val = val.strip()
-
- if val == "''" or val == '""':
- val = ''
-
- if opt['no_empty']:
- if val == '' or val.isspace():
- continue
-
-
- try:
- if dict[key] and key in unique_keys:
- dict[key] = val
- elif type(dict[key]) is types.ListType:
- dict[key].append(val)
- else:
- dict[key] = [
- dict[key],
- val]
- except KeyError:
- dict[key] = val
- except:
- None<EXCEPTION MATCH>KeyError
-
-
- None<EXCEPTION MATCH>KeyError
-
- if opt['purge']:
- accepted_keys = qwflat(type_conv.values())
- for key in dict.keys():
- if key in accepted_keys:
- continue
-
- del dict[key]
-
-
- if type_conv == None:
- return dict
- conversions = type_conv.keys()
-
- try:
- conversions.remove(None)
- except:
- type_conv == None
-
- for convert in conversions:
- for val in qw(type_conv[convert]):
-
- try:
- dict[val] = convert(dict[val])
- continue
- except KeyError:
- type_conv == None
- e = type_conv == None
- if opt['warn'] == 0:
- pass
- elif opt['warn'] == 1:
- print >>sys.stderr, 'Warning: key', val, 'not found in file', filename
- elif opt['warn'] == 2:
- raise KeyError, e
- else:
- raise ValueError, 'Warning level must be 0,1 or 2'
- opt['warn'] == 0
-
-
-
-
- return dict
-
-
- def flag_calls(func):
-
- def wrapper(*args, **kw):
- wrapper.called = False
- out = func(*args, **kw)
- wrapper.called = True
- return out
-
- wrapper.called = False
- wrapper.__doc__ = func.__doc__
- return wrapper
-
-
- def dhook_wrap(func, *a, **k):
-
- def f(*a, **k):
- dhook_s = sys.displayhook
- sys.displayhook = sys.__displayhook__
-
- try:
- out = func(*a, **k)
- finally:
- sys.displayhook = dhook_s
-
- return out
-
- f.__doc__ = func.__doc__
- return f
-
-
- def doctest_reload():
- import doctest
- doctest.master = None
- doctest.DocTestRunner.run = dhook_wrap(doctest.DocTestRunner.run)
-
-
- class HomeDirError(Error):
- pass
-
-
- def get_home_dir():
- isdir = os.path.isdir
- env = os.environ
- if hasattr(sys, 'frozen'):
- if '\\library.zip\\' in IPython.__file__.lower():
- (root, rest) = IPython.__file__.lower().split('library.zip')
- else:
- root = os.path.join(os.path.split(IPython.__file__)[0], '../../')
- root = os.path.abspath(root).rstrip('\\')
- if isdir(os.path.join(root, '_ipython')):
- os.environ['IPYKITROOT'] = root
-
- return root
-
- try:
- homedir = env['HOME']
- if not isdir(homedir):
- raise KeyError
- isdir(homedir)
- return homedir
- except KeyError:
- hasattr(sys, 'frozen')
- hasattr(sys, 'frozen')
- if os.name == 'posix':
- raise HomeDirError, 'undefined $HOME, IPython can not proceed.'
- os.name == 'posix'
- if os.name == 'nt':
-
- try:
- homedir = os.path.join(env['HOMEDRIVE'], env['HOMEPATH'])
- if not isdir(homedir):
- homedir = os.path.join(env['USERPROFILE'])
- if not isdir(homedir):
- raise HomeDirError
- isdir(homedir)
-
- return homedir
- except KeyError:
-
- try:
- import _winreg as wreg
- key = wreg.OpenKey(wreg.HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders')
- homedir = wreg.QueryValueEx(key, 'Personal')[0]
- key.Close()
- if not isdir(homedir):
- e = 'Invalid "Personal" folder registry key typically "My Documents".\nValue: %s\nThis is not a valid directory on your system.' % homedir
- raise HomeDirError(e)
- isdir(homedir)
- return homedir
- except HomeDirError:
- raise
- except:
- None<EXCEPTION MATCH>HomeDirError
- return 'C:\\'
-
-
- None<EXCEPTION MATCH>HomeDirError
-
-
- None<EXCEPTION MATCH>KeyError
- if os.name == 'dos':
- return 'C:\\'
- raise HomeDirError, 'support for your operating system not implemented.'
- except:
- os.name == 'dos'
-
-
-
- def get_ipython_dir():
- if os.name == 'posix':
- ipdir_def = '.ipython'
- else:
- ipdir_def = '_ipython'
- home_dir = get_home_dir()
- ipdir = os.path.abspath(os.environ.get('IPYTHONDIR', os.path.join(home_dir, ipdir_def)))
- return ipdir.decode(sys.getfilesystemencoding())
-
-
- def get_security_dir():
- security_dir = os.path.join(get_ipython_dir(), 'security')
- if not os.path.isdir(security_dir):
- os.mkdir(security_dir, 448)
- else:
- os.chmod(security_dir, 448)
- return security_dir
-
-
- def get_log_dir():
- log_dir = os.path.join(get_ipython_dir(), 'log')
- if not os.path.isdir(log_dir):
- os.mkdir(log_dir, 511)
-
- return log_dir
-
-
- class LSString(str):
-
- def get_list(self):
-
- try:
- return self._LSString__list
- except AttributeError:
- self._LSString__list = self.split('\n')
- return self._LSString__list
-
-
- l = list = property(get_list)
-
- def get_spstr(self):
-
- try:
- return self._LSString__spstr
- except AttributeError:
- self._LSString__spstr = self.replace('\n', ' ')
- return self._LSString__spstr
-
-
- s = spstr = property(get_spstr)
-
- def get_nlstr(self):
- return self
-
- n = nlstr = property(get_nlstr)
-
- def get_paths(self):
-
- try:
- return self._LSString__paths
- except AttributeError:
- self._LSString__paths = _[1]
- return self._LSString__paths
- []
-
-
- p = paths = property(get_paths)
-
-
- def print_lsstring(arg):
- print 'LSString (.p, .n, .l, .s available). Value:'
- print arg
-
- print_lsstring = result_display.when_type(LSString)(print_lsstring)
-
- class SList(list):
-
- def get_list(self):
- return self
-
- l = list = property(get_list)
-
- def get_spstr(self):
-
- try:
- return self._SList__spstr
- except AttributeError:
- self._SList__spstr = ' '.join(self)
- return self._SList__spstr
-
-
- s = spstr = property(get_spstr)
-
- def get_nlstr(self):
-
- try:
- return self._SList__nlstr
- except AttributeError:
- self._SList__nlstr = '\n'.join(self)
- return self._SList__nlstr
-
-
- n = nlstr = property(get_nlstr)
-
- def get_paths(self):
-
- try:
- return self._SList__paths
- except AttributeError:
- self._SList__paths = _[1]
- return self._SList__paths
- []
-
-
- p = paths = property(get_paths)
-
- def grep(self, pattern, prune = False, field = None):
-
- def match_target(s):
- if field is None:
- return s
- parts = s.split()
-
- try:
- tgt = parts[field]
- return tgt
- except IndexError:
- field is None
- field is None
- return ''
-
-
- if isinstance(pattern, basestring):
-
- pred = lambda x: re.search(pattern, x, re.IGNORECASE)
- else:
- pred = pattern
- if not prune:
- return [](_[1])
- return [](_[2])
-
-
- def fields(self, *fields):
- if len(fields) == 0:
- return [ el.split() for el in self ]
- res = SList()
- for f in self:
- pass
-
- return res
-
-
- def sort(self, field = None, nums = False):
- dsu.sort()
- return []([ t[1] for t in dsu ])
-
-
-
- def print_slist(arg):
- print 'SList (.p, .n, .l, .s, .grep(), .fields(), sort() available):'
- if hasattr(arg, 'hideonce') and arg.hideonce:
- arg.hideonce = False
- return None
- nlprint(arg)
-
- print_slist = result_display.when_type(SList)(print_slist)
-
- def esc_quotes(strng):
- return strng.replace('"', '\\"').replace("'", "\\'")
-
-
- def make_quoted_expr(s):
- tail = ''
- tailpadding = ''
- raw = ''
- if '\\' in s:
- raw = 'r'
- if s.endswith('\\'):
- tail = '[:-1]'
- tailpadding = '_'
-
-
- if '"' not in s:
- quote = '"'
- elif "'" not in s:
- quote = "'"
- elif '"""' not in s and not s.endswith('"'):
- quote = '"""'
- elif "'''" not in s and not s.endswith("'"):
- quote = "'''"
- else:
- return '"%s"' % esc_quotes(s)
- res = (not s.endswith("'")) + quote + s + tailpadding + quote + tail
- return res
-
-
- def raw_input_multi(header = '', ps1 = '==> ', ps2 = '..> ', terminate_str = '.'):
-
- try:
- if header:
- header += '\n'
-
- lines = [
- raw_input(header + ps1)]
- except EOFError:
- return []
-
- terminate = [
- terminate_str]
-
- try:
- while lines[-1:] != terminate:
- new_line = raw_input(ps1)
- while new_line.endswith('\\'):
- new_line = new_line[:-1] + raw_input(ps2)
- lines.append(new_line)
- return lines[:-1]
- except EOFError:
- print
- return lines
-
-
-
- def raw_input_ext(prompt = '', ps2 = '... '):
- line = raw_input(prompt)
- while line.endswith('\\'):
- line = line[:-1] + raw_input(ps2)
- return line
-
-
- def ask_yes_no(prompt, default = None):
- answers = {
- 'y': True,
- 'n': False,
- 'yes': True,
- 'no': False }
- ans = None
- while ans not in answers.keys():
-
- try:
- ans = raw_input(prompt + ' ').lower()
- if not ans:
- ans = default
- continue
- except KeyboardInterrupt:
- continue
- except EOFError:
- if default in answers.keys():
- ans = default
- print
- else:
- raise
- default in answers.keys()
-
- None<EXCEPTION MATCH>EOFError
- return answers[ans]
-
-
-
- def marquee(txt = '', width = 78, mark = '*'):
- if not txt:
- return mark * width[:width]
- nmark = (width - len(txt) - 2) / len(mark) / 2
- if nmark < 0:
- nmark = 0
-
- marks = mark * nmark
- return '%s %s %s' % (marks, txt, marks)
-
-
- class EvalDict:
-
- def __getitem__(self, name):
- frame = sys._getframe(1)
- return eval(name, frame.f_globals, frame.f_locals)
-
-
- EvalString = EvalDict
-
- def qw(words, flat = 0, sep = None, maxsplit = -1):
- if type(words) in StringTypes:
- return _[1]
- if flat:
- return flatten(map(qw, words, [
- 1] * len(words)))
- return map(qw, words)
-
-
- def qwflat(words, sep = None, maxsplit = -1):
- return qw(words, 1, sep, maxsplit)
-
-
- def qw_lol(indata):
- if type(indata) in StringTypes:
- return [
- qw(indata)]
- return qw(indata)
-
-
- def list_strings(arg):
- if type(arg) in StringTypes:
- return [
- arg]
- return arg
-
-
- def grep(pat, list, case = 1):
- out = []
- if case:
- for term in list:
- if term.find(pat) > -1:
- out.append(term)
- continue
-
- else:
- lpat = pat.lower()
- for term in list:
- if term.lower().find(lpat) > -1:
- out.append(term)
- continue
-
- if len(out):
- return out
- return None
-
-
- def dgrep(pat, *opts):
- return grep(pat, dir(__main__) + dir(__main__.__builtins__), *opts)
-
-
- def idgrep(pat):
- return dgrep(pat, 0)
-
-
- def igrep(pat, list):
- return grep(pat, list, case = 0)
-
-
- def indent(str, nspaces = 4, ntabs = 0):
- if str is None:
- return None
- ind = '\t' * ntabs + ' ' * nspaces
- outstr = '%s%s' % (ind, str.replace(os.linesep, os.linesep + ind))
- if outstr.endswith(os.linesep + ind):
- return outstr[:-len(ind)]
- return outstr
-
-
- def native_line_ends(filename, backup = 1):
- backup_suffixes = {
- 'posix': '~',
- 'dos': '.bak',
- 'nt': '.bak',
- 'mac': '.bak' }
- bak_filename = filename + backup_suffixes[os.name]
- original = open(filename).read()
- shutil.copy2(filename, bak_filename)
-
- try:
- new = open(filename, 'wb')
- new.write(os.linesep.join(original.splitlines()))
- new.write(os.linesep)
- new.close()
- except:
- os.rename(bak_filename, filename)
-
- if not backup:
-
- try:
- os.remove(bak_filename)
-
-
-
-
- def get_pager_cmd(pager_cmd = None):
- if os.name == 'posix':
- default_pager_cmd = 'less -r'
- elif os.name in ('nt', 'dos'):
- default_pager_cmd = 'type'
-
- if pager_cmd is None:
-
- try:
- pager_cmd = os.environ['PAGER']
- pager_cmd = default_pager_cmd
-
-
- return pager_cmd
-
-
- def get_pager_start(pager, start):
- if pager in ('less', 'more'):
- if start:
- start_string = '+' + str(start)
- else:
- start_string = ''
- else:
- start_string = ''
- return start_string
-
- if os.name == 'nt' and os.environ.get('TERM', 'dumb') != 'emacs':
- import msvcrt
-
- def page_more():
- Term.cout.write('---Return to continue, q to quit--- ')
- ans = msvcrt.getch()
- if ans in ('q', 'Q'):
- result = False
- else:
- result = True
- Term.cout.write('\x08' * 37 + ' ' * 37 + '\x08' * 37)
- return result
-
- else:
-
- def page_more():
- ans = raw_input('---Return to continue, q to quit--- ')
- if ans.lower().startswith('q'):
- return False
- return True
-
- esc_re = re.compile('(\\x1b[^m]+m)')
-
- def page_dumb(strng, start = 0, screen_lines = 25):
- out_ln = strng.splitlines()[start:]
- screens = chop(out_ln, screen_lines - 1)
- if len(screens) == 1:
- print >>Term.cout, os.linesep.join(screens[0])
- else:
- last_escape = ''
- for scr in screens[0:-1]:
- hunk = os.linesep.join(scr)
- print >>Term.cout, last_escape + hunk
- if not page_more():
- return None
- esc_list = esc_re.findall(hunk)
- if len(esc_list) > 0:
- last_escape = esc_list[-1]
- continue
- page_more()
-
- print >>Term.cout, last_escape + os.linesep.join(screens[-1])
-
-
- def page(strng, start = 0, screen_lines = 0, pager_cmd = None):
- start = max(0, start)
- ip = IPython.ipapi.get()
- if ip:
-
- try:
- ip.IP.hooks.show_in_pager(strng)
- return None
- except IPython.ipapi.TryNext:
- pass
- except:
- None<EXCEPTION MATCH>IPython.ipapi.TryNext
-
-
- None<EXCEPTION MATCH>IPython.ipapi.TryNext
- TERM = os.environ.get('TERM', 'dumb')
- if TERM in ('dumb', 'emacs') and os.name != 'nt':
- print strng
- return None
- str_lines = strng.split(os.linesep)[start:]
- str_toprint = os.linesep.join(str_lines)
- num_newlines = len(str_lines)
- len_str = len(str_toprint)
- numlines = max(num_newlines, int(len_str / 80) + 1)
- if os.name == 'nt':
- screen_lines_def = get_console_size(defaulty = 25)[1]
- else:
- screen_lines_def = 25
- if screen_lines <= 0:
- if TERM == 'xterm':
- use_curses = USE_CURSES
- else:
- use_curses = False
- if use_curses:
- term_flags = termios.tcgetattr(sys.stdout)
- scr = curses.initscr()
- (screen_lines_real, screen_cols) = scr.getmaxyx()
- curses.endwin()
- termios.tcsetattr(sys.stdout, termios.TCSANOW, term_flags)
- screen_lines += screen_lines_real
- else:
- screen_lines += screen_lines_def
-
- if numlines <= screen_lines:
- print >>Term.cout, str_toprint
- else:
- pager_cmd = get_pager_cmd(pager_cmd)
- pager_cmd += ' ' + get_pager_start(pager_cmd, start)
- if os.name == 'nt':
- if pager_cmd.startswith('type'):
- retval = 1
- else:
- tmpname = tempfile.mktemp('.txt')
- tmpfile = file(tmpname, 'wt')
- tmpfile.write(strng)
- tmpfile.close()
- cmd = '%s < %s' % (pager_cmd, tmpname)
- if os.system(cmd):
- retval = 1
- else:
- retval = None
- os.remove(tmpname)
- else:
-
- try:
- retval = None
- pager = os.popen(pager_cmd, 'w')
- pager.write(strng)
- pager.close()
- retval = pager.close()
- except IOError:
- msg = None
- if msg.args == (32, 'Broken pipe'):
- retval = None
- else:
- retval = 1
- except OSError:
- retval = 1
-
- if retval is not None:
- page_dumb(strng, screen_lines = screen_lines)
-
-
-
- def page_file(fname, start = 0, pager_cmd = None):
- pager_cmd = get_pager_cmd(pager_cmd)
- pager_cmd += ' ' + get_pager_start(pager_cmd, start)
-
- try:
- if os.environ['TERM'] in ('emacs', 'dumb'):
- raise EnvironmentError
- os.environ['TERM'] in ('emacs', 'dumb')
- xsys(pager_cmd + ' ' + fname)
- except:
-
- try:
- if start > 0:
- start -= 1
-
- page(open(fname).read(), start)
- print 'Unable to show file', `fname`
-
-
-
-
- def snip_print(str, width = 75, print_full = 0, header = ''):
- if print_full == 1:
- page(header + str)
- return 0
- print header,
- if len(str) < width:
- print str
- snip = 0
- else:
- whalf = int((width - 5) / 2)
- print str[:whalf] + ' <...> ' + str[-whalf:]
- snip = 1
- if snip and print_full == 2:
- if raw_input(header + ' Snipped. View (y/n)? [N]').lower() == 'y':
- page(str)
-
-
- return snip
-
-
- def belong(candidates, checklist):
- return [ x in checklist for x in candidates ]
-
-
- def uniq_stable(elems):
- unique = []
- unique_dict = { }
- for nn in elems:
- if nn not in unique_dict:
- unique.append(nn)
- unique_dict[nn] = None
- continue
-
- return unique
-
-
- class NLprinter:
-
- def __init__(self):
- self.depth = 0
-
-
- def __call__(self, lst, pos = '', **kw):
- kw.setdefault('indent', ' ')
- kw.setdefault('sep', ': ')
- kw.setdefault('start', 0)
- kw.setdefault('stop', len(lst))
- start = kw['start']
- del kw['start']
- stop = kw['stop']
- del kw['stop']
- if self.depth == 0 and 'header' in kw.keys():
- print kw['header']
-
- for idx in range(start, stop):
- elem = lst[idx]
- if type(elem) == type([]):
- self.depth += 1
- self.__call__(elem, itpl('$pos$idx,'), **kw)
- self.depth -= 1
- continue
- self
- printpl(kw['indent'] * self.depth + '$pos$idx$kw["sep"]$elem')
-
-
-
- nlprint = NLprinter()
-
- def all_belong(candidates, checklist):
- return [] - ([] in [ x in checklist for x in candidates ])
-
-
- def sort_compare(lst1, lst2, inplace = 1):
- if not inplace:
- lst1 = lst1[:]
- lst2 = lst2[:]
-
- lst1.sort()
- lst2.sort()
- return lst1 == lst2
-
-
- def list2dict(lst):
- dic = { }
- for k, v in lst:
- dic[k] = v
-
- return dic
-
-
- def list2dict2(lst, default = ''):
- dic = { }
- for elem in lst:
- if type(elem) in (types.ListType, types.TupleType):
- size = len(elem)
- if size == 0:
- pass
- elif size == 1:
- dic[elem] = default
- else:
- k = elem[0]
- v = elem[1:]
- if len(v) == 1:
- v = v[0]
-
- dic[k] = v
- size == 0
- dic[elem] = default
-
- return dic
-
-
- def flatten(seq):
- return [ x for subseq in seq for x in subseq ]
-
-
- def get_slice(seq, start = 0, stop = None, step = 1):
- if stop == None:
- stop = len(seq)
-
-
- item = lambda i: seq[i]
- return map(item, xrange(start, stop, step))
-
-
- def chop(seq, size):
-
- chunk = lambda i: seq[i:i + size]
- return map(chunk, xrange(0, len(seq), size))
-
-
- def with_obj(object, **args):
- object.__dict__.update(args)
-
-
- def setattr_list(obj, alist, nspace = None):
- if nspace is None:
- call_frame = sys._getframe().f_back
- nspace = call_frame.f_locals
-
- if type(alist) in StringTypes:
- alist = alist.split()
-
- for attr in alist:
- val = eval(attr, nspace)
- setattr(obj, attr, val)
-
-
-
- def getattr_list(obj, alist, *args):
- if type(alist) in StringTypes:
- alist = alist.split()
-
- if args:
- if len(args) == 1:
- default = args[0]
- return (None, map)((lambda attr: getattr(obj, attr, default)), alist)
- raise ValueError, 'getattr_list() takes only one optional argument'
- args
- return (map,)((lambda attr: getattr(obj, attr)), alist)
-
-
- def map_method(method, object_list, *argseq, **kw):
- out_list = []
- idx = 0
- for object in object_list:
-
- try:
- handler = getattr(object, method)
- except AttributeError:
- out_list.append(None)
-
- if argseq:
- args = (map,)((lambda lst: lst[idx]), argseq)
- out_list.append(handler(args, **kw))
- else:
- out_list.append(handler(**kw))
- idx += 1
-
- return out_list
-
-
- def get_class_members(cls):
- ret = dir(cls)
- if hasattr(cls, '__bases__'):
- for base in cls.__bases__:
- ret.extend(get_class_members(base))
-
-
- return ret
-
-
- def dir2(obj):
- words = dir(obj)
- if hasattr(obj, '__class__'):
- words.append('__class__')
- words.extend(get_class_members(obj.__class__))
-
- may_have_dupes = False
- if hasattr(obj, 'trait_names'):
-
- try:
- words.extend(obj.trait_names())
- may_have_dupes = True
- except TypeError:
- pass
- except:
- None<EXCEPTION MATCH>TypeError
-
-
- None<EXCEPTION MATCH>TypeError
- if hasattr(obj, '_getAttributeNames'):
-
- try:
- words.extend(obj._getAttributeNames())
- may_have_dupes = True
- except TypeError:
- pass
- except:
- None<EXCEPTION MATCH>TypeError
-
-
- None<EXCEPTION MATCH>TypeError
- if may_have_dupes:
- words = list(set(words))
- words.sort()
-
- return _[1]
-
-
- def import_fail_info(mod_name, fns = None):
- if fns == None:
- warn('Loading of %s failed.\n' % (mod_name,))
- else:
- warn('Loading of %s from %s failed.\n' % (fns, mod_name))
-
-
- class NotGiven:
- pass
-
-
- def popkey(dct, key, default = NotGiven):
-
- try:
- val = dct[key]
- except KeyError:
- if default is NotGiven:
- raise
- default is NotGiven
- return default
-
- del dct[key]
- return val
-
-
- def wrap_deprecated(func, suggest = '<nothing>'):
-
- def newFunc(*args, **kwargs):
- warnings.warn('Call to deprecated function %s, use %s instead' % (func.__name__, suggest), category = DeprecationWarning, stacklevel = 2)
- return func(*args, **kwargs)
-
- return newFunc
-
-
- def _num_cpus_unix():
- return os.sysconf('SC_NPROCESSORS_ONLN')
-
-
- def _num_cpus_darwin():
- p = subprocess.Popen([
- 'sysctl',
- '-n',
- 'hw.ncpu'], stdout = subprocess.PIPE)
- return p.stdout.read()
-
-
- def _num_cpus_windows():
- return os.environ.get('NUMBER_OF_PROCESSORS')
-
-
- def num_cpus():
- ncpufuncs = {
- 'Linux': _num_cpus_unix,
- 'Darwin': _num_cpus_darwin,
- 'Windows': _num_cpus_windows,
- 'Microsoft': _num_cpus_windows }
- ncpufunc = ncpufuncs.get(platform.system(), _num_cpus_unix)
-
- try:
- ncpus = max(1, int(ncpufunc()))
- except:
- ncpus = 1
-
- return ncpus
-
-