summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-10-13 21:59:36 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-10-13 21:59:36 (GMT)
commitaa96592a59e1a79246283cddf026a72c9a16d11b (patch)
tree5f3254671b77fbc779191cd0ad42c44856f87b71
parent6003ff763305d4d32f80177d77aa41bbb8f7ce34 (diff)
downloadcpython-aa96592a59e1a79246283cddf026a72c9a16d11b.zip
cpython-aa96592a59e1a79246283cddf026a72c9a16d11b.tar.gz
cpython-aa96592a59e1a79246283cddf026a72c9a16d11b.tar.bz2
remove obselete import implementation #7287
-rw-r--r--Demo/imputil/knee.py123
-rw-r--r--Misc/NEWS5
2 files changed, 5 insertions, 123 deletions
diff --git a/Demo/imputil/knee.py b/Demo/imputil/knee.py
deleted file mode 100644
index 435b51c..0000000
--- 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
diff --git a/Misc/NEWS b/Misc/NEWS
index 629c94c..5666c3e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -36,6 +36,11 @@ Extensions
- The Unicode database was updated to 6.0.0.
+Tools/Demos
+-----------
+
+- Issue #7287: Demo/imputil/knee.py was removed.
+
What's New in Python 3.2 Alpha 3?
=================================