[Python-checkins] CVS: python/dist/src/Lib mailbox.py,1.19,1.20 shlex.py,1.8,1.9

Fred L. Drake python-dev@python.org
Sun, 9 Jul 2000 09:44:29 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory slayer.i.sourceforge.net:/tmp/cvs-serv26713
Modified Files:
	mailbox.py shlex.py 
Log Message:
Make tabnanny happy.
mailbox.py: Convert to 4-space indents.
Index: mailbox.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/mailbox.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -r1.19 -r1.20
*** mailbox.py	2000年04月04日 03:31:39	1.19
--- mailbox.py	2000年07月09日 16:44:26	1.20
***************
*** 8,279 ****
 
 class _Mailbox:
 
! def __init__(self, fp):
! self.fp = fp
! self.seekp = 0
! 
! def seek(self, pos, whence=0):
! if whence==1: # Relative to current position
! self.pos = self.pos + pos
! if whence==2: # Relative to file's end
! self.pos = self.stop + pos
! else: # Default - absolute position
! self.pos = self.start + pos
! 
! def next(self):
! while 1:
! self.fp.seek(self.seekp)
! try:
! self._search_start()
! except EOFError:
! self.seekp = self.fp.tell()
! return None
! start = self.fp.tell()
! self._search_end()
! self.seekp = stop = self.fp.tell()
! if start <> stop:
! break
! return rfc822.Message(_Subfile(self.fp, start, stop))
 
 class _Subfile:
 
! def __init__(self, fp, start, stop):
! self.fp = fp
! self.start = start
! self.stop = stop
! self.pos = self.start
! 
! def read(self, length = None):
! if self.pos >= self.stop:
! return ''
! remaining = self.stop - self.pos
! if length is None or length < 0:
! length = remaining
! elif length > remaining:
! length = remaining
! self.fp.seek(self.pos)
! data = self.fp.read(length)
! self.pos = self.fp.tell()
! return data
! 
! def readline(self, length = None):
! if self.pos >= self.stop:
! return ''
! if length is None:
! length = self.stop - self.pos
! self.fp.seek(self.pos)
! data = self.fp.readline(length)
! self.pos = self.fp.tell()
! return data
! 
! def readlines(self, sizehint = -1):
! lines = []
! while 1:
! line = self.readline()
! if not line:
! break
! lines.append(line)
! if sizehint >= 0:
! sizehint = sizehint - len(line)
! if sizehint <= 0:
! break
! return lines
! 
! def tell(self):
! return self.pos - self.start
! 
! def seek(self, pos, whence=0):
! if whence == 0:
! self.pos = self.start + pos
! elif whence == 1:
! self.pos = self.pos + pos
! elif whence == 2:
! self.pos = self.stop + pos
 
! def close(self):
! del self.fp
 
 class UnixMailbox(_Mailbox):
 
! def _search_start(self):
! while 1:
! 			pos = self.fp.tell()
! line = self.fp.readline()
! if not line:
! raise EOFError
! if line[:5] == 'From ' and self._isrealfromline(line):
! 				self.fp.seek(pos)
! return
! 
! def _search_end(self):
! 		self.fp.readline()	# Throw away header line
! while 1:
! pos = self.fp.tell()
! line = self.fp.readline()
! if not line:
! return
! if line[:5] == 'From ' and self._isrealfromline(line):
! self.fp.seek(pos)
! return
! 
! # An overridable mechanism to test for From-line-ness.
! # You can either specify a different regular expression
! # or define a whole new _isrealfromline() method.
! # Note that this only gets called for lines starting with
! # the 5 characters "From ".
! 
! _fromlinepattern = r"From \s*[^\s]+\s+\w\w\w\s+\w\w\w\s+\d?\d\s+" \
! r"\d?\d:\d\d(:\d\d)?(\s+[^\s]+)?\s+\d\d\d\d\s*$"
! _regexp = None
! 
! def _isrealfromline(self, line):
! if not self._regexp:
! import re
! self._regexp = re.compile(self._fromlinepattern)
! return self._regexp.match(line)
 
 class MmdfMailbox(_Mailbox):
 
- def _search_start(self):
- while 1:
- line = self.fp.readline()
- if not line:
- raise EOFError
- if line[:5] == '001円001円001円001円\n':
- return
- 
- def _search_end(self):
- while 1:
- pos = self.fp.tell()
- line = self.fp.readline()
- if not line:
- return
- if line == '001円001円001円001円\n':
- self.fp.seek(pos)
- return
 
 class MHMailbox:
 
- def __init__(self, dirname):
- import re
- pat = re.compile('^[0-9][0-9]*$')
- self.dirname = dirname
- files = os.listdir(self.dirname)
- self.boxes = []
- for f in files:
- if pat.match(f):
- self.boxes.append(f)
- 
- def next(self):
- if not self.boxes:
- return None
- fn = self.boxes[0]
- del self.boxes[0]
- fp = open(os.path.join(self.dirname, fn))
- return rfc822.Message(fp)
 
 class Maildir:
 
! # Qmail directory mailbox
 
- def __init__(self, dirname):
- import string
- self.dirname = dirname
- self.boxes = []
- 
- # check for new mail
- newdir = os.path.join(self.dirname, 'new')
- for file in os.listdir(newdir):
- if len(string.split(file, '.')) > 2:
- self.boxes.append(os.path.join(newdir, file))
- 
- # Now check for current mail in this maildir
- curdir = os.path.join(self.dirname, 'cur')
- for file in os.listdir(curdir):
- if len(string.split(file, '.')) > 2:
- self.boxes.append(os.path.join(curdir, file))
- 
- def next(self):
- if not self.boxes:
- return None
- fn = self.boxes[0]
- del self.boxes[0]
- fp = open(os.path.join(self.dirname, fn))
- return rfc822.Message(fp)
 
 class BabylMailbox(_Mailbox):
 
! def _search_start(self):
! while 1:
! line = self.fp.readline()
! if not line:
! raise EOFError
! if line == '*** EOOH ***\n':
! return
! 
! def _search_end(self):
! while 1:
! pos = self.fp.tell()
! line = self.fp.readline()
! if not line:
! return
! if line == '037円014円\n':
! self.fp.seek(pos)
! return
 
 
 def _test():
! import time
! import sys
! import string
! import os
! 
! args = sys.argv[1:]
! if not args:
! for key in 'MAILDIR', 'MAIL', 'LOGNAME', 'USER':
! if os.environ.has_key(key):
! mbox = os.environ[key]
! break
! else:
! print "$MAIL, $LOGNAME nor $USER set -- who are you?"
! return
 else:
! mbox = args[0]
! if mbox[:1] == '+':
! mbox = os.environ['HOME'] + '/Mail/' + mbox[1:]
! elif not '/' in mbox:
! mbox = '/usr/mail/' + mbox
! if os.path.isdir(mbox):
! if os.path.isdir(os.path.join(mbox, 'cur')):
! mb = Maildir(mbox)
! else:
! mb = MHMailbox(mbox)
! else:
! fp = open(mbox, 'r')
! mb = UnixMailbox(fp)
! 
! msgs = []
! while 1:
! msg = mb.next()
! if msg is None:
! break
! msgs.append(msg)
! if len(args) <= 1:
! msg.fp = None
! if len(args) > 1:
! num = string.atoi(args[1])
! print 'Message %d body:'%num
! msg = msgs[num-1]
! msg.rewindbody()
! sys.stdout.write(msg.fp.read())
 else:
! print 'Mailbox',mbox,'has',len(msgs),'messages:'
! for msg in msgs:
! f = msg.getheader('from') or ""
! s = msg.getheader('subject') or ""
! d = msg.getheader('date') or ""
! print '%20.20s %18.18s %-30.30s'%(f, d[5:], s)
 
 
 if __name__ == '__main__':
! _test()
--- 8,278 ----
 
 class _Mailbox:
+ def __init__(self, fp):
+ self.fp = fp
+ self.seekp = 0
+ 
+ def seek(self, pos, whence=0):
+ if whence==1: # Relative to current position
+ self.pos = self.pos + pos
+ if whence==2: # Relative to file's end
+ self.pos = self.stop + pos
+ else: # Default - absolute position
+ self.pos = self.start + pos
 
! def next(self):
! while 1:
! self.fp.seek(self.seekp)
! try:
! self._search_start()
! except EOFError:
! self.seekp = self.fp.tell()
! return None
! start = self.fp.tell()
! self._search_end()
! self.seekp = stop = self.fp.tell()
! if start <> stop:
! break
! return rfc822.Message(_Subfile(self.fp, start, stop))
! 
 
 class _Subfile:
+ def __init__(self, fp, start, stop):
+ self.fp = fp
+ self.start = start
+ self.stop = stop
+ self.pos = self.start
+ 
+ def read(self, length = None):
+ if self.pos >= self.stop:
+ return ''
+ remaining = self.stop - self.pos
+ if length is None or length < 0:
+ length = remaining
+ elif length > remaining:
+ length = remaining
+ self.fp.seek(self.pos)
+ data = self.fp.read(length)
+ self.pos = self.fp.tell()
+ return data
+ 
+ def readline(self, length = None):
+ if self.pos >= self.stop:
+ return ''
+ if length is None:
+ length = self.stop - self.pos
+ self.fp.seek(self.pos)
+ data = self.fp.readline(length)
+ self.pos = self.fp.tell()
+ return data
 
! def readlines(self, sizehint = -1):
! lines = []
! while 1:
! line = self.readline()
! if not line:
! break
! lines.append(line)
! if sizehint >= 0:
! sizehint = sizehint - len(line)
! if sizehint <= 0:
! break
! return lines
! 
! def tell(self):
! return self.pos - self.start
! 
! def seek(self, pos, whence=0):
! if whence == 0:
! self.pos = self.start + pos
! elif whence == 1:
! self.pos = self.pos + pos
! elif whence == 2:
! self.pos = self.stop + pos
 
! def close(self):
! del self.fp
 
+ 
 class UnixMailbox(_Mailbox):
+ def _search_start(self):
+ while 1:
+ pos = self.fp.tell()
+ line = self.fp.readline()
+ if not line:
+ raise EOFError
+ if line[:5] == 'From ' and self._isrealfromline(line):
+ self.fp.seek(pos)
+ return
 
! def _search_end(self):
! self.fp.readline() # Throw away header line
! while 1:
! pos = self.fp.tell()
! line = self.fp.readline()
! if not line:
! return
! if line[:5] == 'From ' and self._isrealfromline(line):
! self.fp.seek(pos)
! return
! 
! # An overridable mechanism to test for From-line-ness.
! # You can either specify a different regular expression
! # or define a whole new _isrealfromline() method.
! # Note that this only gets called for lines starting with
! # the 5 characters "From ".
! 
! _fromlinepattern = r"From \s*[^\s]+\s+\w\w\w\s+\w\w\w\s+\d?\d\s+" \
! r"\d?\d:\d\d(:\d\d)?(\s+[^\s]+)?\s+\d\d\d\d\s*$"
! _regexp = None
! 
! def _isrealfromline(self, line):
! if not self._regexp:
! import re
! self._regexp = re.compile(self._fromlinepattern)
! return self._regexp.match(line)
! 
 
 class MmdfMailbox(_Mailbox):
+ def _search_start(self):
+ while 1:
+ line = self.fp.readline()
+ if not line:
+ raise EOFError
+ if line[:5] == '001円001円001円001円\n':
+ return
+ 
+ def _search_end(self):
+ while 1:
+ pos = self.fp.tell()
+ line = self.fp.readline()
+ if not line:
+ return
+ if line == '001円001円001円001円\n':
+ self.fp.seek(pos)
+ return
 
 
 class MHMailbox:
+ def __init__(self, dirname):
+ import re
+ pat = re.compile('^[0-9][0-9]*$')
+ self.dirname = dirname
+ files = os.listdir(self.dirname)
+ self.boxes = []
+ for f in files:
+ if pat.match(f):
+ self.boxes.append(f)
+ 
+ def next(self):
+ if not self.boxes:
+ return None
+ fn = self.boxes[0]
+ del self.boxes[0]
+ fp = open(os.path.join(self.dirname, fn))
+ return rfc822.Message(fp)
 
 
 class Maildir:
+ # Qmail directory mailbox
+ 
+ def __init__(self, dirname):
+ import string
+ self.dirname = dirname
+ self.boxes = []
 
! # check for new mail
! newdir = os.path.join(self.dirname, 'new')
! for file in os.listdir(newdir):
! if len(string.split(file, '.')) > 2:
! self.boxes.append(os.path.join(newdir, file))
! 
! # Now check for current mail in this maildir
! curdir = os.path.join(self.dirname, 'cur')
! for file in os.listdir(curdir):
! if len(string.split(file, '.')) > 2:
! self.boxes.append(os.path.join(curdir, file))
! 
! def next(self):
! if not self.boxes:
! return None
! fn = self.boxes[0]
! del self.boxes[0]
! fp = open(os.path.join(self.dirname, fn))
! return rfc822.Message(fp)
 
 
 class BabylMailbox(_Mailbox):
+ def _search_start(self):
+ while 1:
+ line = self.fp.readline()
+ if not line:
+ raise EOFError
+ if line == '*** EOOH ***\n':
+ return
 
! def _search_end(self):
! while 1:
! pos = self.fp.tell()
! line = self.fp.readline()
! if not line:
! return
! if line == '037円014円\n':
! self.fp.seek(pos)
! return
 
 
 def _test():
! import time
! import sys
! import string
! import os
! 
! args = sys.argv[1:]
! if not args:
! for key in 'MAILDIR', 'MAIL', 'LOGNAME', 'USER':
! if os.environ.has_key(key):
! mbox = os.environ[key]
! break
 else:
