The usual.

This commit is contained in:
Guido van Rossum 1999-01-25 21:57:29 +00:00
parent dfd8954e36
commit 3e0d319196
6 changed files with 143 additions and 4 deletions

View File

@ -60,6 +60,7 @@ Exception(*)
"""
class Exception:
"""Proposed base class for all exceptions."""
def __init__(self, *args):
self.args = args
@ -75,9 +76,11 @@ class Exception:
return self.args[i]
class StandardError(Exception):
"""Base class for all standard Python exceptions."""
pass
class SyntaxError(StandardError):
"""Invalid syntax."""
filename = lineno = offset = text = None
msg = ""
def __init__(self, *args):
@ -94,8 +97,7 @@ class SyntaxError(StandardError):
return str(self.msg)
class EnvironmentError(StandardError):
"""Base class for exceptions that occur outside the Python system.
Primarily used as a base class for OSError and IOError."""
"""Base class for I/O related errors."""
def __init__(self, *args):
self.args = args
self.errno = None
@ -126,70 +128,94 @@ class EnvironmentError(StandardError):
return StandardError.__str__(self)
class IOError(EnvironmentError):
"""I/O operation failed."""
pass
class OSError(EnvironmentError):
"""Used by the posix module."""
"""OS system call failed."""
pass
class RuntimeError(StandardError):
"""Unspecified run-time error."""
pass
class NotImplementedError(RuntimeError):
"""Method or function hasn't been implemented yet."""
pass
class SystemError(StandardError):
"""Internal error in the Python interpreter.
Please report this to the Python maintainer, along with the traceback,
the Python version, and the hardware/OS platform and version."""
pass
class EOFError(StandardError):
"""Read beyond end of file."""
pass
class ImportError(StandardError):
"""Import can't find module, or can't find name in module."""
pass
class TypeError(StandardError):
"""Inappropriate argument type."""
pass
class ValueError(StandardError):
"""Inappropriate argument value (of correct type)."""
pass
class KeyboardInterrupt(StandardError):
"""Program interrupted by user."""
pass
class AssertionError(StandardError):
"""Assertion failed."""
pass
class ArithmeticError(StandardError):
"""Base class for arithmetic errors."""
pass
class OverflowError(ArithmeticError):
"""Result too large to be represented."""
pass
class FloatingPointError(ArithmeticError):
"""Floating point operation failed."""
pass
class ZeroDivisionError(ArithmeticError):
"""Second argument to a division or modulo operation was zero."""
pass
class LookupError(StandardError):
"""Base class for lookup errors."""
pass
class IndexError(LookupError):
"""Sequence index out of range."""
pass
class KeyError(LookupError):
"""Mapping key not found."""
pass
class AttributeError(StandardError):
"""Attribute not found."""
pass
class NameError(StandardError):
"""Name not found locally or globally."""
pass
class MemoryError(StandardError):
"""Out of memory."""
pass
class SystemExit(Exception):
"""Request to exit from the interpreter."""
def __init__(self, *args):
self.args = args
if len(args) == 0:

View File

@ -331,7 +331,7 @@ class DumbWriter(NullWriter):
self.atbreak = 0
def send_paragraph(self, blankline):
self.file.write('\n' + '\n'*blankline)
self.file.write('\n'*blankline)
self.col = 0
self.atbreak = 0

View File

