]> granicus.if.org Git - python/commitdiff
Issue #10818: Remove deprecated pydoc.serve() function
authorVictor Stinner <victor.stinner@haypocalc.com>
Tue, 24 May 2011 23:41:22 +0000 (01:41 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Tue, 24 May 2011 23:41:22 +0000 (01:41 +0200)
The pydoc module has a new enhanced web server.

Doc/whatsnew/3.3.rst
Lib/pydoc.py
Misc/NEWS

index 7b6327e28e575afc25a134fb2a5158231bfc131e..2b9bd11d7dc61a55e46bf5b818526f4404b2b0bc 100644 (file)
@@ -127,8 +127,9 @@ os
 pydoc
 -----
 
-The Tk GUI has been removed from the :mod:`ssl` module: ``pydoc -g`` has been
-deprecated in Python 3.2.
+The Tk GUI and the :func:`~pydoc.serve` function have been removed from the
+:mod:`pydoc` module: ``pydoc -g`` and :func:`~pydoc.serve` have been deprecated
+in Python 3.2.
 
 
 sys
index 17ae29ff47e83a3452b0649383d88f5b7ea8e59d..548e71c74cd61fdac4deb622cdf7e1c28235e2c1 100755 (executable)
@@ -2051,91 +2051,6 @@ def apropos(key):
         warnings.filterwarnings('ignore') # ignore problems during import
         ModuleScanner().run(callback, key, onerror=onerror)
 
-# --------------------------------------------------- Web browser interface
-
-def serve(port, callback=None, completer=None):
-    import http.server, email.message, select
-
-    msg = 'the pydoc.serve() function is deprecated'
-    warnings.warn(msg, DeprecationWarning, stacklevel=2)
-
-    class DocHandler(http.server.BaseHTTPRequestHandler):
-        def send_document(self, title, contents):
-            try:
-                self.send_response(200)
-                self.send_header('Content-Type', 'text/html; charset=UTF-8')
-                self.end_headers()
-                self.wfile.write(html.page(title, contents).encode('utf-8'))
-            except IOError: pass
-
-        def do_GET(self):
-            path = self.path
-            if path[-5:] == '.html': path = path[:-5]
-            if path[:1] == '/': path = path[1:]
-            if path and path != '.':
-                try:
-                    obj = locate(path, forceload=1)
-                except ErrorDuringImport as value:
-                    self.send_document(path, html.escape(str(value)))
-                    return
-                if obj:
-                    self.send_document(describe(obj), html.document(obj, path))
-                else:
-                    self.send_document(path,
-'no Python documentation found for %s' % repr(path))
-            else:
-                heading = html.heading(
-'<big><big><strong>Python: Index of Modules</strong></big></big>',
-'#ffffff', '#7799ee')
-                def bltinlink(name):
-                    return '<a href="%s.html">%s</a>' % (name, name)
-                names = [x for x in sys.builtin_module_names if x != '__main__']
-                contents = html.multicolumn(names, bltinlink)
-                indices = ['<p>' + html.bigsection(
-                    'Built-in Modules', '#ffffff', '#ee77aa', contents)]
-
-                seen = {}
-                for dir in sys.path:
-                    indices.append(html.index(dir, seen))
-                contents = heading + ' '.join(indices) + '''<p align=right>
-<font color="#909090" face="helvetica, arial"><strong>
-pydoc</strong> by Ka-Ping Yee &lt;ping@lfw.org&gt;</font>'''
-                self.send_document('Index of Modules', contents)
-
-        def log_message(self, *args): pass
-
-    class DocServer(http.server.HTTPServer):
-        def __init__(self, port, callback):
-            host = 'localhost'
-            self.address = (host, port)
-            self.url = 'http://%s:%d/' % (host, port)
-            self.callback = callback
-            self.base.__init__(self, self.address, self.handler)
-
-        def serve_until_quit(self):
-            import select
-            self.quit = False
-            while not self.quit:
-                rd, wr, ex = select.select([self.socket.fileno()], [], [], 1)
-                if rd: self.handle_request()
-            self.server_close()
-
-        def server_activate(self):
-            self.base.server_activate(self)
-            if self.callback: self.callback(self)
-
-    DocServer.base = http.server.HTTPServer
-    DocServer.handler = DocHandler
-    DocHandler.MessageClass = email.message.Message
-    try:
-        try:
-            DocServer(port, callback).serve_until_quit()
-        except (KeyboardInterrupt, select.error):
-            pass
-    finally:
-        if completer: completer()
-
-
 # --------------------------------------- enhanced Web browser interface
 
 def _start_server(urlhandler, port):
index 4b8d00ab14b1493054ef9618f356a9db7e006fc6..f602595984bdee88e7591696c2f2b4a73fda4c03 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -161,8 +161,9 @@ Core and Builtins
 Library
 -------
 
-- Issue #10818: Remove the Tk GUI of the pydoc module (pydoc -g has been
-  deprecated in Python 3.2).
+- Issue #10818: Remove the Tk GUI and the serve() function of the pydoc module,
+  pydoc -g has been deprecated in Python 3.2 and it has a new enhanced web
+  server.
 
 - Issue #1441530: In imaplib, read the data in one chunk to speed up large
   reads and simplify code.