home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- skip_doctest = True
- import sys
- import os
- import os.path as os
- import stat
- import glob
- import new
- import csv
- import datetime
- import types
- import itertools
- import mimetypes
- import StringIO
-
- try:
- import collections
- except ImportError:
- deque = list
-
- deque = collections.deque
-
- try:
- set
- except NameError:
- import sets
- set = sets.Set
-
-
- try:
- sorted
- except NameError:
-
- def sorted(iterator, key = None, reverse = False):
- items = list(iterator)
- if key is not None:
- (items.sort,)((lambda i1, i2: cmp(key(i1), key(i2))))
- else:
- items.sort()
- if reverse:
- items.reverse()
-
- return items
-
-
-
- try:
- GeneratorExit
- except NameError:
- GeneratorExit = SystemExit
-
-
- try:
- import pwd
- except ImportError:
- pwd = None
-
-
- try:
- import grp
- except ImportError:
- grp = None
-
- from IPython.external import simplegeneric
- from IPython.external import path
-
- try:
- from IPython import genutils, generics
- except ImportError:
- genutils = None
- generics = None
-
- from IPython import ipapi
- __all__ = [
- 'ifile',
- 'ils',
- 'iglob',
- 'iwalk',
- 'ipwdentry',
- 'ipwd',
- 'igrpentry',
- 'igrp',
- 'icsv',
- 'ix',
- 'ichain',
- 'isort',
- 'ifilter',
- 'ieval',
- 'ienum',
- 'ienv',
- 'ihist',
- 'ialias',
- 'icap',
- 'idump',
- 'iless']
- os.stat_float_times(True)
-
- class AttrNamespace(object):
-
- def __init__(self, wrapped):
- self.wrapped = wrapped
-
-
- def __getitem__(self, name):
- if name == '_':
- return self.wrapped
-
- try:
- return getattr(self.wrapped, name)
- except AttributeError:
- name == '_'
- name == '_'
- raise KeyError(name)
- except:
- name == '_'
-
-
-
-
- try:
- eval('_', None, AttrNamespace(None))
- except TypeError:
- real_eval = eval
-
- def eval(codestring, _globals, _locals):
- if isinstance(codestring, basestring):
- code = compile(codestring, '_eval', 'eval')
- else:
- code = codestring
- newlocals = { }
- for name in code.co_names:
-
- try:
- newlocals[name] = _locals[name]
- continue
- except KeyError:
- continue
-
-
-
- return real_eval(code, _globals, newlocals)
-
-
- noitem = object()
-
- def item(iterator, index, default = noitem):
- i = index
- if default is noitem:
- raise IndexError(index)
- default is noitem
- return default
-
-
- def getglobals(g):
- if g is None:
- if ipapi is not None:
- api = ipapi.get()
- if api is not None:
- return api.user_ns
-
- return globals()
- return g
-
-
- class Descriptor(object):
-
- def __hash__(self):
- return hash(self.__class__) ^ hash(self.key())
-
-
- def __eq__(self, other):
- if self.__class__ is other.__class__:
- pass
- return self.key() == other.key()
-
-
- def __ne__(self, other):
- if not self.__class__ is not other.__class__:
- pass
- return self.key() != other.key()
-
-
- def key(self):
- pass
-
-
- def name(self):
- key = self.key()
- if key is None:
- return '_'
- return str(key)
-
-
- def attrtype(self, obj):
- pass
-
-
- def valuetype(self, obj):
- pass
-
-
- def value(self, obj):
- pass
-
-
- def doc(self, obj):
- pass
-
-
- def shortdoc(self, obj):
- doc = self.doc(obj)
- if doc is not None:
- doc = doc.strip().splitlines()[0].strip()
-
- return doc
-
-
- def iter(self, obj):
- return xiter(self.value(obj))
-
-
-
- class SelfDescriptor(Descriptor):
-
- def key(self):
- pass
-
-
- def attrtype(self, obj):
- return 'self'
-
-
- def valuetype(self, obj):
- return type(obj)
-
-
- def value(self, obj):
- return obj
-
-
- def __repr__(self):
- return 'Self'
-
-
- selfdescriptor = SelfDescriptor()
-
- class AttributeDescriptor(Descriptor):
- __slots__ = ('_name', '_doc')
-
- def __init__(self, name, doc = None):
- self._name = name
- self._doc = doc
-
-
- def key(self):
- return self._name
-
-
- def doc(self, obj):
- return self._doc
-
-
- def attrtype(self, obj):
- return 'attr'
-
-
- def valuetype(self, obj):
- return type(getattr(obj, self._name))
-
-
- def value(self, obj):
- return getattr(obj, self._name)
-
-
- def __repr__(self):
- if self._doc is None:
- return 'Attribute(%r)' % self._name
- return 'Attribute(%r, %r)' % (self._name, self._doc)
-
-
-
- class IndexDescriptor(Descriptor):
- __slots__ = ('_index',)
-
- def __init__(self, index):
- self._index = index
-
-
- def key(self):
- return self._index
-
-
- def attrtype(self, obj):
- return 'item'
-
-
- def valuetype(self, obj):
- return type(obj[self._index])
-
-
- def value(self, obj):
- return obj[self._index]
-
-
- def __repr__(self):
- return 'Index(%r)' % self._index
-
-
-
- class MethodDescriptor(Descriptor):
- __slots__ = ('_name', '_doc')
-
- def __init__(self, name, doc = None):
- self._name = name
- self._doc = doc
-
-
- def key(self):
- return self._name
-
-
- def doc(self, obj):
- if self._doc is None:
- return getattr(obj, self._name).__doc__
- return self._doc
-
-
- def attrtype(self, obj):
- return 'method'
-
-
- def valuetype(self, obj):
- return type(self.value(obj))
-
-
- def value(self, obj):
- return getattr(obj, self._name)()
-
-
- def __repr__(self):
- if self._doc is None:
- return 'Method(%r)' % self._name
- return 'Method(%r, %r)' % (self._name, self._doc)
-
-
-
- class IterAttributeDescriptor(Descriptor):
- __slots__ = ('_name', '_doc')
-
- def __init__(self, name, doc = None):
- self._name = name
- self._doc = doc
-
-
- def key(self):
- return self._name
-
-
- def doc(self, obj):
- return self._doc
-
-
- def attrtype(self, obj):
- return 'iter'
-
-
- def valuetype(self, obj):
- return noitem
-
-
- def value(self, obj):
- return noitem
-
-
- def iter(self, obj):
- return xiter(getattr(obj, self._name))
-
-
- def __repr__(self):
- if self._doc is None:
- return 'IterAttribute(%r)' % self._name
- return 'IterAttribute(%r, %r)' % (self._name, self._doc)
-
-
-
- class IterMethodDescriptor(Descriptor):
- __slots__ = ('_name', '_doc')
-
- def __init__(self, name, doc = None):
- self._name = name
- self._doc = doc
-
-
- def key(self):
- return self._name
-
-
- def doc(self, obj):
- if self._doc is None:
- return getattr(obj, self._name).__doc__
- return self._doc
-
-
- def attrtype(self, obj):
- return 'itermethod'
-
-
- def valuetype(self, obj):
- return noitem
-
-
- def value(self, obj):
- return noitem
-
-
- def iter(self, obj):
- return xiter(getattr(obj, self._name)())
-
-
- def __repr__(self):
- if self._doc is None:
- return 'IterMethod(%r)' % self._name
- return 'IterMethod(%r, %r)' % (self._name, self._doc)
-
-
-
- class FunctionDescriptor(Descriptor):
- __slots__ = ('_function', '_name', '_doc')
-
- def __init__(self, function, name = None, doc = None):
- self._function = function
- self._name = name
- self._doc = doc
-
-
- def key(self):
- return self._function
-
-
- def name(self):
- if self._name is not None:
- return self._name
- return getattr(self._function, '__xname__', self._function.__name__)
-
-
- def doc(self, obj):
- if self._doc is None:
- return self._function.__doc__
- return self._doc
-
-
- def attrtype(self, obj):
- return 'function'
-
-
- def valuetype(self, obj):
- return type(self._function(obj))
-
-
- def value(self, obj):
- return self._function(obj)
-
-
- def __repr__(self):
- if self._doc is None:
- return 'Function(%r)' % self._name
- return 'Function(%r, %r)' % (self._name, self._doc)
-
-
-
- class Table(object):
-
- class __metaclass__(type):
-
- def __iter__(self):
- return iter(self())
-
-
- def __or__(self, other):
- return self() | other
-
-
- def __add__(self, other):
- return self() + other
-
-
- def __radd__(self, other):
- return other + self()
-
-
- def __getitem__(self, index):
- return self()[index]
-
-
-
- def __getitem__(self, index):
- return item(self, index)
-
-
- def __contains__(self, item):
- for haveitem in self:
- if item == haveitem:
- return True
-
- return False
-
-
- def __or__(self, other):
- if isinstance(other, type) and issubclass(other, (Table, Display)):
- other = other()
- elif not isinstance(other, Display) and not isinstance(other, Table):
- other = ieval(other)
-
- return other.__ror__(self)
-
-
- def __add__(self, other):
- if isinstance(other, type) and issubclass(other, Table):
- other = other()
-
- return ichain(self, other)
-
-
- def __radd__(self, other):
- if isinstance(other, type) and issubclass(other, Table):
- other = other()
-
- return ichain(other, self)
-
-
-
- class Pipe(Table):
-
- class __metaclass__(Table.__metaclass__):
-
- def __ror__(self, input):
- return input | self()
-
-
-
- def __ror__(self, input):
- if isinstance(input, type) and issubclass(input, Table):
- input = input()
-
- self.input = input
- return self
-
-
-
- def xrepr(item, mode = 'default'):
-
- try:
- func = item.__xrepr__
- except AttributeError:
- yield (astyle.style_default, repr(item))
-
-
- try:
- for x in func(mode):
- yield x
- except (KeyboardInterrupt, SystemExit, GeneratorExit):
- raise
- except Exception:
- yield (astyle.style_default, repr(item))
-
-
- xrepr = simplegeneric.generic(xrepr)
-
- def xrepr_none(self, mode = 'default'):
- yield (astyle.style_type_none, repr(self))
-
- xrepr.when_object(None)(xrepr_none)
-
- def xrepr_noitem(self, mode = 'default'):
- yield (2, True)
- yield (astyle.style_nodata, '<?>')
-
- xrepr.when_object(noitem)(xrepr_noitem)
-
- def xrepr_bool(self, mode = 'default'):
- yield (astyle.style_type_bool, repr(self))
-
- xrepr.when_type(bool)(xrepr_bool)
-
- def xrepr_str(self, mode = 'default'):
- if mode == 'cell':
- yield (astyle.style_default, repr(self.expandtabs(tab))[1:-1])
- else:
- yield (astyle.style_default, repr(self))
-
- xrepr.when_type(str)(xrepr_str)
-
- def xrepr_unicode(self, mode = 'default'):
- if mode == 'cell':
- yield (astyle.style_default, repr(self.expandtabs(tab))[2:-1])
- else:
- yield (astyle.style_default, repr(self))
-
- xrepr.when_type(unicode)(xrepr_unicode)
-
- def xrepr_number(self, mode = 'default'):
- yield (1, True)
- yield (astyle.style_type_number, repr(self))
-
- xrepr.when_type(int)(xrepr_number)
- xrepr.when_type(long)(xrepr_number)
- xrepr.when_type(float)(xrepr_number)
-
- def xrepr_complex(self, mode = 'default'):
- yield (astyle.style_type_number, repr(self))
-
- xrepr.when_type(complex)(xrepr_number)
-
- def xrepr_datetime(self, mode = 'default'):
- if mode == 'cell':
- yield (astyle.style_type_datetime, '%04d-%02d-%02d %02d:%02d:%02d.%06d' % (self.year, self.month, self.day, self.hour, self.minute, self.second, self.microsecond))
- else:
- yield (astyle.style_type_datetime, repr(self))
-
- xrepr.when_type(datetime.datetime)(xrepr_datetime)
-
- def xrepr_date(self, mode = 'default'):
- if mode == 'cell':
- yield (astyle.style_type_datetime, '%04d-%02d-%02d' % (self.year, self.month, self.day))
- else:
- yield (astyle.style_type_datetime, repr(self))
-
- xrepr.when_type(datetime.date)(xrepr_date)
-
- def xrepr_time(self, mode = 'default'):
- if mode == 'cell':
- yield (astyle.style_type_datetime, '%02d:%02d:%02d.%06d' % (self.hour, self.minute, self.second, self.microsecond))
- else:
- yield (astyle.style_type_datetime, repr(self))
-
- xrepr.when_type(datetime.time)(xrepr_time)
-
- def xrepr_timedelta(self, mode = 'default'):
- yield (astyle.style_type_datetime, repr(self))
-
- xrepr.when_type(datetime.timedelta)(xrepr_timedelta)
-
- def xrepr_type(self, mode = 'default'):
- if self.__module__ == '__builtin__':
- yield (astyle.style_type_type, self.__name__)
- else:
- yield (astyle.style_type_type, '%s.%s' % (self.__module__, self.__name__))
-
- xrepr.when_type(type)(xrepr_type)
-
- def xrepr_exception(self, mode = 'default'):
- if self.__class__.__module__ == 'exceptions':
- classname = self.__class__.__name__
- else:
- classname = '%s.%s' % (self.__class__.__module__, self.__class__.__name__)
- if mode == 'header' or mode == 'footer':
- yield (astyle.style_error, '%s: %s' % (classname, self))
- else:
- yield (astyle.style_error, classname)
-
- xrepr.when_type(Exception)(xrepr_exception)
-
- def xrepr_listtuple(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- if self.__class__.__module__ == '__builtin__':
- classname = self.__class__.__name__
- else:
- classname = '%s.%s' % (self.__class__.__module__, self.__class__.__name__)
- yield (astyle.style_default, '<%s object with %d items at 0x%x>' % (classname, len(self), id(self)))
- else:
- yield (-1, False)
- if isinstance(self, list):
- yield (astyle.style_default, '[')
- end = ']'
- else:
- yield (astyle.style_default, '(')
- end = ')'
- for i, subself in enumerate(self):
- if i:
- yield (astyle.style_default, ', ')
-
- for part in xrepr(subself, 'default'):
- yield part
-
-
- yield (astyle.style_default, end)
-
- xrepr.when_type(list)(xrepr_listtuple)
- xrepr.when_type(tuple)(xrepr_listtuple)
-
- def xrepr_dict(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- if self.__class__.__module__ == '__builtin__':
- classname = self.__class__.__name__
- else:
- classname = '%s.%s' % (self.__class__.__module__, self.__class__.__name__)
- yield (astyle.style_default, '<%s object with %d items at 0x%x>' % (classname, len(self), id(self)))
- else:
- yield (-1, False)
- if isinstance(self, dict):
- yield (astyle.style_default, '{')
- end = '}'
- else:
- yield (astyle.style_default, 'dictproxy((')
- end = '})'
- for key, value in enumerate(self.iteritems()):
- for part in xrepr(key, 'default'):
- yield part
- None if i else None
-
- yield (astyle.style_default, ': ')
- for part in xrepr(value, 'default'):
- yield part
-
-
- yield (astyle.style_default, end)
-
- xrepr.when_type(dict)(xrepr_dict)
- xrepr.when_type(types.DictProxyType)(xrepr_dict)
-
- def upgradexattr(attr):
- if attr is None:
- return selfdescriptor
- if isinstance(attr, Descriptor):
- return attr
- if isinstance(attr, basestring):
- if attr.endswith('()'):
- if attr.startswith('-'):
- return IterMethodDescriptor(attr[1:-2])
- return MethodDescriptor(attr[:-2])
- attr.endswith('()')
- if attr.startswith('-'):
- return IterAttributeDescriptor(attr[1:])
- return AttributeDescriptor(attr)
- isinstance(attr, basestring)
- if isinstance(attr, (int, long)):
- return IndexDescriptor(attr)
- if callable(attr):
- return FunctionDescriptor(attr)
- raise TypeError("can't handle descriptor %r" % attr)
-
-
- def xattrs(item, mode = 'default'):
-
- try:
- func = item.__xattrs__
- except AttributeError:
- if mode == 'detail':
- for attrname in dir(item):
- yield AttributeDescriptor(attrname)
-
- else:
- yield selfdescriptor
- except:
- mode == 'detail'
-
- for attr in func(mode):
- yield upgradexattr(attr)
-
-
- xattrs = simplegeneric.generic(xattrs)
-
- def xattrs_complex(self, mode = 'default'):
- if mode == 'detail':
- return (AttributeDescriptor('real'), AttributeDescriptor('imag'))
- return (selfdescriptor,)
-
- xattrs.when_type(complex)(xattrs_complex)
-
- def _isdict(item):
-
- try:
- itermeth = item.__class__.__iter__
- except (AttributeError, TypeError):
- return False
-
- if not itermeth is dict.__iter__:
- pass
- return itermeth is types.DictProxyType.__iter__
-
-
- def _isstr(item):
- if not isinstance(item, basestring):
- return False
-
- try:
- itermeth = item.__class__.__iter__
- except AttributeError:
- isinstance(item, basestring)
- isinstance(item, basestring)
- return True
-
- return False
-
-
- def xiter(item):
-
- try:
- func = item.__xiter__
- except AttributeError:
- if _isdict(item):
-
- def items(item):
- fields = ('key', 'value')
- for key, value in item.iteritems():
- yield Fields(fields, key = key, value = value)
-
-
- return items(item)
- if isinstance(item, new.module):
-
- def items(item):
- fields = ('key', 'value')
- for key in sorted(item.__dict__):
- yield Fields(fields, key = key, value = getattr(item, key))
-
-
- return items(item)
- if _isstr(item):
- if not item:
- raise ValueError("can't enter empty string")
- item
- lines = item.splitlines()
- if len(lines) == 1:
-
- def iterone(item):
- yield item
-
- return iterone(item)
- return iter(lines)
- _isstr(item)
- return iter(item)
- isinstance(item, new.module)
-
- return iter(func())
-
- xiter = simplegeneric.generic(xiter)
-
- class ichain(Pipe):
-
- def __init__(self, *iters):
- self.iters = iters
-
-
- def __iter__(self):
- return itertools.chain(*self.iters)
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- for i, item in enumerate(self.iters):
- if i:
- yield (astyle.style_default, '+')
-
- if isinstance(item, Pipe):
- yield (astyle.style_default, '(')
-
- for part in xrepr(item, mode):
- yield part
-
- if isinstance(item, Pipe):
- yield (astyle.style_default, ')')
- continue
-
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- args = []([ repr(it) for it in self.iters ])
- return '%s.%s(%s)' % (self.__class__.__module__, self.__class__.__name__, args)
-
-
-
- class ifile(path.path):
-
- def getmode(self):
- return self.stat().st_mode
-
- mode = property(getmode, None, None, 'Access mode')
-
- def gettype(self):
- data = [
- (stat.S_ISREG, 'file'),
- (stat.S_ISDIR, 'dir'),
- (stat.S_ISCHR, 'chardev'),
- (stat.S_ISBLK, 'blockdev'),
- (stat.S_ISFIFO, 'fifo'),
- (stat.S_ISLNK, 'symlink'),
- (stat.S_ISSOCK, 'socket')]
- lstat = self.lstat()
- m = self.mode
- [](_[2])
- return ', '.join(types)
-
- type = property(gettype, None, None, 'file type (file, directory, link, etc.)')
-
- def getmodestr(self):
- m = self.mode
- data = [
- (stat.S_IRUSR, '-r'),
- (stat.S_IWUSR, '-w'),
- (stat.S_IXUSR, '-x'),
- (stat.S_IRGRP, '-r'),
- (stat.S_IWGRP, '-w'),
- (stat.S_IXGRP, '-x'),
- (stat.S_IROTH, '-r'),
- (stat.S_IWOTH, '-w'),
- (stat.S_IXOTH, '-x')]
- return []([ text[bool(m & bit)] for bit, text in data ])
-
- modestr = property(getmodestr, None, None, 'Access mode as string')
-
- def getblocks(self):
- return self.stat().st_blocks
-
- blocks = property(getblocks, None, None, 'File size in blocks')
-
- def getblksize(self):
- return self.stat().st_blksize
-
- blksize = property(getblksize, None, None, 'Filesystem block size')
-
- def getdev(self):
- return self.stat().st_dev
-
- dev = property(getdev)
-
- def getnlink(self):
- return self.stat().st_nlink
-
- nlink = property(getnlink, None, None, 'Number of links')
-
- def getuid(self):
- return self.stat().st_uid
-
- uid = property(getuid, None, None, 'User id of file owner')
-
- def getgid(self):
- return self.stat().st_gid
-
- gid = property(getgid, None, None, 'Group id of file owner')
-
- def getowner(self):
- stat = self.stat()
-
- try:
- return pwd.getpwuid(stat.st_uid).pw_name
- except KeyError:
- return stat.st_uid
-
-
- owner = property(getowner, None, None, 'Owner name (or id)')
-
- def getgroup(self):
- stat = self.stat()
-
- try:
- return grp.getgrgid(stat.st_gid).gr_name
- except KeyError:
- return stat.st_gid
-
-
- group = property(getgroup, None, None, 'Group name (or id)')
-
- def getadate(self):
- return datetime.datetime.utcfromtimestamp(self.atime)
-
- adate = property(getadate, None, None, 'Access date')
-
- def getcdate(self):
- return datetime.datetime.utcfromtimestamp(self.ctime)
-
- cdate = property(getcdate, None, None, 'Creation date')
-
- def getmdate(self):
- return datetime.datetime.utcfromtimestamp(self.mtime)
-
- mdate = property(getmdate, None, None, 'Modification date')
-
- def mimetype(self):
- return mimetypes.guess_type(self.basename())[0]
-
-
- def encoding(self):
- return mimetypes.guess_type(self.basename())[1]
-
-
- def __repr__(self):
- return 'ifile(%s)' % path._base.__repr__(self)
-
- if sys.platform == 'win32':
- defaultattrs = (None, 'type', 'size', 'modestr', 'mdate')
- else:
- defaultattrs = (None, 'type', 'size', 'modestr', 'owner', 'group', 'mdate')
-
- def __xattrs__(self, mode = 'default'):
- if mode == 'detail':
- return ('name', 'basename()', 'abspath()', 'realpath()', 'type', 'mode', 'modestr', 'stat()', 'lstat()', 'uid', 'gid', 'owner', 'group', 'dev', 'nlink', 'ctime', 'mtime', 'atime', 'cdate', 'mdate', 'adate', 'size', 'blocks', 'blksize', 'isdir()', 'islink()', 'mimetype()', 'encoding()', '-listdir()', '-dirs()', '-files()', '-walk()', '-walkdirs()', '-walkfiles()')
- return self.defaultattrs
-
-
-
- def xiter_ifile(self):
- if self.isdir():
- yield (self / os.pardir).abspath()
- for child in sorted(self.listdir()):
- yield child
-
- else:
- f = self.open('rb')
- for line in f:
- yield line
-
- f.close()
-
- xiter.when_type(ifile)(xiter_ifile)
-
- def xrepr_ifile(self, mode = 'default'):
-
- try:
- if self.isdir():
- name = 'idir'
- style = astyle.style_dir
- else:
- name = 'ifile'
- style = astyle.style_file
- except IOError:
- name = 'ifile'
- style = astyle.style_default
-
- if mode in ('cell', 'header', 'footer'):
- abspath = repr(path._base(self.normpath()))
- if abspath.startswith('u'):
- abspath = abspath[2:-1]
- else:
- abspath = abspath[1:-1]
- if mode == 'cell':
- yield (style, abspath)
- else:
- yield (style, '%s(%s)' % (name, abspath))
- else:
- yield (style, repr(self))
-
- xrepr.when_type(ifile)(xrepr_ifile)
-
- class ils(Table):
-
- def __init__(self, base = os.curdir, dirs = True, files = True):
- self.base = os.path.expanduser(base)
- self.dirs = dirs
- self.files = files
-
-
- def __iter__(self):
- base = ifile(self.base)
- yield (base / os.pardir).abspath()
- for child in sorted(base.listdir()):
- if self.dirs:
- if self.files:
- yield child
- elif child.isdir():
- yield child
-
- self.files
- if self.files:
- if not child.isdir():
- yield child
-
- child.isdir()
-
-
-
- def __xrepr__(self, mode = 'default'):
- return xrepr(ifile(self.base), mode)
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self.base)
-
-
-
- class iglob(Table):
-
- def __init__(self, glob):
- self.glob = glob
-
-
- def __iter__(self):
- for name in glob.glob(self.glob):
- yield ifile(name)
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' and mode == 'footer' or mode == 'cell':
- yield (astyle.style_default, '%s(%r)' % (self.__class__.__name__, self.glob))
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self.glob)
-
-
-
- class iwalk(Table):
-
- def __init__(self, base = os.curdir, dirs = True, files = True):
- self.base = os.path.expanduser(base)
- self.dirs = dirs
- self.files = files
-
-
- def __iter__(self):
- for dirpath, dirnames, filenames in os.walk(self.base):
- if self.dirs:
- for name in sorted(dirnames):
- yield ifile(os.path.join(dirpath, name))
-
-
- if self.files:
- for name in sorted(filenames):
- yield ifile(os.path.join(dirpath, name))
-
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' and mode == 'footer' or mode == 'cell':
- yield (astyle.style_default, '%s(%r)' % (self.__class__.__name__, self.base))
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self.base)
-
-
-
- class ipwdentry(object):
-
- def __init__(self, id):
- self._id = id
- self._entry = None
-
-
- def __eq__(self, other):
- if self.__class__ is other.__class__:
- pass
- return self._id == other._id
-
-
- def __ne__(self, other):
- if not self.__class__ is not other.__class__:
- pass
- return self._id != other._id
-
-
- def _getentry(self):
- if self._entry is None:
- if isinstance(self._id, basestring):
- self._entry = pwd.getpwnam(self._id)
- else:
- self._entry = pwd.getpwuid(self._id)
-
- return self._entry
-
-
- def getname(self):
- if isinstance(self._id, basestring):
- return self._id
- return self._getentry().pw_name
-
- name = property(getname, None, None, 'User name')
-
- def getpasswd(self):
- return self._getentry().pw_passwd
-
- passwd = property(getpasswd, None, None, 'Password')
-
- def getuid(self):
- if isinstance(self._id, basestring):
- return self._getentry().pw_uid
- return self._id
-
- uid = property(getuid, None, None, 'User id')
-
- def getgid(self):
- return self._getentry().pw_gid
-
- gid = property(getgid, None, None, 'Primary group id')
-
- def getgroup(self):
- return igrpentry(self.gid)
-
- group = property(getgroup, None, None, 'Group')
-
- def getgecos(self):
- return self._getentry().pw_gecos
-
- gecos = property(getgecos, None, None, 'Information (e.g. full user name)')
-
- def getdir(self):
- return self._getentry().pw_dir
-
- dir = property(getdir, None, None, '$HOME directory')
-
- def getshell(self):
- return self._getentry().pw_shell
-
- shell = property(getshell, None, None, 'Login shell')
-
- def __xattrs__(self, mode = 'default'):
- return ('name', 'passwd', 'uid', 'gid', 'gecos', 'dir', 'shell')
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self._id)
-
-
-
- class ipwd(Table):
-
- def __iter__(self):
- for entry in pwd.getpwall():
- yield ipwdentry(entry.pw_name)
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' and mode == 'footer' or mode == 'cell':
- yield (astyle.style_default, '%s()' % self.__class__.__name__)
- else:
- yield (astyle.style_default, repr(self))
-
-
-
- class igrpentry(object):
-
- def __init__(self, id):
- self._id = id
- self._entry = None
-
-
- def __eq__(self, other):
- if self.__class__ is other.__class__:
- pass
- return self._id == other._id
-
-
- def __ne__(self, other):
- if not self.__class__ is not other.__class__:
- pass
- return self._id != other._id
-
-
- def _getentry(self):
- if self._entry is None:
- if isinstance(self._id, basestring):
- self._entry = grp.getgrnam(self._id)
- else:
- self._entry = grp.getgrgid(self._id)
-
- return self._entry
-
-
- def getname(self):
- if isinstance(self._id, basestring):
- return self._id
- return self._getentry().gr_name
-
- name = property(getname, None, None, 'Group name')
-
- def getpasswd(self):
- return self._getentry().gr_passwd
-
- passwd = property(getpasswd, None, None, 'Password')
-
- def getgid(self):
- if isinstance(self._id, basestring):
- return self._getentry().gr_gid
- return self._id
-
- gid = property(getgid, None, None, 'Group id')
-
- def getmem(self):
- return self._getentry().gr_mem
-
- mem = property(getmem, None, None, 'Members')
-
- def __xattrs__(self, mode = 'default'):
- return ('name', 'passwd', 'gid', 'mem')
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' and mode == 'footer' or mode == 'cell':
- yield (astyle.style_default, 'group ')
-
- try:
- yield (astyle.style_default, self.name)
- except KeyError:
- if isinstance(self._id, basestring):
- yield (astyle.style_default, self.name_id)
- else:
- yield (astyle.style_type_number, str(self._id))
- except:
- isinstance(self._id, basestring)
-
-
- None<EXCEPTION MATCH>KeyError
- yield (astyle.style_default, repr(self))
-
-
- def __iter__(self):
- for member in self.mem:
- yield ipwdentry(member)
-
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self._id)
-
-
-
- class igrp(Table):
-
- def __iter__(self):
- for entry in grp.getgrall():
- yield igrpentry(entry.gr_name)
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- yield (astyle.style_default, '%s()' % self.__class__.__name__)
- else:
- yield (astyle.style_default, repr(self))
-
-
-
- class Fields(object):
-
- def __init__(self, fieldnames, **fields):
- self._Fields__fieldnames = [ upgradexattr(fieldname) for fieldname in fieldnames ]
- for key, value in fields.iteritems():
- setattr(self, key, value)
-
-
-
- def __xattrs__(self, mode = 'default'):
- return self._Fields__fieldnames
-
-
- def __xrepr__(self, mode = 'default'):
- yield (-1, False)
- if mode == 'header' or mode == 'cell':
- yield (astyle.style_default, self.__class__.__name__)
- yield (astyle.style_default, '(')
- for i, f in enumerate(self._Fields__fieldnames):
- if i:
- yield (astyle.style_default, ', ')
-
- yield (astyle.style_default, f.name())
- yield (astyle.style_default, '=')
- for part in xrepr(getattr(self, f), 'default'):
- yield part
-
-
- yield (astyle.style_default, ')')
- elif mode == 'footer':
- yield (astyle.style_default, self.__class__.__name__)
- yield (astyle.style_default, '(')
- for i, f in enumerate(self._Fields__fieldnames):
- if i:
- yield (astyle.style_default, ', ')
-
- yield (astyle.style_default, f.name())
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
-
- class FieldTable(Table, list):
-
- def __init__(self, *fields):
- Table.__init__(self)
- list.__init__(self)
- self.fields = fields
-
-
- def add(self, **fields):
- self.append(Fields(self.fields, **fields))
-
-
- def __xrepr__(self, mode = 'default'):
- yield (-1, False)
- if mode == 'header' or mode == 'footer':
- yield (astyle.style_default, self.__class__.__name__)
- yield (astyle.style_default, '(')
- for i, f in enumerate(self._FieldTable__fieldnames):
- if i:
- yield (astyle.style_default, ', ')
-
- yield (astyle.style_default, f)
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '<%s.%s object with fields=%r at 0x%x>' % (self.__class__.__module__, self.__class__.__name__, ', '.join(map(repr, self.fields)), id(self))
-
-
-
- class List(list):
-
- def __xattrs__(self, mode = 'default'):
- return xrange(len(self))
-
-
- def __xrepr__(self, mode = 'default'):
- yield (-1, False)
- if mode == 'header' and mode == 'cell' and mode == 'footer' or mode == 'default':
- yield (astyle.style_default, self.__class__.__name__)
- yield (astyle.style_default, '(')
- for i, item in enumerate(self):
- if i:
- yield (astyle.style_default, ', ')
-
- for part in xrepr(item, 'default'):
- yield part
-
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
-
- class ienv(Table):
-
- def __iter__(self):
- fields = ('key', 'value')
- for key, value in os.environ.iteritems():
- yield Fields(fields, key = key, value = value)
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'cell':
- yield (astyle.style_default, '%s()' % self.__class__.__name__)
- else:
- yield (astyle.style_default, repr(self))
-
-
-
- class ihist(Table):
-
- def __init__(self, raw = True):
- self.raw = raw
-
-
- def __iter__(self):
- api = ipapi.get()
- if self.raw:
- for line in api.IP.input_hist_raw:
- yield line.rstrip('\n')
-
- else:
- for line in api.IP.input_hist:
- yield line.rstrip('\n')
-
-
-
-
- class Alias(object):
-
- def __init__(self, name, args, command):
- self.name = name
- self.args = args
- self.command = command
-
-
- def __xattrs__(self, mode = 'default'):
- return ('name', 'args', 'command')
-
-
-
- class ialias(Table):
-
- def __iter__(self):
- api = ipapi.get()
- for args, command in api.IP.alias_table.iteritems():
- yield Alias(name, args, command)
-
-
-
-
- class icsv(Pipe):
-
- def __init__(self, **csvargs):
- self.csvargs = csvargs
-
-
- def __iter__(self):
- input = self.input
- if isinstance(input, ifile):
- input = input.open('rb')
-
- reader = csv.reader(input, **self.csvargs)
- for line in reader:
- yield List(line)
-
-
-
- def __xrepr__(self, mode = 'default'):
- yield (-1, False)
- if mode == 'header' or mode == 'footer':
- input = getattr(self, 'input', None)
- if input is not None:
- for part in xrepr(input, mode):
- yield part
-
- yield (astyle.style_default, ' | ')
-
- yield (astyle.style_default, '%s(' % self.__class__.__name__)
- for name, value in enumerate(self.csvargs.iteritems()):
- yield (astyle.style_default, name)
- None if i else None
- yield (astyle.style_default, '=')
- for part in xrepr(value, 'default'):
- yield part
-
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- args = []([ '%s=%r' % item for item in self.csvargs.iteritems() ])
- return '<%s.%s %s at 0x%x>' % (self.__class__.__module__, self.__class__.__name__, args, id(self))
-
-
-
- class ix(Table):
-
- def __init__(self, cmd):
- self.cmd = cmd
- self._pipeout = None
-
-
- def __iter__(self):
- (_pipein, self._pipeout) = os.popen4(self.cmd)
- _pipein.close()
- for l in self._pipeout:
- yield l.rstrip('\r\n')
-
- self._pipeout.close()
- self._pipeout = None
-
-
- def __del__(self):
- if self._pipeout is not None and not (self._pipeout.closed):
- self._pipeout.close()
-
- self._pipeout = None
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- yield (astyle.style_default, '%s(%r)' % (self.__class__.__name__, self.cmd))
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self.cmd)
-
-
-
- class ifilter(Pipe):
-
- def __init__(self, expr, globals = None, errors = 'raiseifallfail'):
- self.expr = expr
- self.globals = globals
- self.errors = errors
-
-
- def __iter__(self):
- ok = 0
- exc_info = None
- for item in xiter(self.input):
-
- try:
- ok += 1
- continue
- except (KeyboardInterrupt, SystemExit):
- None if callable(self.expr) else (None, None)
- None if callable(self.expr) else (None, None)
- raise
- continue
- except Exception:
- exc = None
- if self.errors == 'drop':
- pass
- elif self.errors == 'keep':
- yield item
- elif self.errors == 'keeperror':
- yield exc
- elif self.errors == 'raise':
- raise
- elif self.errors == 'raiseifallfail':
- if exc_info is None:
- exc_info = sys.exc_info()
-
-
- self.errors == 'drop'
-
- if not ok and exc_info is not None:
- raise exc_info[0], exc_info[1], exc_info[2]
- return None
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- input = getattr(self, 'input', None)
- if input is not None:
- for part in xrepr(input, mode):
- yield part
-
- yield (astyle.style_default, ' | ')
-
- yield (astyle.style_default, '%s(' % self.__class__.__name__)
- for part in xrepr(self.expr, 'default'):
- yield part
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '<%s.%s expr=%r at 0x%x>' % (self.__class__.__module__, self.__class__.__name__, self.expr, id(self))
-
-
-
- class ieval(Pipe):
-
- def __init__(self, expr, globals = None, errors = 'raiseifallfail'):
- self.expr = expr
- self.globals = globals
- self.errors = errors
-
-
- def __iter__(self):
- ok = 0
- exc_info = None
- for item in xiter(self.input):
-
- try:
- yield do(item)
- None if callable(self.expr) else (None, None)
- continue
- except (KeyboardInterrupt, SystemExit):
- None if callable(self.expr) else (None, None)
- None if callable(self.expr) else (None, None)
- raise
- continue
- except Exception:
- exc = None
- if self.errors == 'drop':
- pass
- elif self.errors == 'keep':
- yield item
- elif self.errors == 'keeperror':
- yield exc
- elif self.errors == 'raise':
- raise
- elif self.errors == 'raiseifallfail':
- if exc_info is None:
- exc_info = sys.exc_info()
-
-
- self.errors == 'drop'
-
- if not ok and exc_info is not None:
- raise exc_info[0], exc_info[1], exc_info[2]
- return None
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- input = getattr(self, 'input', None)
- if input is not None:
- for part in xrepr(input, mode):
- yield part
-
- yield (astyle.style_default, ' | ')
-
- yield (astyle.style_default, '%s(' % self.__class__.__name__)
- for part in xrepr(self.expr, 'default'):
- yield part
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '<%s.%s expr=%r at 0x%x>' % (self.__class__.__module__, self.__class__.__name__, self.expr, id(self))
-
-
-
- class ienum(Pipe):
- skip_doctest = True
-
- def __iter__(self):
- fields = ('index', 'object')
- for index, object in enumerate(xiter(self.input)):
- yield Fields(fields, index = index, object = object)
-
-
-
-
- class isort(Pipe):
-
- def __init__(self, key = None, globals = None, reverse = False):
- self.key = key
- self.globals = globals
- self.reverse = reverse
-
-
- def __iter__(self):
- if self.key is None:
- items = sorted(xiter(self.input), reverse = self.reverse)
- elif callable(self.key):
- items = sorted(xiter(self.input), key = self.key, reverse = self.reverse)
- else:
- g = getglobals(self.globals)
- key = compile(self.key, 'ipipe-expression', 'eval')
-
- def realkey(item):
- return eval(key, g, AttrNamespace(item))
-
- items = sorted(xiter(self.input), key = realkey, reverse = self.reverse)
- for item in items:
- yield item
- (None, None)
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- input = getattr(self, 'input', None)
- if input is not None:
- for part in xrepr(input, mode):
- yield part
-
- yield (astyle.style_default, ' | ')
-
- yield (astyle.style_default, '%s(' % self.__class__.__name__)
- for part in xrepr(self.key, 'default'):
- yield part
-
- if self.reverse:
- yield (astyle.style_default, ', ')
- for part in xrepr(True, 'default'):
- yield part
-
-
- yield (astyle.style_default, ')')
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '<%s.%s key=%r reverse=%r at 0x%x>' % (self.__class__.__module__, self.__class__.__name__, self.key, self.reverse, id(self))
-
-
- tab = 3
-
- def _format(field):
- if isinstance(field, str):
- text = repr(field.expandtabs(tab))[1:-1]
- elif isinstance(field, unicode):
- text = repr(field.expandtabs(tab))[2:-1]
- elif isinstance(field, datetime.datetime):
- text = '%04d-%02d-%02d %02d:%02d:%02d.%06d' % (field.year, field.month, field.day, field.hour, field.minute, field.second, field.microsecond)
- elif isinstance(field, datetime.date):
- text = '%04d-%02d-%02d' % (field.year, field.month, field.day)
- else:
- text = repr(field)
- return text
-
-
- class Display(object):
-
- class __metaclass__(type):
-
- def __ror__(self, input):
- return input | self()
-
-
-
- def __init__(self, input = None):
- self.input = input
-
-
- def __ror__(self, input):
- self.input = input
- return self
-
-
- def display(self):
- pass
-
-
-
- class iless(Display):
- cmd = 'less --quit-if-one-screen --LONG-PROMPT --LINE-NUMBERS --chop-long-lines --shift=8 --RAW-CONTROL-CHARS'
-
- def display(self):
-
- try:
- pager = os.popen(self.cmd, 'w')
-
- try:
- for item in xiter(self.input):
- first = False
- for attr in xattrs(item, 'default'):
- if first:
- first = False
- else:
- pager.write(' ')
- attr = upgradexattr(attr)
- if not isinstance(attr, SelfDescriptor):
- pager.write(attr.name())
- pager.write('=')
-
- pager.write(str(attr.value(item)))
-
- pager.write('\n')
- finally:
- pager.close()
-
- except Exception:
- exc = None
- print '%s: %s' % (exc.__class__.__name__, str(exc))
-
-
-
-
- class _RedirectIO(object):
-
- def __init__(self, *args, **kwargs):
- self.stream = StringIO.StringIO()
- self.stdout = sys.stdout
- sys.stdout = self
- self.stderr = sys.stderr
- sys.stderr = self
-
-
- def write(self, text):
- self.stream.write(text)
- self.stdout.write(text)
- if '\n' in text:
- self.stdout.flush()
-
-
-
- def writelines(self, lines):
- self.stream.writelines(lines)
- self.stdout.writelines(lines)
- self.stdout.flush()
-
-
- def restore(self):
- self.stdout.flush()
- self.stderr.flush()
- sys.stdout = self.stdout
- sys.stderr = self.stderr
-
-
-
- class icap(Table):
- skip_doctest = True
-
- def __init__(self, expr, globals = None):
- self.expr = expr
- self.globals = globals
- log = _RedirectIO()
-
- try:
- exec (expr, getglobals(globals))
- finally:
- log.restore()
-
- self.stream = log.stream
-
-
- def __iter__(self):
- self.stream.seek(0)
- for line in self.stream:
- yield line.rstrip('\r\n')
-
-
-
- def __xrepr__(self, mode = 'default'):
- if mode == 'header' or mode == 'footer':
- yield (astyle.style_default, '%s(%r)' % (self.__class__.__name__, self.expr))
- else:
- yield (astyle.style_default, repr(self))
-
-
- def __repr__(self):
- return '%s.%s(%r)' % (self.__class__.__module__, self.__class__.__name__, self.expr)
-
-
-
- def xformat(value, mode, maxlength):
- align = None
- full = True
- width = 0
- text = astyle.Text()
- for style, part in xrepr(value, mode):
- if align is None:
- if isinstance(style, int):
- align = style
- full = part
- continue
- else:
- align = -1
- full = True
-
- if not isinstance(style, int):
- text.append((style, part))
- width += len(part)
- if width >= maxlength and not full:
- text.append((astyle.style_ellisis, '...'))
- width += 3
- break
-
- not full
-
- if align is None:
- align = -1
-
- return (align, width, text)
-
- import astyle
-
- class idump(Display):
- maxattrlength = 200
- style_header = astyle.Style.fromstr('white:black:bold')
-
- def __init__(self, input = None, *attrs):
- Display.__init__(self, input)
- self.attrs = [ upgradexattr(attr) for attr in attrs ]
- self.headerpadchar = ' '
- self.headersepchar = '|'
- self.datapadchar = ' '
- self.datasepchar = '|'
-
-
- def display(self):
- stream = genutils.Term.cout
- allattrs = []
- attrset = set()
- colwidths = { }
- rows = []
- for item in xiter(self.input):
- row = { }
- attrs = self.attrs
- if not attrs:
- attrs = xattrs(item, 'default')
-
- for attr in attrs:
- if attr not in attrset:
- allattrs.append(attr)
- attrset.add(attr)
- colwidths[attr] = len(attr.name())
-
-
- try:
- value = attr.value(item)
- except (KeyboardInterrupt, SystemExit):
- raise
- except Exception:
- exc = None
- value = exc
-
- (align, width, text) = xformat(value, 'cell', self.maxattrlength)
- colwidths[attr] = max(colwidths[attr], width)
- row[attr] = (align, width, text)
-
- rows.append(row)
-
- stream.write('\n')
- for i, attr in enumerate(allattrs):
- attrname = attr.name()
- self.style_header(attrname).write(stream)
- spc = colwidths[attr] - len(attrname)
- if i < len(colwidths) - 1:
- stream.write(self.headerpadchar * spc)
- stream.write(self.headersepchar)
- continue
-
- stream.write('\n')
- for row in rows:
- for i, attr in enumerate(allattrs):
- (align, width, text) = row[attr]
- spc = colwidths[attr] - width
- if align == -1:
- text.write(stream)
- if i < len(colwidths) - 1:
- stream.write(self.datapadchar * spc)
-
- elif align == 0:
- spc = colwidths[attr] - width
- spc1 = spc // 2
- spc2 = spc - spc1
- stream.write(self.datapadchar * spc1)
- text.write(stream)
- if i < len(colwidths) - 1:
- stream.write(self.datapadchar * spc2)
-
- else:
- stream.write(self.datapadchar * spc)
- text.write(stream)
- if i < len(colwidths) - 1:
- stream.write(self.datasepchar)
- continue
-
- stream.write('\n')
-
-
-
-
- class AttributeDetail(Table):
-
- def __init__(self, object, descriptor):
- self.object = object
- self.descriptor = descriptor
-
-
- def __iter__(self):
- return self.descriptor.iter(self.object)
-
-
- def name(self):
- return self.descriptor.name()
-
-
- def attrtype(self):
- return self.descriptor.attrtype(self.object)
-
-
- def valuetype(self):
- return self.descriptor.valuetype(self.object)
-
-
- def doc(self):
- return self.descriptor.doc(self.object)
-
-
- def shortdoc(self):
- return self.descriptor.shortdoc(self.object)
-
-
- def value(self):
- return self.descriptor.value(self.object)
-
-
- def __xattrs__(self, mode = 'default'):
- attrs = ('name()', 'attrtype()', 'valuetype()', 'value()', 'shortdoc()')
- if mode == 'detail':
- attrs += ('doc()',)
-
- return attrs
-
-
- def __xrepr__(self, mode = 'default'):
- yield (-1, True)
- valuetype = self.valuetype()
- if valuetype is not noitem:
- for part in xrepr(valuetype):
- yield part
-
- yield (astyle.style_default, ' ')
-
- yield (astyle.style_default, self.attrtype())
- yield (astyle.style_default, ' ')
- yield (astyle.style_default, self.name())
- yield (astyle.style_default, ' of ')
- for part in xrepr(self.object):
- yield part
-
-
-
-
- try:
- from ibrowse import ibrowse
- except ImportError:
-
- try:
- from igrid import igrid
- except ImportError:
- defaultdisplay = idump
-
- defaultdisplay = igrid
- __all__.append('igrid')
-
- defaultdisplay = ibrowse
- __all__.append('ibrowse')
- if generics is not None:
-
- def display_display(obj):
- return obj.display()
-
- generics.result_display.when_type(Display)(display_display)
-
- def display_tableobject(obj):
- return display_display(defaultdisplay(obj))
-
- generics.result_display.when_type(Table)(display_tableobject)
-
- def display_tableclass(obj):
- return display_tableobject(obj())
-
- generics.result_display.when_type(Table.__metaclass__)(display_tableclass)
- else:
-
- def installdisplayhook():
- _originalhook = sys.displayhook
-
- def displayhook(obj):
- if isinstance(obj, type) and issubclass(obj, Table):
- obj = obj()
-
- if isinstance(obj, Table):
- obj = defaultdisplay(obj)
-
- if isinstance(obj, Display):
- return obj.display()
- _originalhook(obj)
-
- sys.displayhook = displayhook
-
- installdisplayhook()
-