]> granicus.if.org Git - python/commitdiff
Merge #13579: teach string.Formatter about 'a'.
authorR David Murray <rdmurray@bitdance.com>
Sun, 19 Aug 2012 21:45:40 +0000 (17:45 -0400)
committerR David Murray <rdmurray@bitdance.com>
Sun, 19 Aug 2012 21:45:40 +0000 (17:45 -0400)
Patch by Francisco Martín Brugué.

1  2 
Lib/string.py
Lib/test/test_string.py
Misc/NEWS

diff --cc Lib/string.py
Simple merge
index 161573200b2c1f26419b73e7372092724f9aa92b,34d1dcf3fe6490e6fa3e6d7e0b5bbbde7b677342..c2bdfdb0b01d61ae6358508c00989d2ce0a0c83b
@@@ -37,27 -31,22 +37,33 @@@ class ModuleTest(unittest.TestCase)
          self.assertEqual(fmt.format("-{arg!r}-", arg='test'), "-'test'-")
          self.assertEqual(fmt.format("{0!s}", 'test'), 'test')
          self.assertRaises(ValueError, fmt.format, "{0!h}", 'test')
+         # issue13579
+         self.assertEqual(fmt.format("{0!a}", 42), '42')
+         self.assertEqual(fmt.format("{0!a}",  string.ascii_letters),
+             "'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'")
+         self.assertEqual(fmt.format("{0!a}",  chr(255)), "'\\xff'")
+         self.assertEqual(fmt.format("{0!a}",  chr(256)), "'\\u0100'")
  
 -    def test_formatter(self):
 +    def test_name_lookup(self):
          fmt = string.Formatter()
 -        self.assertEqual(fmt.format("foo"), "foo")
 -
 -        self.assertEqual(fmt.format("foo{0}", "bar"), "foobar")
 -        self.assertEqual(fmt.format("foo{1}{0}-{1}", "bar", 6), "foo6bar-6")
 -        self.assertEqual(fmt.format("-{arg!r}-", arg='test'), "-'test'-")
 +        class AnyAttr:
 +            def __getattr__(self, attr):
 +                return attr
 +        x = AnyAttr()
 +        self.assertEqual(fmt.format("{0.lumber}{0.jack}", x), 'lumberjack')
 +        with self.assertRaises(AttributeError):
 +            fmt.format("{0.lumber}{0.jack}", '')
 +
 +    def test_index_lookup(self):
 +        fmt = string.Formatter()
 +        lookup = ["eggs", "and", "spam"]
 +        self.assertEqual(fmt.format("{0[2]}{0[0]}", lookup), 'spameggs')
 +        with self.assertRaises(IndexError):
 +            fmt.format("{0[2]}{0[0]}", [])
 +        with self.assertRaises(KeyError):
 +            fmt.format("{0[2]}{0[0]}", {})
  
 -        # override get_value ############################################
 +    def test_override_get_value(self):
          class NamespaceFormatter(string.Formatter):
              def __init__(self, namespace={}):
                  string.Formatter.__init__(self)
diff --cc Misc/NEWS
index 9f16caf4f349a68cbbee866acbbf2292ae12d5c2,857a161536c8118bbdb80c5910f6f12efd110110..bb893cffdef8b61d71c645d882fe6ce8495e8061
+++ b/Misc/NEWS
@@@ -13,129 -13,93 +13,131 @@@ Core and Builtin
  - Issue #15604: Update uses of PyObject_IsTrue() to check for and handle
    errors correctly.  Patch by Serhiy Storchaka.
  
 -- Issue #13119: sys.stdout and sys.stderr are now using "\r\n" newline on
 -  Windows, as Python 2.
 +Library
 +-------
  
 -- Issue #14579: Fix CVE-2012-2135: vulnerability in the utf-16 decoder after
 -  error handling.  Patch by Serhiy Storchaka.
