mirror of https://github.com/python/cpython
Issue #10818: Remove deprecated pydoc.serve() function
The pydoc module has a new enhanced web server.
This commit is contained in:
parent
383c3fc6b4
commit
6daa33c8ac
|
@ -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
|
||||
|
|
85
Lib/pydoc.py
85
Lib/pydoc.py
|
@ -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 <ping@lfw.org></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):
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue