Commit 4bf12543 authored by Guido van Rossum's avatar Guido van Rossum

Undocumented feature: MHMailbox sets the msg object's _mh_msgno

attribute to the (stringized) message number (if this attribute is
settable).  This is useful so users of this class can report the
correct message number (e.g. when classifying spam).

Also added a blank line before the first method of each class.
parent d560ace3
...@@ -10,6 +10,7 @@ __all__ = ["UnixMailbox","MmdfMailbox","MHMailbox","Maildir","BabylMailbox", ...@@ -10,6 +10,7 @@ __all__ = ["UnixMailbox","MmdfMailbox","MHMailbox","Maildir","BabylMailbox",
"PortableUnixMailbox"] "PortableUnixMailbox"]
class _Mailbox: class _Mailbox:
def __init__(self, fp, factory=rfc822.Message): def __init__(self, fp, factory=rfc822.Message):
self.fp = fp self.fp = fp
self.seekp = 0 self.seekp = 0
...@@ -35,6 +36,7 @@ class _Mailbox: ...@@ -35,6 +36,7 @@ class _Mailbox:
class _Subfile: class _Subfile:
def __init__(self, fp, start, stop): def __init__(self, fp, start, stop):
self.fp = fp self.fp = fp
self.start = start self.start = start
...@@ -94,6 +96,7 @@ class _Subfile: ...@@ -94,6 +96,7 @@ class _Subfile:
# Recommended to use PortableUnixMailbox instead! # Recommended to use PortableUnixMailbox instead!
class UnixMailbox(_Mailbox): class UnixMailbox(_Mailbox):
def _search_start(self): def _search_start(self):
while 1: while 1:
pos = self.fp.tell() pos = self.fp.tell()
...@@ -161,6 +164,7 @@ class PortableUnixMailbox(UnixMailbox): ...@@ -161,6 +164,7 @@ class PortableUnixMailbox(UnixMailbox):
class MmdfMailbox(_Mailbox): class MmdfMailbox(_Mailbox):
def _search_start(self): def _search_start(self):
while 1: while 1:
line = self.fp.readline() line = self.fp.readline()
...@@ -181,6 +185,7 @@ class MmdfMailbox(_Mailbox): ...@@ -181,6 +185,7 @@ class MmdfMailbox(_Mailbox):
class MHMailbox: class MHMailbox:
def __init__(self, dirname, factory=rfc822.Message): def __init__(self, dirname, factory=rfc822.Message):
import re import re
pat = re.compile('^[1-9][0-9]*$') pat = re.compile('^[1-9][0-9]*$')
...@@ -204,7 +209,12 @@ class MHMailbox: ...@@ -204,7 +209,12 @@ class MHMailbox:
return None return None
fn = self.boxes.pop(0) fn = self.boxes.pop(0)
fp = open(os.path.join(self.dirname, fn)) fp = open(os.path.join(self.dirname, fn))
return self.factory(fp) msg = self.factory(fp)
try:
msg._mh_msgno = fn
except (AttributeError, TypeError):
pass
return msg
class Maildir: class Maildir:
...@@ -238,6 +248,7 @@ class Maildir: ...@@ -238,6 +248,7 @@ class Maildir:
class BabylMailbox(_Mailbox): class BabylMailbox(_Mailbox):
def _search_start(self): def _search_start(self):
while 1: while 1:
line = self.fp.readline() line = self.fp.readline()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment