From 3583cff5a9d55b9c1bc17b5d82670e5e6b0fc10d Mon Sep 17 00:00:00 2001
From: Georg Brandl <georg@python.org>
Date: Sun, 30 Apr 2006 18:14:54 +0000
Subject: Patch #1472854: make the rlcompleter.Completer class usable on non-
 UNIX platforms.

---
 Doc/lib/librlcompleter.tex | 16 +++++++++-------
 Lib/rlcompleter.py         |  8 ++++++--
 Lib/test/test_sundry.py    |  6 +-----
 Misc/NEWS                  |  3 +++
 4 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/Doc/lib/librlcompleter.tex b/Doc/lib/librlcompleter.tex
index b2a1eba7..cb2ac59 100644
--- a/Doc/lib/librlcompleter.tex
+++ b/Doc/lib/librlcompleter.tex
@@ -2,18 +2,17 @@
          Completion function for GNU readline}
 
 \declaremodule{standard}{rlcompleter}
-  \platform{Unix}
 \sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}
-\modulesynopsis{Python identifier completion for the GNU readline library.}
+\modulesynopsis{Python identifier completion, suitable for the GNU readline library.}
 
-The \module{rlcompleter} module defines a completion function for
+The \module{rlcompleter} module defines a completion function suitable for
 the \refmodule{readline} module by completing valid Python identifiers
 and keywords.
 
-This module is \UNIX-specific due to its dependence on the
-\refmodule{readline} module.
-
-The \module{rlcompleter} module defines the \class{Completer} class.
+When this module is imported on a \UNIX\ platform with the \module{readline}
+module available, an instance of the \class{Completer} class is automatically
+created and its \method{complete} method is set as the \module{readline}
+completer.
 
 Example:
 
@@ -44,6 +43,9 @@ else:
 \end{verbatim}
 
 
+On platforms without \module{readline}, the \class{Completer} class defined
+by this module can still be used for custom purposes.
+
 \subsection{Completer Objects \label{completer-objects}}
 
 Completer objects have the following method:
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index 1d29167..dab0cb9 100644
--- a/Lib/rlcompleter.py
+++ b/Lib/rlcompleter.py
@@ -39,7 +39,6 @@ used, and this module (and the readline module) are silently inactive.
 
 """
 
-import readline
 import __builtin__
 import __main__
 
@@ -147,4 +146,9 @@ def get_class_members(klass):
             ret = ret + get_class_members(base)
     return ret
 
-readline.set_completer(Completer().complete)
+try:
+    import readline
+except ImportError:
+    pass
+else:
+    readline.set_completer(Completer().complete)
diff --git a/Lib/test/test_sundry.py b/Lib/test/test_sundry.py
index af13684..f19467c 100644
--- a/Lib/test/test_sundry.py
+++ b/Lib/test/test_sundry.py
@@ -50,11 +50,7 @@ import pstats
 import py_compile
 import pydoc
 import rexec
-try:
-    import rlcompleter   # not available on Windows
-except ImportError:
-    if verbose:
-        print "skipping rlcompleter"
+import rlcompleter
 import sched
 import smtplib
 import sndhdr
diff --git a/Misc/NEWS b/Misc/NEWS
index bfbdd73..3bd5a1f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -86,6 +86,9 @@ Extension Modules
 Library
 -------
 
+- Patch #1472854: make the rlcompleter.Completer class usable on non-
+  UNIX platforms.
+
 - Patch #1470846: fix urllib2 ProxyBasicAuthHandler.
 
 - Patch #1475231: ``doctest`` has a new ``SKIP`` option, which causes
-- 
cgit v0.12

