mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
fdd302820e
commit
7ea1d972d1
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue