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)
- 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
-------