Merged revisions 83392,83426 via svnmerge from
authorGeorg Brandl <georg@python.org>
Sun, 1 Aug 2010 22:05:31 +0000 (22:05 +0000)
committerGeorg Brandl <georg@python.org>
Sun, 1 Aug 2010 22:05:31 +0000 (22:05 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/release27-maint

................
  r83392 | georg.brandl | 2010-08-01 10:22:05 +0200 (So, 01 Aug 2010) | 1 line

  #8471: reset _SpoofOut.buf to an empty string when truncating; if Unicode had been output previously, it had been coerced to a Unicode string, potentially making subsequent prints behave differently or raise UnicodeErrors.
................
  r83426 | georg.brandl | 2010-08-01 21:06:51 +0200 (So, 01 Aug 2010) | 27 lines

  Merged revisions 83370,83372-83374,83384 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/branches/py3k

  ........
    r83370 | georg.brandl | 2010-07-31 23:51:48 +0200 (Sa, 31 Jul 2010) | 5 lines

    #8198: the Helper class should not save the stdin and stdout objects
    at import time, rather by default use the current streams like the
    other APIs that output help.
  ........
    r83372 | georg.brandl | 2010-08-01 00:05:54 +0200 (So, 01 Aug 2010) | 1 line

    #4007: remove *.a and *.so.X.Y files in "make clean".
  ........
    r83373 | georg.brandl | 2010-08-01 00:11:11 +0200 (So, 01 Aug 2010) | 1 line

    #5147: revert accidental indentation of header constant for MozillaCookieJar.
  ........
    r83374 | georg.brandl | 2010-08-01 00:32:52 +0200 (So, 01 Aug 2010) | 1 line

    #5146: handle UID THREAD command correctly.
  ........
    r83384 | georg.brandl | 2010-08-01 08:32:55 +0200 (So, 01 Aug 2010) | 1 line

    Build properties using lambdas.  This makes test_pyclbr pass again, because it does not think that input and output are methods anymore.
  ........
................

Lib/_MozillaCookieJar.py
Lib/doctest.py
Lib/imaplib.py
Lib/pydoc.py
Lib/test/test_doctest.py
Makefile.pre.in
Misc/NEWS

index 4fd6de32cb0a35527ac16eb48f4869178bbff7e2..00e8bcf981911e24d1d67c739c517148b301bdef 100644 (file)
@@ -38,9 +38,9 @@ class MozillaCookieJar(FileCookieJar):
     """
     magic_re = "#( Netscape)? HTTP Cookie File"
     header = """\
-    # Netscape HTTP Cookie File
-    # http://www.netscape.com/newsref/std/cookie_spec.html
-    # This is a generated file!  Do not edit.
+# Netscape HTTP Cookie File
+# http://www.netscape.com/newsref/std/cookie_spec.html
+# This is a generated file!  Do not edit.
 
 """
 
index 9accb81bfc64eef2f15f9fd76fa63b208d65d7ff..af0d042b96c4e113574dacf11db6d1e5051dd9a2 100644 (file)
@@ -263,6 +263,9 @@ class _SpoofOut(StringIO):
         StringIO.truncate(self, size)
         if hasattr(self, "softspace"):
             del self.softspace
+        if not self.buf:
+            # Reset it to an empty string, to make sure it's not unicode.
+            self.buf = ''
 
 # Worst-case linear-time ellipsis matching.
 def _ellipsis_match(want, got):
index d1f62b0934528037c211a1d4a7c2ee771c853c5d..8734a8430419109f42d67d24e660c51ee10316dc 100644 (file)
@@ -751,7 +751,7 @@ class IMAP4:
                               ', '.join(Commands[command])))
         name = 'UID'
         typ, dat = self._simple_command(name, command, *args)
-        if command in ('SEARCH', 'SORT'):
+        if command in ('SEARCH', 'SORT', 'THREAD'):
             name = command
         else:
             name = 'FETCH'
index 4d6584b4fc6a16bc53b17841235f4501f374ac92..86a6aa02c1ebc347bcd8655f541f8fc891566eea 100755 (executable)
@@ -1705,9 +1705,12 @@ class Helper:
         'CONTEXTMANAGERS': ('context-managers', 'with'),
     }
 
-    def __init__(self, input, output):
-        self.input = input
-        self.output = output
+    def __init__(self, input=None, output=None):
+        self._input = input
+        self._output = output
+
+    input  = property(lambda self: self._input or sys.stdin)
+    output = property(lambda self: self._output or sys.stdout)
 
     def __repr__(self):
         if inspect.stack()[1][3] == '?':
@@ -1884,7 +1887,7 @@ Enter any module name to get more help.  Or, type "modules spam" to search
 for modules whose descriptions contain the word "spam".
 ''')
 
-help = Helper(sys.stdin, sys.stdout)
+help = Helper()
 
 class Scanner:
     """A generic tree iterator."""
index c332a40b336cceceec1bde8dcf746d11016c5c4b..f5a328eaad176635407e4b7128b851ec06bc2267 100644 (file)
@@ -1508,7 +1508,33 @@ source:
     >>> test = doctest.DocTestParser().get_doctest(s, {}, 's', 's.py', 0)
     Traceback (most recent call last):
     ValueError: line 0 of the doctest for s has an option directive on a line with no example: '# doctest: +ELLIPSIS'
-"""
+
+    """
+
+    def test_unicode_output(self): r"""
+
+Check that unicode output works:
+
+    >>> u'\xe9'
+    u'\xe9'
+
+If we return unicode, SpoofOut's buf variable becomes automagically
+converted to unicode. This means all subsequent output becomes converted
+to unicode, and if the output contains non-ascii characters that failed.
+It used to be that this state change carried on between tests, meaning
+tests would fail if unicode has been output previously in the testrun.
+This test tests that this is no longer so:
+
+    >>> print u'abc'
+    abc
+
+And then return a string with non-ascii characters:
+
+    >>> print u'\xe9'.encode('utf-8')
+    é
+
+    """
+
 
 def test_testsource(): r"""
 Unit tests for `testsource()`.
index da515be0257c8077a0af73d9760928feee9ef060..0329d67a569fa79d8246a17e9c3cd9fc0c152b6e 100644 (file)
@@ -1137,10 +1137,11 @@ pycremoval:
        find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
 
 clean: pycremoval
-       find . -name '*.o' -exec rm -f {} ';'
+       find . -name '*.[oa]' -exec rm -f {} ';'
        find . -name '*.s[ol]' -exec rm -f {} ';'
        find $(srcdir)/build -name 'fficonfig.h' -exec rm -f {} ';' || true
        find $(srcdir)/build -name 'fficonfig.py' -exec rm -f {} ';' || true
+       find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'
        -rm -f Lib/lib2to3/*Grammar*.pickle
 
 profile-removal:
index 160cc2388da2c9f825a6c077d57e2498ad2ea765..e0de7f9ee5e72215d524f7c61e8fa828202a6bb8 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -89,8 +89,19 @@ C-API
 Library
 -------
 
+- Issue #5146: Handle UID THREAD command correctly in imaplib.
+
+- Issue #5147: Fix the header generated for cookie files written by
+  http.cookiejar.MozillaCookieJar.
+
+- Issue #8198: In pydoc, output all help text to the correct stream
+  when sys.stdout is reassigned.
+
 - Issue #1019882: Fix IndexError when loading certain hotshot stats.
 
+- Issue #8471: In doctest, properly reset the output stream to an empty
+  string when Unicode was previously output.
+
 - Issue #8397: Raise an error when attempting to mix iteration and regular
   reads on a BZ2File object, rather than returning incorrect results.