diff options
author | Guido van Rossum <guido@python.org> | 2007-07-21 00:21:26 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-07-21 00:21:26 (GMT) |
commit | d4eda825c7ed83822868e2e6d794e2ad4dc6c955 (patch) | |
tree | 3e66eeefe7aed19451a9483d93ac427019ab3a79 | |
parent | bf4806bac5697bd50e6ca41fcf6838f93ed9a511 (diff) | |
download | cpython-d4eda825c7ed83822868e2e6d794e2ad4dc6c955.zip cpython-d4eda825c7ed83822868e2e6d794e2ad4dc6c955.tar.gz cpython-d4eda825c7ed83822868e2e6d794e2ad4dc6c955.tar.bz2 |
SF patch# 1757839 by Alexandre Vassalotti -- make test_mailbox and
test_old_mailbox pass.
-rw-r--r-- | Lib/email/generator.py | 10 | ||||
-rw-r--r-- | Lib/email/header.py | 4 | ||||
-rwxr-xr-x | Lib/mailbox.py | 12 | ||||
-rw-r--r-- | Lib/test/test_mailbox.py | 5 |
4 files changed, 17 insertions, 14 deletions
diff --git a/Lib/email/generator.py b/Lib/email/generator.py index 02b4495..c480229 100644 --- a/Lib/email/generator.py +++ b/Lib/email/generator.py @@ -21,14 +21,20 @@ NL = '\n' fcre = re.compile(r'^From ', re.MULTILINE) def _is8bitstring(s): - if isinstance(s, str): + if isinstance(s, bytes): try: str(s, 'us-ascii') + return True except UnicodeError: + pass + elif isinstance(s, str): + try: + s.decode('us-ascii') return True + except UnicodeError: + pass return False - class Generator: """Generates output from a Message object tree. diff --git a/Lib/email/header.py b/Lib/email/header.py index 675b68d..5ea1871 100644 --- a/Lib/email/header.py +++ b/Lib/email/header.py @@ -253,7 +253,7 @@ class Header: # We need to test that the string can be converted to unicode and # back to a byte string, given the input and output codecs of the # charset. - if isinstance(s, str): + if isinstance(s, bytes): # Possibly raise UnicodeError if the byte string can't be # converted to a unicode with the input codec of the charset. incodec = charset.input_codec or 'us-ascii' @@ -263,7 +263,7 @@ class Header: # than the iput coded. Still, use the original byte string. outcodec = charset.output_codec or 'us-ascii' ustr.encode(outcodec, errors) - elif isinstance(s, str): + elif isinstance(s, bytes): # Now we have to be sure the unicode string can be converted # to a byte string with a reasonable output codec. We want to # use the byte string in the chunk. diff --git a/Lib/mailbox.py b/Lib/mailbox.py index fdb118d..2a6b24c 100755 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -498,15 +498,15 @@ class _singlefileMailbox(Mailbox): """Initialize a single-file mailbox.""" Mailbox.__init__(self, path, factory, create) try: - f = open(self._path, 'rb+') + f = open(self._path, 'r+') except IOError as e: if e.errno == errno.ENOENT: if create: - f = open(self._path, 'wb+') + f = open(self._path, 'w+') else: raise NoSuchMailboxError(self._path) elif e.errno == errno.EACCES: - f = open(self._path, 'rb') + f = open(self._path, 'r') else: raise self._file = f @@ -1761,11 +1761,11 @@ class _ProxyFile: def read(self, size=None): """Read bytes.""" - return self._read(size, self._file.read) + return str(self._read(size, self._file.read)) def readline(self, size=None): """Read a line.""" - return self._read(size, self._file.readline) + return str(self._read(size, self._file.readline)) def readlines(self, sizehint=None): """Read multiple lines.""" @@ -1900,7 +1900,7 @@ def _create_carefully(path): """Create a file if it doesn't exist and open for reading and writing.""" fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR) try: - return open(path, 'rb+') + return open(path, 'r+') finally: os.close(fd) diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index e5930d8..91e7847 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -58,7 +58,6 @@ class TestMailbox(TestBase): self._box = self._factory(self._path) def tearDown(self): - self._box.close() self._delete_recursively(self._path) def test_add(self): @@ -695,7 +694,6 @@ class TestMaildir(TestMailbox): class _TestMboxMMDF(TestMailbox): def tearDown(self): - self._box.close() self._delete_recursively(self._path) for lock_remnant in glob.glob(self._path + '.*'): test_support.unlink(lock_remnant) @@ -736,7 +734,7 @@ class _TestMboxMMDF(TestMailbox): self._box._file.seek(0) contents = self._box._file.read() self._box.close() - self.assert_(contents == open(self._path, 'rb').read()) + self.assert_(contents == open(self._path, 'r').read()) self._box = self._factory(self._path) def test_lock_conflict(self): @@ -918,7 +916,6 @@ class TestBabyl(TestMailbox): _factory = lambda self, path, factory=None: mailbox.Babyl(path, factory) def tearDown(self): - self._box.close() self._delete_recursively(self._path) for lock_remnant in glob.glob(self._path + '.*'): test_support.unlink(lock_remnant) |