home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import __builtin__
- import imp
- import sys
-
- def deep_import_hook(name, globals = None, locals = None, fromlist = None, level = -1):
- parent = determine_parent(globals)
- (q, tail) = find_head_package(parent, name)
- m = load_tail(q, tail)
- if not fromlist:
- return q
- if hasattr(m, '__path__'):
- ensure_fromlist(m, fromlist)
-
- return m
-
-
- def determine_parent(globals):
- if not globals or not globals.has_key('__name__'):
- return None
- pname = globals['__name__']
- if globals.has_key('__path__'):
- parent = sys.modules[pname]
- return parent
- if '.' in pname:
- i = pname.rfind('.')
- pname = pname[:i]
- parent = sys.modules[pname]
- return parent
-
-
- def find_head_package(parent, name):
- if '.' in name:
- i = name.find('.')
- head = name[:i]
- tail = name[i + 1:]
- else:
- head = name
- tail = ''
- if parent:
- qname = '%s.%s' % (parent.__name__, head)
- else:
- qname = head
- q = import_module(head, qname, parent)
- if q:
- return (q, tail)
- raise ImportError, 'No module named ' + qname
-
-
- def load_tail(q, tail):
- m = q
- while tail:
- i = tail.find('.')
- if i < 0:
- i = len(tail)
-
- head = tail[:i]
- tail = tail[i + 1:]
- mname = m.__name__
- m = import_module(head, mname, m)
- if not m:
- raise ImportError, 'No module named ' + mname
- m
- return m
-
-
- def ensure_fromlist(m, fromlist, recursive = 0):
- for sub in fromlist:
- if sub == '*':
- if not recursive:
-
- try:
- all = m.__all__
- except AttributeError:
- pass
-
- ensure_fromlist(m, all, 1)
- continue
- continue
-
- if sub != '*' and not hasattr(m, sub):
- subname = '%s.%s' % (m.__name__, sub)
- submod = import_module(sub, subname, m)
- if not submod:
- raise ImportError, 'No module named ' + subname
- submod
- continue
-
-
- found_now = { }
-
- def import_module(partname, fqname, parent):
- if found_now.has_key(fqname):
-
- try:
- return sys.modules[fqname]
- except KeyError:
- pass
- except:
- None<EXCEPTION MATCH>KeyError
-
-
- None<EXCEPTION MATCH>KeyError
- print 'Reloading', fqname
- found_now[fqname] = 1
-
- try:
- if parent:
- pass
- (fp, pathname, stuff) = imp.find_module(partname, parent.__path__)
- except ImportError:
- return None
-
-
- try:
- m = imp.load_module(fqname, fp, pathname, stuff)
- finally:
- if fp:
- fp.close()
-
-
- if parent:
- setattr(parent, partname, m)
-
- return m
-
-
- def deep_reload_hook(module):
- name = module.__name__
- if '.' not in name:
- return import_module(name, name, None)
- i = name.rfind('.')
- pname = name[:i]
- parent = sys.modules[pname]
- return import_module(name[i + 1:], name, parent)
-
- original_reload = __builtin__.reload
-
- def reload(module, exclude = [
- 'sys',
- '__builtin__',
- '__main__']):
- global found_now
- for i in exclude:
- found_now[i] = 1
-
- original_import = __builtin__.__import__
- __builtin__.__import__ = deep_import_hook
-
- try:
- ret = deep_reload_hook(module)
- finally:
- __builtin__.__import__ = original_import
- found_now = { }
-
- return ret
-
-