diff options
author | Benjamin Peterson <benjamin@python.org> | 2010-10-13 22:02:44 +0000 |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2010-10-13 22:02:44 +0000 |
commit | c50c7215a9cac546ba8daadec33d2b658019438c (patch) | |
tree | 185964df9cd76f247da9162b98b2820c804f9658 | |
parent | b575ce687336258a92069b6255f60b48fc2e9566 (diff) | |
download | cpython-c50c7215a9cac546ba8daadec33d2b658019438c.tar.gz |
Merged revisions 85429 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85429 | benjamin.peterson | 2010-10-13 16:59:36 -0500 (Wed, 13 Oct 2010) | 1 line
remove obselete import implementation #7287
........
-rw-r--r-- | Demo/imputil/knee.py | 123 | ||||
-rw-r--r-- | Misc/NEWS | 6 |
2 files changed, 6 insertions, 123 deletions
diff --git a/Demo/imputil/knee.py b/Demo/imputil/knee.py deleted file mode 100644 index 435b51c3cc..0000000000 --- a/Demo/imputil/knee.py +++ /dev/null @@ -1,123 +0,0 @@ -"""An Python re-implementation of hierarchical module import. - -This code is intended to be read, not executed. However, it does work --- all you need to do to enable it is "import knee". - -(The name is a pun on the klunkier predecessor of this module, "ni".) - -""" - -import sys, imp, builtins - - -# Replacement for __import__() -def import_hook(name, globals=None, locals=None, fromlist=None): - 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 "__name__" not in globals: - return None - pname = globals['__name__'] - if "__path__" in globals: - parent = sys.modules[pname] - assert globals is parent.__dict__ - return parent - if '.' in pname: - i = pname.rfind('.') - pname = pname[:i] - parent = sys.modules[pname] - assert parent.__name__ == pname - return parent - return None - -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 - if parent: - qname = head - parent = None - 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 = tail[:i], tail[i+1:] - mname = "%s.%s" % (m.__name__, head) - m = import_module(head, mname, m) - if not m: - raise ImportError("No module named " + mname) - 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 - else: - ensure_fromlist(m, all, 1) - 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) - -def import_module(partname, fqname, parent): - try: - return sys.modules[fqname] - except KeyError: - pass - try: - fp, pathname, stuff = imp.find_module(partname, - parent and 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 reload(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) - - -# Save the original hooks -original_import = builtins.__import__ - -# Now install our hooks -builtins.__import__ = import_hook @@ -703,6 +703,12 @@ Documentation - Issue #7829: Document in dis that bytecode is an implementation detail. +Tools/Demos +----------- + +- Issue #7287: Demo/imputil/knee.py was removed. + + What's New in Python 3.1.2? =========================== |