[Python-3000-checkins] r56474 - in python/branches/py3k-struni/Lib: email/generator.py email/header.py mailbox.py test/test_mailbox.py

guido.van.rossum python-3000-checkins at python.org
Sat Jul 21 02:21:26 CEST 2007


Author: guido.van.rossum
Date: Sat Jul 21 02:21:26 2007
New Revision: 56474

Modified:
   python/branches/py3k-struni/Lib/email/generator.py
   python/branches/py3k-struni/Lib/email/header.py
   python/branches/py3k-struni/Lib/mailbox.py
   python/branches/py3k-struni/Lib/test/test_mailbox.py
Log:
SF patch# 1757839 by Alexandre Vassalotti -- make test_mailbox and
test_old_mailbox pass.


Modified: python/branches/py3k-struni/Lib/email/generator.py
==============================================================================
--- python/branches/py3k-struni/Lib/email/generator.py	(original)
+++ python/branches/py3k-struni/Lib/email/generator.py	Sat Jul 21 02:21:26 2007
@@ -21,14 +21,20 @@
 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.

Modified: python/branches/py3k-struni/Lib/email/header.py
==============================================================================
--- python/branches/py3k-struni/Lib/email/header.py	(original)
+++ python/branches/py3k-struni/Lib/email/header.py	Sat Jul 21 02:21:26 2007
@@ -253,7 +253,7 @@
             # 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 @@
                 # 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.

Modified: python/branches/py3k-struni/Lib/mailbox.py
==============================================================================
--- python/branches/py3k-struni/Lib/mailbox.py	(original)
+++ python/branches/py3k-struni/Lib/mailbox.py	Sat Jul 21 02:21:26 2007
@@ -498,15 +498,15 @@
         """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 @@
 
     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 @@
     """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)
 

Modified: python/branches/py3k-struni/Lib/test/test_mailbox.py
==============================================================================
--- python/branches/py3k-struni/Lib/test/test_mailbox.py	(original)
+++ python/branches/py3k-struni/Lib/test/test_mailbox.py	Sat Jul 21 02:21:26 2007
@@ -58,7 +58,6 @@
         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 _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 @@
         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 @@
     _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)


More information about the Python-3000-checkins mailing list