@ -376,6 +376,9 @@ class Telnet:
def interact(self):
"""Interaction function, emulates a very dumb telnet client."""
if sys.platform == "win32":
self.mt_interact()
return
while 1:
rfd, wfd, xfd = select.select([self, sys.stdin], [], [])
if self in rfd:
@ -393,6 +396,29 @@ class Telnet:
break
self.write(line)
def mt_interact(self):
"""Multithreaded version of interact()."""
import thread
thread.start_new_thread(self.listener, ())
while 1:
line = sys.stdin.readline()
if not line:
break
self.write(line)
def listener(self):
"""Helper for mt_interact() -- this executes in the other thread."""
while 1:
try:
data = self.read_eager()
except EOFError:
print '*** Connection closed by remote host ***'
return
if data:
sys.stdout.write(data)
else:
sys.stdout.flush()
def expect(self, list, timeout=None):
"""Read until one from a list of a regular expressions matches.

82
Lib/dos-8x3/test_rfc.py Normal file
View File

@ -0,0 +1,82 @@
from test_support import verbose
import rfc822, sys
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
def test(msg, results):
fp = StringIO()
fp.write(msg)
fp.seek(0)
m = rfc822.Message(fp)
i = 0
for n, a in m.getaddrlist('to') + m.getaddrlist('cc'):
if verbose:
print 'name:', repr(n), 'addr:', repr(a)
try:
mn, ma = results[i][0], results[i][1]
except IndexError:
print 'extra parsed address:', repr(n), repr(a)
continue
i = i + 1
if mn == n and ma == a:
if verbose:
print ' [matched]'
else:
if verbose:
print ' [no match]'
print 'not found:', repr(n), repr(a)
test('''Date: Wed, 13 Jan 1999 23:57:35 -0500
From: Guido van Rossum <guido@CNRI.Reston.VA.US>
To: "Guido van
: Rossum" <guido@python.org>
Subject: test2
test2
''', [('Guido van\n : Rossum', 'guido@python.org')])
test('''From: Barry <bwarsaw@python.org
To: guido@python.org (Guido: the Barbarian)
Subject: nonsense
test''', [('Guido: the Barbarian', 'guido@python.org'),
])
test('''From: Barry <bwarsaw@python.org
To: guido@python.org (Guido: the Barbarian)
Cc: "Guido: the Madman" <guido@python.org>
test''', [('Guido: the Barbarian', 'guido@python.org'),
('Guido: the Madman', 'guido@python.org')
])
test('''To: "The monster with
the very long name: Guido" <guido@python.org>
test''', [('The monster with\n the very long name: Guido',
'guido@python.org')])
test('''To: "Amit J. Patel" <amitp@Theory.Stanford.EDU>
CC: Mike Fletcher <mfletch@vrtelecom.com>,
"'string-sig@python.org'" <string-sig@python.org>
Cc: fooz@bat.com, bart@toof.com
Cc: goit@lip.com
test''', [('Amit J. Patel', 'amitp@Theory.Stanford.EDU'),
('Mike Fletcher', 'mfletch@vrtelecom.com'),
("'string-sig@python.org'", 'string-sig@python.org'),
('', 'fooz@bat.com'),
('', 'bart@toof.com'),
('', 'goit@lip.com'),
])
# This one is just twisted. I don't know what the proper result should be,
# but it shouldn't be to infloop, which is what used to happen!
test('''To: <[smtp:dd47@mail.xxx.edu]_at_hmhq@hdq-mdm1-imgout.companay.com>
test''', [('', ''),
('', 'dd47@mail.xxx.edu'),
('', '_at_hmhq@hdq-mdm1-imgout.companay.com')
])

View File

@ -49,3 +49,4 @@ class UserList:
def index(self, item): return self.data.index(item)
def reverse(self): self.data.reverse()
def sort(self, *args): apply(self.data.sort, args)
def extend(self, list): self.data.extend(list)

View File

@ -54,6 +54,7 @@ Tom Christiansen
Vadim Chugunov
Steve Clift
Matt Conway
Greg Couch
Steve Cousins
Drew Csillag
Tom Culliton
@ -82,6 +83,7 @@ Niels Ferguson
Sebastian Fernandez
Nils Fischbeck
Robin Friedrich
Ivan Frohe
Jim Fulton
Peter Funk
Lele Gaifax
@ -224,6 +226,7 @@ Dirk Soede
Per Spilling
Greg Stein
Dan Stromberg
Nathan Sullivan
Neale Pickett
Dan Pierson
RajGopal Srinivasan
@ -257,6 +260,7 @@ Gerry Wiener
Sue Williams
Frank Willison
Dik Winter
Blake Winton
Lars Wirzenius
Stefan Witzel
Richard Wolff