From 7ea1d972d1519ac8cb8051ff0e99d02e9ef71251 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 22 Dec 1998 13:50:33 +0000 Subject: [PATCH] The usual. # Message to all python-checkins readers: we have a problem with the # CVS mirroring software. You can't check out the latest changes yet. # We hope to have fixed this by noon EST today. --- Lib/dos-8x3/cgihttps.py | 2 +- Lib/dos-8x3/compilea.py | 27 +++++++++++++++++++-------- Lib/dos-8x3/exceptio.py | 12 ++++++++++-- Lib/dos-8x3/simpleht.py | 4 ++-- Lib/dos-8x3/socketse.py | 25 ++++++++++++------------- Lib/dos-8x3/userlist.py | 2 +- 6 files changed, 45 insertions(+), 27 deletions(-) diff --git a/Lib/dos-8x3/cgihttps.py b/Lib/dos-8x3/cgihttps.py index 24bdeef7974..806ef575556 100755 --- a/Lib/dos-8x3/cgihttps.py +++ b/Lib/dos-8x3/cgihttps.py @@ -145,7 +145,7 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): if line[:1] in string.whitespace: accept.append(string.strip(line)) else: - accept = accept + string.split(line[7:]) + accept = accept + string.split(line[7:], ',') env['HTTP_ACCEPT'] = string.joinfields(accept, ',') ua = self.headers.getheader('user-agent') if ua: diff --git a/Lib/dos-8x3/compilea.py b/Lib/dos-8x3/compilea.py index f695b3aa841..69a59b3a912 100755 --- a/Lib/dos-8x3/compilea.py +++ b/Lib/dos-8x3/compilea.py @@ -13,10 +13,11 @@ See module py_compile for details of the actual byte-compilation. """ import os +import stat import sys import py_compile -def compile_dir(dir, maxlevels=10, ddir=None): +def compile_dir(dir, maxlevels=10, ddir=None, force=0): """Byte-compile all modules in the given directory tree. Arguments (only dir is required): @@ -25,6 +26,7 @@ def compile_dir(dir, maxlevels=10, ddir=None): maxlevels: maximum recursion level (default 10) ddir: if given, purported directory name (this is the directory name that will show up in error messages) + force: if 1, force compilation, even if timestamps are up-to-date """ print 'Listing', dir, '...' @@ -43,6 +45,11 @@ def compile_dir(dir, maxlevels=10, ddir=None): if os.path.isfile(fullname): head, tail = name[:-3], name[-3:] if tail == '.py': + cfile = fullname + (__debug__ and 'c' or 'o') + ftime = os.stat(fullname)[stat.ST_MTIME] + try: ctime = os.stat(cfile)[stat.ST_MTIME] + except os.error: ctime = 0 + if (ctime > ftime) and not force: continue print 'Compiling', fullname, '...' try: py_compile.compile(fullname, None, dfile) @@ -58,40 +65,44 @@ def compile_dir(dir, maxlevels=10, ddir=None): name != os.curdir and name != os.pardir and \ os.path.isdir(fullname) and \ not os.path.islink(fullname): - compile_dir(fullname, maxlevels - 1, dfile) + compile_dir(fullname, maxlevels - 1, dfile, force) -def compile_path(skip_curdir=1, maxlevels=0): +def compile_path(skip_curdir=1, maxlevels=0, force=0): """Byte-compile all module on sys.path. Arguments (all optional): skip_curdir: if true, skip current directory (default true) maxlevels: max recursion level (default 0) + force: as for compile_dir() (default 0) """ for dir in sys.path: if (not dir or dir == os.curdir) and skip_curdir: print 'Skipping current directory' else: - compile_dir(dir, maxlevels) + compile_dir(dir, maxlevels, None, force) def main(): """Script main program.""" import getopt try: - opts, args = getopt.getopt(sys.argv[1:], 'ld:') + opts, args = getopt.getopt(sys.argv[1:], 'lfd:') except getopt.error, msg: print msg - print "usage: compileall [-l] [-d destdir] [directory ...]" + print "usage: compileall [-l] [-f] [-d destdir] [directory ...]" print "-l: don't recurse down" + print "-f: force rebuild even if timestamps are up-to-date" print "-d destdir: purported directory name for error messages" - print "if no arguments, -l sys.path is assumed" + print "if no directory arguments, -l sys.path is assumed" sys.exit(2) maxlevels = 10 ddir = None + force = 0 for o, a in opts: if o == '-l': maxlevels = 0 if o == '-d': ddir = a + if o == '-f': force = 1 if ddir: if len(args) != 1: print "-d destdir require exactly one directory argument" @@ -99,7 +110,7 @@ def main(): try: if args: for dir in args: - compile_dir(dir, maxlevels, ddir) + compile_dir(dir, maxlevels, ddir, force) else: compile_path() except KeyboardInterrupt: diff --git a/Lib/dos-8x3/exceptio.py b/Lib/dos-8x3/exceptio.py index 9c733ce2e96..12da416b8c3 100644 --- a/Lib/dos-8x3/exceptio.py +++ b/Lib/dos-8x3/exceptio.py @@ -12,9 +12,11 @@ tricky uses of IOError may break, but the most common uses should work. Here is a rundown of the class hierarchy. You can change this by editing this file, but it isn't recommended. The class names described here are expected -to be found by the bltinmodule.c file. +to be found by the bltinmodule.c file. If you add classes here, you must +modify bltinmodule.c or the exceptions won't be available in the __builtin__ +module, nor will they be accessible from C. -The classes with a `*' are new as of Python 1.5. They are defined as tuples +The classes with a `*' are new since Python 1.5. They are defined as tuples containing the derived exceptions when string-based exceptions are used. If you define your own class based exceptions, they should be derived from Exception. @@ -33,6 +35,9 @@ Exception(*) | +-- EOFError +-- RuntimeError + | | + | +-- NotImplementedError(*) + | +-- NameError +-- AttributeError +-- SyntaxError @@ -130,6 +135,9 @@ class OSError(EnvironmentError): class RuntimeError(StandardError): pass +class NotImplementedError(RuntimeError): + pass + class SystemError(StandardError): pass diff --git a/Lib/dos-8x3/simpleht.py b/Lib/dos-8x3/simpleht.py index 71268558f70..9260e7e479b 100755 --- a/Lib/dos-8x3/simpleht.py +++ b/Lib/dos-8x3/simpleht.py @@ -64,7 +64,7 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): self.send_error(403, "Directory listing not supported") return None try: - f = open(path) + f = open(path, 'rb') except IOError: self.send_error(404, "File not found") return None @@ -148,7 +148,7 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): def test(HandlerClass = SimpleHTTPRequestHandler, - ServerClass = SocketServer.TCPServer): + ServerClass = BaseHTTPServer.HTTPServer): BaseHTTPServer.test(HandlerClass, ServerClass) diff --git a/Lib/dos-8x3/socketse.py b/Lib/dos-8x3/socketse.py index 0d0caac7723..23f3a8e8be3 100755 --- a/Lib/dos-8x3/socketse.py +++ b/Lib/dos-8x3/socketse.py @@ -273,18 +273,6 @@ class UDPServer(TCPServer): pass -if hasattr(socket, 'AF_UNIX'): - - class UnixStreamServer(TCPServer): - - address_family = socket.AF_UNIX - - - class UnixDatagramServer(UDPServer): - - address_family = socket.AF_UNIX - - class ForkingMixIn: """Mix-in class to handle each request in a new process.""" @@ -339,6 +327,17 @@ class ForkingTCPServer(ForkingMixIn, TCPServer): pass class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass +if hasattr(socket, 'AF_UNIX'): + + class UnixStreamServer(TCPServer): + address_family = socket.AF_UNIX + + class UnixDatagramServer(UDPServer): + address_family = socket.AF_UNIX + + class ThreadingUnixStreamServer(ThreadingMixIn, UnixStreamServer): pass + + class ThreadingUnixDatagramServer(ThreadingMixIn, UnixDatagramServer): pass class BaseRequestHandler: @@ -351,7 +350,7 @@ class BaseRequestHandler: defines a handle() method. The handle() method can find the request as self.request, the - client address as self.client_request, and the server (in case it + client address as self.client_address, and the server (in case it needs access to per-server information) as self.server. Since a separate instance is created for each request, the handle() method can define arbitrary other instance variariables. diff --git a/Lib/dos-8x3/userlist.py b/Lib/dos-8x3/userlist.py index 5dfd182807f..1d5065fa245 100755 --- a/Lib/dos-8x3/userlist.py +++ b/Lib/dos-8x3/userlist.py @@ -19,7 +19,7 @@ class UserList: def __setitem__(self, i, item): self.data[i] = item def __delitem__(self, i): del self.data[i] def __getslice__(self, i, j): - userlist = UserList() + userlist = self.__class__() userlist.data[:] = self.data[i:j] return userlist def __setslice__(self, i, j, list):