++- Issue #13579: string.Formatter now understands the 'a' conversion specifier.
 -- Issue #15404: Refleak in PyMethodObject repr.
 +- Issue #15595: Fix subprocess.Popen(universal_newlines=True)
 +  for certain locales (utf-16 and utf-32 family). Patch by Chris Jerdonek.
  
 -- Issue #15394: An issue in PyModule_Create that caused references to
 -  be leaked on some error paths has been fixed.  Patch by Julia Lawall.
 +- Issue #15477: In cmath and math modules, add workaround for platforms whose
 +  system-supplied log1p function doesn't respect signs of zeros.
  
 -- Issue #15368: An issue that caused bytecode generation to be
 -  non-deterministic when using randomized hashing (-R) has been fixed.
 +- Issue #15715: importlib.__import__() will silence an ImportError when the use
 +  of fromlist leads to a failed import.
  
 -- Issue #15020: The program name used to search for Python's path is now
 -  "python3" under Unix, not "python".
 +- Issue #14669: Fix pickling of connections and sockets on MacOSX
 +  by sending/receiving an acknowledgment after file descriptor transfer.
 +  TestPicklingConnection has been reenabled for MacOSX.
  
 -- Issue #15033: Fix the exit status bug when modules invoked using -m swith,
 -  return the proper failure return value (1). Patch contributed by Jeff Knupp.
 +- Issue #11062: Fix adding a message from file to Babyl mailbox.
  
 -- Issue #12268: File readline, readlines and read() or readall() methods
 -  no longer lose data when an underlying read system call is interrupted.
 -  IOError is no longer raised due to a read system call returning EINTR
 -  from within these methods.
 +- Issue #15646: Prevent equivalent of a fork bomb when using
 +  multiprocessing on Windows without the "if __name__ == '__main__'"
 +  idiom.
  
 -- Issue #15142: Fix reference leak when deallocating instances of types
 -  created using PyType_FromSpec().
 +- Issue #15678: Fix IDLE menus when started from OS X command line
 +  (3.3.0b2 regression).
  
 -- Issue #10053: Don't close FDs when FileIO.__init__ fails. Loosely based on
 -  the work by Hirokazu Yamamoto.
 +C API
 +-----
  
 -- Issue #14775: Fix a potential quadratic dict build-up due to the garbage
 -  collector repeatedly trying to untrack dicts.
 +Extension Modules
 +-----------------
  
 -- Issue #14494: Fix __future__.py and its documentation to note that
 -  absolute imports are the default behavior in 3.0 instead of 2.7.
 -  Patch by Sven Marnach.
 +Tools/Demos
 +-----------
  
 -- Issue #14761: Fix potential leak on an error case in the import machinery.
 +Documentation
 +-------------
  
 -- Issue #14699: Fix calling the classmethod descriptor directly.
 +- Issue #15640: Document importlib.abc.Finder as deprecated.
  
 -- Issue #14433: Prevent msvcrt crash in interactive prompt when stdin
 -  is closed.
 +- Issue #15630: Add an example for "continue" stmt in the tutorial. Patch by
 +  Daniel Ellis.
  
 -- Issue #11603 (again): Setting __repr__ to __str__ now raises a RuntimeError
 -  when repr() or str() is called on such an object.
 +Tests
 +-----
  
 -- Issue #14658: Fix binding a special method to a builtin implementation of a
 -  special method with a different name.
 +- Issue #15615: Add some tests for the json module's handling of invalid
 +  input data.  Patch by Kushal Das.
  
 -- Issue #14630: Fix a memory access bug for instances of a subclass of int
 -  with value 0.
  
 -- Issue #14612: Fix jumping around with blocks by setting f_lineno.
 +What's New in Python 3.3.0 Beta 2?
 +==================================
  
 -- Issue #14607: Fix keyword-only arguments which started with ``__``.
 +*Release date: 12-Aug-2012*
  
 -- Issue #13889: Check and (if necessary) set FPU control word before calling
 -  any of the dtoa.c string <-> float conversion functions, on MSVC builds of
 -  Python.  This fixes issues when embedding Python in a Delphi app.
 +Core and Builtins
 +-----------------
  
 -- Issue #14474: Save and restore exception state in thread.start_new_thread()
 -  while writing error message if the thread leaves a unhandled exception.
 +- Issue #15568: Fix the return value of "yield from" when StopIteration is
 +  raised by a custom iterator.
  
 -- Issue #13019: Fix potential reference leaks in bytearray.extend().  Patch
 -  by Suman Saha.
 +- Issue #13119: sys.stdout and sys.stderr are now using "\r\n" newline on
 +  Windows, as Python 2.
  
 -- Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as
 -  the module name that was not interned.
 +- Issue #15534: Fix the fast-search function for non-ASCII Unicode strings.
  
 -- Issue #14331: Use significantly less stack space when importing modules by
 -  allocating path buffers on the heap instead of the stack.
 +- Issue #15508: Fix the docstring for __import__ to have the proper default
 +  value of 0 for 'level' and to not mention negative levels since they are not
 +  supported.
  
 -- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not
 -  passed strings.
 +- Issue #15425: Eliminated traceback noise from more situations involving
 +  importlib.
  
 -- Issue #1469629: Allow cycles through an object's __dict__ slot to be
 -  collected. (For example if ``x.__dict__ is x``).
 +- Issue #14578: Support modules registered in the Windows registry again.
  
 -- Issue #14172: Fix reference leak when marshalling a buffer-like object
 -  (other than a bytes object).
 +- Issue #15466: Stop using TYPE_INT64 in marshal, to make importlib.h (and other
 +  byte code files) equal between 32-bit and 64-bit systems.
  
 -- Issue #13521: dict.setdefault() now does only one lookup for the given key,
 -  making it "atomic" for many purposes.  Patch by Filip Gruszczyński.
 +- Issue #1692335: Move initial exception args assignment to
 +  "BaseException.__new__" to help pickling of naive subclasses.
  
 -- Issue #14471: Fix a possible buffer overrun in the winreg module.
 +- Issue #12834: Fix PyBuffer_ToContiguous() for non-contiguous arrays.
 +
 +- Issue #15456: Fix code __sizeof__ after #12399 change.  Patch by Serhiy
 +  Storchaka.
 +
 +- Issue #15404: Refleak in PyMethodObject repr.
 +
 +- Issue #15394: An issue in PyModule_Create that caused references to be leaked
 +  on some error paths has been fixed.  Patch by Julia Lawall.
 +
 +- Issue #15368: An issue that caused bytecode generation to be non-deterministic
 +  has been fixed.
 +
 +- Issue #15202: Consistently use the name "follow_symlinks" for new parameters
 +  in os and shutil functions.
 +
 +- Issue #15314: __main__.__loader__ is now set correctly during interpreter
 +  startup.
 +
 +- Issue #15111: When a module imported using 'from import' has an ImportError
 +  inside itself, don't mask that fact behind a generic ImportError for the
 +  module itself.
 +
 +- Issue #15293: Add GC support to the AST base node type.
 +
 +- Issue #15291: Fix a memory leak where AST nodes where not properly
 +  deallocated.
 +
 +- Issue #15110: Fix the tracebacks generated by "import xxx" to not show the
 +  importlib stack frames.
 +
 +- Issue #15020: The program name used to search for Python's path is now
 +  "python3" under Unix, not "python".
 +
 +- Issue #15033: Fix the exit status bug when modules invoked using -m swith,
 +  return the proper failure return value (1). Patch contributed by Jeff Knupp.
 +
 +- Issue #15229: An OSError subclass whose __init__ doesn't call back
 +  OSError.__init__ could produce incomplete instances, leading to crashes when
 +  calling str() on them.
 +
 +- Issue 15307: Virtual environments now use symlinks with framework builds on
 +  Mac OS X, like other POSIX builds.
  
  Library
  -------