! print "$MAIL, $LOGNAME nor $USER set -- who are you?"
! return
! else:
! mbox = args[0]
! if mbox[:1] == '+':
! mbox = os.environ['HOME'] + '/Mail/' + mbox[1:]
! elif not '/' in mbox:
! mbox = '/usr/mail/' + mbox
! if os.path.isdir(mbox):
! if os.path.isdir(os.path.join(mbox, 'cur')):
! mb = Maildir(mbox)
 else:
! mb = MHMailbox(mbox)
! else:
! fp = open(mbox, 'r')
! mb = UnixMailbox(fp)
! 
! msgs = []
! while 1:
! msg = mb.next()
! if msg is None:
! break
! msgs.append(msg)
! if len(args) <= 1:
! msg.fp = None
! if len(args) > 1:
! num = string.atoi(args[1])
! print 'Message %d body:'%num
! msg = msgs[num-1]
! msg.rewindbody()
! sys.stdout.write(msg.fp.read())
! else:
! print 'Mailbox',mbox,'has',len(msgs),'messages:'
! for msg in msgs:
! f = msg.getheader('from') or ""
! s = msg.getheader('subject') or ""
! d = msg.getheader('date') or ""
! print '%20.20s %18.18s %-30.30s'%(f, d[5:], s)
 
 
 if __name__ == '__main__':
! _test()
Index: shlex.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/shlex.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -r1.8 -r1.9
*** shlex.py	2000年07月03日 09:56:23	1.8
--- shlex.py	2000年07月09日 16:44:26	1.9
***************
*** 18,22 ****
 self.infile = None
 self.commenters = '#'
! self.wordchars = 'abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'
 self.whitespace = ' \t\r\n'
 self.quotes = '\'"'
--- 18,23 ----
 self.infile = None
 self.commenters = '#'
! self.wordchars = ('abcdfeghijklmnopqrstuvwxyz'
! 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_')
 self.whitespace = ' \t\r\n'
 self.quotes = '\'"'
***************
*** 26,30 ****
 self.debug = 0
 self.token = ''
! 	self.filestack = []
 self.source = None
 if self.debug:
--- 27,31 ----
 self.debug = 0
 self.token = ''
! self.filestack = []
 self.source = None
 if self.debug:
***************
*** 46,50 ****
 print "shlex: popping token " + `tok`
 return tok
! 	# No pushback. Get a token.
 raw = self.read_token()
 # Handle inclusions
--- 47,51 ----
 print "shlex: popping token " + `tok`
 return tok
! # No pushback. Get a token.
 raw = self.read_token()
 # Handle inclusions
***************
*** 89,98 ****
 print "shlex: in state", repr(self.state), \
 "I see character:", repr(nextchar) 
! if self.state == None:
! self.token = '';	# past end of file
 break
 elif self.state == ' ':
 if not nextchar:
! self.state = None;	# end of file
 break
 elif nextchar in self.whitespace:
--- 90,99 ----
 print "shlex: in state", repr(self.state), \
 "I see character:", repr(nextchar) 
! if self.state is None:
! self.token = ''; # past end of file
 break
 elif self.state == ' ':
 if not nextchar:
! self.state = None; # end of file
 break
 elif nextchar in self.whitespace:
***************
*** 100,104 ****
 print "shlex: I see whitespace in whitespace state"
 if self.token:
! break	# emit current token
 else:
 continue
--- 101,105 ----
 print "shlex: I see whitespace in whitespace state"
 if self.token:
! break # emit current token
 else:
 continue
***************
*** 115,119 ****
 self.token = nextchar
 if self.token:
! break	# emit current token
 else:
 continue
--- 116,120 ----
 self.token = nextchar
 if self.token:
! break # emit current token
 else:
 continue
***************
*** 125,129 ****
 elif self.state == 'a':
 if not nextchar:
! self.state = None;	# end of file
 break
 elif nextchar in self.whitespace:
--- 126,130 ----
 elif self.state == 'a':
 if not nextchar:
! self.state = None; # end of file
 break
 elif nextchar in self.whitespace:
***************
*** 132,136 ****
 self.state = ' '
 if self.token:
! break	# emit current token
 else:
 continue
--- 133,137 ----
 self.state = ' '
 if self.token:
! break # emit current token
 else:
 continue
***************
*** 146,150 ****
 self.state = ' '
 if self.token:
! break	# emit current token
 else:
 continue
--- 147,151 ----
 self.state = ' '
 if self.token:
! break # emit current token
 else:
 continue

AltStyle によって変換されたページ (->オリジナル) /