From e821cb6f2470d082ad87105b574b506fe1e5d5d4 Mon Sep 17 00:00:00 2001 From: "R. David Murray" Date: Mon, 8 Mar 2010 17:48:38 +0000 Subject: 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. ........ --- Doc/Makefile | 4 ++++ Misc/NEWS | 3 +++ Tools/scripts/README | 1 + Tools/scripts/serve.py | 31 +++++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100755 Tools/scripts/serve.py diff --git a/Doc/Makefile b/Doc/Makefile index cc47e40..31670ad 100644 --- a/Doc/Makefile +++ b/Doc/Makefile @@ -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 diff --git a/Misc/NEWS b/Misc/NEWS index 7022280..541f13e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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. diff --git a/Tools/scripts/README b/Tools/scripts/README index b1c167e..f664f21 100644 --- a/Tools/scripts/README +++ b/Tools/scripts/README @@ -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 diff --git a/Tools/scripts/serve.py b/Tools/scripts/serve.py new file mode 100755 index 0000000..61de63d --- /dev/null +++ b/Tools/scripts/serve.py @@ -0,0 +1,31 @@ +#!/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() -- cgit v0.12