Commit e821cb6f authored by R. David Murray's avatar R. David Murray

Merged revisions 78416,78430 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78416 | dirkjan.ochtman | 2010-02-23 23:12:11 -0500 (Tue, 23 Feb 2010) | 1 line

  Issue #8004: add a serve target to the Doc Makefile.
........
  r78430 | dirkjan.ochtman | 2010-02-24 12:06:31 -0500 (Wed, 24 Feb 2010) | 1 line

  Add some notes about Tools/scripts/serve.py.
........
parent 61605d76
......@@ -27,6 +27,7 @@ help:
@echo " suspicious to check for suspicious markup in output text"
@echo " coverage to check documentation coverage for library and C API"
@echo " dist to create a \"dist\" directory with archived docs for download"
@echo " serve to serve the documentation on the localhost (8000)"
# Note: if you update versions here, do the same in make.bat and README.txt
checkout:
......@@ -149,3 +150,6 @@ dist:
check:
$(PYTHON) tools/rstlint.py -i tools
serve:
../Tools/scripts/serve.py build/html
......@@ -832,6 +832,9 @@ Build
Documentation
------------
- A small wsgi server was added as Tools/scripts/serve.py, and is used to
implement a local documentation server via 'make serve' in the doc directory.
- Updating `Using Python` documentation to include description of CPython's
-J and -X options.
......
......@@ -56,6 +56,7 @@ pysource.py Find Python source files
redemo.py Basic regular expression demonstration facility
reindent.py Change .py files to use 4-space indents.
rgrep.py Reverse grep through a file (useful for big logfiles)
serve.py Small wsgiref-based web server, used in make serve in Doc
setup.py Install all scripts listed here
suff.py Sort a list of files by suffix
svneol.py Sets svn:eol-style on all files in directory
......
#!/usr/bin/env python
'''
Small wsgiref based web server. Takes a path to serve from and an
optional port number (defaults to 8000), then tries to serve files.
Mime types are guessed from the file names, 404 errors are thrown
if the file is not found. Used for the make serve target in Doc.
'''
import sys
import os
import mimetypes
from wsgiref import simple_server, util
def app(environ, respond):
fn = os.path.join(path, environ['PATH_INFO'][1:])
if '.' not in fn.split(os.path.sep)[-1]:
fn = os.path.join(fn, 'index.html')
type = mimetypes.guess_type(fn)[0]
if os.path.exists(fn):
respond('200 OK', [('Content-Type', type)])
return util.FileWrapper(open(fn))
else:
respond('404 Not Found', [('Content-Type', 'text/plain')])
return ['not found']
if __name__ == '__main__':
path = sys.argv[1]
port = int(sys.argv[2]) if len(sys.argv) > 2 else 8000
httpd = simple_server.make_server('', port, app)
httpd.serve_forever()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment