home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import __builtin__
- import exceptions
- import pdb
- import pprint
- import re
- import types
- from IPython.genutils import dir2
-
- def create_typestr2type_dicts(dont_include_in_type2type2str = [
- 'lambda']):
- typenamelist = []
- for tname in dir(types):
- if tname[-4:] == 'Type':
- typenamelist.append(tname)
- continue
-
- typestr2type = { }
- type2typestr = { }
- for tname in typenamelist:
- name = tname[:-4].lower()
- obj = getattr(types, tname)
- typestr2type[name] = getattr(types, tname)
- if name in dont_include_in_type2type2str:
- type2typestr[obj] = name
- continue
-
- return (typestr2type, type2typestr)
-
- (typestr2type, type2typestr) = create_typestr2type_dicts()
-
- def is_type(obj, typestr_or_type):
- if typestr_or_type == 'all':
- return True
- if type(typestr_or_type) == types.TypeType:
- test_type = typestr_or_type
- else:
- test_type = typestr2type.get(typestr_or_type, False)
- if test_type:
- return isinstance(obj, test_type)
- return False
-
-
- def show_hidden(str, show_all = False):
- if not show_all and str.startswith('__'):
- pass
- return not str.startswith('_')
-
-
- class NameSpace(object):
-
- def __init__(self, obj, name_pattern = '*', type_pattern = 'all', ignore_case = True, show_all = True):
- self.show_all = show_all
- self.object = obj
- self.name_pattern = name_pattern
- self.type_pattern = type_pattern
- self.ignore_case = ignore_case
- if type(obj) == types.DictType:
- self._ns = obj
- else:
- kv = []
- for key in dir2(obj):
- if isinstance(key, basestring):
-
- try:
- kv.append((key, getattr(obj, key)))
- except AttributeError:
- pass
- except:
- None<EXCEPTION MATCH>AttributeError
-
-
- None<EXCEPTION MATCH>AttributeError
-
- self._ns = dict(kv)
-
-
- def get_ns(self):
- return self.filter(self.name_pattern, self.type_pattern)
-
- ns = property(get_ns)
-
- def get_ns_names(self):
- return self.ns.keys()
-
- ns_names = property(get_ns_names, doc = 'List of objects in name space that match the type and name patterns.')
-
- def filter(self, name_pattern, type_pattern):
-
- def glob_filter(lista, name_pattern, hidehidden, ignore_case):
- pattern = name_pattern.replace('*', '.*').replace('?', '.')
- if ignore_case:
- reg = re.compile(pattern + '$', re.I)
- else:
- reg = re.compile(pattern + '$')
- result = _[1]
- return result
-
- ns = self._ns
- all = [ (x, ns[x]) for x in glob_filter(ns.keys(), name_pattern, self.show_all, self.ignore_case) ]
- all = _[2]
- all = dict(all)
- return all
-
-
-
- def list_namespace(namespace, type_pattern, filter, ignore_case = False, show_all = False):
- pattern_list = filter.split('.')
- if len(pattern_list) == 1:
- ns = NameSpace(namespace, name_pattern = pattern_list[0], type_pattern = type_pattern, ignore_case = ignore_case, show_all = show_all)
- return ns.ns
- ns = NameSpace(namespace, name_pattern = pattern_list[0], type_pattern = 'all', ignore_case = ignore_case, show_all = show_all)
- res = { }
- nsdict = ns.ns
- for name, obj in nsdict.iteritems():
- ns = list_namespace(obj, type_pattern, '.'.join(pattern_list[1:]), ignore_case = ignore_case, show_all = show_all)
- for inner_name, inner_obj in ns.iteritems():
- res['%s.%s' % (name, inner_name)] = inner_obj
-
-
- return res
-
-