diff options
Diffstat (limited to 'Misc')
-rw-r--r-- | Misc/ACKS | 46 | ||||
-rw-r--r-- | Misc/HISTORY | 1115 | ||||
-rw-r--r-- | Misc/NEWS | 6213 | ||||
-rw-r--r-- | Misc/Porting | 2 | ||||
-rw-r--r-- | Misc/coverity_model.c | 60 | ||||
-rw-r--r-- | Misc/gdbinit | 4 | ||||
-rw-r--r-- | Misc/python.man | 25 |
7 files changed, 2250 insertions, 5215 deletions
@@ -46,6 +46,7 @@ Pehr Anderson Erik Andersén Oliver Andrich Ross Andrus +Fabrice Aneche Juancarlo Añez Chris Angelico Jérémy Anger @@ -71,6 +72,7 @@ Dwayne Bailey Stig Bakken Greg Ball Luigi Ballabio +Thomas Ballinger Jeff Balogh Manuel Balsera Matt Bandy @@ -89,6 +91,7 @@ Richard Barran Cesar Eduardo Barros Des Barry Ulf Bartelt +Campbell Barton Don Bashford Pior Bastida Nick Bastin @@ -100,6 +103,7 @@ Mike Bayer Samuel L. Bayer Donald Beaudry David Beazley +Ingolf Becker Neal Becker Robin Becker Torsten Becker @@ -151,6 +155,7 @@ Wouter Bolsterlee Gawain Bolton Forest Bond Gregory Bond +Médéric Boquien Matias Bordese Jonas Borgström Jurjen Bos @@ -230,10 +235,12 @@ Pascal Chambon John Chandler Hye-Shik Chang Jeffrey Chang +Gavin Chappell Godefroid Chapelle Brad Chapman Greg Chapman Mitch Chapman +Matt Chaput Yogesh Chaudhari David Chaum Nicolas Chauvat @@ -473,6 +480,7 @@ Stephen M. Gava Xavier de Gaye Harry Henry Gebel Marius Gedminas +Jan-Philip Gehrcke Thomas Gellekum Gabriel Genellina Christos Georgiou @@ -485,6 +493,7 @@ Johannes Gijsbers Michael Gilfix Julian Gindi Yannick Gingras +Neil Girdhar Matt Giuca Wim Glenn Michael Goderbauer @@ -499,6 +508,7 @@ Shelley Gooch David Goodger Hans de Graaff Tim Graham +Kim Gräsman Nathaniel Gray Eddy De Greef Grant Griffin @@ -572,6 +582,7 @@ Kevan Heydon Wouter van Heyst Kelsey Hightower Jason Hildebrand +Aaron Hill Richie Hindle Konrad Hinsen David Hobley @@ -606,6 +617,7 @@ Alan Hourihane Ken Howard Brad Howes Mike Hoy +Ben Hoyt Chih-Hao Huang Christian Hudon Lawrence Hudson @@ -625,6 +637,7 @@ Ali Ikinci Aaron Iles Lars Immisch Bobby Impollonia +Naoki Inada Meador Inge Peter Ingebretson Tony Ingraldi @@ -649,11 +662,13 @@ Juhana Jauhiainen Rajagopalasarma Jayakrishnan Zbigniew Jędrzejewski-Szmek Julien Jehannet +Muhammad Jehanzeb Drew Jenkins Flemming Kjær Jensen Philip H. Jensen Philip Jenvey MunSic Jeong +Joe Jevnik Chris Jerdonek Jim Jewett Pedro Diaz Jimenez @@ -668,6 +683,7 @@ Thomas Jollans Nicolas Joly Brian K. Jones Evan Jones +Glenn Jones Jeremy Jones Richard Jones Irmen de Jong @@ -690,12 +706,15 @@ Peter van Kampen Jan Kanis Rafe Kaplan Jacob Kaplan-Moss +Allison Kaptur Janne Karila Per Øyvind Karlsen Anton Kasyanov Lou Kates Makoto Kato Hiroaki Kawai +Dmitry Kazakov +Brian Kearns Sebastien Keim Ryan Kelly Dan Kenigsberg @@ -706,11 +725,13 @@ Magnus Kessler Lawrence Kesteloot Vivek Khera Dhiru Kholia +Akshit Khurana Mads Kiilerich Jason Killen Jan Kim Taek Joo Kim Sam Kimbrel +James King W. Trevor King Paul Kippes Steve Kirsch @@ -781,6 +802,7 @@ Ben Laurie Simon Law Julia Lawall Chris Lawrence +Mark Lawrence Brian Leair Mathieu Leduc-Hamel Amandine Lee @@ -818,6 +840,7 @@ Ross Light Shawn Ligocki Martin Ligr Gediminas Liktaras +Vitor de Lima Grant Limberg Christopher Lindblad Ulf A. Lindgren @@ -834,6 +857,7 @@ Anne Lord Tom Loredo Justin Love Ned Jackson Lovely +Chalmer Lowe Jason Lowe Tony Lownds Ray Loyzaga @@ -887,9 +911,11 @@ Madison May Lucas Maystre Arnaud Mazin Matt McClure +Jack McCracken Rebecca McCreary Kirk McDonald Chris McDonough +Michael McFadden Greg McFarlane Alan McIntyre Jessica McKellar @@ -993,6 +1019,7 @@ Nigel O'Brian John O'Connor Kevin O'Connor Tim O'Malley +Dan O'Reilly Zooko O'Whielacronx Aaron Oakley James Oakley @@ -1032,6 +1059,7 @@ Peter Parente Alexandre Parenteau Dan Parisien William Park +Claude Paroz Heikki Partanen Harri Pasanen Gaël Pasgrimaud @@ -1106,6 +1134,8 @@ Thomas Rachel Ram Rachum Jérôme Radix Burton Radons +Abhilash Raj +Shorya Raj Jeff Ramnani Brodie Rao Senko Rasic @@ -1147,6 +1177,7 @@ Juan M. Bello Rivas Davide Rizzo Anthony Roach Carl Robben +Ben Roberts Mark Roberts Andy Robinson Jim Robinson @@ -1162,6 +1193,7 @@ Armin Ronacher Case Roole Timothy Roscoe Erik Rose +Josh Rosenberg Jim Roskind Brian Rosner Guido van Rossum @@ -1180,6 +1212,7 @@ Demur Rumed Audun S. Runde Eran Rundstein Rauli Ruohonen +Laura Rupprecht Jeff Rush Sam Rushing Mark Russell @@ -1193,6 +1226,7 @@ Sébastien Sablé Suman Saha Hajime Saitou George Sakkis +Victor Salgado Rich Salz Kevin Samborn Adrian Sampson @@ -1293,6 +1327,7 @@ Paul Sokolovsky Evgeny Sologubov Cody Somerville Edoardo Spadolini +Geoffrey Spear Clay Spence Stefan Sperling Nicholas Spies @@ -1338,6 +1373,7 @@ Thenault Sylvain Péter Szabó John Szakmeister Amir Szekely +Maciej Szulik Arfrever Frehtes Taifersar Arahesis Hideaki Takahashi Indra Talip @@ -1350,6 +1386,7 @@ Steven Taschuk Amy Taylor Monty Taylor Anatoly Techtonik +Gustavo Temple Mikhail Terekhov Victor Terrón Richard M. Tew @@ -1382,6 +1419,7 @@ David Townshend Nathan Trapuzzano Laurence Tratt Alberto Trevino +Mayank Tripathi Matthias Troffaes Tom Tromey John Tromp @@ -1403,6 +1441,7 @@ Roger Upole Daniel Urban Michael Urman Hector Urtubia +Lukas Vacek Ville Vainio Andi Vajda Case Van Horsen @@ -1427,10 +1466,13 @@ Norman Vine Pauli Virtanen Frank Visser Johannes Vogel +Michael Vogt +Radu Voicilas Alex Volkov Martijn Vries Sjoerd de Vries Guido Vranken +Daniel Wagner-Hall Niki W. Waibel Wojtek Walczak Charles Waldman @@ -1449,6 +1491,7 @@ Bob Watson David Watson Aaron Watters Henrik Weber +Leon Weber Corran Webster Glyn Webster Phil Webster @@ -1477,6 +1520,7 @@ Sue Williams Carol Willing Steven Willis Frank Willison +David Wilson Geoff Wilson Greg V. Wilson J Derek Wilson @@ -1502,11 +1546,13 @@ Gordon Worley Darren Worrall Thomas Wouters Daniel Wozniak +Wei Wu Heiko Wundram Doug Wyatt Robert Xiao Florent Xicluna Hirokazu Yamamoto +Arnon Yaari Ka-Ping Yee Jason Yeo EungJun Yi diff --git a/Misc/HISTORY b/Misc/HISTORY index f483759..0462f4e 100644 --- a/Misc/HISTORY +++ b/Misc/HISTORY @@ -18,13 +18,13 @@ Core and Builtins - Issue #16046: Fix loading sourceless legacy .pyo files. -- Issue #16060: Fix refcounting bug when __trunc__ returns an object - whose __int__ gives a non-integer. Patch by Serhiy Storchaka. +- Issue #16060: Fix refcounting bug when `__trunc__()` returns an object whose + `__int__()` gives a non-integer. Patch by Serhiy Storchaka. Extension Modules ----------------- -- Issue #16012: Fix a regression in pyexpat. The parser's UseForeignDTD() +- Issue #16012: Fix a regression in pyexpat. The parser's `UseForeignDTD()` method doesn't require an argument again. @@ -36,26 +36,26 @@ What's New in Python 3.3.0 Release Candidate 3? Core and Builtins ----------------- -- Issue #15900: Fix reference leak in PyUnicode_TranslateCharmap(). +- Issue #15900: Fix reference leak in `PyUnicode_TranslateCharmap()`. - Issue #15926: Fix crash after multiple reinitializations of the interpreter. - Issue #15895: Fix FILE pointer leak in one error branch of - PyRun_SimpleFileExFlags() when filename points to a pyc/pyo file, closeit - is false an and set_main_loader() fails. + `PyRun_SimpleFileExFlags()` when filename points to a pyc/pyo file, closeit is + false an and set_main_loader() fails. - Fixes for a few crash and memory leak regressions found by Coverity. Library ------- -- Issue #15882: Change _decimal to accept any coefficient tuple when - constructing infinities. This is done for backwards compatibility - with decimal.py: Infinity coefficients are undefined in _decimal - (in accordance with the specification). +- Issue #15882: Change `_decimal` to accept any coefficient tuple when + constructing infinities. This is done for backwards compatibility with + decimal.py: Infinity coefficients are undefined in _decimal (in accordance + with the specification). -- Issue #15925: Fix a regression in email.util where the parsedate() and - parsedate_tz() functions did not return None anymore when the argument could +- Issue #15925: Fix a regression in `email.util` where the `parsedate()` and + `parsedate_tz()` functions did not return None anymore when the argument could not be parsed. Extension Modules @@ -67,7 +67,7 @@ Extension Modules - Issue #15977: Fix memory leak in Modules/_ssl.c when the function _set_npn_protocols() is called multiple times, thanks to Daniel Sommermann. -- Issue #15969: faulthandler module: rename dump_tracebacks_later() to +- Issue #15969: `faulthandler` module: rename dump_tracebacks_later() to dump_traceback_later() and cancel_dump_tracebacks_later() to cancel_dump_traceback_later(). @@ -83,35 +83,37 @@ Core and Builtins ----------------- - Issue #13992: The trashcan mechanism is now thread-safe. This eliminates - sporadic crashes in multi-thread programs when several long deallocator - chains ran concurrently and involved subclasses of built-in container - types. + sporadic crashes in multi-thread programs when several long deallocator chains + ran concurrently and involved subclasses of built-in container types. -- Issue #15784: Modify OSError.__str__() to better distinguish between - errno error numbers and Windows error numbers. +- Issue #15784: Modify `OSError`.__str__() to better distinguish between errno + error numbers and Windows error numbers. - Issue #15781: Fix two small race conditions in import's module locking. Library ------- -- Issue #15847: Fix a regression in argparse, which did not accept tuples - as argument lists anymore. +- Issue #17158: Add 'symbols' to help() welcome message; clarify + 'modules spam' messages. + +- Issue #15847: Fix a regression in argparse, which did not accept tuples as + argument lists anymore. -- Issue #15828: Restore support for C extensions in imp.load_module(). +- Issue #15828: Restore support for C extensions in `imp.load_module()`. -- Issue #15340: Fix importing the random module when /dev/urandom cannot - be opened. This was a regression caused by the hash randomization patch. +- Issue #15340: Fix importing the random module when ``/dev/urandom`` cannot be + opened. This was a regression caused by the hash randomization patch. -- Issue #10650: Deprecate the watchexp parameter of the Decimal.quantize() +- Issue #10650: Deprecate the watchexp parameter of the `Decimal.quantize()` method. -- Issue #15785: Modify window.get_wch() API of the curses module: return - a character for most keys, and an integer for special keys, instead of - always returning an integer. So it is now possible to distinguish special - keys like keypad keys. +- Issue #15785: Modify `window.get_wch()` API of the curses module: return a + character for most keys, and an integer for special keys, instead of always + returning an integer. So it is now possible to distinguish special keys like + keypad keys. -- Issue #14223: Fix window.addch() of the curses module for special characters +- Issue #14223: Fix `window.addch()` of the curses module for special characters like curses.ACS_HLINE: the Python function addch(int) and addch(bytes) is now calling the C function waddch()/mvwaddch() (as it was done in Python 3.2), instead of wadd_wch()/mvwadd_wch(). The Python function addch(str) is still @@ -127,10 +129,10 @@ Build Documentation ------------- -- Issue #15814: The memoryview enhancements in 3.3.0 accidentally permitted - the hashing of multi-dimensional memorviews and memoryviews with multi-byte - item formats. The intended restrictions have now been documented - they - will be correctly enforced in 3.3.1 +- Issue #15814: The memoryview enhancements in 3.3.0 accidentally permitted the + hashing of multi-dimensional memorviews and memoryviews with multi-byte item + formats. The intended restrictions have now been documented - they will be + correctly enforced in 3.3.1. What's New in Python 3.3.0 Release Candidate 1? @@ -144,131 +146,123 @@ Core and Builtins - Issue #15573: memoryview comparisons are now performed by value with full support for any valid struct module format definition. -- Issue #15316: When an item in the fromlist for __import__ doesn't exist, +- Issue #15316: When an item in the fromlist for `__import__()` doesn't exist, don't raise an error, but if an exception is raised as part of an import do let that propagate. -- Issue #15778: ensure that str(ImportError(msg)) returns a str - even when msg isn't a str. +- Issue #15778: Ensure that ``str(ImportError(msg))`` returns a str even when + msg isn't a str. -- Issue #2051: Source file permission bits are once again correctly - copied to the cached bytecode file. (The migration to importlib - reintroduced this problem because these was no regression test. A test - has been added as part of this patch) +- Issue #2051: Source file permission bits are once again correctly copied to + the cached bytecode file. (The migration to importlib reintroduced this + problem because these was no regression test. A test has been added as part of + this patch) -- Issue #15761: Fix crash when PYTHONEXECUTABLE is set on Mac OS X. +- Issue #15761: Fix crash when ``PYTHONEXECUTABLE`` is set on Mac OS X. -- Issue #15726: Fix incorrect bounds checking in PyState_FindModule. - Patch by Robin Schreiber. +- Issue #15726: Fix incorrect bounds checking in PyState_FindModule. Patch by + Robin Schreiber. -- Issue #15604: Update uses of PyObject_IsTrue() to check for and handle +- Issue #15604: Update uses of `PyObject_IsTrue()` to check for and handle errors correctly. Patch by Serhiy Storchaka. -- Issue #14846: importlib.FileFinder now handles the case where the - directory being searched is removed after a previous import attempt +- Issue #14846: `importlib.FileFinder` now handles the case where the directory + being searched is removed after a previous import attempt. Library ------- -- Issue #13370: Ensure that ctypes works on Mac OS X when Python is - compiled using the clang compiler +- Issue #13370: Ensure that ctypes works on Mac OS X when Python is compiled + using the clang compiler. -- Issue #13072: The array module's 'u' format code is now deprecated and - will be removed in Python 4.0. +- Issue #13072: The array module's 'u' format code is now deprecated and will be + removed in Python 4.0. - Issue #15544: Fix Decimal.__float__ to work with payload-carrying NaNs. -- Issue #15249: BytesGenerator now correctly mangles From lines (when +- Issue #15776: Allow pyvenv to work in existing directory with --clean. + +- Issue #15249: email's BytesGenerator now correctly mangles From lines (when requested) even if the body contains undecodable bytes. - Issue #15777: Fix a refleak in _posixsubprocess. -- Issue ##665194: Update email.utils.localtime to use datetime.astimezone and +- Issue ##665194: Update `email.utils.localtime` to use datetime.astimezone and correctly handle historic changes in UTC offsets. - Issue #15199: Fix JavaScript's default MIME type to application/javascript. Patch by Bohuslav Kabrda. -- Issue #12643: code.InteractiveConsole now respects sys.excepthook when - displaying exceptions (Patch by Aaron Iles) - -- Issue #13579: string.Formatter now understands the 'a' conversion specifier. +- Issue #12643: `code.InteractiveConsole` now respects `sys.excepthook` when + displaying exceptions. Patch by Aaron Iles. -- Issue #15793: Stack corruption in ssl.RAND_egd(). - Patch by Serhiy Storchaka. +- Issue #13579: `string.Formatter` now understands the 'a' conversion specifier. -- Issue #15595: Fix subprocess.Popen(universal_newlines=True) - for certain locales (utf-16 and utf-32 family). Patch by Chris Jerdonek. +- Issue #15595: Fix ``subprocess.Popen(universal_newlines=True)`` for certain + locales (utf-16 and utf-32 family). Patch by Chris Jerdonek. - Issue #15477: In cmath and math modules, add workaround for platforms whose system-supplied log1p function doesn't respect signs of zeros. -- Issue #15715: importlib.__import__() will silence an ImportError when the use - of fromlist leads to a failed import. +- Issue #15715: `importlib.__import__()` will silence an ImportError when the + use of fromlist leads to a failed import. -- 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 #14669: Fix pickling of connections and sockets on Mac OS X by + sending/receiving an acknowledgment after file descriptor transfer. + TestPicklingConnection has been reenabled for Mac OS X. - Issue #11062: Fix adding a message from file to Babyl mailbox. -- Issue #15646: Prevent equivalent of a fork bomb when using - multiprocessing on Windows without the "if __name__ == '__main__'" - idiom. +- Issue #15646: Prevent equivalent of a fork bomb when using `multiprocessing` + on Windows without the ``if __name__ == '__main__'`` idiom. -- Issue #15678: Fix IDLE menus when started from OS X command line - (3.3.0b2 regression). - -C API ------ - -Extension Modules ------------------ +IDLE +---- -Tools/Demos ------------ +- Issue #15678: Fix IDLE menus when started from OS X command line (3.3.0b2 + regression). Documentation ------------- -- Issue #14674: Add a discussion of the json module's standard compliance. +- Touched up the Python 2 to 3 porting guide. + +- Issue #14674: Add a discussion of the `json` module's standard compliance. Patch by Chris Rebert. - Create a 'Concurrent Execution' section in the docs, and split up the 'Optional Operating System Services' section to use a more user-centric - classification scheme (splitting them across the new CE section, IPC and - text processing). Operating system limitatons can be reflected with - the Sphinx ``:platform:`` tag, it doesn't make sense as part of the Table of - Contents. + classification scheme (splitting them across the new CE section, IPC and text + processing). Operating system limitations can be reflected with the Sphinx + ``:platform:`` tag, it doesn't make sense as part of the Table of Contents. -- Issue #4966: Bring the sequence docs up to date for the Py3k transition - and the many language enhancements since they were original written +- Issue #4966: Bring the sequence docs up to date for the Py3k transition and + the many language enhancements since they were original written. - The "path importer" misnomer has been replaced with Eric Snow's - more-awkward-but-at-least-not-wrong suggestion of "path based finder" in - the import system reference docs + more-awkward-but-at-least-not-wrong suggestion of "path based finder" in the + import system reference docs. -- Issue #15640: Document importlib.abc.Finder as deprecated. +- Issue #15640: Document `importlib.abc.Finder` as deprecated. -- Issue #15630: Add an example for "continue" stmt in the tutorial. Patch by +- Issue #15630: Add an example for "continue" stmt in the tutorial. Patch by Daniel Ellis. Tests ----- - Issue #15747: ZFS always returns EOPNOTSUPP when attempting to set the - UF_IMMUTABLE flag (via either chflags or lchflags); refactor affected - tests in test_posix.py to account for this. + UF_IMMUTABLE flag (via either chflags or lchflags); refactor affected tests in + test_posix.py to account for this. -- Issue #15285: Refactor the approach for testing connect timeouts using - two external hosts that have been configured specifically for this type - of test. +- Issue #15285: Refactor the approach for testing connect timeouts using two + external hosts that have been configured specifically for this type of test. -- Issue #15743: Remove the deprecated method usage in urllib tests. Patch by +- Issue #15743: Remove the deprecated method usage in `urllib` tests. Patch by Jeff Knupp. -- Issue #15615: Add some tests for the json module's handling of invalid - input data. Patch by Kushal Das. +- Issue #15615: Add some tests for the `json` module's handling of invalid input + data. Patch by Kushal Das. Build ----- @@ -277,11 +271,11 @@ Build - Pick up 32-bit launcher from PGO directory on 64-bit PGO build. -- Drop PC\python_nt.h as it's not used. Add input dependency on custom +- Drop ``PC\python_nt.h`` as it's not used. Add input dependency on custom build step. -- Issue #15511: Drop explicit dependency on pythonxy.lib from _decimal - amd64 configuration. +- Issue #15511: Drop explicit dependency on pythonxy.lib from _decimal amd64 + configuration. - Add missing PGI/PGO configurations for pywlauncher. @@ -296,15 +290,15 @@ What's New in Python 3.3.0 Beta 2? Core and Builtins ----------------- -- Issue #15568: Fix the return value of "yield from" when StopIteration is +- Issue #15568: Fix the return value of ``yield from`` when StopIteration is raised by a custom iterator. -- Issue #13119: sys.stdout and sys.stderr are now using "\r\n" newline on +- Issue #13119: `sys.stdout` and `sys.stderr` are now using "\r\n" newline on Windows, as Python 2. - Issue #15534: Fix the fast-search function for non-ASCII Unicode strings. -- Issue #15508: Fix the docstring for __import__ to have the proper default +- 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. @@ -317,17 +311,17 @@ Core and Builtins byte code files) equal between 32-bit and 64-bit systems. - Issue #1692335: Move initial exception args assignment to - "BaseException.__new__" to help pickling of naive subclasses. + `BaseException.__new__()` to help pickling of naive subclasses. -- Issue #12834: Fix PyBuffer_ToContiguous() for non-contiguous arrays. +- Issue #12834: Fix `PyBuffer_ToContiguous()` for non-contiguous arrays. -- Issue #15456: Fix code __sizeof__ after #12399 change. Patch by Serhiy +- 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 #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. @@ -335,7 +329,7 @@ Core and Builtins - 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 +- Issue #15314: ``__main__.__loader__`` is now set correctly during interpreter startup. - Issue #15111: When a module imported using 'from import' has an ImportError @@ -350,57 +344,62 @@ Core and Builtins - Issue #15110: Fix the tracebacks generated by "import xxx" to not show the importlib stack frames. +- Issue #16369: Global PyTypeObjects not initialized with PyType_Ready(...). + - 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, +- Issue #15897: zipimport.c doesn't check return value of fseek(). + Patch by Felipe Cruz. + +- Issue #15033: Fix the exit status bug when modules invoked using -m switch, return the proper failure return value (1). Patch contributed by Jeff Knupp. -- Issue #15229: An OSError subclass whose __init__ doesn't call back +- 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 +- Issue #15307: Virtual environments now use symlinks with framework builds on Mac OS X, like other POSIX builds. Library ------- -- Issue #15424: Add a __sizeof__ implementation for array objects. Patch by +- Issue #14590: configparser now correctly strips inline comments when delimiter + occurs earlier without preceding space. + +- Issue #15424: Add a `__sizeof__()` implementation for array objects. Patch by Ludwig Hähne. - Issue #15576: Allow extension modules to act as a package's __init__ module. -- Issue #15502: Have importlib.invalidate_caches() work on sys.meta_path instead - of sys.path_importer_cache. +- Issue #15502: Have `importlib.invalidate_caches()` work on `sys.meta_path` + instead of `sys.path_importer_cache`. - Issue #15163: Pydoc shouldn't list __loader__ as module data. - Issue #15471: Do not use mutable objects as defaults for - importlib.__import__(). + `importlib.__import__()`. - Issue #15559: To avoid a problematic failure mode when passed to the bytes - constructor, objects in the ipaddress module no longer implement __index__ - (they still implement __int__ as appropriate) + constructor, objects in the ipaddress module no longer implement `__index__()` + (they still implement `__int__()` as appropriate). - Issue #15546: Fix handling of pathological input data in the peek() and read1() methods of the BZ2File, GzipFile and LZMAFile classes. -- Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog - ended with '\'. Patch by Roger Serwy. - -- Issue #12655: Instead of requiring a custom type, os.sched_getaffinity and - os.sched_setaffinity now use regular sets of integers to represent the CPUs a - process is restricted to. +- Issue #12655: Instead of requiring a custom type, `os.sched_getaffinity()` and + `os.sched_setaffinity()` now use regular sets of integers to represent the + CPUs a process is restricted to. -- Issue #15538: Fix compilation of the getnameinfo() / getaddrinfo() emulation - code. Patch by Philipp Hagemeister. +- Issue #15538: Fix compilation of the `socket.getnameinfo()` / + `socket.getaddrinfo()` emulation code. Patch by Philipp Hagemeister. - Issue #15519: Properly expose WindowsRegistryFinder in importlib (and use the - correct term for it). Original patch by Eric Snow. + correct term for it). Original patch by Eric Snow. - Issue #15502: Bring the importlib ABCs into line with the current state of the - import protocols given PEP 420. Original patch by Eric Snow. + import protocols given PEP 420. Original patch by Eric Snow. - Issue #15499: Launching a webbrowser in Unix used to sleep for a few seconds. Original patch by Anton Barkovsky. @@ -408,37 +407,36 @@ Library - Issue #15463: The faulthandler module truncates strings to 500 characters, instead of 100, to be able to display long file paths. -- Issue #6056: Make multiprocessing use setblocking(True) on the sockets it +- Issue #6056: Make `multiprocessing` use setblocking(True) on the sockets it uses. Original patch by J Derek Wilson. - Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path. -- Issue #15041: Update "see also" list in tkinter documentation. - -- Issue #15413: os.times() had disappeared under Windows. +- Issue #15413: `os.times()` had disappeared under Windows. -- Issue #15402: An issue in the struct module that caused sys.getsizeof to +- Issue #15402: An issue in the struct module that caused `sys.getsizeof()` to return incorrect results for struct.Struct instances has been fixed. Initial patch by Serhiy Storchaka. -- Issue #15232: When mangle_from is True, email.Generator now correctly mangles - lines that start with 'From ' that occur in a MIME preamble or epilogue. +- Issue #15232: When mangle_from is True, `email.Generator` now correctly + mangles lines that start with 'From ' that occur in a MIME preamble or + epilogue. - Issue #15094: Incorrectly placed #endif in _tkinter.c. Patch by Serhiy Storchaka. -- Issue #13922: argparse no longer incorrectly strips '--'s that appear after +- Issue #13922: `argparse` no longer incorrectly strips '--'s that appear after the first one. -- Issue #12353: argparse now correctly handles null argument values. +- Issue #12353: `argparse` now correctly handles null argument values. - Issue #10017, issue #14998: Fix TypeError using pprint on dictionaries with user-defined types as keys or other unorderable keys. -- Issue #15397: inspect.getmodulename() is now based directly on importlib via a - new importlib.machinery.all_suffixes() API. +- Issue #15397: `inspect.getmodulename()` is now based directly on importlib via + a new `importlib.machinery.all_suffixes()` API. -- Issue #14635: telnetlib will use poll() rather than select() when possible to +- Issue #14635: `telnetlib` will use poll() rather than select() when possible to avoid failing due to the select() file descriptor limit. - Issue #15180: Clarify posixpath.join() error message when mixing str & bytes. @@ -455,7 +453,7 @@ Library - Issue #15233: Python now guarantees that callables registered with the atexit module will be called in a deterministic order. -- Issue #15238: shutil.copystat now copies Linux "extended attributes". +- Issue #15238: `shutil.copystat()` now copies Linux "extended attributes". - Issue #15230: runpy.run_path now correctly sets __package__ as described in the documentation. @@ -465,42 +463,42 @@ Library - Issue #15294: Fix a regression in pkgutil.extend_path()'s handling of nested namespace packages. -- Issue #15056: imp.cache_from_source() and source_from_cache() raise - NotImplementedError when sys.implementation.cache_tag is set to None. +- Issue #15056: `imp.cache_from_source()` and `imp.source_from_cache()` raise + NotImplementedError when `sys.implementation.cache_tag` is set to None. -- Issue #15256: Grammatical mistake in exception raised by imp.find_module(). +- Issue #15256: Grammatical mistake in exception raised by `imp.find_module()`. -- Issue #5931: wsgiref environ variable SERVER_SOFTWARE will specify an +- Issue #5931: `wsgiref` environ variable SERVER_SOFTWARE will specify an implementation specific term like CPython, Jython instead of generic "Python". - Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter and BufferedRWPair, from the io module. -- Issue #13248: Remove obsolete argument "version" of argparse.ArgumentParser. +- Issue #13248: Remove obsolete argument "version" of `argparse.ArgumentParser`. - Issue #14814: Implement more consistent ordering and sorting behaviour for ipaddress objects. -- Issue #14814: ipaddress network objects correctly return NotImplemented when +- Issue #14814: `ipaddress` network objects correctly return NotImplemented when compared to arbitrary objects instead of raising TypeError. - Issue #14990: Correctly fail with SyntaxError on invalid encoding declaration. -- Issue #14814: ipaddress now provides more informative error messages when +- Issue #14814: `ipaddress` now provides more informative error messages when constructing instances directly (changes permitted during beta due to provisional API status). -- Issue #15247: FileIO now raises an error when given a file descriptor pointing - to a directory. +- Issue #15247: `io.FileIO` now raises an error when given a file descriptor + pointing to a directory. - Issue #15261: Stop os.stat(fd) crashing on Windows when fd not open. -- Issue #15166: Implement imp.get_tag() using sys.implementation.cache_tag. +- Issue #15166: Implement `imp.get_tag()` using `sys.implementation.cache_tag`. -- Issue #15210: Catch KeyError when importlib.__init__ can't find +- Issue #15210: Catch KeyError when `importlib.__init__()` can't find _frozen_importlib in sys.modules, not ImportError. -- Issue #15030: importlib.abc.PyPycLoader now supports the new source size +- Issue #15030: `importlib.abc.PyPycLoader` now supports the new source size header field in .pyc files. - Issue #5346: Preserve permissions of mbox, MMDF and Babyl mailbox files on @@ -513,7 +511,7 @@ Library renamed over the old file when flush() is called on an mbox, MMDF or Babyl mailbox. -- Issue 10924: Fixed crypt.mksalt() to use a RNG that is suitable for +- Issue #10924: Fixed `crypt.mksalt()` to use a RNG that is suitable for cryptographic purpose. - Issue #15184: Ensure consistent results of OS X configuration tailoring for @@ -524,10 +522,10 @@ Library C API ----- -- Issue #15610: PyImport_ImportModuleEx() now uses a 'level' of 0 instead of -1. +- Issue #15610: `PyImport_ImportModuleEx()` now uses a 'level' of 0 instead of -1. -- Issues #15169, #14599: Strip out the C implementation of - imp.source_from_cache() used by PyImport_ExecCodeModuleWithPathnames() and +- Issue #15169, issue #14599: Strip out the C implementation of + `imp.source_from_cache()` used by PyImport_ExecCodeModuleWithPathnames() and used the Python code instead. Leads to PyImport_ExecCodeModuleObject() to not try to infer the source path from the bytecode path as PyImport_ExecCodeModuleWithPathnames() does. @@ -535,14 +533,17 @@ C API Extension Modules ----------------- -- Issue #15676: Now "mmap" check for empty files before doing the - offset check. Patch by Steven Willis. - -- Issue #6493: An issue in ctypes on Windows that caused structure bitfields - of type ctypes.c_uint32 and width 32 to incorrectly be set has been fixed. +- Issue #6493: An issue in ctypes on Windows that caused structure bitfields of + type `ctypes.c_uint32` and width 32 to incorrectly be set has been fixed. - Issue #15194: Update libffi to the 3.0.11 release. +IDLE +---- + +- Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog + ended with ``\``. Patch by Roger Serwy. + Tools/Demos ----------- @@ -562,8 +563,10 @@ Tools/Demos Documentation ------------- -- Issue #15444: Use proper spelling for non-ASCII contributor names. Patch - by Serhiy Storchaka. +- Issue #15041: Update "see also" list in tkinter documentation. + +- Issue #15444: Use proper spelling for non-ASCII contributor names. Patch by + Serhiy Storchaka. - Issue #15295: Reorganize and rewrite the documentation on the import system. @@ -578,25 +581,29 @@ Documentation "changed" since they will no longer work with modules directly imported by import itself. -- Issue #13557: Clarify effect of giving two different namespaces to exec or - execfile(). +- Issue #13557: Clarify effect of giving two different namespaces to `exec()` or + `execfile()`. -- Issue #15250: Document that filecmp.dircmp compares files shallowly. Patch +- Issue #15250: Document that `filecmp.dircmp()` compares files shallowly. Patch contributed by Chris Jerdonek. +- Issue #15442: Expose the default list of directories ignored by + `filecmp.dircmp()` as a module attribute, and expand the list to more modern + values. + Tests ----- -- Issue #15467: Move helpers for __sizeof__ tests into test_support. Patch by - Serhiy Storchaka. +- Issue #15467: Move helpers for `__sizeof__()` tests into test_support. Patch + by Serhiy Storchaka. - Issue #15320: Make iterating the list of tests thread-safe when running tests in multiprocess mode. Patch by Chris Jerdonek. -- Issue #15168: Move importlib.test to test.test_importlib. +- Issue #15168: Move `importlib.test` to `test.test_importlib`. - Issue #15091: Reactivate a test on UNIX which was failing thanks to a - forgotten importlib.invalidate_caches() call. + forgotten `importlib.invalidate_caches()` call. - Issue #15230: Adopted a more systematic approach in the runpy tests. @@ -629,6 +636,8 @@ Build - Issue #14018: Fix OS X Tcl/Tk framework checking when using OS X SDKs. +- Issue #16256: OS X installer now sets correct permissions for doc directory. + - Issue #15431: Add _freeze_importlib project to regenerate importlib.h on Windows. Patch by Kristján Valur Jónsson. @@ -664,14 +673,9 @@ Core and Builtins - Issue #11626: Add _SizeT functions to stable ABI. -- Issue #15146: Add PyType_FromSpecWithBases. Patch by Robin Schreiber. - - Issue #15142: Fix reference leak when deallocating instances of types created using PyType_FromSpec(). -- Issue #15042: Add PyState_AddModule and PyState_RemoveModule. Add version - guard for Py_LIMITED_API additions. Patch by Robin Schreiber. - - Issue #10053: Don't close FDs when FileIO.__init__ fails. Loosely based on the work by Hirokazu Yamamoto. @@ -699,9 +703,6 @@ Core and Builtins Library ------- -- Issue #9803: Don't close IDLE on saving if breakpoint is open. - Patch by Roger Serwy. - - Issue #12288: Consider '0' and '0.0' as valid initialvalue for tkinter SimpleDialog. @@ -720,14 +721,8 @@ Library - Issue #15514: Correct __sizeof__ support for cpu_set. Patch by Serhiy Storchaka. -- Issue #15187: Bugfix: remove temporary directories test_shutil was leaving - behind. - - Issue #15177: Added dir_fd parameter to os.fwalk(). -- Issue #15176: Clarified behavior, documentation, and implementation - of os.listdir(). - - Issue #15061: Re-implemented hmac.compare_digest() in C to prevent further timing analysis and to support all buffer protocol aware objects as well as ASCII only str instances safely. @@ -827,10 +822,6 @@ Library - Issue #15006: Allow equality comparison between naive and aware time or datetime objects. -- Issue #14982: Document that pkgutil's iteration functions require the - non-standard iter_modules() method to be defined by an importer (something - the importlib importers do not define). - - Issue #15036: Mailbox no longer throws an error if a flush is done between operations when removing or changing multiple items in mbox, MMDF, or Babyl mailboxes. @@ -898,9 +889,6 @@ Library - Issue #14969: Better handling of exception chaining in contextlib.ExitStack -- Issue #14962: Update text coloring in IDLE shell window after changing - options. Patch by Roger Serwy. - - Issue #14963: Convert contextlib.ExitStack.__exit__ to use an iterative algorithm (Patch by Alon Horev) @@ -913,6 +901,11 @@ Library C-API ----- +- Issue #15146: Add PyType_FromSpecWithBases. Patch by Robin Schreiber. + +- Issue #15042: Add PyState_AddModule and PyState_RemoveModule. Add version + guard for Py_LIMITED_API additions. Patch by Robin Schreiber. + - Issue #13783: Inadvertent additions to the public C API in the PEP 380 implementation have either been removed or marked as private interfaces. @@ -921,9 +914,25 @@ Extension Modules - Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c. +IDLE +---- + +- Issue #9803: Don't close IDLE on saving if breakpoint is open. + Patch by Roger Serwy. + +- Issue #14962: Update text coloring in IDLE shell window after changing + options. Patch by Roger Serwy. + Documentation ------------- +- Issue #15176: Clarified behavior, documentation, and implementation + of os.listdir(). + +- Issue #14982: Document that pkgutil's iteration functions require the + non-standard iter_modules() method to be defined by an importer (something + the importlib importers do not define). + - Issue #15081: Document PyState_FindModule. Patch by Robin Schreiber. @@ -932,6 +941,9 @@ Documentation Tests ----- +- Issue #15187: Bugfix: remove temporary directories test_shutil was leaving + behind. + - Issue #14769: test_capi now has SkipitemTest, which cleverly checks for "parity" between PyArg_ParseTuple() and the Python/getargs.c static function skipitem() for all possible "format units". @@ -1020,34 +1032,18 @@ Core and Builtins - Issue #14700: Fix two broken and undefined-behaviour-inducing overflow checks in old-style string formatting. -- Issue #14705: The PyArg_Parse() family of functions now support the 'p' format - unit, which accepts a "boolean predicate" argument. It converts any Python - value into an integer--0 if it is "false", and 1 otherwise. - Library ------- - Issue #14690: Use monotonic clock instead of system clock in the sched, subprocess and trace modules. -- Issue #14958: Change IDLE systax highlighting to recognize all string and - byte literals supported in Python 3.3. - -- Issue #10997: Prevent a duplicate entry in IDLE's "Recent Files" menu. - - Issue #14443: Tell rpmbuild to use the correct version of Python in bdist_rpm. Initial patch by Ross Lagerwall. -- Issue #14929: Stop Idle 3.x from closing on Unicode decode errors when - grepping. Patch by Roger Serwy. - - Issue #12515: email now registers a defect if it gets to EOF while parsing a MIME part without seeing the closing MIME boundary. -- Issue #12510: Attempting to get invalid tooltip no longer closes Idle. - Other tooltipss have been corrected or improved and the number of tests - has been tripled. Original patch by Roger Serwy. - - Issue #1672568: email now always decodes base64 payloads, adding padding and ignoring non-base64-alphabet characters if needed, and registering defects for any such problems. @@ -1081,9 +1077,6 @@ Library - Issue #14548: Make multiprocessing finalizers check pid before running to cope with possibility of gc running just after fork. -- Issue #14863: Update the documentation of os.fdopen() to reflect the - fact that it's only a thin wrapper around open() anymore. - - Issue #14036: Add an additional check to validate that port in urlparse does not go in illegal range and returns None. @@ -1210,6 +1203,21 @@ Library - Issue #14127 and #10148: shutil.copystat now preserves exact mtime and atime on filesystems providing nanosecond resolution. +IDLE +---- + +- Issue #14958: Change IDLE systax highlighting to recognize all string and + byte literals supported in Python 3.3. + +- Issue #10997: Prevent a duplicate entry in IDLE's "Recent Files" menu. + +- Issue #14929: Stop IDLE 3.x from closing on Unicode decode errors when + grepping. Patch by Roger Serwy. + +- Issue #12510: Attempting to get invalid tooltip no longer closes IDLE. + Other tooltipss have been corrected or improved and the number of tests + has been tripled. Original patch by Roger Serwy. + Tools/Demos ----------- @@ -1228,9 +1236,19 @@ Build - Issue #13210: Windows build now uses VS2010, ported from VS2008. +C-API +----- + +- Issue #14705: The PyArg_Parse() family of functions now support the 'p' format + unit, which accepts a "boolean predicate" argument. It converts any Python + value into an integer--0 if it is "false", and 1 otherwise. + Documentation ------------- +- Issue #14863: Update the documentation of os.fdopen() to reflect the + fact that it's only a thin wrapper around open() anymore. + - Issue #14588: The language reference now accurately documents the Python 3 class definition process. Patch by Nick Coghlan. @@ -1279,9 +1297,6 @@ Core and Builtins - Issue #14339: Speed improvements to bin, oct and hex functions. Patch by Serhiy Storchaka. -- Issue #14098: New functions PyErr_GetExcInfo and PyErr_SetExcInfo. - Patch by Stefan Behnel. - - Issue #14385: It is now possible to use a custom type for the __builtins__ namespace, instead of a dict. It can be used for sandboxing for example. Raise also a NameError instead of ImportError if __build_class__ name if not @@ -1431,12 +1446,6 @@ Library - Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder. -- Issue #8515: Set __file__ when run file in IDLE. - Initial patch by Bruce Frederiksen. - -- Issue #14496: Fix wrong name in idlelib/tabbedpages.py. - Patch by Popa Claudiu. - - Issue #3033: Add displayof parameter to tkinter font. Patch by Guilherme Polo. - Issue #14482: Raise a ValueError, not a NameError, when trying to create @@ -1472,6 +1481,15 @@ Tests - Issue #14355: Regrtest now supports the standard unittest test loading, and will use it if a test file contains no `test_main` method. +IDLE +---- + +- Issue #8515: Set __file__ when run file in IDLE. + Initial patch by Bruce Frederiksen. + +- Issue #14496: Fix wrong name in idlelib/tabbedpages.py. + Patch by Popa Claudiu. + Tools / Demos ------------- @@ -1481,6 +1499,12 @@ Tools / Demos - Issue #13165: stringbench is now available in the Tools/stringbench folder. It used to live in its own SVN project. +C-API +----- + +- Issue #14098: New functions PyErr_GetExcInfo and PyErr_SetExcInfo. + Patch by Stefan Behnel. + What's New in Python 3.3.0 Alpha 2? =================================== @@ -1532,16 +1556,9 @@ Library - Issue #5136: deprecate old, unused functions from tkinter. -- Issue #14409: IDLE now properly executes commands in the Shell window - when it cannot read the normal config files on startup and - has to use the built-in default key bindings. - There was previously a bug in one of the defaults. - - Issue #14416: syslog now defines the LOG_ODELAY and LOG_AUTHPRIV constants if they are defined in <syslog.h>. -- IDLE can be launched as python -m idlelib - - Issue #14295: Add unittest.mock - Issue #7652: Add --with-system-libmpdec option to configure for linking @@ -1567,9 +1584,6 @@ Library up the decimal module. Performance gains of the new C implementation are between 10x and 100x, depending on the application. -- Issue #3573: IDLE hangs when passing invalid command line args - (directory(ies) instead of file(s)) (Patch by Guilherme Polo) - - Issue #14269: SMTPD now conforms to the RFC and requires a HELO command before MAIL, RCPT, or DATA. @@ -1601,8 +1615,6 @@ Library denial of service due to hash collisions. Patch by David Malcolm with some modifications by the expat project. -- Issue #14200: Idle shell crash on printing non-BMP unicode character. - - Issue #12818: format address no longer needlessly \ escapes ()s in names when the name ends up being quoted. @@ -1618,8 +1630,6 @@ Library - Issue #989712: Support using Tk without a mainloop. -- Issue #5219: Prevent event handler cascade in IDLE. - - Issue #3835: Refuse to use unthreaded Tcl in threaded Python. - Issue #2843: Add new Tk API to Tkinter. @@ -1848,10 +1858,6 @@ Core and Builtins on POSIX systems supporting anonymous memory mappings. Patch by Charles-François Natali. -- Issue #13452: PyUnicode_EncodeDecimal() doesn't support error handlers - different than "strict" anymore. The caller was unable to compute the - size of the output buffer: it depends on the error handler. - - PEP 3155 / issue #13448: Qualified name for classes and functions. - Issue #13436: Fix a bogus error message when an AST object was passed @@ -1942,10 +1948,6 @@ Core and Builtins - PEP 3151 / issue #12555: reworking the OS and IO exception hierarchy. -- Issue #13560: Add PyUnicode_DecodeLocale(), PyUnicode_DecodeLocaleAndSize() - and PyUnicode_EncodeLocale() functions to the C API to decode/encode from/to - the current locale encoding. - - Add internal API for static strings (_Py_identifier et al.). - Issue #13063: the Windows error ERROR_NO_DATA (numbered 232 and described @@ -2028,7 +2030,7 @@ Core and Builtins deallocator calls one of the methods on the type (e.g. when subclassing IOBase). Diagnosis and patch by Davide Rizzo. -- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows. +- Issue #9611, Issue #9015: FileIO.read() clamps the length to INT_MAX on Windows. - Issue #9642: Uniformize the tests on the availability of the mbcs codec, add a new HAVE_MBCS define. @@ -2191,17 +2193,11 @@ Core and Builtins PyUnicode_AsUTF8String() and PyUnicode_AsEncodedString(unicode, "utf-8", NULL). -- Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats. - - Issue #10829: Refactor PyUnicode_FromFormat(), use the same function to parse the format string in the 3 steps, fix crashs on invalid format strings. - Issue #13007: whichdb should recognize gdbm 1.9 magic numbers. -- Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from - UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode). - Patch written by Ray Allen. - - Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with a buffer struct having a NULL data pointer. @@ -2211,9 +2207,6 @@ Core and Builtins - Issue #11828: startswith and endswith now accept None as slice index. Patch by Torsten Becker. -- Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on - narrow build. - - Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx(). It encoded the Unicode filename to UTF-8, but the encoding fails on undecodable filename (on surrogate characters) which raises an unexpected @@ -2255,15 +2248,9 @@ Library are dead or dying. Moreover, the implementation is now O(1) rather than O(n). -- Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode. - Patch by Mikhail Novikov. - - Issue #11841: Fix comparison bug with 'rc' versions in packaging.version. Patch by Filip Gruszczyński. -- Issue #13447: Add a test file to host regression tests for bugs in the - scripts found in the Tools directory. - - Issue #6884: Fix long-standing bugs with MANIFEST.in parsing in distutils on Windows. Also fixed in packaging. @@ -2319,9 +2306,6 @@ Library authenticating (since the result may change, according to RFC 4643). Patch by Hynek Schlawack. -- Issue #13989: Document that GzipFile does not support text mode, and give a - more helpful error message when opened with an invalid mode string. - - Issue #13590: On OS X 10.7 and 10.6 with Xcode 4.2, building Distutils-based packages with C extension modules may fail because Apple has removed gcc-4.2, the version used to build python.org @@ -2338,10 +2322,6 @@ Library - Issue #13960: HTMLParser is now able to handle broken comments when strict=False. -- Issue #13921: Undocument and clean up sqlite3.OptimizedUnicode, - which is obsolete in Python 3.x. It's now aliased to str for - backwards compatibility. - - When '' is a path (e.g. in sys.path), make sure __file__ uses the current working directory instead of '' in importlib. @@ -2363,11 +2343,6 @@ Library - Issue #10811: Fix recursive usage of cursors. Instead of crashing, raise a ProgrammingError now. -- Issue #10881: Fix test_site failure with OS X framework builds. - -- Issue #964437: Make IDLE help window non-modal. - Patch by Guilherme Polo and Roger Serwy. - - Issue #13734: Add os.fwalk(), a directory walking function yielding file descriptors. @@ -2377,16 +2352,8 @@ Library - Issue #11805: package_data in setup.cfg should allow more than one value. -- Issue #13933: IDLE auto-complete did not work with some imported - module, like hashlib. (Patch by Roger Serwy) - -- Issue #13901: Prevent test_distutils failures on OS X with --enable-shared. - - Issue #13676: Handle strings with embedded zeros correctly in sqlite3. -- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell. - Original patches by Marco Scataglini and Roger Serwy. - - Issue #8828: Add new function os.replace(), for cross-platform renaming with overwriting. @@ -2407,12 +2374,6 @@ Library OSError if localtime() failed. time.clock() now raises a RuntimeError if the processor time used is not available or its value cannot be represented -- Issue #13862: Fix spurious failure in test_zlib due to runtime/compile time - minor versions not matching. - -- Issue #12804: Fix test_socket and test_urllib2net failures when running tests - on a system without internet access. - - Issue #13772: In os.symlink() under Windows, do not try to guess the link target's type (file or directory). The detection was buggy and made the call non-atomic (therefore prone to race conditions). @@ -2439,9 +2400,6 @@ Library - Issue #13642: Unquote before b64encoding user:password during Basic Authentication. Patch contributed by Joonas Kuorilehto. -- Issue #13726: Fix the ambiguous -S flag in regrtest. It is -o/--slow for slow - tests. - - Issue #12364: Fix a hang in concurrent.futures.ProcessPoolExecutor. The hang would occur when retrieving the result of a scheduled future after the executor had been shut down. @@ -2524,10 +2482,6 @@ Library - Issue #13591: A bug in importlib has been fixed that caused import_module to load a module twice. -- Issue #4625: If IDLE cannot write to its recent file or breakpoint files, - display a message popup and continue rather than crash. Original patch by - Roger Serwy. - - Issue #13449 sched.scheduler.run() method has a new "blocking" parameter which when set to False makes run() execute the scheduled events due to expire soonest (if any) and then return. Patch by Giampaolo Rodolà. @@ -2544,12 +2498,9 @@ Library 'importlib.abc.PyPycLoader', 'nntplib.NNTP.xgtitle', 'nntplib.NNTP.xpath', and private attributes of 'smtpd.SMTPChannel'. -- Issue #5905, #13560: time.strftime() is now using the current locale +- Issue #5905, Issue #13560: time.strftime() is now using the current locale encoding, instead of UTF-8, if the wcsftime() function is not available. -- Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..". - Patch by Tal Einat. - - Issue #13464: Add a readinto() method to http.client.HTTPResponse. Patch by Jon Kuhn. @@ -2661,9 +2612,6 @@ Library - Issue #10817: Fix urlretrieve function to raise ContentTooShortError even when reporthook is None. Patch by Jyrki Pulliainen. -- Issue #13296: Fix IDLE to clear compile __future__ flags on shell restart. - (Patch by Roger Serwy) - - Fix the xmlrpc.client user agent to return something similar to urllib.request user agent: "Python-xmlrpc/3.3". @@ -2766,10 +2714,6 @@ Library - Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported. -- Issue #9871: Prevent IDLE 3 crash when given byte stings - with invalid hex escape sequences, like b'\x0'. - (Original patch by Claudiu Popa.) - - Issue #12306: Expose the runtime version of the zlib C library as a constant, ZLIB_RUNTIME_VERSION, in the zlib module. Patch by Torsten Landschoff. @@ -2798,8 +2742,6 @@ Library - Issue #12878: Expose a __dict__ attribute on io.IOBase and its subclasses. -- Issue #12636: IDLE reads the coding cookie when executing a Python script. - - Issue #12494: On error, call(), check_call(), check_output() and getstatusoutput() functions of the subprocess module now kill the process, read its status (to avoid zombis) and close pipes. @@ -2869,9 +2811,6 @@ Library - Issue #10087: Fix the html output format of the calendar module. -- Issue #12540: Prevent zombie IDLE processes on Windows due to changes - in os.kill(). - - Issue #13121: add support for inplace math operators to collections.Counter. - Add support for unary plus and unary minus to collections.Counter. @@ -2903,7 +2842,7 @@ Library Condition, etc.) used to be factory functions returning instances of hidden classes (_Event, _Condition, etc.), because (if Guido recalls correctly) this code pre-dates the ability to subclass extension types. It is now possible - to inherit from these classes without having to import the private + to inherit from these classes, without having to import the private underscored names like multiprocessing did. - Issue #9723: Add shlex.quote functions, to escape filenames and command @@ -2917,14 +2856,8 @@ Library - Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is given as a low fd, it gets overwritten. -- Issue #12590: IDLE editor window now always displays the first line - when opening a long file. With Tk 8.5, the first line was hidden. - - Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates) - Connection:close header. - -- Issue #12102: Document that buffered files must be flushed before being used - with mmap. Patch by Steffen Daode Nurpmeso. + ``Connection: close`` header. - Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling. @@ -3179,7 +3112,7 @@ Library - Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError if the file is closed. -- Issue #11109: New service_action method for BaseServer, used by ForkingMixIn +- Issue #11109: New service_action method for BaseServer, used by ForkingMixin class for cleanup. Initial Patch by Justin Warkentin. - Issue #12045: Avoid duplicate execution of command in @@ -3224,9 +3157,6 @@ Library passing a ``context`` argument pointing to an ssl.SSLContext instance. Patch by Kasun Herath. -- Issue #11088: don't crash when using F5 to run a script in IDLE on MacOSX - with Tk 8.5. - - Issue #9516: Issue #9516: avoid errors in sysconfig when MACOSX_DEPLOYMENT_TARGET is set in shell. @@ -3246,10 +3176,6 @@ Library - Issue #9971: Write an optimized implementation of BufferedReader.readinto(). Patch by John O'Connor. -- Issue #1028: Tk returns invalid Unicode null in %A: UnicodeDecodeError. - With Tk < 8.5 _tkinter.c:PythonCmd() raised UnicodeDecodeError, caused - IDLE to exit. Converted to valid Unicode null in PythonCmd(). - - Issue #11799: urllib.request Authentication Handlers will raise a ValueError when presented with an unsupported Authentication Scheme. Patch contributed by Yuval Greenfield. @@ -3486,12 +3412,12 @@ Library - Issue #7639: Fix short file name generation in bdist_msi -- Issue #11659: Fix ResourceWarning in test_subprocess introduced by #11459. - Patch by Ben Hayden. - - Issue #11635: Don't use polling in worker threads and processes launched by concurrent.futures. +- Issue #5845: Automatically read readline configuration to enable completion + in interactive mode. + - Issue #6811: Allow importlib to change a code object's co_filename attribute to match the path to where the source code currently is, not where the code object originally came from. @@ -3526,7 +3452,7 @@ Library - Issue #11127: Raise a TypeError when trying to pickle a socket object. -- Issue #11563: Connection:close header is sent by requests using URLOpener +- Issue #11563: ``Connection: close`` header is sent by requests using URLOpener class which helps in closing of sockets after connection is over. Patch contributions by Jeff McNeil and Nadeem Vawda. @@ -3541,8 +3467,6 @@ Library - Issue #10979: unittest stdout buffering now works with class and module setup and teardown. -- Issue #11577: fix ResourceWarning triggered by improved binhex test coverage - - Issue #11243: fix the parameter querying methods of Message to work if the headers contain un-encoded non-ASCII data. @@ -3575,9 +3499,6 @@ Library - Issue #11554: Fixed support for Japanese codecs; previously the body output encoding was not done if euc-jp or shift-jis was specified as the charset. -- Issue #11509: Significantly increase test coverage of fileinput. - Patch by Denver Coneybeare at PyCon 2011 Sprints. - - Issue #11407: `TestCase.run` returns the result object used or created. Contributed by Janathan Hartley. @@ -3700,11 +3621,6 @@ Library - Issue #9348: Raise an early error if argparse nargs and metavar don't match. -- Issue #8982: Improve the documentation for the argparse Namespace object. - -- Issue #9343: Document that argparse parent parsers must be configured before - their children. - - Issue #9026: Fix order of argparse sub-commands in help messages. - Issue #9347: Fix formatting for tuples in argparse type= error messages. @@ -3757,10 +3673,61 @@ Build - Issue #11495: OSF support is eliminated. It was deprecated in Python 3.2. - IDLE ---- +- Issue #14409: IDLE now properly executes commands in the Shell window + when it cannot read the normal config files on startup and + has to use the built-in default key bindings. + There was previously a bug in one of the defaults. + +- IDLE can be launched as python -m idlelib + +- Issue #3573: IDLE hangs when passing invalid command line args + (directory(ies) instead of file(s)) (Patch by Guilherme Polo) + +- Issue #14200: IDLE shell crash on printing non-BMP unicode character. + +- Issue #5219: Prevent event handler cascade in IDLE. + +- Issue #964437: Make IDLE help window non-modal. + Patch by Guilherme Polo and Roger Serwy. + +- Issue #13933: IDLE auto-complete did not work with some imported + module, like hashlib. (Patch by Roger Serwy) + +- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell. + Original patches by Marco Scataglini and Roger Serwy. + +- Issue #4625: If IDLE cannot write to its recent file or breakpoint files, + display a message popup and continue rather than crash. Original patch by + Roger Serwy. + +- Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..". + Patch by Tal Einat. + +- Issue #13296: Fix IDLE to clear compile __future__ flags on shell restart. + (Patch by Roger Serwy) + +- Issue #9871: Prevent IDLE 3 crash when given byte stings + with invalid hex escape sequences, like b'\x0'. + (Original patch by Claudiu Popa.) + +- Issue #12636: IDLE reads the coding cookie when executing a Python script. + +- Issue #12540: Prevent zombie IDLE processes on Windows due to changes + in os.kill(). + +- Issue #12590: IDLE editor window now always displays the first line + when opening a long file. With Tk 8.5, the first line was hidden. + +- Issue #11088: don't crash when using F5 to run a script in IDLE on MacOSX + with Tk 8.5. + +- Issue #1028: Tk returns invalid Unicode null in %A: UnicodeDecodeError. + With Tk < 8.5 _tkinter.c:PythonCmd() raised UnicodeDecodeError, caused + IDLE to exit. Converted to valid Unicode null in PythonCmd(). + - Issue #11718: IDLE's open module dialog couldn't find the __init__.py file in a package. @@ -3790,6 +3757,10 @@ Tools/Demos Extension Modules ----------------- +- Issue #16847: Fixed improper use of _PyUnicode_CheckConsistency() in + non-pydebug builds. Several extension modules now compile cleanly when + assert()s are enabled in standard builds (-DDEBUG flag). + - Issue #13840: The error message produced by ctypes.create_string_buffer when given a Unicode string has been fixed. @@ -3852,6 +3823,33 @@ Extension Modules Tests ----- +- Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode. + Patch by Mikhail Novikov. + +- Issue #13447: Add a test file to host regression tests for bugs in the + scripts found in the Tools directory. + +- Issue #10881: Fix test_site failure with OS X framework builds. + +- Issue #13901: Prevent test_distutils failures on OS X with --enable-shared. + +- Issue #13862: Fix spurious failure in test_zlib due to runtime/compile time + minor versions not matching. + +- Issue #12804: Fix test_socket and test_urllib2net failures when running tests + on a system without internet access. + +- Issue #13726: Fix the ambiguous -S flag in regrtest. It is -o/--slow for slow + tests. + +- Issue #11659: Fix ResourceWarning in test_subprocess introduced by #11459. + Patch by Ben Hayden. + +- Issue #11577: fix ResourceWarning triggered by improved binhex test coverage + +- Issue #11509: Significantly increase test coverage of fileinput. + Patch by Denver Coneybeare at PyCon 2011 Sprints. + - Issue #11689: Fix a variable scoping error in an sqlite3 test - Issue #13786: Remove unimplemented 'trace' long option from regrtest.py. @@ -4030,7 +4028,7 @@ Tests - Issue #11505: improves test coverage of string.py. Patch by Alicia Arlen -- Issue #11490: test_subprocess:test_leaking_fds_on_error no longer gives a +- Issue #11490: test_subprocess.test_leaking_fds_on_error no longer gives a false positive if the last directory in the path is inaccessible. - Issue #11223: Fix test_threadsignals to fail, not hang, when the @@ -4054,6 +4052,23 @@ Tests C-API ----- +- Issue #13452: PyUnicode_EncodeDecimal() doesn't support error handlers + different than "strict" anymore. The caller was unable to compute the + size of the output buffer: it depends on the error handler. + +- Issue #13560: Add PyUnicode_DecodeLocale(), PyUnicode_DecodeLocaleAndSize() + and PyUnicode_EncodeLocale() functions to the C API to decode/encode from/to + the current locale encoding. + +- Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats. + +- Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from + UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode). + Patch written by Ray Allen. + +- Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on + narrow build. + - Add PyObject_GenericGetDict and PyObject_GeneriSetDict. They are generic implementations for the getter and setter of a ``__dict__`` descriptor of C types. @@ -4079,6 +4094,24 @@ C-API Documentation ------------- +- Issue #13989: Document that GzipFile does not support text mode, and give a + more helpful error message when opened with an invalid mode string. + +- Issue #13921: Undocument and clean up sqlite3.OptimizedUnicode, + which is obsolete in Python 3.x. It's now aliased to str for + backwards compatibility. + +- Issue #12102: Document that buffered files must be flushed before being used + with mmap. Patch by Steffen Daode Nurpmeso. + +- Issue #8982: Improve the documentation for the argparse Namespace object. + +- Issue #9343: Document that argparse parent parsers must be configured before + their children. + +- Issue #13498: Clarify docs of os.makedirs()'s exist_ok argument. Done with + great native-speaker help from R. David Murray. + - Issues #13491 and #13995: Fix many errors in sqlite3 documentation. Initial patch for #13491 by Johannes Vogel. @@ -9652,7 +9685,7 @@ Core and Builtins - Issue #1210: Fixed imaplib and its documentation. -- Issue #4233: Changed semantic of ``_fileio.FileIO``'s ``close()`` +- Issue #4233: Changed semantic of ``_fileio.FileIO``'s ``close()`` method on file objects with closefd=False. The file descriptor is still kept open but the file object behaves like a closed file. The ``FileIO`` object also got a new readonly attribute ``closefd``. @@ -9796,13 +9829,13 @@ Core and Builtins cyclic garbage collection. - Issue #3668: Fix a memory leak with the "s*" argument parser in - PyArg_ParseTuple and friends, which occurred when the argument for "s*" + PyArg_ParseTuple and friends, which occurred when the argument for "s*" was correctly parsed but parsing of subsequent arguments failed. - Issue #3611: An exception __context__ could be cleared in a complex pattern involving a __del__ method re-raising an exception. -- Issue #2534: speed up isinstance() and issubclass() by 50-70%, so as to +- Issue #2534: speed up isinstance() and issubclass() by 50-70%, so as to match Python 2.5 speed despite the __instancecheck__ / __subclasscheck__ mechanism. In the process, fix a bug where isinstance() and issubclass(), when given a tuple of classes as second argument, were looking up @@ -9880,7 +9913,7 @@ Library - The deprecation warnings for the camelCase threading API names were removed. -- Issue #3110: multiprocessing fails to compiel on solaris 10 due to missing +- Issue #3110: multiprocessing fails to compiel on solaris 10 due to missing SEM_VALUE_MAX. Extension Modules @@ -21512,7 +21545,7 @@ Thu Feb 18 20:51:50 1999 Fred Drake <fdrake@eric.cnri.reston.va.us> Bow to font-lock at the end of the docstring, since it throws stuff off. - Make sure the path parameter to readmodule() is a list before adding it + Make sure the path paramter to readmodule() is a list before adding it with sys.path, or the addition could fail. @@ -21593,7 +21626,7 @@ New or improved ports - Improved BeOS support. -- Support dynamic loading of shared libraries on NetBSD platforms that +- Support dynamic loading of shared libraries on NetBSD platforms that use ELF (i.e., MIPS and Alpha systems). Configuration/build changes @@ -21810,7 +21843,7 @@ provide its own version of this function, while still sharing the higher-level classes in code.py. - turtle.py is a new module for simple turtle graphics. I'm still -working on it; let me know if you use this to teach Python to children +working on it; let me know if you use this to teach Python to children or other novices without prior programming experience. Obsoleted library modules @@ -21942,7 +21975,7 @@ control pseudo-device, per audio(7I). Changes to tools ---------------- -- New, improved version of Barry Warsaw's Misc/python-mode.el (editing +- New, improved version of Barry Warsaw's Misc/python-mode.el (editing support for Emacs). - tabnanny.py: added a -q ('quiet') option to tabnanny, which causes @@ -22217,7 +22250,7 @@ Windows Installer ----------------- - Install zlib.dll in the DLLs directory instead of in the win32 -system directory, to avoid conflicts with other applications that have +system directory, to avoid conflicts with other applications that have their own zlib.dll. Test Suite @@ -22297,7 +22330,7 @@ General so that a symlink to a symlink can work. - Added a hack so that when you type 'quit' or 'exit' at the -interpreter, you get a friendly explanation of how to press Ctrl-D (or +interpreter, you get a friendly explanation of how to press Ctrl-D (or Ctrl-Z) to exit. - New and improved Misc/python-mode.el (Python mode for Emacs). @@ -22470,13 +22503,13 @@ problem that randint() was accidentally defined as taking an inclusive range. Also, randint(a, b) is now redefined as randrange(a, b+1), adding extra range and type checking to its arguments! -- Add some semi-thread-safety to random.gauss() (it used to be able to +- Add some semi-thread-safety to random.gauss() (it used to be able to crash when invoked from separate threads; now the worst it can do is give a duplicate result occasionally). - Some restructuring and generalization done to cmd.py. -- Major upgrade to ConfigParser.py; converted to using 're', added new +- Major upgrade to ConfigParser.py; converted to using 're', added new exceptions, support underscore in section header and option name. No longer add 'name' option to every section; instead, add '__name__'. @@ -22673,7 +22706,7 @@ Windows Installer ----------------- - The registry key used is now "1.5" instead of "1.5.x" -- so future -versions of 1.5 and Mark Hammond's win32all installer don't need to be +versions of 1.5 and Mark Hammond's win32all installer don't need to be resynchronized. Windows Tools @@ -22740,7 +22773,7 @@ objects. dynamically add one or many entries to the table of built-in modules. - New macro Py_InitModule3(name, methods, doc) which calls -Py_InitModule4() with appropriate arguments. (The -4 variant requires +Py_InitModule4() with appropriate arguments. (The -4 variant requires you to pass an obscure version number constant which is always the same.) - New APIs PySys_WriteStdout() and PySys_WriteStderr() to write to @@ -22812,7 +22845,7 @@ less common scenario in practice. Syntax change ------------- -- The raise statement can now be used without arguments, to re-raise +- The raise statement can now be used without arguments, to re-raise a previously set exception. This should be used after catching an exception with an except clause only, either in the except clause or later in the same function. @@ -22871,7 +22904,7 @@ of a tab. The preferred module is tabnanny.py (by Tim Peters). Demo/tkinter/guido/paint.py -- Dave Mitchell Demo/sockets/unixserver.py -- Piet van Oostrum - + - Much better freeze support. The freeze script can now freeze hierarchical module names (with a corresponding change to import.c), @@ -23010,7 +23043,7 @@ certain locales). - New command supported by the ftplib module: rmd(); also fixed some minor bugs. -- The profile module now uses a different timer function by default -- +- The profile module now uses a different timer function by default -- time.clock() is generally better than os.times(). This makes it work better on Windows NT, too. @@ -23049,14 +23082,14 @@ module. Courtesy Barry Warsaw. - In the multifile module, support the optional second parameter to seek() when possible. -- Several fixes to the gopherlib module by Lars Marius Garshol. Also, +- Several fixes to the gopherlib module by Lars Marius Garshol. Also, urlparse now correctly handles Gopher URLs with query strings. - Fixed a tiny bug in format_exception() in the traceback module. Also rewrite tb_lineno() to be compatible with JPython (and not disturb the current exception!); by Jim Hugunin. -- The httplib module is more robust when servers send a short response +- The httplib module is more robust when servers send a short response -- courtesy Tim O'Malley. Tkinter and friends @@ -23071,7 +23104,7 @@ application only). no longer use the default root. - The interfaces for the bind*() and unbind() widget methods have been -redesigned; the bind*() methods now return the name of the Tcl command +redesigned; the bind*() methods now return the name of the Tcl command created for the callback, and this can be passed as a optional argument to unbind() in order to delete the command (normally, such commands are automatically unbound when the widget is destroyed, but @@ -23107,7 +23140,7 @@ intended for storing thread-local global variables. dictionary to allow recursive container types to detect recursion in their repr(), str() and print implementations. -- New function PyObject_Not(x) calculates (not x) according to Python's +- New function PyObject_Not(x) calculates (not x) according to Python's standard rules (basically, it negates the outcome PyObject_IsTrue(x). - New function _PyModule_Clear(), which clears a module's dictionary @@ -23268,7 +23301,7 @@ defined in packages correctly. The same change applies to copying instances with copy.py. The cPickle.c changes and some pickle.py changes are courtesy Jim Fulton. -- Locale support in he "re" (Perl regular expressions) module. Use +- Locale support in he "re" (Perl regular expressions) module. Use the flag re.L (or re.LOCALE) to enable locale-specific matching rules for \w and \b. The in-line syntax for this flag is (?L). @@ -23334,7 +23367,7 @@ don't know how to deal with those. - Some improvements to the _tkinter build line suggested by Case Roole. -- A full suite of platform specific files for NetBSD 1.x, submitted by +- A full suite of platform specific files for NetBSD 1.x, submitted by Anders Andersen. - New Solaris specific header STROPTS.py. @@ -23404,7 +23437,7 @@ after studying the GNU libg++ quicksort. This should be much faster if there are lots of duplicates, and otherwise at least as good. - Added "uue" as an alias for "uuencode" to mimetools.py. (Hm, the -uudecode bug where it complaints about trailing garbage is still there +uudecode bug where it complaints about trailing garbage is still there :-( ). - pickle.py requires integers in text mode to be in decimal notation @@ -23564,7 +23597,7 @@ an underscore and used to initialize the pointer. - The warning about a thread still having a frame now only happens in verbose mode. -- Change the signal finalization so that it also resets the signal +- Change the signal finialization so that it also resets the signal handlers. After this has been called, our signal handlers are no longer active! @@ -24180,7 +24213,7 @@ the C and the Python variety) and for floating point numbers. The Python/C API for frames is changed (you shouldn't be using this anyway). -- Significant speedup by inlining some common opcodes for common operand +- Significant speedup by inlining some common opcodes for common operand types (e.g. i+i, i-i, and list[i]). Fredrik Lundh. - Small speedup by reordering the method tables of some common @@ -24206,34 +24239,34 @@ pressure to document their own contributed modules :-). Note that printing the documentation now kills fewer trees -- the margins have been reduced. -- I have started documenting the Python/C API. Unfortunately this project -hasn't been completed yet. It will be complete before the final release of -Python 1.5, though. At the moment, it's better to read the LaTeX source +- I have started documenting the Python/C API. Unfortunately this project +hasn't been completed yet. It will be complete before the final release of +Python 1.5, though. At the moment, it's better to read the LaTeX source than to attempt to run it through LaTeX and print the resulting dvi file. -- The posix module (and hence os.py) now has doc strings! Thanks to Neil -Schemenauer. I received a few other contributions of doc strings. In most +- The posix module (and hence os.py) now has doc strings! Thanks to Neil +Schemenauer. I received a few other contributions of doc strings. In most other places, doc strings are still wishful thinking... Language changes ---------------- -- Private variables with leading double underscore are now a permanent -feature of the language. (These were experimental in release 1.4. I have -favorable experience using them; I can't label them "experimental" +- Private variables with leading double underscore are now a permanent +feature of the language. (These were experimental in release 1.4. I have +favorable experience using them; I can't label them "experimental" forever.) -- There's new string literal syntax for "raw strings". Prefixing a string -literal with the letter r (or R) disables all escape processing in the -string; for example, r'\n' is a two-character string consisting of a -backslash followed by the letter n. This combines with all forms of string -quotes; it is actually useful for triple quoted doc strings which might -contain references to \n or \t. An embedded quote prefixed with a -backslash does not terminate the string, but the backslash is still -included in the string; for example, r'\'' is a two-character string -consisting of a backslash and a quote. (Raw strings are also -affectionately known as Robin strings, after their inventor, Robin +- There's new string literal syntax for "raw strings". Prefixing a string +literal with the letter r (or R) disables all escape processing in the +string; for example, r'\n' is a two-character string consisting of a +backslash followed by the letter n. This combines with all forms of string +quotes; it is actually useful for triple quoted doc strings which might +contain references to \n or \t. An embedded quote prefixed with a +backslash does not terminate the string, but the backslash is still +included in the string; for example, r'\'' is a two-character string +consisting of a backslash and a quote. (Raw strings are also +affectionately known as Robin strings, after their inventor, Robin Friedrich.) - There's a simple assert statement, and a new exception @@ -24262,10 +24295,10 @@ patches to catch floating point exceptions, at the moment). - The obsolete exception ConflictError (presumably used by the long obsolete access statement) has been deleted. -- There's a new function sys.exc_info() which returns the tuple +- There's a new function sys.exc_info() which returns the tuple (sys.exc_type, sys.exc_value, sys.exc_traceback) in a thread-safe way. -- There's a new variable sys.executable, pointing to the executable file +- There's a new variable sys.executable, pointing to the executable file for the Python interpreter. - The sort() methods for lists no longer uses the C library qsort(); I @@ -24291,11 +24324,11 @@ caught an exception are kept alive until another exception is caught returning from a function that caught an exception. - There's a new "buffer" interface. Certain objects (e.g. strings and -arrays) now support the "buffer" protocol. Buffer objects are acceptable -whenever formerly a string was required for a write operation; mutable +arrays) now support the "buffer" protocol. Buffer objects are acceptable +whenever formerly a string was required for a write operation; mutable buffer objects can be the target of a read operation using the call -f.readinto(buffer). A cool feature is that regular expression matching now -also work on array objects. Contribution by Jack Jansen. (Needs +f.readinto(buffer). A cool feature is that regular expression matching now +also work on array objects. Contribution by Jack Jansen. (Needs documentation.) - String interning: dictionary lookups are faster when the lookup @@ -24587,7 +24620,7 @@ Wirzenius, and RFC 850 dates (Chris Lawrence). of message sequence specifiers without invoking a subprocess. Also added a createmessage() method by Lars Wirzenius. -- The StringIO.StringIO class now supports readline(nbytes). (Lars +- The StringIO.StringIO class now supports readline(nbytes). (Lars Wirzenius.) (Of course, you should be using cStringIO for performance.) - UserDict.py supports the new dictionary methods as well. @@ -24635,8 +24668,8 @@ command line utilities. - Various small fixes to the nntplib.py module that I can't bother to document in detail. -- Sjoerd Mullender's mimify.py module now supports base64 encoding and -includes functions to handle the funny encoding you sometimes see in mail +- Sjoerd Mullender's mimify.py module now supports base64 encoding and +includes functions to handle the funny encoding you sometimes see in mail headers. It is now documented. - mailbox.py: Added BabylMailbox. Improved the way the mailbox is @@ -24987,23 +25020,23 @@ Windows (NT and 95) NT (the old VC++ 4.2 Makefile is also still supported, but will eventually be withdrawn due to its bulkiness). -- See the note on the new module search path in the "Miscellaneous" section +- See the note on the new module search path in the "Miscellaneous" section above. - Support for Win32s (the 32-bit Windows API under Windows 3.1) is basically withdrawn. If it still works for you, you're lucky. -- There's a new extension module, msvcrt.c, which provides various -low-level operations defined in the Microsoft Visual C++ Runtime Library. -These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and +- There's a new extension module, msvcrt.c, which provides various +low-level operations defined in the Microsoft Visual C++ Runtime Library. +These include locking(), setmode(), get_osfhandle(), set_osfhandle(), and console I/O functions like kbhit(), getch() and putch(). - The -u option not only sets the standard I/O streams to unbuffered status, but also sets them in binary mode. (This can also be done using msvcrt.setmode(), by the way.) -- The, sys.prefix and sys.exec_prefix variables point to the directory -where Python is installed, or to the top of the source tree, if it was run +- The, sys.prefix and sys.exec_prefix variables point to the directory +where Python is installed, or to the top of the source tree, if it was run from there. - The various os.path modules (posixpath, ntpath, macpath) now support @@ -25011,7 +25044,7 @@ passing more than two arguments to the join() function, so os.path.join(a, b, c) is the same as os.path.join(a, os.path.join(b, c)). -- The ntpath module (normally used as os.path) supports ~ to $HOME +- The ntpath module (normally used as os.path) supports ~ to $HOME expansion in expanduser(). - The freeze tool now works on Windows. @@ -25309,47 +25342,47 @@ output directory. - New module whichdb recognizes dbm, gdbm and bsddb/dbhash files. -- The Doc/Makefile targets have been reorganized somewhat to remove the +- The Doc/Makefile targets have been reorganized somewhat to remove the insistence on always generating PostScript. - The texinfo to html filter (Doc/texi2html.py) has been improved somewhat. -- "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing +- "errors.h" has been renamed to "pyerrors.h" to resolve a long-standing name conflict on the Mac. -- Linking a module compiled with a different setting for Py_TRACE_REFS now +- Linking a module compiled with a different setting for Py_TRACE_REFS now generates a linker error rather than a core dump. -- The cgi module has a new convenience function print_exception(), which -formats a python exception using HTML. It also fixes a bug in the -compatibility code and adds a dubious feature which makes it possible to +- The cgi module has a new convenience function print_exception(), which +formats a python exception using HTML. It also fixes a bug in the +compatibility code and adds a dubious feature which makes it possible to have two query strings, one in the URL and one in the POST data. -- A subtle change in the unpickling of class instances makes it possible -to unpickle in restricted execution mode, where the __dict__ attribute is +- A subtle change in the unpickling of class instances makes it possible +to unpickle in restricted execution mode, where the __dict__ attribute is not available (but setattr() is). -- Documentation for os.path.splitext() (== posixpath.splitext()) has been +- Documentation for os.path.splitext() (== posixpath.splitext()) has been cleared up. It splits at the *last* dot. - posixfile locking is now also correctly supported on AIX. -- The tempfile module once again honors an initial setting of tmpdir. It +- The tempfile module once again honors an initial setting of tmpdir. It now works on Windows, too. -- The traceback module has some new functions to extract, format and print +- The traceback module has some new functions to extract, format and print the active stack. -- Some translation functions in the urllib module have been made a little +- Some translation functions in the urllib module have been made a little less sluggish. -- The addtag_* methods for Canvas widgets in Tkinter as well as in the -separate Canvas class have been fixed so they actually do something +- The addtag_* methods for Canvas widgets in Tkinter as well as in the +separate Canvas class have been fixed so they actually do something meaningful. - A tiny _test() function has been added to Tkinter.py. -- A generic Makefile for dynamically loaded modules is provided in the Misc +- A generic Makefile for dynamically loaded modules is provided in the Misc subdirectory (Misc/gMakefile). - A new version of python-mode.el for Emacs is provided. See @@ -25357,25 +25390,25 @@ http://www.python.org/ftp/emacs/pmdetails.html for details. The separate file pyimenu.el is no longer needed, imenu support is folded into python-mode.el. -- The configure script can finally correctly find the readline library in a -non-standard location. The LDFLAGS variable is passed on the Makefiles +- The configure script can finally correctly find the readline library in a +non-standard location. The LDFLAGS variable is passed on the Makefiles from the configure script. -- Shared libraries are now installed as programs (i.e. with executable +- Shared libraries are now installed as programs (i.e. with executable permission). This is required on HP-UX and won't hurt on other systems. -- The objc.c module is no longer part of the distribution. Objective-C +- The objc.c module is no longer part of the distribution. Objective-C support may become available as contributed software on the ftp site. - The sybase module is no longer part of the distribution. A much improved sybase module is available as contributed software from the ftp site. -- _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and -Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file +- _tkinter is now compatible with Tcl 7.5 / Tk 4.1 patch1 on Windows and +Mac (don't use unpatched Tcl/Tk!). The default line in the Setup.in file now links with Tcl 7.5 / Tk 4.1 rather than 7.4/4.0. -- In Setup, you can now write "*shared*" instead of "*noconfig*", and you +- In Setup, you can now write "*shared*" instead of "*noconfig*", and you can use *.so and *.sl as shared libraries. - Some more fidgeting for AIX shared libraries. @@ -25384,81 +25417,81 @@ can use *.so and *.sl as shared libraries. (Note -- a complete replacement by Niels Mo"ller, called gpmodule, is available from the contrib directory on the ftp site.) -- A warning is written to sys.stderr when a __del__ method raises an +- A warning is written to sys.stderr when a __del__ method raises an exception (formerly, such exceptions were completely ignored). -- The configure script now defines HAVE_OLD_CPP if the C preprocessor is +- The configure script now defines HAVE_OLD_CPP if the C preprocessor is incapable of ANSI style token concatenation and stringification. -- All source files (except a few platform specific modules) are once again +- All source files (except a few platform specific modules) are once again compatible with K&R C compilers as well as ANSI compilers. In particular, -ANSI-isms have been removed or made conditional in complexobject.c, +ANSI-isms have been removed or made conditional in complexobject.c, getargs.c and operator.c. -- The abstract object API has three new functions, PyObject_DelItem, +- The abstract object API has three new functions, PyObject_DelItem, PySequence_DelItem, and PySequence_DelSlice. -- The operator module has new functions delitem and delslice, and the -functions "or" and "and" are renamed to "or_" and "and_" (since "or" and +- The operator module has new functions delitem and delslice, and the +functions "or" and "and" are renamed to "or_" and "and_" (since "or" and "and" are reserved words). ("__or__" and "__and__" are unchanged.) -- The environment module is no longer supported; putenv() is now a function +- The environment module is no longer supported; putenv() is now a function in posixmodule (also under NT). - Error in filter(<function>, "") has been fixed. - Unrecognized keyword arguments raise TypeError, not KeyError. -- Better portability, fewer bugs and memory leaks, fewer compiler warnings, +- Better portability, fewer bugs and memory leaks, fewer compiler warnings, some more documentation. -- Bug in float power boundary case (0.0 to the negative integer power) +- Bug in float power boundary case (0.0 to the negative integer power) fixed. -- The test of negative number to the float power has been moved from the +- The test of negative number to the float power has been moved from the built-in pow() function to floatobject.c (so complex numbers can yield the correct result). -- The bug introduced in beta2 where shared libraries loaded (using +- The bug introduced in beta2 where shared libraries loaded (using dlopen()) from the current directory would fail, has been fixed. -- Modules imported as shared libraries now also have a __file__ attribute, -giving the filename from which they were loaded. The only modules without +- Modules imported as shared libraries now also have a __file__ attribute, +giving the filename from which they were loaded. The only modules without a __file__ attribute now are built-in modules. -- On the Mac, dynamically loaded modules can end in either ".slb" or -".<platform>.slb" where <platform> is either "CFM68K" or "ppc". The ".slb" +- On the Mac, dynamically loaded modules can end in either ".slb" or +".<platform>.slb" where <platform> is either "CFM68K" or "ppc". The ".slb" extension should only be used for "fat" binaries. -- C API addition: marshal.c now supports +- C API addition: marshal.c now supports PyMarshal_WriteObjectToString(object). - C API addition: getargs.c now supports PyArg_ParseTupleAndKeywords(args, kwdict, format, kwnames, ...) to parse keyword arguments. -- The PC versioning scheme (sys.winver) has changed once again. the -version number is now "<digit>.<digit>.<digit>.<apiversion>", where the -first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4, -"1.4.1" for Python 1.4.1 -- the beta level is not included) and +- The PC versioning scheme (sys.winver) has changed once again. the +version number is now "<digit>.<digit>.<digit>.<apiversion>", where the +first three <digit>s are the Python version (e.g. "1.4.0" for Python 1.4, +"1.4.1" for Python 1.4.1 -- the beta level is not included) and <apiversion> is the four-digit PYTHON_API_VERSION (currently 1005). - h2py.py accepts whitespace before the # in CPP directives -- On Solaris 2.5, it should now be possible to use either Posix threads or -Solaris threads (XXX: how do you select which is used???). (Note: the -Python pthreads interface doesn't fully support semaphores yet -- anyone +- On Solaris 2.5, it should now be possible to use either Posix threads or +Solaris threads (XXX: how do you select which is used???). (Note: the +Python pthreads interface doesn't fully support semaphores yet -- anyone care to fix this?) -- Thread support should now work on AIX, using either DCE threads or +- Thread support should now work on AIX, using either DCE threads or pthreads. - New file Demo/sockets/unicast.py -- Working Mac port, with CFM68K support, with Tk 4.1 support (though not +- Working Mac port, with CFM68K support, with Tk 4.1 support (though not both) (XXX) -- New project setup for PC port, now compatible with PythonWin, with +- New project setup for PC port, now compatible with PythonWin, with _tkinter and NumPy support (XXX) - New module site.py (XXX) @@ -25475,7 +25508,7 @@ _tkinter and NumPy support (XXX) - string.atoi c.s. now raise an exception for an empty input string. -- At last, it is no longer necessary to define HAVE_CONFIG_H in order to +- At last, it is no longer necessary to define HAVE_CONFIG_H in order to have config.h included at various places. - Unrecognized keyword arguments now raise TypeError rather than KeyError. @@ -25483,25 +25516,25 @@ have config.h included at various places. - The makesetup script recognizes files with extension .so or .sl as (shared) libraries. -- 'access' is no longer a reserved word, and all code related to its -implementation is gone (or at least #ifdef'ed out). This should make +- 'access' is no longer a reserved word, and all code related to its +implementation is gone (or at least #ifdef'ed out). This should make Python a little speedier too! -- Performance enhancements suggested by Sjoerd Mullender. This includes -the introduction of two new optional function pointers in type object, -getattro and setattro, which are like getattr and setattr but take a +- Performance enhancements suggested by Sjoerd Mullender. This includes +the introduction of two new optional function pointers in type object, +getattro and setattro, which are like getattr and setattr but take a string object instead of a C string pointer. -- New operations in string module: lstrip(s) and rstrip(s) strip whitespace -only on the left or only on the right, A new optional third argument to -split() specifies the maximum number of separators honored (so -splitfields(s, sep, n) returns a list of at most n+1 elements). (Since +- New operations in string module: lstrip(s) and rstrip(s) strip whitespace +only on the left or only on the right, A new optional third argument to +split() specifies the maximum number of separators honored (so +splitfields(s, sep, n) returns a list of at most n+1 elements). (Since 1.3, splitfields(s, None) is totally equivalent to split(s).) -string.capwords() has an optional second argument specifying the +string.capwords() has an optional second argument specifying the separator (which is passed to split()). -- regsub.split() has the same addition as string.split(). regsub.splitx(s, -sep, maxsep) implements the functionality that was regsub.split(s, 1) in +- regsub.split() has the same addition as string.split(). regsub.splitx(s, +sep, maxsep) implements the functionality that was regsub.split(s, 1) in 1.4beta2 (return a list containing the delimiters as well as the words). - Final touch for AIX loading, rewritten Misc/AIX-NOTES. @@ -25545,11 +25578,11 @@ What's new in 1.4beta2 (since beta1)? meaningful value (a few things were botched in beta 1). Lib/dos_8x3 is now a standard part of the distribution (alas). -- More improvements to the installation procedure. Typing "make install" -now inserts the version number in the pathnames of almost everything -installed, and creates the machine dependent modules (FCNTL.py etc.) if not -supplied by the distribution. (XXX There's still a problem with the latter -because the "regen" script requires that Python is installed. Some manual +- More improvements to the installation procedure. Typing "make install" +now inserts the version number in the pathnames of almost everything +installed, and creates the machine dependent modules (FCNTL.py etc.) if not +supplied by the distribution. (XXX There's still a problem with the latter +because the "regen" script requires that Python is installed. Some manual intervention may still be required.) (This has been fixed in 1.4beta3.) - New modules: errno, operator (XXX). @@ -25612,8 +25645,8 @@ What's new in 1.4beta1 (since 1.3)? - Added sys.platform and sys.exec_platform for Bill Janssen. -- Installation has been completely overhauled. "make install" now installs -everything, not just the python binary. Installation uses the install-sh +- Installation has been completely overhauled. "make install" now installs +everything, not just the python binary. Installation uses the install-sh script (borrowed from X11) to install each file. - New functions in the posix module: mkfifo, plock, remove (== unlink), @@ -25623,59 +25656,59 @@ and ftruncate. More functions are also available under NT. - Shared library support for FreeBSD. -- The --with-readline option can now be used without a DIRECTORY argument, -for systems where libreadline.* is in one of the standard places. It is +- The --with-readline option can now be used without a DIRECTORY argument, +for systems where libreadline.* is in one of the standard places. It is also possible for it to be a shared library. -- The extension tkinter has been renamed to _tkinter, to avoid confusion -with Tkinter.py oncase insensitive file systems. It now supports Tk 4.1 as +- The extension tkinter has been renamed to _tkinter, to avoid confusion +with Tkinter.py oncase insensitive file systems. It now supports Tk 4.1 as well as 4.0. -- Author's change of address from CWI in Amsterdam, The Netherlands, to +- Author's change of address from CWI in Amsterdam, The Netherlands, to CNRI in Reston, VA, USA. -- The math.hypot() function is now always available (if it isn't found in +- The math.hypot() function is now always available (if it isn't found in the C math library, Python provides its own implementation). -- The latex documentation is now compatible with latex2e, thanks to David +- The latex documentation is now compatible with latex2e, thanks to David Ascher. - The expression x**y is now equivalent to pow(x, y). - The indexing expression x[a, b, c] is now equivalent to x[(a, b, c)]. -- Complex numbers are now supported. Imaginary constants are written with -a 'j' or 'J' prefix, general complex numbers can be formed by adding a real -part to an imaginary part, like 3+4j. Complex numbers are always stored in -floating point form, so this is equivalent to 3.0+4.0j. It is also -possible to create complex numbers with the new built-in function -complex(re, [im]). For the footprint-conscious, complex number support can +- Complex numbers are now supported. Imaginary constants are written with +a 'j' or 'J' prefix, general complex numbers can be formed by adding a real +part to an imaginary part, like 3+4j. Complex numbers are always stored in +floating point form, so this is equivalent to 3.0+4.0j. It is also +possible to create complex numbers with the new built-in function +complex(re, [im]). For the footprint-conscious, complex number support can be disabled by defining the symbol WITHOUT_COMPLEX. - New built-in function list() is the long-awaited counterpart of tuple(). -- There's a new "cmath" module which provides the same functions as the -"math" library but with complex arguments and results. (There are very -good reasons why math.sqrt(-1) still raises an exception -- you have to use +- There's a new "cmath" module which provides the same functions as the +"math" library but with complex arguments and results. (There are very +good reasons why math.sqrt(-1) still raises an exception -- you have to use cmath.sqrt(-1) to get 1j for an answer.) -- The Python.h header file (which is really the same as allobjects.h except -it disables support for old style names) now includes several more files, +- The Python.h header file (which is really the same as allobjects.h except +it disables support for old style names) now includes several more files, so you have to have fewer #include statements in the average extension. -- The NDEBUG symbol is no longer used. Code that used to be dependent on -the presence of NDEBUG is now present on the absence of DEBUG. TRACE_REFS -and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG, -respectively. At long last, the source actually compiles and links without +- The NDEBUG symbol is no longer used. Code that used to be dependent on +the presence of NDEBUG is now present on the absence of DEBUG. TRACE_REFS +and REF_DEBUG have been renamed to Py_TRACE_REFS and Py_REF_DEBUG, +respectively. At long last, the source actually compiles and links without errors when this symbol is defined. -- Several symbols that didn't follow the new naming scheme have been -renamed (usually by adding to rename2.h) to use a Py or _Py prefix. There -are no external symbols left without a Py or _Py prefix, not even those -defined by sources that were incorporated from elsewhere (regexpr.c, +- Several symbols that didn't follow the new naming scheme have been +renamed (usually by adding to rename2.h) to use a Py or _Py prefix. There +are no external symbols left without a Py or _Py prefix, not even those +defined by sources that were incorporated from elsewhere (regexpr.c, md5c.c). (Macros are a different story...) -- There are now typedefs for the structures defined in config.c and +- There are now typedefs for the structures defined in config.c and frozen.c. - New PYTHON_API_VERSION value and .pyc file magic number. @@ -25689,125 +25722,125 @@ frozen.c. - The binhex and binascii modules now actually work. - The cgi module has been almost totally rewritten and documented. -It now supports file upload and a new data type to handle forms more +It now supports file upload and a new data type to handle forms more flexibly. - The formatter module (for use with htmllib) has been overhauled (again). - The ftplib module now supports passive mode and has doc strings. -- In (ideally) all places where binary files are read or written, the file -is now correctly opened in binary mode ('rb' or 'wb') so the code will work +- In (ideally) all places where binary files are read or written, the file +is now correctly opened in binary mode ('rb' or 'wb') so the code will work on Mac or PC. -- Dummy versions of os.path.expandvars() and expanduser() are now provided +- Dummy versions of os.path.expandvars() and expanduser() are now provided on non-Unix platforms. -- Module urllib now has two new functions url2pathname and pathname2url -which turn local filenames into "file:..." URLs using the same rules as -Netscape (why be different). it also supports urlretrieve() with a -pathname parameter, and honors the proxy environment variables (http_proxy +- Module urllib now has two new functions url2pathname and pathname2url +which turn local filenames into "file:..." URLs using the same rules as +Netscape (why be different). it also supports urlretrieve() with a +pathname parameter, and honors the proxy environment variables (http_proxy etc.). The URL parsing has been improved somewhat, too. -- Micro improvements to urlparse. Added urlparse.urldefrag() which +- Micro improvements to urlparse. Added urlparse.urldefrag() which removes a trailing ``#fragment'' if any. - The mailbox module now supports MH style message delimiters as well. -- The mhlib module contains some new functionality: setcontext() to set the -current folder and parsesequence() to parse a sequence as commonly passed +- The mhlib module contains some new functionality: setcontext() to set the +current folder and parsesequence() to parse a sequence as commonly passed to MH commands (e.g. 1-10 or last:5). -- New module mimify for conversion to and from MIME format of email +- New module mimify for conversion to and from MIME format of email messages. -- Module ni now automatically installs itself when first imported -- this -is against the normal rule that modules should define classes and functions -but not invoke them, but appears more useful in the case that two +- Module ni now automatically installs itself when first imported -- this +is against the normal rule that modules should define classes and functions +but not invoke them, but appears more useful in the case that two different, independent modules want to use ni's features. - Some small performance enhancements in module pickle. -- Small interface change to the profile.run*() family of functions -- more +- Small interface change to the profile.run*() family of functions -- more sensible handling of return values. -- The officially registered Mac creator for Python files is 'Pyth'. This +- The officially registered Mac creator for Python files is 'Pyth'. This replaces 'PYTH' which was used before but never registered. - Added regsub.capwords(). (XXX) -- Added string.capwords(), string.capitalize() and string.translate(). +- Added string.capwords(), string.capitalize() and string.translate(). (XXX) -- Fixed an interface bug in the rexec module: it was impossible to pass a -hooks instance to the RExec class. rexec now also supports the dynamic -loading of modules from shared libraries. Some other interfaces have been +- Fixed an interface bug in the rexec module: it was impossible to pass a +hooks instance to the RExec class. rexec now also supports the dynamic +loading of modules from shared libraries. Some other interfaces have been added too. -- Module rfc822 now caches the headers in a dictionary for more efficient +- Module rfc822 now caches the headers in a dictionary for more efficient lookup. -- The sgmllib module now understands a limited number of SGML "shorthands" +- The sgmllib module now understands a limited number of SGML "shorthands" like <A/.../ for <A>...</A>. (It's not clear that this was a good idea...) -- The tempfile module actually tries a number of different places to find a -usable temporary directory. (This was prompted by certain Linux -installations that appear to be missing a /usr/tmp directory.) [A bug in -the implementation that would ignore a pre-existing tmpdir global has been +- The tempfile module actually tries a number of different places to find a +usable temporary directory. (This was prompted by certain Linux +installations that appear to be missing a /usr/tmp directory.) [A bug in +the implementation that would ignore a pre-existing tmpdir global has been fixed in beta3.] - Much improved and enhanved FileDialog module for Tkinter. -- Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as +- Many small changes to Tkinter, to bring it more in line with Tk 4.0 (as well as Tk 4.1). -- New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and -s.dup(). Sockets now work correctly on Windows. On Windows, the built-in -extension is called _socket and a wrapper module win/socket.py provides -"makefile()" and "dup()" functionality. On Windows, the select module +- New socket interfaces include ntohs(), ntohl(), htons(), htonl(), and +s.dup(). Sockets now work correctly on Windows. On Windows, the built-in +extension is called _socket and a wrapper module win/socket.py provides +"makefile()" and "dup()" functionality. On Windows, the select module works only with socket objects. - Bugs in bsddb module fixed (e.g. missing default argument values). - The curses extension now includes <ncurses.h> when available. -- The gdbm module now supports opening databases in "fast" mode by +- The gdbm module now supports opening databases in "fast" mode by specifying 'f' as the second character or the mode string. -- new variables sys.prefix and sys.exec_prefix pass corresponding +- new variables sys.prefix and sys.exec_prefix pass corresponding configuration options / Makefile variables to the Python programmer. -- The ``new'' module now supports creating new user-defined classes as well +- The ``new'' module now supports creating new user-defined classes as well as instances thereof. -- The soundex module now sports get_soundex() to get the soundex value for an -arbitrary string (formerly it would only do soundex-based string +- The soundex module now sports get_soundex() to get the soundex value for an +arbitrary string (formerly it would only do soundex-based string comparison) as well as doc strings. -- New object type "cobject" to safely wrap void pointers for passing them +- New object type "cobject" to safely wrap void pointers for passing them between various extension modules. - More efficient computation of float**smallint. -- The mysterious bug whereby "x.x" (two occurrences of the same -one-character name) typed from the commandline would sometimes fail +- The mysterious bug whereby "x.x" (two occurrences of the same +one-character name) typed from the commandline would sometimes fail mysteriously. -- The initialization of the readline function can now be invoked by a C +- The initialization of the readline function can now be invoked by a C extension through PyOS_ReadlineInit(). -- There's now an externally visible pointer PyImport_FrozenModules which +- There's now an externally visible pointer PyImport_FrozenModules which can be changed by an embedding application. -- The argument parsing functions now support a new format character 'D' to +- The argument parsing functions now support a new format character 'D' to specify complex numbers. - Various memory leaks plugged and bugs fixed. -- Improved support for posix threads (now that real implementations are +- Improved support for posix threads (now that real implementations are beginning to apepar). Still no fully functioning semaphores. -- Some various and sundry improvements and new entries in the Tools +- Some various and sundry improvements and new entries in the Tools directory. @@ -27417,7 +27450,7 @@ it's now about 38). The limit on the size of the *run-time* stack has completely been removed -- this means that tuple or list displays can contain any number of elements (formerly more than 50 would crash the -interpreter). +interpreter). Changes to existing built-in functions and methods @@ -2,10 +2,10 @@ Python News +++++++++++ -What's New in Python 3.4.4rc1? -============================== +What's New in Python 3.5.0 beta 1? +================================== -Release date: tba +Release date: 2015-05-24 Core and Builtins ----------------- @@ -18,11 +18,18 @@ Core and Builtins - Issue #24102: Fixed exception type checking in standard error handlers. +- Issue #15027: The UTF-32 encoder is now 3x to 7x faster. + +- Issue #23290: Optimize set_merge() for cases where the target is empty. + (Contributed by Serhiy Storchaka.) + +- Issue #20274: When calling a _sqlite.Connection, it now complains if passed + any keyword arguments. Previously it silently ignored them. + - Issue #20274: Remove ignored and erroneous "kwargs" parameters from three METH_VARARGS methods on _sqlite.Connection. -- Issue #23757: PySequence_Tuple() incorrectly called the concrete list API - when the data was a list subclass. +- Issue #2292: PEP 448: Additional Unpacking Generalizations. - Issue #24096: Make warnings.warn_explicit more robust against mutation of the warnings.filters list. @@ -30,37 +37,45 @@ Core and Builtins - Issue #23996: Avoid a crash when a delegated generator raises an unnormalized StopIteration exception. Patch by Stefan Behnel. -- Issue #24022: Fix tokenizer crash when processing undecodable source code. +- Issue #23910: Optimize property() getter calls. Patch by Joe Jevnik. -- Issue #23309: Avoid a deadlock at shutdown if a daemon thread is aborted - while it is holding a lock to a buffered I/O object, and the main thread - tries to use the same I/O object (typically stdout or stderr). A fatal - error is emitted instead. +- Issue #23911: Move path-based importlib bootstrap code to a separate + frozen module. -- Issue #22977: Fixed formatting Windows error messages on Wine. - Patch by Martin Panter. +- Issue #24192: Fix namespace package imports. -- Issue #23803: Fixed str.partition() and str.rpartition() when a separator - is wider then partitioned string. +- Issue #24022: Fix tokenizer crash when processing undecodable source code. -- Issue #23192: Fixed generator lambdas. Patch by Bruno Cauet. +- Issue #9951: Added a hex() method to bytes, bytearray, and memoryview. -- Issue #23629: Fix the default __sizeof__ implementation for variable-sized - objects. +- Issue #22906: PEP 479: Change StopIteration handling inside generators. -- Issue #24044: Fix possible null pointer dereference in list.sort in out of - memory conditions. +- Issue #24017: PEP 492: Coroutines with async and await syntax. -- Issue #21354: PyCFunction_New function is exposed by python DLL again. +- Issue #23898: Fix inspect.classify_class_attrs() to support attributes + with overloaded __eq__ and __bool__. Patch by Mike Bayer. Library ------- +- Issue #15836: assertRaises(), assertRaisesRegex(), assertWarns() and + assertWarnsRegex() assertments now check the type of the first argument + to prevent possible user error. Based on patch by Daniel Wagner-Hall. + +- Issue #9858: Add missing method stubs to _io.RawIOBase. Patch by Laura + Rupprecht. + +- Issue #22955: attrgetter, itemgetter and methodcaller objects in the operator + module now support pickling. Added readable and evaluable repr for these + objects. Based on patch by Josh Rosenberg. + - Issue #22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when a directory with the chosen name already exists on Windows as well as on Unix. tempfile.mkstemp() now fails early if parent directory is not valid (not exists or is a file) on Windows. +- Issue #23780: Improved error message in os.path.join() with single argument. + - Issue #6598: Increased time precision and random number range in email.utils.make_msgid() to strengthen the uniqueness of the message ID. @@ -71,31 +86,79 @@ Library argument instead of a ValueError with a bogus FCI error number. Patch by Jeffrey Armstrong. +- Issue #13866: *quote_via* argument added to urllib.parse.urlencode. + +- Issue #20098: New mangle_from policy option for email, default True + for compat32, but False for all other policies. + +- Issue #24211: The email library now supports RFC 6532: it can generate + headers using utf-8 instead of encoded words. + +- Issue #16314: Added support for the LZMA compression in distutils. + +- Issue #21804: poplib now supports RFC 6856 (UTF8). + +- Issue #18682: Optimized pprint functions for builtin scalar types. + +- Issue #22027: smtplib now supports RFC 6531 (SMTPUTF8). + +- Issue #23488: Random generator objects now consume 2x less memory on 64-bit. + +- Issue #1322: platform.dist() and platform.linux_distribution() functions are + now deprecated. Initial patch by Vajrasky Kok. + +- Issue #22486: Added the math.gcd() function. The fractions.gcd() function now is + deprecated. Based on patch by Mark Dickinson. + +- Issue #24064: Property() docstrings are now writeable. + (Patch by Berker Peksag.) + +- Issue #22681: Added support for the koi8_t encoding. + +- Issue #22682: Added support for the kz1048 encoding. + - Issue #23796: peek and read1 methods of BufferedReader now raise ValueError if they called on a closed object. Patch by John Hergenroeder. +- Issue #21795: smtpd now supports the 8BITMIME extension whenever + the new *decode_data* constructor argument is set to False. + +- Issue #24155: optimize heapq.heapify() for better cache performance + when heapifying large lists. + +- Issue #21800: imaplib now supports RFC 5161 (enable), RFC 6855 + (utf8/internationalized email) and automatically encodes non-ASCII + usernames and passwords to UTF8. + +- Issue #24134: assertRaises(), assertRaisesRegex(), assertWarns() and + assertWarnsRegex() checks now emits a deprecation warning when callable is + None or keyword arguments except msg is passed in the context manager mode. + +- Issue #24018: Add a collections.abc.Generator abstract base class. + Contributed by Stefan Behnel. + +- Issue #23880: Tkinter's getint() and getdouble() now support Tcl_Obj. + Tkinter's getdouble() now supports any numbers (in particular int). + +- Issue #22619: Added negative limit support in the traceback module. + Based on patch by Dmitry Kazakov. + - Issue #24094: Fix possible crash in json.encode with poorly behaved dict subclasses. -- Asyncio issue 222 / PR 231 (Victor Stinner) -- fix @coroutine - functions without __name__. - - Issue #9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes. Patch written by William Orr. -- The keywords attribute of functools.partial is now always a dictionary. - -- Issues #24099, #24100, and #24101: Fix free-after-use bug in heapq's siftup - and siftdown functions. +- Issue #17445: add difflib.diff_bytes() to support comparison of + byte strings (fixes a regression from Python 2). -- Backport collections.deque fixes from Python 3.5. Prevents reentrant badness - during deletion by deferring the decref until the container has been restored - to a consistent state. +- Issue #23917: Fall back to sequential compilation when ProcessPoolExecutor + doesn't exist. Patch by Claudiu Popa. - Issue #23008: Fixed resolving attributes with boolean value is False in pydoc. - Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't - increment unfinished tasks (this bug was introduced in 3.4.3 when + increment unfinished tasks (this bug was introduced when JoinableQueue was merged with Queue). - Issue #23908: os functions now reject paths with embedded null character @@ -104,64 +167,374 @@ Library - Issue #23728: binascii.crc_hqx() could return an integer outside of the range 0-0xffff for empty data. +- Issue #23887: urllib.error.HTTPError now has a proper repr() representation. + Patch by Berker Peksag. + +- asyncio: New event loop APIs: set_task_factory() and get_task_factory(). + +- asyncio: async() function is deprecated in favour of ensure_future(). + +- Issue 24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore + support new 'async with' syntax. Contributed by Yury Selivanov. + +- Issue 24179: Support 'async for' for asyncio.StreamReader. + Contributed by Yury Selivanov. + +- Issue 24184: Add AsyncIterator and AsyncIterable ABCs to + collections.abc. Contributed by Yury Selivanov. + +- Issue 22547: Implement informative __repr__ for inspect.BoundArguments. + Contributed by Yury Selivanov. + +- Issue 24190: Implement inspect.BoundArgument.apply_defaults() method. + Contributed by Yury Selivanov. + +- Issue 20691: Add 'follow_wrapped' argument to + inspect.Signature.from_callable() and inspect.signature(). + Contributed by Yury Selivanov. + +- Issue 24248: Deprecate inspect.Signature.from_function() and + inspect.Signature.from_builtin(). + +Tests +----- + +- Issue #21520: test_zipfile no longer fails if the word 'bad' appears + anywhere in the name of the current directory. + +- Issue #9517: Move script_helper into the support package. + Patch by Christie Wilson. + +Documentation +------------- + +- Issue #22155: Add File Handlers subsection with createfilehandler to tkinter + doc. Remove obsolete example from FAQ. Patch by Martin Panter. + +- Issue #24029: Document the name binding behavior for submodule imports. + +- Issue #24077: Fix typo in man page for -I command option: -s, not -S + +Tools/Demos +----------- + +- Issue #24000: Improved Argument Clinic's mapping of converters to legacy + "format units". Updated the documentation to match. + +- Issue #24001: Argument Clinic converters now use accept={type} + instead of types={'type'} to specify the types the converter accepts. + +- Issue #23330: h2py now supports arbitrary filenames in #include. + +- Issue #24031: make patchcheck now supports git checkouts, too. + + +What's New in Python 3.5.0 alpha 4? +=================================== + +Release date: 2015-04-19 + +Core and Builtins +----------------- + +- Issue #22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now include + the architecture triplet in the extension name, to make it easy to test builds + for different ABIs in the same working tree. Under OS X, the extension name + now includes PEP 3149-style information. + +- Issue #22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. + Patch courtesy of Joe Jevnik. + +- Issue #23731: Implement PEP 488: removal of .pyo files. + +- Issue #23726: Don't enable GC for user subclasses of non-GC types that + don't add any new fields. Patch by Eugene Toder. + +- Issue #23309: Avoid a deadlock at shutdown if a daemon thread is aborted + while it is holding a lock to a buffered I/O object, and the main thread + tries to use the same I/O object (typically stdout or stderr). A fatal + error is emitted instead. + +- Issue #22977: Fixed formatting Windows error messages on Wine. + Patch by Martin Panter. + +- Issue #23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on + non-integer input. + +- Issue #24044: Fix possible null pointer dereference in list.sort in out of + memory conditions. + +- Issue #21354: PyCFunction_New function is exposed by python DLL again. + +Library +------- + +- Issue #16914: new debuglevel 2 in smtplib adds timestamps to debug output. + +- Issue #7159: urllib.request now supports sending auth credentials + automatically after the first 401. This enhancement is a superset of the + enhancement from issue #19494 and supersedes that change. + +- Issue #23703: Fix a regression in urljoin() introduced in 901e4e52b20a. + Patch by Demian Brecht. + +- Issue #4254: Adds _curses.update_lines_cols() Patch by Arnon Yaari + +- Issue 19933: Provide default argument for ndigits in round. Patch by + Vajrasky Kok. + +- Issue #23193: Add a numeric_owner parameter to + tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by + Michael Vogt and Eric Smith. + +- Issue #23342: Add a subprocess.run() function than returns a CalledProcess + instance for a more consistent API than the existing call* functions. + +- Issue #21217: inspect.getsourcelines() now tries to compute the start and end + lines from the code object, fixing an issue when a lambda function is used as + decorator argument. Patch by Thomas Ballinger and Allison Kaptur. + +- The keywords attribute of functools.partial is now always a dictionary. + - Issue #23811: Add missing newline to the PyCompileError error message. Patch by Alex Shkop. -- Issue #17898: Fix exception in gettext.py when parsing certain plural forms. +- Issue #21116: Avoid blowing memory when allocating a multiprocessing shared + array that's larger than 50% of the available RAM. Patch by Médéric Boquien. - Issue #22982: Improve BOM handling when seeking to multiple positions of a writable text file. +- Issue #23464: Removed deprecated asyncio JoinableQueue. + +- Issue #23529: Limit the size of decompressed data when reading from + GzipFile, BZ2File or LZMAFile. This defeats denial of service attacks + using compressed bombs (i.e. compressed payloads which decompress to a huge + size). Patch by Martin Panter and Nikolaus Rath. + +- Issue #21859: Added Python implementation of io.FileIO. + - Issue #23865: close() methods in multiple modules now are idempotent and more robust at shutdown. If they need to release multiple resources, all are released even if errors occur. +- Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not + available. Patch by Davin Potts. + +- Issue #10838: The subprocess now module includes SubprocessError and + TimeoutError in its list of exported names for the users wild enough + to use ``from subprocess import *``. + +- Issue #23411: Added DefragResult, ParseResult, SplitResult, DefragResultBytes, + ParseResultBytes, and SplitResultBytes to urllib.parse.__all__. + Patch by Martin Panter. + - Issue #23881: urllib.request.ftpwrapper constructor now closes the socket if the FTP connection failed to fix a ResourceWarning. -- Issue #23400: Raise same exception on both Python 2 and 3 if sem_open is not - available. Patch by Davin Potts. +- Issue #23853: :meth:`socket.socket.sendall` does no more reset the socket + timeout each time data is sent successfuly. The socket timeout is now the + maximum total duration to send all data. + +- Issue #22721: An order of multiline pprint output of set or dict containing + orderable and non-orderable elements no longer depends on iteration order of + set or dict. - Issue #15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always returns bool. tkinter.BooleanVar now validates input values (accepted bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns bool. +- Issue #10590: xml.sax.parseString() now supports string argument. + - Issue #23338: Fixed formatting ctypes error messages on Cygwin. Patch by Makoto Kato. +- Issue #15582: inspect.getdoc() now follows inheritance chains. + +- Issue #2175: SAX parsers now support a character stream of InputSource object. + - Issue #16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and arbitrary precision integers added in Tcl 8.5. - Issue #23834: Fix socket.sendto(), use the C Py_ssize_t type to store the result of sendto() instead of the C int type. +- Issue #23618: :meth:`socket.socket.connect` now waits until the connection + completes instead of raising :exc:`InterruptedError` if the connection is + interrupted by signals, signal handlers don't raise an exception and the + socket is blocking or has a timeout. :meth:`socket.socket.connect` still + raise :exc:`InterruptedError` for non-blocking sockets. + - Issue #21526: Tkinter now supports new boolean type in Tcl 8.5. +- Issue #23836: Fix the faulthandler module to handle reentrant calls to + its signal handlers. + - Issue #23838: linecache now clears the cache and returns an empty result on MemoryError. +- Issue #10395: Added os.path.commonpath(). Implemented in posixpath and ntpath. + Based on patch by Rafik Draoui. + +- Issue #23611: Serializing more "lookupable" objects (such as unbound methods + or nested classes) now are supported with pickle protocols < 4. + +- Issue #13583: sqlite3.Row now supports slice indexing. + - Issue #18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed ambigious reverse mappings. Added many new mappings. Import mapping is no longer applied to modules already mapped with full name mapping. +- Issue #23485: select.select() is now retried automatically with the + recomputed timeout when interrupted by a signal, except if the signal handler + raises an exception. This change is part of the PEP 475. + +- Issue #23752: When built from an existing file descriptor, io.FileIO() now + only calls fstat() once. Before fstat() was called twice, which was not + necessary. + +- Issue #23704: collections.deque() objects now support __add__, __mul__, and + __imul__(). + +- Issue #23171: csv.Writer.writerow() now supports arbitrary iterables. + - Issue #23745: The new email header parser now handles duplicate MIME parameter names without error, similar to how get_param behaves. +- Issue #22117: Fix os.utime(), it now rounds the timestamp towards minus + infinity (-inf) instead of rounding towards zero. + +- Issue #23310: Fix MagicMock's initializer to work with __methods__, just + like configure_mock(). Patch by Kasia Jachim. + + +Build +----- + +- Issue #23817: FreeBSD now uses "1.0" the the SOVERSION as other operating + systems, instead of just "1". + +- Issue #23501: Argument Clinic now generates code into separate files by default. + +Tests +----- + +- Issue #23799: Added test.support.start_threads() for running and + cleaning up multiple threads. + +- Issue #22390: test.regrtest now emits a warning if temporary files or + directories are left after running a test. + +Tools/Demos +----------- + +- Issue #18128: pygettext now uses standard +NNNN format in the + POT-Creation-Date header. + +- Issue #23935: Argument Clinic's understanding of format units + accepting bytes, bytearrays, and buffers is now consistent with + both the documentation and the implementation. + +- Issue #23944: Argument Clinic now wraps long impl prototypes at column 78. + +- Issue #20586: Argument Clinic now ensures that functions without docstrings + have signatures. + +- Issue #23492: Argument Clinic now generates argument parsing code with + PyArg_Parse instead of PyArg_ParseTuple if possible. + +- Issue #23500: Argument Clinic is now smarter about generating the "#ifndef" + (empty) definition of the methoddef macro: it's only generated once, even + if Argument Clinic processes the same symbol multiple times, and it's emitted + at the end of all processing rather than immediately after the first use. + +C API +----- + +- Issue #23998: PyImport_ReInitLock() now checks for lock allocation error + + +What's New in Python 3.5.0 alpha 3? +=================================== + +Release date: 2015-03-28 + +Core and Builtins +----------------- + +- Issue #23573: Increased performance of string search operations (str.find, + str.index, str.count, the in operator, str.split, str.partition) with + arguments of different kinds (UCS1, UCS2, UCS4). + +- Issue #23753: Python doesn't support anymore platforms without stat() or + fstat(), these functions are always required. + +- Issue #23681: The -b option now affects comparisons of bytes with int. + +- Issue #23632: Memoryviews now allow tuple indexing (including for + multi-dimensional memoryviews). + +- Issue #23192: Fixed generator lambdas. Patch by Bruno Cauet. + +- Issue #23629: Fix the default __sizeof__ implementation for variable-sized + objects. + +Library +------- + +- Issue #14260: The groupindex attribute of regular expression pattern object + now is non-modifiable mapping. + - Issue #23792: Ignore KeyboardInterrupt when the pydoc pager is active. This mimics the behavior of the standard unix pagers, and prevents pipepager from shutting down while the pager itself is still running. +- Issue #23775: pprint() of OrderedDict now outputs the same representation + as repr(). + +- Issue #23765: Removed IsBadStringPtr calls in ctypes + +- Issue #22364: Improved some re error messages using regex for hints. + - Issue #23742: ntpath.expandvars() no longer loses unbalanced single quotes. +- Issue #21717: The zipfile.ZipFile.open function now supports 'x' (exclusive + creation) mode. + - Issue #21802: The reader in BufferedRWPair now is closed even when closing writer failed in BufferedRWPair.close(). +- Issue #23622: Unknown escapes in regular expressions that consist of ``'\'`` + and ASCII letter now raise a deprecation warning and will be forbidden in + Python 3.6. + - Issue #23671: string.Template now allows to specify the "self" parameter as keyword argument. string.Formatter now allows to specify the "self" and the "format_string" parameters as keyword arguments. -- Issue #21560: An attempt to write a data of wrong type no longer cause - GzipFile corruption. Original patch by Wolfgang Maier. +- Issue #23502: The pprint module now supports mapping proxies. + +- Issue #17530: pprint now wraps long bytes objects and bytearrays. + +- Issue #22687: Fixed some corner cases in breaking words in tetxtwrap. + Got rid of quadratic complexity in breaking long words. + +- Issue #4727: The copy module now uses pickle protocol 4 (PEP 3154) and + supports copying of instances of classes whose __new__ method takes + keyword-only arguments. + +- Issue #23491: Added a zipapp module to support creating executable zip + file archives of Python code. Registered ".pyz" and ".pyzw" extensions + on Windows for these archives (PEP 441). + +- Issue #23657: Avoid explicit checks for str in zipapp, adding support + for pathlib.Path objects as arguments. + +- Issue #23688: Added support of arbitrary bytes-like objects and avoided + unnecessary copying of memoryview in gzip.GzipFile.write(). + Original patch by Wolfgang Maier. + +- Issue #23252: Added support for writing ZIP files to unseekable streams. - Issue #23647: Increase impalib's MAXLINE to accommodate modern mailbox sizes. @@ -173,6 +546,23 @@ Library and socket open until the garbage collector cleans them up. Patch by Martin Panter. +- Issue #23704: collections.deque() objects now support methods for index(), + insert(), and copy(). This allows deques to be registered as a + MutableSequence and it improves their substitutablity for lists. + +- Issue #23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are + now retried when interrupted by a signal not in the *sigset* parameter, if + the signal handler does not raise an exception. signal.sigtimedwait() + recomputes the timeout with a monotonic clock when it is retried. + +- Issue #23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and + codecs, that accepted only read-only bytes-like object now accept writable + bytes-like object too. + +- Issue #23646: If time.sleep() is interrupted by a signal, the sleep is now + retried with the recomputed delay, except if the signal handler raises an + exception (PEP 475). + - Issue #23136: _strptime now uniformly handles all days in week 0, including Dec 30 of previous year. Based on patch by Jim Carroll. @@ -182,9 +572,31 @@ Library - Issue #22903: The fake test case created by unittest.loader when it fails importing a test module is now picklable. +- Issue #22181: On Linux, os.urandom() now uses the new getrandom() syscall if + available, syscall introduced in the Linux kernel 3.17. It is more reliable + and more secure, because it avoids the need of a file descriptor and waits + until the kernel has enough entropy. + +- Issue #2211: Updated the implementation of the http.cookies.Morsel class. + Setting attributes key, value and coded_value directly now is deprecated. + update() and setdefault() now transform and check keys. Comparing for + equality now takes into account attributes key, value and coded_value. + copy() now returns a Morsel, not a dict. repr() now contains all attributes. + Optimized checking keys and quoting values. Added new tests. + Original patch by Demian Brecht. + +- Issue #18983: Allow selection of output units in timeit. + Patch by Julian Gindi. + +- Issue #23631: Fix traceback.format_list when a traceback has been mutated. + - Issue #23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl. +- Issue #2052: Add charset parameter to HtmlDiff.make_file(). + +- Issue #23668: Support os.truncate and os.ftruncate on Windows. + - Issue #23138: Fixed parsing cookies with absent keys or values in cookiejar. Patch by Demian Brecht. @@ -192,12 +604,66 @@ Library handle exceptions raised by an iterator. Patch by Alon Diamant and Davin Potts. +- Issue #23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. + +- Issue #23566: enable(), register(), dump_traceback() and + dump_traceback_later() functions of faulthandler now accept file + descriptors. Patch by Wei Wu. + - Issue #22928: Disabled HTTP header injections in http.client. Original patch by Demian Brecht. - Issue #23615: Modules bz2, tarfile and tokenize now can be reloaded with imp.reload(). Patch by Thomas Kluyver. +- Issue #23605: os.walk() now calls os.scandir() instead of os.listdir(). + The usage of os.scandir() reduces the number of calls to os.stat(). + Initial patch written by Ben Hoyt. + +Build +----- + +- Issue #23585: make patchcheck will ensure the interpreter is built. + +Tests +----- + +- Issue #23583: Added tests for standard IO streams in IDLE. + +- Issue #22289: Prevent test_urllib2net failures due to ftp connection timeout. + +Tools/Demos +----------- + +- Issue #22826: The result of open() in Tools/freeze/bkfile.py is now better + compatible with regular files (in particular it now supports the context + management protocol). + + +What's New in Python 3.5 alpha 2? +================================= + +Release date: 2015-03-09 + +Core and Builtins +----------------- + +- Issue #23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError + if a function returns a result and raises an exception. The SystemError is + chained to the previous exception. + +Library +------- + +- Issue #22524: New os.scandir() function, part of the PEP 471: "os.scandir() + function -- a better and faster directory iterator". Patch written by Ben + Hoyt. + +- Issue #23103: Reduced the memory consumption of IPv4Address and IPv6Address. + +- Issue #21793: BaseHTTPRequestHandler again logs response code as numeric, + not as stringified enum. Patch by Demian Brecht. + - Issue #23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST flag on certificate stores when it is available. @@ -206,8 +672,16 @@ Library - Issue #23504: Added an __all__ to the types module. +- Issue #23563: Optimized utility functions in urllib.parse. + +- Issue #7830: Flatten nested functools.partial. + - Issue #20204: Added the __module__ attribute to _tkinter classes. +- Issue #19980: Improved help() for non-recognized strings. help('') now + shows the help on str. help('help') now shows the help on help(). + Original patch by Mark Lawrence. + - Issue #23521: Corrected pure python implementation of timedelta division. * Eliminated OverflowError from timedelta * float for some floats; @@ -216,12 +690,17 @@ Library - Issue #21619: Popen objects no longer leave a zombie after exit in the with statement if the pipe was broken. Patch by Martin Panter. +- Issue #22936: Make it possible to show local variables in tracebacks for + both the traceback module and unittest. + +- Issue #15955: Add an option to limit the output size in bz2.decompress(). + Patch by Nikolaus Rath. + - Issue #6639: Module-level turtle functions no longer raise TclError after closing the window. -- Issues #814253, #9179: Warnings now are raised when group references and - conditional group references are used in lookbehind assertions in regular - expressions. +- Issues #814253, #9179: Group references and conditional group references now + work in lookbehind assertions in regular expressions. - Issue #23215: Multibyte codecs with custom error handlers that ignores errors consumed too much memory and raised SystemError or MemoryError. @@ -241,41 +720,41 @@ Library - Issue #22885: Fixed arbitrary code execution vulnerability in the dbm.dumb module. Original patch by Claudiu Popa. +- Issue #23239: ssl.match_hostname() now supports matching of IP addresses. + - Issue #23146: Fix mishandling of absolute Windows paths with forward slashes in pathlib. -- Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. +- Issue #23096: Pickle representation of floats with protocol 0 now is the same + for both Python and C implementations. -- Issue #23367: Fix possible overflows in the unicodedata module. +- Issue #19105: pprint now more efficiently uses free space at the right. -- Issue #23361: Fix possible overflow in Windows subprocess creation code. +- Issue #14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by + Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson. -- Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the - entire preamble to a multipart body. +- Issue #21717: tarfile.open() now supports 'x' (exclusive creation) mode. -- Issue #23310: Fix MagicMock's initializer to work with __methods__, just - like configure_mock(). Patch by Kasia Jachim. +- Issue #23344: marshal.dumps() is now 20-25% faster on average. -- asyncio: New event loop APIs: set_task_factory() and get_task_factory(). +- Issue #20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on + average. -- asyncio: async() function is deprecated in favour of ensure_future(). +- Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. -- Issue 23898: Fix inspect.classify_class_attrs() to support attributes - with overloaded __eq__ and __bool__. Patch by Mike Bayer. +- Issue #23367: Fix possible overflows in the unicodedata module. -Tests ------ +- Issue #23361: Fix possible overflow in Windows subprocess creation code. -- Issue #21520: test_zipfile no longer fails if the word 'bad' appears - anywhere in the name of the current directory. +- logging.handlers.QueueListener now takes a respect_handler_level keyword + argument which, if set to True, will pass messages to handlers taking handler + levels into account. -- Issue #23799: Added test.support.start_threads() for running and - cleaning up multiple threads. +- Issue #19705: turtledemo now has a visual sorting algorithm demo. Original + patch from Jason Yeo. -- Issue #22390: test.regrtest now emits a warning if temporary files or - directories are left after running a test. - -- Issue #23583: Added tests for standard IO streams in IDLE. +- Issue #23801: Fix issue where cgi.FieldStorage did not always ignore the + entire preamble to a multipart body. Build ----- @@ -283,40 +762,34 @@ Build - Issue #23445: pydebug builds now use "gcc -Og" where possible, to make the resulting executable faster. -- Issue #23686: Update OS X 10.5 installer and Windows builds to use - OpenSSL 1.0.2a. +- Issue #23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a. C API ----- -- Issue #23998: PyImport_ReInitLock() now checks for lock allocation error +- Issue #20204: Deprecation warning is now raised for builtin type without the + __module__ attribute. -Documentation -------------- - -- Issue #22155: Add File Handlers subsection with createfilehandler to tkinter - doc. Remove obsolete example from FAQ. Patch by Martin Panter. - -- Issue #24029: Document the name binding behavior for submodule imports. +Windows +------- -- Issue #24077: Fix typo in man page for -I command option: -s, not -S. +- Issue #23465: Implement PEP 486 - Make the Python Launcher aware of virtual + environments. Patch by Paul Moore. -Tools/Demos ------------ +- Issue #23437: Make user scripts directory versioned on Windows. Patch by Paul + Moore. -- Issue #23330: h2py now supports arbitrary filenames in #include. -- Issue #24031: make patchcheck now supports git checkouts, too. +What's New in Python 3.5 alpha 1? +================================= - -What's New in Python 3.4.3? -=========================== - -Release date: 2015-02-23 +Release date: 2015-02-08 Core and Builtins ----------------- +- Issue #23285: PEP 475 - EINTR handling. + - Issue #22735: Fix many edge cases (including crashes) involving custom mro() implementations. @@ -326,17 +799,46 @@ Core and Builtins - Issue #21295: Revert some changes (issue #16795) to AST line numbers and column offsets that constituted a regression. +- Issue #22986: Allow changing an object's __class__ between a dynamic type and + static type in some cases. + +- Issue #15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and + PyUnicode_EncodeCodePage() now raise an exception if the object is not an + Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on + platforms other than Windows. Patch written by Campbell Barton. + - Issue #21408: The default __ne__() now returns NotImplemented if __eq__() returned NotImplemented. Original patch by Martin Panter. - Issue #23321: Fixed a crash in str.decode() when error handler returned replacment string longer than mailformed input data. +- Issue #22286: The "backslashreplace" error handlers now works with + decoding and translating. + +- Issue #23253: Delay-load ShellExecute[AW] in os.startfile for reduced + startup overhead on Windows. + +- Issue #22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for + atomic memory access if available. Patch written by Vitor de Lima and Gustavo + Temple. + +- Issue #20284: %-interpolation (aka printf) formatting added for bytes and + bytearray. + - Issue #23048: Fix jumping out of an infinite while loop in the pdb. - Issue #20335: bytes constructor now raises TypeError when encoding or errors is specified with non-string argument. Based on patch by Renaud Blanch. +- Issue #22834: If the current working directory ends up being set to a + non-existent directory then import will no longer raise FileNotFoundError. + +- Issue #22869: Move the interpreter startup & shutdown code to a new + dedicated pylifecycle.c module + +- Issue #22847: Improve method cache efficiency. + - Issue #22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff bytes on a 32-bit platform. @@ -346,12 +848,28 @@ Core and Builtins - Issue #22643: Fix integer overflow in Unicode case operations (upper, lower, title, swapcase, casefold). +- Issue #17636: Circular imports involving relative imports are now + supported. + - Issue #22604: Fix assertion error in debug mode when dividing a complex number by (nan+0j). +- Issue #21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path + are set to None. + +- Issue #16518: Use 'bytes-like object required' in error messages that + previously used the far more cryptic "'x' does not support the buffer + protocol. + - Issue #22470: Fixed integer overflow issues in "backslashreplace", "xmlcharrefreplace", and "surrogatepass" error handlers. +- Issue #22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the + common case that the second argument has metaclass `type`. + +- Issue #18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format` + but accepting a `va_list` argument. + - Issue #22520: Fix overflow checking when generating the repr of a unicode object. @@ -359,6 +877,138 @@ Core and Builtins - Issue #22518: Fix integer overflow issues in latin-1 encoding. +- Issue #16324: _charset parameter of MIMEText now also accepts + email.charset.Charset instances. Initial patch by Claude Paroz. + +- Issue #1764286: Fix inspect.getsource() to support decorated functions. + Patch by Claudiu Popa. + +- Issue #18554: os.__all__ includes posix functions. + +- Issue #21391: Use os.path.abspath in the shutil module. + +- Issue #11471: avoid generating a JUMP_FORWARD instruction at the end of + an if-block if there is no else-clause. Original patch by Eugene Toder. + +- Issue #22215: Now ValueError is raised instead of TypeError when str or bytes + argument contains not permitted null character or byte. + +- Issue #22258: Fix the internal function set_inheritable() on Illumos. + This platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails + with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable() + now falls back to the slower ``fcntl()`` (``F_GETFD`` and then ``F_SETFD``). + +- Issue #21389: Displaying the __qualname__ of the underlying function in the + repr of a bound method. + +- Issue #22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM + and returns -1 (error) on integer overflow. + +- Issue #20184: Argument Clinic based signature introspection added for + 30 of the builtin functions. + +- Issue #22116: C functions and methods (of the 'builtin_function_or_method' + type) can now be weakref'ed. Patch by Wei Wu. + +- Issue #22077: Improve index error messages for bytearrays, bytes, lists, + and tuples by adding 'or slices'. Added ', not <typename' for bytearrays. + Original patch by Claudiu Popa. + +- Issue #20179: Apply Argument Clinic to bytes and bytearray. + Patch by Tal Einat. + +- Issue #22082: Clear interned strings in slotdefs. + +- Upgrade Unicode database to Unicode 7.0.0. + +- Issue #21897: Fix a crash with the f_locals attribute with closure + variables when frame.clear() has been called. + +- Issue #21205: Add a new ``__qualname__`` attribute to generator, the + qualified name, and use it in the representation of a generator + (``repr(gen)``). The default name of the generator (``__name__`` attribute) + is now get from the function instead of the code. Use ``gen.gi_code.co_name`` + to get the name of the code. + +- Issue #21669: With the aid of heuristics in SyntaxError.__init__, the + parser now attempts to generate more meaningful (or at least more search + engine friendly) error messages when "exec" and "print" are used as + statements. + +- Issue #21642: If the conditional if-else expression, allow an integer written + with no space between itself and the ``else`` keyword (e.g. ``True if 42else + False``) to be valid syntax. + +- Issue #21523: Fix over-pessimistic computation of the stack effect of + some opcodes in the compiler. This also fixes a quadratic compilation + time issue noticeable when compiling code with a large number of "and" + and "or" operators. + +- Issue #21418: Fix a crash in the builtin function super() when called without + argument and without current frame (ex: embedded Python). + +- Issue #21425: Fix flushing of standard streams in the interactive + interpreter. + +- Issue #21435: In rare cases, when running finalizers on objects in cyclic + trash a bad pointer dereference could occur due to a subtle flaw in + internal iteration logic. + +- Issue #21377: PyBytes_Concat() now tries to concatenate in-place when the + first argument has a reference count of 1. Patch by Nikolaus Rath. + +- Issue #20355: -W command line options now have higher priority than the + PYTHONWARNINGS environment variable. Patch by Arfrever. + +- Issue #21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c. + +- Issue #20904: Support setting FPU precision on m68k. + +- Issue #21209: Fix sending tuples to custom generator objects with the yield + from syntax. + +- Issue #21193: pow(a, b, c) now raises ValueError rather than TypeError when b + is negative. Patch by Josh Rosenberg. + +- PEP 465 and Issue #21176: Add the '@' operator for matrix multiplication. + +- Issue #21134: Fix segfault when str is called on an uninitialized + UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object. + +- Issue #19537: Fix PyUnicode_DATA() alignment under m68k. Patch by + Andreas Schwab. + +- Issue #20929: Add a type cast to avoid shifting a negative number. + +- Issue #20731: Properly position in source code files even if they + are opened in text mode. Patch by Serhiy Storchaka. + +- Issue #20637: Key-sharing now also works for instance dictionaries of + subclasses. Patch by Peter Ingebretson. + +- Issue #8297: Attributes missing from modules now include the module name + in the error text. Original patch by ysj.ray. + +- Issue #19995: %c, %o, %x, and %X now raise TypeError on non-integer input. + +- Issue #19655: The ASDL parser - used by the build process to generate code for + managing the Python AST in C - was rewritten. The new parser is self contained + and does not require to carry long the spark.py parser-generator library; + spark.py was removed from the source base. + +- Issue #12546: Allow \x00 to be used as a fill character when using str, int, + float, and complex __format__ methods. + +- Issue #20480: Add ipaddress.reverse_pointer. Patch by Leon Weber. + +- Issue #13598: Modify string.Formatter to support auto-numbering of + replacement fields. It now matches the behavior of str.format() in + this regard. Patches by Phil Elson and Ramchandra Apte. + +- Issue #8931: Make alternate formatting ('#') for type 'c' raise an + exception. In versions prior to 3.5, '#' with 'c' had no effect. Now + specifying it is an error. Patch by Torsten Landschoff. + - Issue #23165: Perform overflow checks before allocating memory in the _Py_char2wchar function. @@ -367,9 +1017,24 @@ Library - Issue #23399: pyvenv creates relative symlinks where possible. +- Issue #20289: cgi.FieldStorage() now supports the context management + protocol. + +- Issue #13128: Print response headers for CONNECT requests when debuglevel + > 0. Patch by Demian Brecht. + +- Issue #15381: Optimized io.BytesIO to make less allocations and copyings. + +- Issue #22818: Splitting on a pattern that could match an empty string now + raises a warning. Patterns that can only match empty strings are now + rejected. + - Issue #23099: Closing io.BytesIO with exported buffer is rejected now to prevent corrupting exported buffer. +- Issue #23326: Removed __ne__ implementations. Since fixing default __ne__ + implementation in issue #21408 they are redundant. + - Issue #23363: Fix possible overflow in itertools.permutations. - Issue #23364: Fix possible overflow in itertools.product. @@ -385,6 +1050,14 @@ Library is now always restored or swapped, not only if why is WHY_YIELD or WHY_RETURN. Patch co-written with Antoine Pitrou. +- Issue #14099: Restored support of writing ZIP files to tellable but + non-seekable streams. + +- Issue #14099: Writing to ZipFile and reading multiple ZipExtFiles is + threadsafe now. + +- Issue #19361: JSON decoder now raises JSONDecodeError instead of ValueError. + - Issue #18518: timeit now rejects statements which can't be compiled outside a function or a loop (e.g. "return" or "break"). @@ -399,47 +1072,85 @@ Library - Issue #19996: :class:`email.feedparser.FeedParser` now handles (malformed) headers with no key rather than assuming the body has started. +- Issue #20188: Support Application-Layer Protocol Negotiation (ALPN) in the ssl + module. + +- Issue #23133: Pickling of ipaddress objects now produces more compact and + portable representation. + - Issue #23248: Update ssl error codes from latest OpenSSL git master. +- Issue #23266: Much faster implementation of ipaddress.collapse_addresses() + when there are many non-consecutive addresses. + - Issue #23098: 64-bit dev_t is now supported in the os module. +- Issue #21817: When an exception is raised in a task submitted to a + ProcessPoolExecutor, the remote traceback is now displayed in the + parent process. Patch by Claudiu Popa. + +- Issue #15955: Add an option to limit output size when decompressing LZMA + data. Patch by Nikolaus Rath and Martin Panter. + - Issue #23250: In the http.cookies module, capitalize "HttpOnly" and "Secure" as they are written in the standard. - Issue #23063: In the disutils' check command, fix parsing of reST with code or code-block directives. -- Issue #23209, #23225: selectors.BaseSelector.close() now clears its internal - reference to the selector mapping to break a reference cycle. Initial patch - written by Martin Richard. +- Issue #23209, #23225: selectors.BaseSelector.get_key() now raises a + RuntimeError if the selector is closed. And selectors.BaseSelector.close() + now clears its internal reference to the selector mapping to break a + reference cycle. Initial patch written by Martin Richard. -- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The - availability of the function is checked during the compilation. Patch written - by Bernard Spil. +- Issue #17911: Provide a way to seed the linecache for a PEP-302 module + without actually loading the code. -- Issue #20896, #22935: The :func:`ssl.get_server_certificate` function now - uses the :data:`~ssl.PROTOCOL_SSLv23` protocol by default, not - :data:`~ssl.PROTOCOL_SSLv3`, for maximum compatibility and support platforms - where :data:`~ssl.PROTOCOL_SSLv3` support is disabled. +- Issue #17911: Provide a new object API for traceback, including the ability + to not lookup lines at all until the traceback is actually rendered, without + any trace of the original objects being kept alive. -- Issue #23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol - version. +- Issue #19777: Provide a home() classmethod on Path objects. Contributed + by Victor Salgado and Mayank Tripathi. -- Issue #23132: Mitigate regression in speed and clarity in functools.total_ordering. +- Issue #23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the + default case of ``ensure_ascii=True``. Patch by Naoki Inada. -- Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), - instead of reading /dev/urandom, to get pseudo-random bytes. +- Issue #23185: Add math.inf and math.nan constants. + +- Issue #23186: Add ssl.SSLObject.shared_ciphers() and + ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at + handshake. + +- Issue #23143: Remove compatibility with OpenSSLs older than 0.9.8. + +- Issue #23132: Improve performance and introspection support of comparison + methods created by functool.total_ordering. + +- Issue #19776: Add a expanduser() method on Path objects. - Issue #23112: Fix SimpleHTTPServer to correctly carry the query string and fragment when it redirects to add a trailing slash. +- Issue #21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK, + HTTPStatus.NOT_FOUND). Patch by Demian Brecht. + - Issue #23093: In the io, module allow more operations to work on detached streams. +- Issue #23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol + version. + +- Issue #22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), + instead of reading /dev/urandom, to get pseudo-random bytes. + - Issue #19104: pprint now produces evaluable output for wrapped strings. - Issue #23071: Added missing names to codecs.__all__. Patch by Martin Panter. +- Issue #22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX + opcode if possible. + - Issue #15513: Added a __sizeof__ implementation for pickle classes. - Issue #19858: pickletools.optimize() now aware of the MEMOIZE opcode, can @@ -461,12 +1172,25 @@ Library - Issue #1218234: Fix inspect.getsource() to load updated source of reloaded module. Initial patch by Berker Peksag. +- Issue #21740: Support wrapped callables in doctest. Patch by Claudiu Popa. + +- Issue #23009: Make sure selectors.EpollSelecrtor.select() works when no + FD is registered. + - Issue #22959: In the constructor of http.client.HTTPSConnection, prefer the context's check_hostname attribute over the *check_hostname* parameter. +- Issue #22696: Add function :func:`sys.is_finalizing` to know about + interpreter shutdown. + - Issue #16043: Add a default limit for the amount of data xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753. +- Issue #14099: ZipFile.open() no longer reopen the underlying file. Objects + returned by ZipFile.open() can now operate independently of the ZipFile even + if the ZipFile was created by passing in a file-like object as the first + argument to the constructor. + - Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked to compile a source file containing multiple dots in the source file name. @@ -476,14 +1200,30 @@ Library - Issue #21032. Fixed socket leak if HTTPConnection.getresponse() fails. Original patch by Martin Panter. +- Issue #22407: Deprecated the use of re.LOCALE flag with str patterns or + re.ASCII. It was newer worked. + +- Issue #22902: The "ip" command is now used on Linux to determine MAC address + in uuid.getnode(). Pach by Bruno Cauet. + - Issue #22960: Add a context argument to xmlrpclib.ServerProxy constructor. +- Issue #22389: Add contextlib.redirect_stderr(). + +- Issue #21356: Make ssl.RAND_egd() optional to support LibreSSL. The + availability of the function is checked during the compilation. Patch written + by Bernard Spil. + - Issue #22915: SAX parser now supports files opened with file descriptor or bytes path. - Issue #22609: Constructors and update methods of mapping classes in the collections module now accept the self keyword argument. +- Issue #22940: Add readline.append_history_file. + +- Issue #19676: Added the "namereplace" error handler. + - Issue #22788: Add *context* parameter to logging.handlers.HTTPHandler. - Issue #22921: Allow SSLContext to take the *hostname* parameter even if @@ -492,14 +1232,19 @@ Library - Issue #22894: TestCase.subTest() would cause the test suite to be stopped when in failfast mode, even in the absence of failures. -- Issue #22638: SSLv3 is now disabled throughout the standard library. - It can still be enabled by instantiating a SSLContext manually. +- Issue #22796: HTTP cookie parsing is now stricter, in order to protect + against potential injection attacks. - Issue #22370: Windows detection in pathlib is now more robust. - Issue #22841: Reject coroutines in asyncio add_signal_handler(). Patch by Ludovic.Gasc. +- Issue #19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by + Matej Cepl. + +- Issue #22578: Added attributes to the re.error class. + - Issue #22849: Fix possible double free in the io.TextIOWrapper constructor. - Issue #12728: Different Unicode characters having the same uppercase but @@ -508,6 +1253,14 @@ Library - Issue #22821: Fixed fcntl() with integer argument on 64-bit big-endian platforms. +- Issue #21650: Add an `--sort-keys` option to json.tool CLI. + +- Issue #22824: Updated reprlib output format for sets to use set literals. + Patch contributed by Berker Peksag. + +- Issue #22824: Updated reprlib output format for arrays to display empty + arrays without an unnecessary empty list. Suggested by Serhiy Storchaka. + - Issue #22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on patch by Martin Panter. @@ -521,16 +1274,15 @@ Library - Issue #22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2 and above. Patch by Tim Graham. -- Issue #22366: urllib.request.urlopen will accept a context object - (SSLContext) as an argument which will then used be for HTTPS connection. - Patch by Alex Gaynor. - - Issue #22776: Brought excluded code into the scope of a try block in SysLogHandler.emit(). - Issue #22665: Add missing get_terminal_size and SameFileError to shutil.__all__. +- Issue #6623: Remove deprecated Netrc class in the ftplib module. Patch by + Matt Chaput. + - Issue #17381: Fixed handling of case-insensitive ranges in regular expressions. @@ -544,18 +1296,53 @@ Library doesn't work. This allows use with special filesystems such as VirtualBox shared folders. +- Issue #22217: Implemented reprs of classes in the zipfile module. + +- Issue #22457: Honour load_tests in the start_dir of discovery. + +- Issue #18216: gettext now raises an error when a .mo file has an + unsupported major version number. Patch by Aaron Hill. + +- Issue #13918: Provide a locale.delocalize() function which can remove + locale-specific number formatting from a string representing a number, + without then converting it to a specific type. Patch by Cédric Krier. + +- Issue #22676: Make the pickling of global objects which don't have a + __module__ attribute less slow. + - Issue #18853: Fixed ResourceWarning in shlex.__nain__. - Issue #9351: Defaults set with set_defaults on an argparse subparser are no longer ignored when also set on the parent parser. +- Issue #7559: unittest test loading ImportErrors are reported as import errors + with their import exception rather than as attribute errors after the import + has already failed. + +- Issue #19746: Make it possible to examine the errors from unittest + discovery without executing the test suite. The new `errors` attribute + on TestLoader exposes these non-fatal errors encountered during discovery. + - Issue #21991: Make email.headerregistry's header 'params' attributes be read-only (MappingProxyType). Previously the dictionary was modifiable but a new one was created on each access of the attribute. +- Issue #22638: SSLv3 is now disabled throughout the standard library. + It can still be enabled by instantiating a SSLContext manually. + - Issue #22641: In asyncio, the default SSL context for client connections is now created using ssl.create_default_context(), for stronger security. +- Issue #17401: Include closefd in io.FileIO repr. + +- Issue #21338: Add silent mode for compileall. quiet parameters of + compile_{dir, file, path} functions now have a multilevel value. Also, + -q option of the CLI now have a multilevel value. Patch by Thomas Kluyver. + +- Issue #20152: Convert the array and cmath modules to Argument Clinic. + +- Issue #18643: Add socket.socketpair() on Windows. + - Issue #22435: Fix a file descriptor leak when SocketServer bind fails. - Issue #13096: Fixed segfault in CTypes POINTER handling of large @@ -564,9 +1351,19 @@ Library - Issue #11694: Raise ConversionError in xdrlib as documented. Patch by Filip Gruszczyński and Claudiu Popa. +- Issue #19380: Optimized parsing of regular expressions. + +- Issue #1519638: Now unmatched groups are replaced with empty strings in re.sub() + and re.subn(). + +- Issue #18615: sndhdr.what/whathdr now return a namedtuple. + - Issue #22462: Fix pyexpat's creation of a dummy frame to make it appear in exception tracebacks. +- Issue #21965: Add support for in-memory SSL to the ssl module. Patch + by Geert Jansen. + - Issue #21173: Fix len() on a WeakKeyDictionary when .clear() was called with an iterator alive. @@ -576,167 +1373,65 @@ Library - Issue #21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is mutated while iterating. Patch by Olivier Grisel. +- Issue #11271: concurrent.futures.Executor.map() now takes a *chunksize* + argument to allow batching of tasks in child processes and improve + performance of ProcessPoolExecutor. Patch by Dan O'Reilly. + +- Issue #21883: os.path.join() and os.path.relpath() now raise a TypeError with + more helpful error message for unsupported or mismatched types of arguments. + - Issue #22219: The zipfile module CLI now adds entries for directories (including empty directories) in ZIP file. - Issue #22449: In the ssl.SSLContext.load_default_certs, consult the environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows. +- Issue #22508: The email.__version__ variable has been removed; the email + code is no longer shipped separately from the stdlib, and __version__ + hasn't been updated in several releases. + - Issue #20076: Added non derived UTF-8 aliases to locale aliases table. - Issue #20079: Added locales supported in glibc 2.18 to locale alias table. -- Issue #22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor - os.posix_fallocate() because their prototypes in system headers are wrong. - -- Issue #22517: When a io.BufferedRWPair object is deallocated, clear its - weakrefs. - -- Issue #22448: Improve canceled timer handles cleanup to prevent - unbound memory usage. Patch by Joshua Moore-Oliva. +- Issue #20218: Added convenience methods read_text/write_text and read_bytes/ + write_bytes to pathlib.Path objects. -- Issue #23009: Make sure selectors.EpollSelecrtor.select() works when no - FD is registered. - -IDLE ----- +- Issue #22437: Number of capturing groups in regular expression is no longer + limited by 100. -- Issue #20577: Configuration of the max line length for the FormatParagraph - extension has been moved from the General tab of the Idle preferences dialog - to the FormatParagraph tab of the Config Extensions dialog. - Patch by Tal Einat. - -- Issue #16893: Update Idle doc chapter to match current Idle and add new - information. - -- Issue #3068: Add Idle extension configuration dialog to Options menu. - Changes are written to HOME/.idlerc/config-extensions.cfg. - Original patch by Tal Einat. - -- Issue #16233: A module browser (File : Class Browser, Alt+C) requires a - editor window with a filename. When Class Browser is requested otherwise, - from a shell, output window, or 'Untitled' editor, Idle no longer displays - an error box. It now pops up an Open Module box (Alt+M). If a valid name - is entered and a module is opened, a corresponding browser is also opened. - -- Issue #4832: Save As to type Python files automatically adds .py to the - name you enter (even if your system does not display it). Some systems - automatically add .txt when type is Text files. - -- Issue #21986: Code objects are not normally pickled by the pickle module. - To match this, they are no longer pickled when running under Idle. - -- Issue #23180: Rename IDLE "Windows" menu item to "Window". - Patch by Al Sweigart. - -Tests ------ +- Issue #17442: InteractiveInterpreter now displays the full chained traceback + in its showtraceback method, to match the built in interactive interpreter. - Issue #23392: Added tests for marshal C API that works with FILE*. -- Issue #18982: Add tests for CLI of the calendar module. - -- Issue #19548: Added some additional checks to test_codecs to ensure that - statements in the updated documentation remain accurate. Patch by Martin - Panter. - -- Issue #22838: All test_re tests now work with unittest test discovery. - -- Issue #22173: Update lib2to3 tests to use unittest test discovery. - -- Issue #16000: Convert test_curses to use unittest. - -- Issue #21456: Skip two tests in test_urllib2net.py if _ssl module not - present. Patch by Remi Pointel. - -- Issue #22770: Prevent some Tk segfaults on OS X when running gui tests. - -- Issue #23211: Workaround test_logging failure on some OS X 10.6 systems. - -- Issue #23345: Prevent test_ssl failures with large OpenSSL patch level - values (like 0.9.8zc). - -- Issue #22289: Prevent test_urllib2net failures due to ftp connection timeout. - -Build ------ - -- Issue #15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure - script. - -- Issue #22935: Allow the ssl module to be compiled if openssl doesn't support - SSL 3. - -- Issue #16537: Check whether self.extensions is empty in setup.py. Patch by - Jonathan Hosmer. - -- Issue #18096: Fix library order returned by python-config. - -- Issue #17219: Add library build dir for Python extension cross-builds. - -- Issue #17128: Use private version of OpenSSL for 3.4.3 OS X 10.5+ installer. - -C API ------ - -- Issue #22079: PyType_Ready() now checks that statically allocated type has - no dynamically allocated bases. - -Documentation -------------- - -- Issue #19548: Update the codecs module documentation to better cover the - distinction between text encodings and other codecs, together with other - clarifications. Patch by Martin Panter. - -- Issue #22914: Update the Python 2/3 porting HOWTO to describe a more automated - approach. - -- Issue #21514: The documentation of the json module now refers to new JSON RFC - 7159 instead of obsoleted RFC 4627. - -Tools/Demos ------------ - -- Issue #22314: pydoc now works when the LINES environment variable is set. - -Windows -------- - -- Issue #17896: The Windows build scripts now expect external library sources - to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``. - -- Issue #17717: The Windows build scripts now use a copy of NASM pulled from - svn.python.org to build OpenSSL. - -- Issue #22644: The bundled version of OpenSSL has been updated to 1.0.1j. - -What's New in Python 3.4.2? -=========================== - -Release date: 2014-10-06 - -Core and Builtins ------------------ - -Library -------- - - Issue #10510: distutils register and upload methods now use HTML standards compliant CRLF line endings. - Issue #9850: Fixed macpath.join() for empty first component. Patch by Oleg Oshmyan. +- Issue #5309: distutils' build and build_ext commands now accept a ``-j`` + option to enable parallel building of extension modules. + +- Issue #22448: Improve canceled timer handles cleanup to prevent + unbound memory usage. Patch by Joshua Moore-Oliva. + - Issue #22427: TemporaryDirectory no longer attempts to clean up twice when used in the with statement in generator. +- Issue #22362: Forbidden ambiguous octal escapes out of range 0-0o377 in + regular expressions. + - Issue #20912: Now directories added to ZIP file have correct Unix and MS-DOS directory attributes. - Issue #21866: ZipFile.close() no longer writes ZIP64 central directory records if allowZip64 is false. +- Issue #22278: Fix urljoin problem with relative urls, a regression observed + after changes to issue22118 were submitted. + - Issue #22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re module. Removed trailing spaces in debugging output. @@ -746,47 +1441,18 @@ Library - Issue #21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line buffering, rather than block buffering. Patch by Akira Li. - -What's New in Python 3.4.2rc1? -============================== - -Release date: 2014-09-22 - -Core and Builtins ------------------ - -- Issue #22258: Fix the the internal function set_inheritable() on Illumos. - This platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails - with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable() - now falls back to the slower ``fcntl()`` (``F_GETFD`` and then ``F_SETFD``). - -- Issue #21669: With the aid of heuristics in SyntaxError.__init__, the - parser now attempts to generate more meaningful (or at least more search - engine friendly) error messages when "exec" and "print" are used as - statements. - -- Issue #21642: If the conditional if-else expression, allow an integer written - with no space between itself and the ``else`` keyword (e.g. ``True if 42else - False``) to be valid syntax. - -- Issue #21523: Fix over-pessimistic computation of the stack effect of - some opcodes in the compiler. This also fixes a quadratic compilation - time issue noticeable when compiling code with a large number of "and" - and "or" operators. - -Library -------- - - Issue #21091: Fix API bug: email.message.EmailMessage.is_attachment is now - a method. Since EmailMessage is provisional, we can change the API in a - maintenance release, but we use a trick to remain backward compatible with - 3.4.0/1. + a method. - Issue #21079: Fix email.message.EmailMessage.is_attachment to return the correct result when the header has parameters as well as a value. - Issue #22247: Add NNTPError to nntplib.__all__. +- Issue #22366: urllib.request.urlopen will accept a context object + (SSLContext) as an argument which will then used be for HTTPS connection. + Patch by Alex Gaynor. + - Issue #4180: The warnings registries are now reset when the filters are modified. @@ -798,6 +1464,9 @@ Library with non-standard cookie handling in some Web browsers. Reported by Sergey Bobrov. +- Issue #20537: logging methods now accept an exception instance as well as a + Boolean value or exception tuple. Thanks to Yury Selivanov for the patch. + - Issue #22384: An exception in Tkinter callback no longer crashes the program when it is run with pythonw.exe. @@ -806,6 +1475,9 @@ Library - Issue #21147: sqlite3 now raises an exception if the request contains a null character instead of truncate it. Based on patch by Victor Stinner. +- Issue #13968: The glob module now supports recursive search in + subdirectories using the "**" pattern. + - Issue #21951: Fixed a crash in Tkinter on AIX when called Tcl command with empty string or tuple argument. @@ -814,12 +1486,31 @@ Library - Issue #22338: Fix a crash in the json module on memory allocation failure. +- Issue #12410: imaplib.IMAP4 now supports the context management protocol. + Original patch by Tarek Ziadé. + +- Issue #21270: We now override tuple methods in mock.call objects so that + they can be used as normal call attributes. + +- Issue #16662: load_tests() is now unconditionally run when it is present in + a package's __init__.py. TestLoader.loadTestsFromModule() still accepts + use_load_tests, but it is deprecated and ignored. A new keyword-only + attribute `pattern` is added and documented. Patch given by Robert Collins, + tweaked by Barry Warsaw. + - Issue #22226: First letter no longer is stripped from the "status" key in the result of Treeview.heading(). - Issue #19524: Fixed resource leak in the HTTP connection when an invalid response is received. Patch by Martin Panter. +- Issue #20421: Add a .version() method to SSL sockets exposing the actual + protocol version in use. + +- Issue #19546: configparser exceptions no longer expose implementation details. + Chained KeyErrors are removed, which leads to cleaner tracebacks. Patch by + Claudiu Popa. + - Issue #22051: turtledemo no longer reloads examples to re-run them. Initialization of variables and gui setup should be done in main(), which is called each time a demo is run, but not on import. @@ -836,23 +1527,57 @@ Library - Issue #18132: Turtledemo buttons no longer disappear when the window is shrunk. Original patches by Jan Kanis and Lita Cho. +- Issue #22043: time.monotonic() is now always available. + ``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket + operations now use a monotonic clock, instead of the system clock, when a + timeout is used. + +- Issue #21527: Add a default number of workers to ThreadPoolExecutor equal + to 5 times the number of CPUs. Patch by Claudiu Popa. + - Issue #22216: smtplib now resets its state more completely after a quit. The most obvious consequence of the previous behavior was a STARTTLS failure during a connect/starttls/quit/connect/starttls sequence. +- Issue #22098: ctypes' BigEndianStructure and LittleEndianStructure now + define an empty __slots__ so that subclasses don't always get an instance + dict. Patch by Claudiu Popa. + - Issue #22185: Fix an occasional RuntimeError in threading.Condition.wait() caused by mutation of the waiters queue without holding the lock. Patch by Doug Zongker. +- Issue #22287: On UNIX, _PyTime_gettimeofday() now uses + clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now + depends on the librt library on Solaris and on Linux (only with glibc older + than 2.17). + - Issue #22182: Use e.args to unpack exceptions correctly in distutils.file_util.move_file. Patch by Claudiu Popa. - The webbrowser module now uses subprocess's start_new_session=True rather than a potentially risky preexec_fn=os.setsid call. +- Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file + descriptor is in blocking mode. + +- Issue #16808: inspect.stack() now returns a named tuple instead of a tuple. + Patch by Daniel Shahaf. + - Issue #22236: Fixed Tkinter images copying operations in NoDefaultRoot mode. -- Issue #22191: Fix warnings.__all__. +- Issue #2527: Add a *globals* argument to timeit functions, in order to + override the globals namespace in which the timed code is executed. + Patch by Ben Roberts. + +- Issue #22118: Switch urllib.parse to use RFC 3986 semantics for the + resolution of relative URLs, rather than RFCs 1808 and 2396. + Patch by Demian Brecht. + +- Issue #21549: Added the "members" parameter to TarFile.list(). + +- Issue #19628: Allow compileall recursion depth to be specified with a -r + option. - Issue #15696: Add a __sizeof__ implementation for mmap objects on Windows. @@ -860,6 +1585,8 @@ Library - Issue #22165: SimpleHTTPRequestHandler now supports undecodable file names. +- Issue #15381: Optimized line reading in io.BytesIO. + - Issue #8797: Raise HTTPError on failed Basic Authentication immediately. Initial patch by Sam Bull. @@ -875,6 +1602,14 @@ Library - Issue #17923: glob() patterns ending with a slash no longer match non-dirs on AIX. Based on patch by Delhallt. +- Issue #21725: Added support for RFC 6531 (SMTPUTF8) in smtpd. + +- Issue #22176: Update the ctypes module's libffi to v3.1. This release + adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian + architectures. + +- Issue #5411: Added support for the "xztar" format in the shutil module. + - Issue #21121: Don't force 3rd party C extensions to be built with -Werror=declaration-after-statement. @@ -882,18 +1617,57 @@ Library when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in the __new__() method. +- Issue #20170: Convert posixmodule to use Argument Clinic. + +- Issue #21539: Add a *exists_ok* argument to `Pathlib.mkdir()` to mimic + `mkdir -p` and `os.makedirs()` functionality. When true, ignore + FileExistsErrors. Patch by Berker Peksag. + +- Issue #22127: Bypass IDNA for pure-ASCII host names in the socket module + (in particular for numeric IPs). + +- Issue #21047: set the default value for the *convert_charrefs* argument + of HTMLParser to True. Patch by Berker Peksag. + +- Add an __all__ to html.entities. + +- Issue #15114: the strict mode and argument of HTMLParser, HTMLParser.error, + and the HTMLParserError exception have been removed. + +- Issue #22085: Dropped support of Tk 8.3 in Tkinter. + - Issue #21580: Now Tkinter correctly handles bytes arguments passed to Tk. In particular this allows to initialize images from binary data. +- Issue #22003: When initialized from a bytes object, io.BytesIO() now + defers making a copy until it is mutated, improving performance and + memory use on some use cases. Patch by David Wilson. + +- Issue #22018: On Windows, signal.set_wakeup_fd() now also supports sockets. + A side effect is that Python depends to the WinSock library. + +- Issue #22054: Add os.get_blocking() and os.set_blocking() functions to get + and set the blocking mode of a file descriptor (False if the O_NONBLOCK flag + is set, True otherwise). These functions are not available on Windows. + - Issue #17172: Make turtledemo start as active on OS X even when run with subprocess. Patch by Lita Cho. - Issue #21704: Fix build error for _multiprocessing when semaphores are not available. Patch by Arfrever Frehtes Taifersar Arahesis. +- Issue #20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. + Patch by Vajrasky Kok. + - Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError on closed socket. repr(socket.socket) already works fine. +- Issue #22033: Reprs of most Python implemened classes now contain actual + class name instead of hardcoded one. + +- Issue #21947: The dis module can now disassemble generator-iterator + objects based on their gi_code attribute. Patch by Clement Rouault. + - Issue #16133: The asynchat.async_chat.handle_read() method now ignores BlockingIOError exceptions. @@ -905,16 +1679,42 @@ Library sequence is used on some terminal (ex: TERM=xterm-256color") to enable support of 8 bit characters. +- Issue #4350: Removed a number of out-of-dated and non-working for a long time + Tkinter methods. + +- Issue #6167: Scrollbar.activate() now returns the name of active element if + the argument is not specified. Scrollbar.set() now always accepts only 2 + arguments. + +- Issue #15275: Clean up and speed up the ntpath module. + - Issue #21888: plistlib's load() and loads() now work if the fmt parameter is specified. +- Issue #22032: __qualname__ instead of __name__ is now always used to format + fully qualified class names of Python implemented classes. + +- Issue #22031: Reprs now always use hexadecimal format with the "0x" prefix + when contain an id in form " at 0x...". + +- Issue #22018: signal.set_wakeup_fd() now raises an OSError instead of a + ValueError on ``fstat()`` failure. + - Issue #21044: tarfile.open() now handles fileobj with an integer 'name' attribute. Based on patch by Antoine Pietri. -- Issue #21867: Prevent turtle crash due to invalid undo buffer size. +- Issue #21966: Respect -q command-line option when code module is ran. - Issue #19076: Don't pass the redundant 'file' argument to self.error(). +- Issue #16382: Improve exception message of warnings.warn() for bad + category. Initial patch by Phil Elson. + +- Issue #21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of + :c:type:`int` for the size to support reading more than 2 GB at once. On + Windows, the size is truncted to INT_MAX. As any call to os.read(), the OS + may read less bytes than the number of requested bytes. + - Issue #21942: Fixed source file viewing in pydoc's server mode on Windows. - Issue #11259: asynchat.async_chat().set_terminator() now raises a ValueError @@ -932,8 +1732,8 @@ Library - Issue #21714: Disallow the construction of invalid paths using Path.with_name(). Original patch by Antony Lee. -- Issue #21897: Fix a crash with the f_locals attribute with closure - variables when frame.clear() has been called. +- Issue #15014: Added 'auth' method to smtplib to make implementing auth + mechanisms simpler, and used it internally in the login method. - Issue #21151: Fixed a segfault in the winreg module when ``None`` is passed as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman. @@ -941,8 +1741,17 @@ Library - Issue #21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, it ignored I/O errors if at least the first C call read() succeed. +- Issue #5800: headers parameter of wsgiref.headers.Headers is now optional. + Initial patch by Pablo Torres Navarrete and SilentGhost. + - Issue #21781: ssl.RAND_add() now supports strings longer than 2 GB. +- Issue #21679: Prevent extraneous fstat() calls during open(). Patch by + Bohuslav Kabrda. + +- Issue #21863: cProfile now displays the module name of C extension functions, + in addition to their own name. + - Issue #11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper object is destroyed. The destructor now closes the file if needed. The close() method can now be called twice: the second call does nothing. @@ -952,23 +1761,17 @@ Library - Issue #21476: Make sure the email.parser.BytesParser TextIOWrapper is discarded after parsing, so the input file isn't unexpectedly closed. +- Issue #20295: imghdr now recognizes OpenEXR format images. + - Issue #21729: Used the "with" statement in the dbm.dumb module to ensure files closing. Patch by Claudiu Popa. - Issue #21491: socketserver: Fix a race condition in child processes reaping. -- Issue #21832: Require named tuple inputs to be exact strings. - -- Issue #19145: The times argument for itertools.repeat now handles - negative values the same way for keyword arguments as it does for - positional arguments. +- Issue #21719: Added the ``st_file_attributes`` field to os.stat_result on + Windows. -- Issue #21812: turtle.shapetransform did not tranform the turtle on the - first call. (Issue identified and fixed by Lita Cho.) - -- Issue #21635: The difflib SequenceMatcher.get_matching_blocks() method - cache didn't match the actual result. The former was a list of tuples - and the latter was a list of named tuples. +- Issue #21832: Require named tuple inputs to be exact strings. - Issue #21722: The distutils "upload" command now exits with a non-zero return code when uploading fails. Patch by Martin Dengler. @@ -976,24 +1779,35 @@ Library - Issue #21723: asyncio.Queue: support any type of number (ex: float) for the maximum size. Patch written by Vajrasky Kok. +- Issue #21711: support for "site-python" directories has now been removed + from the site module (it was deprecated in 3.4). + +- Issue #17552: new socket.sendfile() method allowing to send a file over a + socket by using high-performance os.sendfile() on UNIX. + Patch by Giampaolo Rodola'. + +- Issue #18039: dbm.dump.open() now always creates a new database when the + flag has the value 'n'. Patch by Claudiu Popa. + - Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoop. run_forever() and run_until_complete() methods of asyncio.BaseEventLoop now raise an exception if the event loop was closed. -- Issue #21774: Fixed NameError for an incorrect variable reference in the - XML Minidom code for creating processing instructions. - (Found and fixed by Claudiu Popa.) - - Issue #21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths before checking for a CGI script at that path. - Issue #21310: Fixed possible resource leak in failed open(). +- Issue #21256: Printout of keyword args should be in deterministic order in + a mock function call. This will help to write better doctests. + - Issue #21677: Fixed chaining nonnormalized exceptions in io close() methods. - Issue #11709: Fix the pydoc.help function to not fail when sys.stdin is not a valid file. +- Issue #21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available. + - Issue #13223: Fix pydoc.writedoc so that the HTML documentation for methods that use 'self' in the example code is generated correctly. @@ -1004,6 +1818,9 @@ Library limits would otherwise allow. On systems with a functioning /proc/self/fd or /dev/fd interface the max is now ignored and all fds are closed. +- Issue #20383: Introduce importlib.util.module_from_spec() as the preferred way + to create a new module. + - Issue #21552: Fixed possible integer overflow of too long string lengths in the tkinter module on 64-bit platforms. @@ -1012,8 +1829,14 @@ Library error bubble up as this "bad data" appears in many real world zip files in the wild and is ignored by other zip tools. +- Issue #13742: Added "key" and "reverse" parameters to heapq.merge(). + (First draft of patch contributed by Simon Sapin.) + - Issue #21402: tkinter.ttk now works when default root window is not set. +- Issue #3015: _tkinter.create() now creates tkapp object with wantobject=1 by + default. + - Issue #10203: sqlite3.Row now truly supports sequence protocol. In particulr it supports reverse() and negative indices. Original patch by Claudiu Popa. @@ -1021,97 +1844,21 @@ Library interpreter aliases (python, python3) are now created by copying rather than symlinking. -- Issue #14710: pkgutil.get_loader() no longer raises an exception when None is - found in sys.modules. +- Issue #20197: Added support for the WebP image type in the imghdr module. + Patch by Fabrice Aneche and Claudiu Popa. -- Issue #14710: pkgutil.find_loader() no longer raises an exception when a - module doesn't exist. +- Issue #21513: Speedup some properties of IP addresses (IPv4Address, + IPv6Address) such as .is_private or .is_multicast. -- Issue #21481: Argparse equality and inequality tests now return - NotImplemented when comparing to an unknown type. - -- Issue #8743: Fix interoperability between set objects and the - collections.Set() abstract base class. - -- Issue #13355: random.triangular() no longer fails with a ZeroDivisionError - when low equals high. +- Issue #21137: Improve the repr for threading.Lock() and its variants + by showing the "locked" or "unlocked" status. Patch by Berker Peksag. - Issue #21538: The plistlib module now supports loading of binary plist files when reference or offset size is not a power of two. -- Issue #21801: Validate that __signature__ is None or an instance of Signature. - -- Issue #21923: Prevent AttributeError in distutils.sysconfig.customize_compiler - due to possible uninitialized _config_vars. - -- Issue #21323: Fix http.server to again handle scripts in CGI subdirectories, - broken by the fix for security issue #19435. Patch by Zach Byrne. - -Extension Modules ------------------ - -- Issue #22176: Update the ctypes module's libffi to v3.1. This release - adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian - architectures. - -Build ------ - -- Issue #15661: python.org OS X installers are now distributed as signed - installer packages compatible with the Gatekeeper security feature. - -- Issue #21958: Define HAVE_ROUND when building with Visual Studio 2013 and - above. Patch by Zachary Turner. - -- Issue #15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/ - now display special message when and only when there are failures. - -- Issue #17095: Fix Modules/Setup *shared* support. - -- Issue #21811: Anticipated fixes to support OS X versions > 10.9. - -- Issue #21166: Prevent possible segfaults and other random failures of - python --generate-posix-vars in pybuilddir.txt build target. - -IDLE ----- - -- Issue #17390: Adjust Editor window title; remove 'Python', - move version to end. - -- Issue #14105: Idle debugger breakpoints no longer disappear - when inseting or deleting lines. - -- Issue #17172: Turtledemo can now be run from Idle. - Currently, the entry is on the Help menu, but it may move to Run. - Patch by Ramchandra Apt and Lita Cho. - -- Issue #21765: Add support for non-ascii identifiers to HyperParser. - -- Issue #21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav - Heblikar. - -- Issue #18592: Add unittest for SearchDialogBase. Patch by Phil Webster. - -- Issue #21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar. - -- Issue #21686: add unittest for HyperParser. Original patch by Saimadhav - Heblikar. - -- Issue #12387: Add missing upper(lower)case versions of default Windows key - bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy. - -- Issue #21695: Closing a Find-in-files output window while the search is - still in progress no longer closes Idle. - -- Issue #18910: Add unittest for textView. Patch by Phil Webster. +- Issue #21455: Add a default backlog to socket.listen(). -- Issue #18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar. - -- Issue #18409: Add unittest for AutoComplete. Patch by Phil Webster. - -Tests ------ +- Issue #21525: Most Tkinter methods which accepted tuples now accept lists too. - Issue #22166: with the assistance of a new internal _codecs._forget_codec helping function, test_codecs now clears the encoding caches to avoid the @@ -1120,100 +1867,19 @@ Tests - Issue #22236: Tkinter tests now don't reuse default root window. New root window is created for every test class. -- Issue #20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier - de Gaye. - -- Issue #22060: test_ctypes has been somewhat cleaned up and simplified; it - now uses unittest test discovery to find its tests. - -- Issue #22104: regrtest.py no longer holds a reference to the suite of tests - loaded from test modules that don't define test_main(). - -- Issue #22002: Added ``load_package_tests`` function to test.support and used - it to implement/augment test discovery in test_asyncio, test_email, - test_importlib, test_json, and test_tools. - -- Issue #21976: Fix test_ssl to accept LibreSSL version strings. Thanks - to William Orr. - -- Issue #21918: Converted test_tools from a module to a package containing - separate test files for each tested script. - -- Issue #20155: Changed HTTP method names in failing tests in test_httpservers - so that packet filtering software (specifically Windows Base Filtering Engine) - does not interfere with the transaction semantics expected by the tests. - -- Issue #19493: Refactored the ctypes test package to skip tests explicitly - rather than silently. - -- Issue #18492: All resources are now allowed when tests are not run by - regrtest.py. - -- Issue #21634: Fix pystone micro-benchmark: use floor division instead of true - division to benchmark integers instead of floating point numbers. Set pystone - version to 1.2. Patch written by Lennart Regebro. - -- Issue #21605: Added tests for Tkinter images. - -- Issue #21493: Added test for ntpath.expanduser(). Original patch by - Claudiu Popa. - -- Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok. - -- Issue #21522: Added Tkinter tests for Listbox.itemconfigure(), - PanedWindow.paneconfigure(), and Menu.entryconfigure(). - -Documentation -------------- - -- Issue #21777: The binary sequence methods on bytes and bytearray are now - documented explicitly, rather than assuming users will be able to derive - the expected behaviour from the behaviour of the corresponding str methods. - -Windows -------- - -- Issue #21671, #22160, CVE-2014-0224: The bundled version of OpenSSL has been - updated to 1.0.1i. - -- Issue #10747: Use versioned labels in the Windows start menu. - Patch by Olive Kilburn. - -Tools/Demos ------------ - -- Issue #22201: Command-line interface of the zipfile module now correctly - extracts ZIP files with directory entries. Patch by Ryan Wilson. - -- Issue #21906: Make Tools/scripts/md5sum.py work in Python 3. - Patch by Zachary Ware. - -- Issue #21629: Fix Argument Clinic's "--converters" feature. - - -What's New in Python 3.4.1? -=========================== - -Release date: 2014-05-18 - -Core and Builtins ------------------ - -- Issue #21418: Fix a crash in the builtin function super() when called without - argument and without current frame (ex: embedded Python). +- Issue #10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial + shape. -- Issue #21425: Fix flushing of standard streams in the interactive - interpreter. +- Issue #20826: Optimize ipaddress.collapse_addresses(). -- Issue #21435: In rare cases, when running finalizers on objects in cyclic - trash a bad pointer dereference could occur due to a subtle flaw in - internal iteration logic. +- Issue #21487: Optimize ipaddress.summarize_address_range() and + ipaddress.{IPv4Network,IPv6Network}.subnets(). -Library -------- +- Issue #21486: Optimize parsing of netmasks in ipaddress.IPv4Network and + ipaddress.IPv6Network. -- Issue #10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial - shape. +- Issue #13916: Disallowed the surrogatepass error handler for non UTF-* + encodings. - Issue #20998: Fixed re.fullmatch() of repeated single character pattern with ignore case. Original patch by Matthew Barnett. @@ -1221,80 +1887,73 @@ Library - Issue #21075: fileinput.FileInput now reads bytes from standard stream if binary mode is specified. Patch by Sam Kimbrel. -- Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a - flush() on the underlying binary stream. Patch by akira. +- Issue #19775: Add a samefile() method to pathlib Path objects. Initial + patch by Vajrasky Kok. -- Issue #21470: Do a better job seeding the random number generator by - using enough bytes to span the full state space of the Mersenne Twister. +- Issue #21226: Set up modules properly in PyImport_ExecCodeModuleObject + (and friends). - Issue #21398: Fix an unicode error in the pydoc pager when the documentation contains characters not encodable to the stdout encoding. -Tests ------ - -- Issue #17756: Fix test_code test when run from the installed location. - -- Issue #17752: Fix distutils tests when run from the installed location. +- Issue #16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept + an (address, netmask) tuple argument, so as to easily construct network + objects from existing addresses. -IDLE ----- - -- Issue #18104: Add idlelib/idle_test/htest.py with a few sample tests to begin - consolidating and improving human-validated tests of Idle. Change other files - as needed to work with htest. Running the module as __main__ runs all tests. - - -What's New in Python 3.4.1rc1? -============================== +- Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a + staticmethod. -Release date: 2014-05-05 +- Issue #21424: Simplified and optimized heaqp.nlargest() and nmsmallest() + to make fewer tuple comparisons. -Core and Builtins ------------------ - -- Issue #21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c. +- Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a + flush() on the underlying binary stream. Patch by akira. -- Issue #21209: Fix sending tuples to custom generator objects with the yield - from syntax. +- Issue #18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman -- Issue #21134: Fix segfault when str is called on an uninitialized - UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object. +- Issue #21088: Bugfix for curses.window.addch() regression in 3.4.0. + In porting to Argument Clinic, the first two arguments were reversed. -- Issue #19537: Fix PyUnicode_DATA() alignment under m68k. Patch by - Andreas Schwab. +- Issue #21407: _decimal: The module now supports function signatures. -- Issue #20929: Add a type cast to avoid shifting a negative number. +- Issue #10650: Remove the non-standard 'watchexp' parameter from the + Decimal.quantize() method in the Python version. It had never been + present in the C version. -- Issue #20731: Properly position in source code files even if they - are opened in text mode. Patch by Serhiy Storchaka. +- Issue #21469: Reduced the risk of false positives in robotparser by + checking to make sure that robots.txt has been read or does not exist + prior to returning True in can_fetch(). -- Issue #20637: Key-sharing now also works for instance dictionaries of - subclasses. Patch by Peter Ingebretson. +- Issue #19414: Have the OrderedDict mark deleted links as unusable. + This gives an early failure if the link is deleted during iteration. -- Issue #12546: Allow \x00 to be used as a fill character when using str, int, - float, and complex __format__ methods. +- Issue #21421: Add __slots__ to the MappingViews ABC. + Patch by Josh Rosenberg. -- Issue #13598: Modify string.Formatter to support auto-numbering of - replacement fields. It now matches the behavior of str.format() in - this regard. Patches by Phil Elson and Ramchandra Apte. +- Issue #21101: Eliminate double hashing in the C speed-up code for + collections.Counter(). -Library -------- +- Issue #21321: itertools.islice() now releases the reference to the source + iterator when the slice is exhausted. Patch by Anton Afanasyev. -- Issue #21088: Bugfix for curses.window.addch() regression in 3.4.0. - In porting to Argument Clinic, the first two arguments were reversed. +- Issue #21057: TextIOWrapper now allows the underlying binary stream's + read() or read1() method to return an arbitrary bytes-like object + (such as a memoryview). Patch by Nikolaus Rath. -- Issue #21469: Reduced the risk of false positives in robotparser by - checking to make sure that robots.txt has been read or does not exist - prior to returning True in can_fetch(). +- Issue #20951: SSLSocket.send() now raises either SSLWantReadError or + SSLWantWriteError on a non-blocking socket if the operation would block. + Previously, it would return 0. Patch by Nikolaus Rath. -- Issue #21321: itertools.islice() now releases the reference to the source - iterator when the slice is exhausted. Patch by Anton Afanasyev. +- Issue #13248: removed previously deprecated asyncore.dispatcher __getattr__ + cheap inheritance hack. - Issue #9815: assertRaises now tries to clear references to local variables in the exception's traceback. +- Issue #19940: ssl.cert_time_to_seconds() now interprets the given time + string in the UTC timezone (as specified in RFC 5280), not the local + timezone. + - Issue #13204: Calling sys.flags.__new__ would crash the interpreter, now it raises a TypeError. @@ -1318,9 +1977,25 @@ Library - Issue #12220: mindom now raises a custom ValueError indicating it doesn't support spaces in URIs instead of letting a 'split' ValueError bubble up. +- Issue #21068: The ssl.PROTOCOL* constants are now enum members. + +- Issue #21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd. + +- Issue #21262: New method assert_not_called for Mock. + It raises AssertionError if the mock has been called. + +- Issue #21238: New keyword argument `unsafe` to Mock. It raises + `AttributeError` incase of an attribute startswith assert or assret. + +- Issue #20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not + PROTOCOL_SSLv3, for maximum compatibility. + - Issue #21239: patch.stopall() didn't work deterministically when the same name was patched more than once. +- Issue #21203: Updated fileConfig and dictConfig to remove inconsistencies. + Thanks to Jure Koren for the patch. + - Issue #21222: Passing name keyword argument to mock.create_autospec now works. @@ -1350,17 +2025,31 @@ Library - Issue #21171: Fixed undocumented filter API of the rot13 codec. Patch by Berker Peksag. +- Issue #20539: Improved math.factorial error message for large positive inputs + and changed exception type (OverflowError -> ValueError) for large negative + inputs. + - Issue #21172: isinstance check relaxed from dict to collections.Mapping. - Issue #21155: asyncio.EventLoop.create_unix_server() now raises a ValueError if path and sock are specified at the same time. +- Issue #21136: Avoid unnecessary normalization of Fractions resulting from + power and other operations. Patch by Raymond Hettinger. + +- Issue #17621: Introduce importlib.util.LazyLoader. + +- Issue #21076: signal module constants were turned into enums. + Patch by Giampaolo Rodola'. + +- Issue #20636: Improved the repr of Tkinter widgets. + +- Issue #19505: The items, keys, and values views of OrderedDict now support + reverse iteration using reversed(). + - Issue #21149: Improved thread-safety in logging cleanup during interpreter shutdown. Thanks to Devin Jeanpierre for the patch. -- Issue #20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a - TypeError if the second argument is not a string or compiled regex. - - Issue #21058: Fix a leak of file descriptor in :func:`tempfile.NamedTemporaryFile`, close the file descriptor if :func:`io.open` fails @@ -1370,6 +2059,9 @@ Library - Issue #21013: Enhance ssl.create_default_context() when used for server side sockets to provide better security by default. +- Issue #20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a + TypeError if the second argument is not a string or compiled regex. + - Issue #20633: Replace relative import by absolute import. - Issue #20980: Stop wrapping exception when using ThreadPool. @@ -1383,6 +2075,8 @@ Library curve for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to "prime256v1". +- Issue #21000: Improve the command-line interface of json.tool. + - Issue #20995: Enhance default ciphers used by the ssl module to enable better security an prioritize perfect forward secrecy. @@ -1390,6 +2084,24 @@ Library - Issue #21499: Ignore __builtins__ in several test_importlib.test_api tests. +- Issue #20627: xmlrpc.client.ServerProxy is now a context manager. + +- Issue #19165: The formatter module now raises DeprecationWarning instead of + PendingDeprecationWarning. + +- Issue #13936: Remove the ability of datetime.time instances to be considered + false in boolean contexts. + +- Issue 18931: selectors module now supports /dev/poll on Solaris. + Patch by Giampaolo Rodola'. + +- Issue #19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale), + :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the + ``surrogateescape`` error handler, instead of the ``strict`` error handler. + +- Issue #20574: Implement incremental decoder for cp65001 code (Windows code + page 65001, Microsoft UTF-8). + - Issue #20879: Delay the initialization of encoding and decoding tables for base32, ascii85 and base85 codecs in the base64 module, and delay the initialization of the unquote_to_bytes() table of the urllib.parse module, to @@ -1424,6 +2136,14 @@ Library - Issue #19748: On AIX, time.mktime() now raises an OverflowError for year outsize range [1902; 2037]. +- Issue #19573: inspect.signature: Use enum for parameter kind constants. + +- Issue #20726: inspect.signature: Make Signature and Parameter picklable. + +- Issue #17373: Add inspect.Signature.from_callable method. + +- Issue #20378: Improve repr of inspect.Signature and inspect.Parameter. + - Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for missing keyword-only arguments. Patch by Jeremiah Lowin. @@ -1440,6 +2160,12 @@ Library positional-or-keyword arguments passed as keyword arguments become keyword-only. +- Issue #20334: inspect.Signature and inspect.Parameter are now hashable. + Thanks to Antony Lee for bug reports and suggestions. + +- Issue #15916: doctest.DocTestSuite returns an empty unittest.TestSuite instead + of raising ValueError if it finds no tests + - Issue #21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from implementation in CPythons prior to 3.4.1. @@ -1452,16 +2178,90 @@ Library - Issue #11571: Ensure that the turtle window becomes the topmost window when launched on OS X. -Extension Modules ------------------ +- Issue #21801: Validate that __signature__ is None or an instance of Signature. -- Issue #21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd. -- Issue #21226: Set up modules properly in PyImport_ExecCodeModuleObject - (and friends). +- Issue #21923: Prevent AttributeError in distutils.sysconfig.customize_compiler + due to possible uninitialized _config_vars. + +- Issue #21323: Fix http.server to again handle scripts in CGI subdirectories, + broken by the fix for security issue #19435. Patch by Zach Byrne. + +- Issue #22733: Fix ffi_prep_args not zero-extending argument values correctly + on 64-bit Windows. + +- Issue #23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection. + Removed use of hard-coded MSS as it's an optimization that's no longer needed + with Nagle disabled. IDLE ---- +- Issue #20577: Configuration of the max line length for the FormatParagraph + extension has been moved from the General tab of the Idle preferences dialog + to the FormatParagraph tab of the Config Extensions dialog. + Patch by Tal Einat. + +- Issue #16893: Update Idle doc chapter to match current Idle and add new + information. + +- Issue #3068: Add Idle extension configuration dialog to Options menu. + Changes are written to HOME/.idlerc/config-extensions.cfg. + Original patch by Tal Einat. + +- Issue #16233: A module browser (File : Class Browser, Alt+C) requires a + editor window with a filename. When Class Browser is requested otherwise, + from a shell, output window, or 'Untitled' editor, Idle no longer displays + an error box. It now pops up an Open Module box (Alt+M). If a valid name + is entered and a module is opened, a corresponding browser is also opened. + +- Issue #4832: Save As to type Python files automatically adds .py to the + name you enter (even if your system does not display it). Some systems + automatically add .txt when type is Text files. + +- Issue #21986: Code objects are not normally pickled by the pickle module. + To match this, they are no longer pickled when running under Idle. + +- Issue #17390: Adjust Editor window title; remove 'Python', + move version to end. + +- Issue #14105: Idle debugger breakpoints no longer disappear + when inseting or deleting lines. + +- Issue #17172: Turtledemo can now be run from Idle. + Currently, the entry is on the Help menu, but it may move to Run. + Patch by Ramchandra Apt and Lita Cho. + +- Issue #21765: Add support for non-ascii identifiers to HyperParser. + +- Issue #21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav + Heblikar. + +- Issue #18592: Add unittest for SearchDialogBase. Patch by Phil Webster. + +- Issue #21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar. + +- Issue #21686: add unittest for HyperParser. Original patch by Saimadhav + Heblikar. + +- Issue #12387: Add missing upper(lower)case versions of default Windows key + bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy. + +- Issue #21695: Closing a Find-in-files output window while the search is + still in progress no longer closes Idle. + +- Issue #18910: Add unittest for textView. Patch by Phil Webster. + +- Issue #18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar. + +- Issue #18409: Add unittest for AutoComplete. Patch by Phil Webster. + +- Issue #21477: htest.py - Improve framework, complete set of tests. + Patches by Saimadhav Heblikar + +- Issue #18104: Add idlelib/idle_test/htest.py with a few sample tests to begin + consolidating and improving human-validated tests of Idle. Change other files + as needed to work with htest. Running the module as __main__ runs all tests. + - Issue #21139: Change default paragraph width to 72, the PEP 8 recommendation. - Issue #21284: Paragraph reformat test passes after user changes reformat width. @@ -1469,10 +2269,52 @@ IDLE - Issue #17654: Ensure IDLE menus are customized properly on OS X for non-framework builds and for all variants of Tk. +- Issue #23180: Rename IDLE "Windows" menu item to "Window". + Patch by Al Sweigart. + Build ----- -- The Windows build now includes OpenSSL 1.0.1g +- Issue #15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure + script. + +- Issue #22935: Allow the ssl module to be compiled if openssl doesn't support + SSL 3. + +- Issue #22592: Drop support of the Borland C compiler to build Python. The + distutils module still supports it to build extensions. + +- Issue #22591: Drop support of MS-DOS, especially of the DJGPP compiler + (MS-DOS port of GCC). + +- Issue #16537: Check whether self.extensions is empty in setup.py. Patch by + Jonathan Hosmer. + +- Issue #22359: Remove incorrect uses of recursive make. Patch by Jonas + Wagner. + +- Issue #21958: Define HAVE_ROUND when building with Visual Studio 2013 and + above. Patch by Zachary Turner. + +- Issue #18093: the programs that embed the CPython runtime are now in a + separate "Programs" directory, rather than being kept in the Modules + directory. + +- Issue #15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/ + now display special message when and only when there are failures. + +- Issue #21141: The Windows build process no longer attempts to find Perl, + instead relying on OpenSSL source being configured and ready to build. The + ``PCbuild\build_ssl.py`` script has been re-written and re-named to + ``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source + for both 32 and 64 bit platforms. OpenSSL sources obtained from + svn.python.org will always be pre-configured and ready to build. + +- Issue #21037: Add a build option to enable AddressSanitizer support. + +- Issue #19962: The Windows build process now creates "python.bat" in the + root of the source tree, which passes all arguments through to the most + recently built interpreter. - Issue #21285: Refactor and fix curses configure check to always search in a ncursesw directory. @@ -1481,12 +2323,60 @@ Build include directories if they aren't already being searched. This avoids an explicit runtime library dependency. +- Issue #17861: Tools/scripts/generate_opcode_h.py automatically regenerates + Include/opcode.h from Lib/opcode.py if the later gets any change. + - Issue #20644: OS X installer build support for documentation build changes in 3.4.1: assume externally supplied sphinx-build is available in /usr/bin. +- Issue #20022: Eliminate use of deprecated bundlebuilder in OS X builds. + +- Issue #15968: Incorporated Tcl, Tk, and Tix builds into the Windows build + solution. + +- Issue #17095: Fix Modules/Setup *shared* support. + +- Issue #21811: Anticipated fixes to support OS X versions > 10.9. + +- Issue #21166: Prevent possible segfaults and other random failures of + python --generate-posix-vars in pybuilddir.txt build target. + +- Issue #18096: Fix library order returned by python-config. + +- Issue #17219: Add library build dir for Python extension cross-builds. + +- Issue #22919: Windows build updated to support VC 14.0 (Visual Studio 2015), + which will be used for the official release. + +- Issue #21236: Build _msi.pyd with cabinet.lib instead of fci.lib + +- Issue #17128: Use private version of OpenSSL for OS X 10.5+ installer. + C API ----- +- Issue #14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(), + bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf(). + All functions now raise BufferError in that case. + +- Issue #22445: PyBuffer_IsContiguous() now implements precise contiguity + tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation + flag. Previously the function reported false negatives for corner cases. + +- Issue #22079: PyType_Ready() now checks that statically allocated type has + no dynamically allocated bases. + +- Issue #22453: Removed non-documented macro PyObject_REPR(). + +- Issue #18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`, + rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document + these functions. + +- Issue #21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(), + PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using + ``calloc()`` instead of ``malloc()`` for large objects which is faster and + use less memory. + - Issue #20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to match what importlib does; this affects _frozen_importlib as well as any module loaded using imp.init_frozen(). @@ -1494,9 +2384,29 @@ C API Documentation ------------- +- Issue #19548: Update the codecs module documentation to better cover the + distinction between text encodings and other codecs, together with other + clarifications. Patch by Martin Panter. + +- Issue #22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to + create a venv for generating the documentation, e.g., + ``make html PYTHON=venv/bin/python3``. + +- Issue #21514: The documentation of the json module now refers to new JSON RFC + 7159 instead of obsoleted RFC 4627. + +- Issue #21777: The binary sequence methods on bytes and bytearray are now + documented explicitly, rather than assuming users will be able to derive + the expected behaviour from the behaviour of the corresponding str methods. + +- Issue #6916: undocument deprecated asynchat.fifo class. + - Issue #17386: Expanded functionality of the ``Doc/make.bat`` script to make it much more comparable to ``Doc/Makefile``. +- Issue #21312: Update the thread_foobar.h template file to include newer + threading APIs. Patch by Jack McCracken. + - Issue #21043: Remove the recommendation for specific CA organizations and to mention the ability to load the OS certificates. @@ -1514,6 +2424,73 @@ Documentation Tests ----- +- Issue #18982: Add tests for CLI of the calendar module. + +- Issue #19548: Added some additional checks to test_codecs to ensure that + statements in the updated documentation remain accurate. Patch by Martin + Panter. + +- Issue #22838: All test_re tests now work with unittest test discovery. + +- Issue #22173: Update lib2to3 tests to use unittest test discovery. + +- Issue #16000: Convert test_curses to use unittest. + +- Issue #21456: Skip two tests in test_urllib2net.py if _ssl module not + present. Patch by Remi Pointel. + +- Issue #20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier + de Gaye. + +- Issue #22060: test_ctypes has been somewhat cleaned up and simplified; it + now uses unittest test discovery to find its tests. + +- Issue #22104: regrtest.py no longer holds a reference to the suite of tests + loaded from test modules that don't define test_main(). + +- Issue #22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch. + +- Issue #22002: Added ``load_package_tests`` function to test.support and used + it to implement/augment test discovery in test_asyncio, test_email, + test_importlib, test_json, and test_tools. + +- Issue #21976: Fix test_ssl to accept LibreSSL version strings. Thanks + to William Orr. + +- Issue #21918: Converted test_tools from a module to a package containing + separate test files for each tested script. + +- Issue #9554: Use modern unittest features in test_argparse. Initial patch by + Denver Coneybeare and Radu Voicilas. + +- Issue #20155: Changed HTTP method names in failing tests in test_httpservers + so that packet filtering software (specifically Windows Base Filtering Engine) + does not interfere with the transaction semantics expected by the tests. + +- Issue #19493: Refactored the ctypes test package to skip tests explicitly + rather than silently. + +- Issue #18492: All resources are now allowed when tests are not run by + regrtest.py. + +- Issue #21634: Fix pystone micro-benchmark: use floor division instead of true + division to benchmark integers instead of floating point numbers. Set pystone + version to 1.2. Patch written by Lennart Regebro. + +- Issue #21605: Added tests for Tkinter images. + +- Issue #21493: Added test for ntpath.expanduser(). Original patch by + Claudiu Popa. + +- Issue #19925: Added tests for the spwd module. Original patch by Vajrasky Kok. + +- Issue #21522: Added Tkinter tests for Listbox.itemconfigure(), + PanedWindow.paneconfigure(), and Menu.entryconfigure(). + +- Issue #17756: Fix test_code test when run from the installed location. + +- Issue #17752: Fix distutils tests when run from the installed location. + - Issue #18604: Consolidated checks for GUI availability. All platforms now at least check whether Tk can be instantiated when the GUI resource is requested. @@ -1531,6 +2508,8 @@ Tests - Issue #21097: Move test_namespace_pkgs into test_importlib. +- Issue #21503: Use test_both() consistently in test_importlib. + - Issue #20939: Avoid various network test failures due to new redirect of http://www.python.org/ to https://www.python.org: use http://www.example.com instead. @@ -1541,9 +2520,41 @@ Tests - Issue #21093: Prevent failures of ctypes test_macholib on OS X if a copy of libz exists in $HOME/lib or /usr/local/lib. +- Issue #22770: Prevent some Tk segfaults on OS X when running gui tests. + +- Issue #23211: Workaround test_logging failure on some OS X 10.6 systems. + +- Issue #23345: Prevent test_ssl failures with large OpenSSL patch level + values (like 0.9.8zc). + Tools/Demos ----------- +- Issue #22314: pydoc now works when the LINES environment variable is set. + +- Issue #22615: Argument Clinic now supports the "type" argument for the + int converter. This permits using the int converter with enums and + typedefs. + +- Issue #20076: The makelocalealias.py script no longer ignores UTF-8 mapping. + +- Issue #20079: The makelocalealias.py script now can parse the SUPPORTED file + from glibc sources and supports command line options for source paths. + +- Issue #22201: Command-line interface of the zipfile module now correctly + extracts ZIP files with directory entries. Patch by Ryan Wilson. + +- Issue #22120: For functions using an unsigned integer return converter, + Argument Clinic now generates a cast to that type for the comparison + to -1 in the generated code. (This supresses a compilation warning.) + +- Issue #18974: Tools/scripts/diff.py now uses argparse instead of optparse. + +- Issue #21906: Make Tools/scripts/md5sum.py work in Python 3. + Patch by Zachary Ware. + +- Issue #21629: Fix Argument Clinic's "--converters" feature. + - Add support for ``yield from`` to 2to3. - Add support for the PEP 465 matrix multiplication operator to 2to3. @@ -1556,6 +2567,31 @@ Tools/Demos - Issue #20535: PYTHONWARNING no longer affects the run_tests.py script. Patch by Arfrever Frehtes Taifersar Arahesis. +Windows +------- + +- Issue #23260: Update Windows installer + +- The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible + result of this change is the addition of new native file dialogs when + running on Windows Vista or newer. See Tcl/Tk's TIP 432 for more + information. Also, this version of Tcl/Tk includes support for Windows 10. + +- Issue #17896: The Windows build scripts now expect external library sources + to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``. + +- Issue #17717: The Windows build scripts now use a copy of NASM pulled from + svn.python.org to build OpenSSL. + +- Issue #21907: Improved the batch scripts provided for building Python. + +- Issue #22644: The bundled version of OpenSSL has been updated to 1.0.1j. + +- Issue #10747: Use versioned labels in the Windows start menu. + Patch by Olive Kilburn. + +- Issue #22980: .pyd files with a version and platform tag (for example, + ".cp35-win32.pyd") will now be loaded in preference to those without tags. What's New in Python 3.4.0? =========================== @@ -5669,6 +6705,10 @@ C-API Documentation ------------- +- Issue #23006: Improve the documentation and indexing of dict.__missing__. + Add an entry in the language datamodel special methods section. + Revise and index its discussion in the stdtypes mapping/dict section. + - Issue #17701: Improving strftime documentation. - Issue #18440: Clarify that `hash()` can truncate the value returned from an @@ -5831,4141 +6871,4 @@ Windows - Issue #18569: The installer now adds .py to the PATHEXT variable when extensions are registered. Patch by Paul Moore. - -What's New in Python 3.3.0? -=========================== - -*Release date: 29-Sep-2012* - -Core and Builtins ------------------ - -- Issue #16046: Fix loading sourceless legacy .pyo files. - -- Issue #16060: Fix refcounting bug when `__trunc__()` returns an object whose - `__int__()` gives a non-integer. Patch by Serhiy Storchaka. - -Extension Modules ------------------ - -- Issue #16012: Fix a regression in pyexpat. The parser's `UseForeignDTD()` - method doesn't require an argument again. - - -What's New in Python 3.3.0 Release Candidate 3? -=============================================== - -*Release date: 23-Sep-2012* - -Core and Builtins ------------------ - -- Issue #15900: Fix reference leak in `PyUnicode_TranslateCharmap()`. - -- Issue #15926: Fix crash after multiple reinitializations of the interpreter. - -- Issue #15895: Fix FILE pointer leak in one error branch of - `PyRun_SimpleFileExFlags()` when filename points to a pyc/pyo file, closeit is - false an and set_main_loader() fails. - -- Fixes for a few crash and memory leak regressions found by Coverity. - -Library -------- - -- Issue #15882: Change `_decimal` to accept any coefficient tuple when - constructing infinities. This is done for backwards compatibility with - decimal.py: Infinity coefficients are undefined in _decimal (in accordance - with the specification). - -- Issue #15925: Fix a regression in `email.util` where the `parsedate()` and - `parsedate_tz()` functions did not return None anymore when the argument could - not be parsed. - -Extension Modules ------------------ - -- Issue #15973: Fix a segmentation fault when comparing datetime timezone - objects. - -- Issue #15977: Fix memory leak in Modules/_ssl.c when the function - _set_npn_protocols() is called multiple times, thanks to Daniel Sommermann. - -- Issue #15969: `faulthandler` module: rename dump_tracebacks_later() to - dump_traceback_later() and cancel_dump_tracebacks_later() to - cancel_dump_traceback_later(). - -- _decimal module: use only C 89 style comments. - - -What's New in Python 3.3.0 Release Candidate 2? -=============================================== - -*Release date: 09-Sep-2012* - -Core and Builtins ------------------ - -- Issue #13992: The trashcan mechanism is now thread-safe. This eliminates - sporadic crashes in multi-thread programs when several long deallocator chains - ran concurrently and involved subclasses of built-in container types. - -- Issue #15784: Modify `OSError`.__str__() to better distinguish between errno - error numbers and Windows error numbers. - -- Issue #15781: Fix two small race conditions in import's module locking. - -Library -------- - -- Issue #17158: Add 'symbols' to help() welcome message; clarify - 'modules spam' messages. - -- Issue #15847: Fix a regression in argparse, which did not accept tuples as - argument lists anymore. - -- Issue #15828: Restore support for C extensions in `imp.load_module()`. - -- Issue #15340: Fix importing the random module when ``/dev/urandom`` cannot be - opened. This was a regression caused by the hash randomization patch. - -- Issue #10650: Deprecate the watchexp parameter of the `Decimal.quantize()` - method. - -- Issue #15785: Modify `window.get_wch()` API of the curses module: return a - character for most keys, and an integer for special keys, instead of always - returning an integer. So it is now possible to distinguish special keys like - keypad keys. - -- Issue #14223: Fix `window.addch()` of the curses module for special characters - like curses.ACS_HLINE: the Python function addch(int) and addch(bytes) is now - calling the C function waddch()/mvwaddch() (as it was done in Python 3.2), - instead of wadd_wch()/mvwadd_wch(). The Python function addch(str) is still - calling the C function wadd_wch()/mvwadd_wch() if the Python curses is linked - to libncursesw. - -Build ------ - -- Issue #15822: Really ensure 2to3 grammar pickles are properly installed - (replaces fixes for Issue #15645). - -Documentation -------------- - -- Issue #15814: The memoryview enhancements in 3.3.0 accidentally permitted the - hashing of multi-dimensional memorviews and memoryviews with multi-byte item - formats. The intended restrictions have now been documented - they will be - correctly enforced in 3.3.1. - - -What's New in Python 3.3.0 Release Candidate 1? -=============================================== - -*Release date: 25-Aug-2012* - -Core and Builtins ------------------ - -- Issue #15573: memoryview comparisons are now performed by value with full - support for any valid struct module format definition. - -- Issue #15316: When an item in the fromlist for `__import__()` doesn't exist, - don't raise an error, but if an exception is raised as part of an import do - let that propagate. - -- Issue #15778: Ensure that ``str(ImportError(msg))`` returns a str even when - msg isn't a str. - -- Issue #2051: Source file permission bits are once again correctly copied to - the cached bytecode file. (The migration to importlib reintroduced this - problem because these was no regression test. A test has been added as part of - this patch) - -- Issue #15761: Fix crash when ``PYTHONEXECUTABLE`` is set on Mac OS X. - -- Issue #15726: Fix incorrect bounds checking in PyState_FindModule. Patch by - Robin Schreiber. - -- Issue #15604: Update uses of `PyObject_IsTrue()` to check for and handle - errors correctly. Patch by Serhiy Storchaka. - -- Issue #14846: `importlib.FileFinder` now handles the case where the directory - being searched is removed after a previous import attempt. - -Library -------- - -- Issue #13370: Ensure that ctypes works on Mac OS X when Python is compiled - using the clang compiler. - -- Issue #13072: The array module's 'u' format code is now deprecated and will be - removed in Python 4.0. - -- Issue #15544: Fix Decimal.__float__ to work with payload-carrying NaNs. - -- Issue #15776: Allow pyvenv to work in existing directory with --clean. - -- Issue #15249: email's BytesGenerator now correctly mangles From lines (when - requested) even if the body contains undecodable bytes. - -- Issue #15777: Fix a refleak in _posixsubprocess. - -- Issue ##665194: Update `email.utils.localtime` to use datetime.astimezone and - correctly handle historic changes in UTC offsets. - -- Issue #15199: Fix JavaScript's default MIME type to application/javascript. - Patch by Bohuslav Kabrda. - -- Issue #12643: `code.InteractiveConsole` now respects `sys.excepthook` when - displaying exceptions. Patch by Aaron Iles. - -- Issue #13579: `string.Formatter` now understands the 'a' conversion specifier. - -- Issue #15595: Fix ``subprocess.Popen(universal_newlines=True)`` for certain - locales (utf-16 and utf-32 family). Patch by Chris Jerdonek. - -- Issue #15477: In cmath and math modules, add workaround for platforms whose - system-supplied log1p function doesn't respect signs of zeros. - -- Issue #15715: `importlib.__import__()` will silence an ImportError when the - use of fromlist leads to a failed import. - -- Issue #14669: Fix pickling of connections and sockets on Mac OS X by - sending/receiving an acknowledgment after file descriptor transfer. - TestPicklingConnection has been reenabled for Mac OS X. - -- Issue #11062: Fix adding a message from file to Babyl mailbox. - -- Issue #15646: Prevent equivalent of a fork bomb when using `multiprocessing` - on Windows without the ``if __name__ == '__main__'`` idiom. - -IDLE ----- - -- Issue #15678: Fix IDLE menus when started from OS X command line (3.3.0b2 - regression). - -Documentation -------------- - -- Touched up the Python 2 to 3 porting guide. - -- Issue #14674: Add a discussion of the `json` module's standard compliance. - Patch by Chris Rebert. - -- Create a 'Concurrent Execution' section in the docs, and split up the - 'Optional Operating System Services' section to use a more user-centric - classification scheme (splitting them across the new CE section, IPC and text - processing). Operating system limitations can be reflected with the Sphinx - ``:platform:`` tag, it doesn't make sense as part of the Table of Contents. - -- Issue #4966: Bring the sequence docs up to date for the Py3k transition and - the many language enhancements since they were original written. - -- The "path importer" misnomer has been replaced with Eric Snow's - more-awkward-but-at-least-not-wrong suggestion of "path based finder" in the - import system reference docs. - -- Issue #15640: Document `importlib.abc.Finder` as deprecated. - -- Issue #15630: Add an example for "continue" stmt in the tutorial. Patch by - Daniel Ellis. - -Tests ------ - -- Issue #15747: ZFS always returns EOPNOTSUPP when attempting to set the - UF_IMMUTABLE flag (via either chflags or lchflags); refactor affected tests in - test_posix.py to account for this. - -- Issue #15285: Refactor the approach for testing connect timeouts using two - external hosts that have been configured specifically for this type of test. - -- Issue #15743: Remove the deprecated method usage in `urllib` tests. Patch by - Jeff Knupp. - -- Issue #15615: Add some tests for the `json` module's handling of invalid input - data. Patch by Kushal Das. - -Build ------ - -- Output lib files for PGO build into PGO directory. - -- Pick up 32-bit launcher from PGO directory on 64-bit PGO build. - -- Drop ``PC\python_nt.h`` as it's not used. Add input dependency on custom - build step. - -- Issue #15511: Drop explicit dependency on pythonxy.lib from _decimal amd64 - configuration. - -- Add missing PGI/PGO configurations for pywlauncher. - -- Issue #15645: Ensure 2to3 grammar pickles are properly installed. - - -What's New in Python 3.3.0 Beta 2? -================================== - -*Release date: 12-Aug-2012* - -Core and Builtins ------------------ - -- Issue #15568: Fix the return value of ``yield from`` when StopIteration is - raised by a custom iterator. - -- Issue #13119: `sys.stdout` and `sys.stderr` are now using "\r\n" newline on - Windows, as Python 2. - -- Issue #15534: Fix the fast-search function for non-ASCII Unicode strings. - -- 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 #15425: Eliminated traceback noise from more situations involving - importlib. - -- Issue #14578: Support modules registered in the Windows registry again. - -- 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 #1692335: Move initial exception args assignment to - `BaseException.__new__()` to help pickling of naive subclasses. - -- 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 #16369: Global PyTypeObjects not initialized with PyType_Ready(...). - -- Issue #15020: The program name used to search for Python's path is now - "python3" under Unix, not "python". - -- Issue #15897: zipimport.c doesn't check return value of fseek(). - Patch by Felipe Cruz. - -- Issue #15033: Fix the exit status bug when modules invoked using -m switch, - 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 -------- - -- Issue #14590: configparser now correctly strips inline comments when delimiter - occurs earlier without preceding space. - -- Issue #15424: Add a `__sizeof__()` implementation for array objects. Patch by - Ludwig Hähne. - -- Issue #15576: Allow extension modules to act as a package's __init__ module. - -- Issue #15502: Have `importlib.invalidate_caches()` work on `sys.meta_path` - instead of `sys.path_importer_cache`. - -- Issue #15163: Pydoc shouldn't list __loader__ as module data. - -- Issue #15471: Do not use mutable objects as defaults for - `importlib.__import__()`. - -- Issue #15559: To avoid a problematic failure mode when passed to the bytes - constructor, objects in the ipaddress module no longer implement `__index__()` - (they still implement `__int__()` as appropriate). - -- Issue #15546: Fix handling of pathological input data in the peek() and - read1() methods of the BZ2File, GzipFile and LZMAFile classes. - -- Issue #12655: Instead of requiring a custom type, `os.sched_getaffinity()` and - `os.sched_setaffinity()` now use regular sets of integers to represent the - CPUs a process is restricted to. - -- Issue #15538: Fix compilation of the `socket.getnameinfo()` / - `socket.getaddrinfo()` emulation code. Patch by Philipp Hagemeister. - -- Issue #15519: Properly expose WindowsRegistryFinder in importlib (and use the - correct term for it). Original patch by Eric Snow. - -- Issue #15502: Bring the importlib ABCs into line with the current state of the - import protocols given PEP 420. Original patch by Eric Snow. - -- Issue #15499: Launching a webbrowser in Unix used to sleep for a few seconds. - Original patch by Anton Barkovsky. - -- Issue #15463: The faulthandler module truncates strings to 500 characters, - instead of 100, to be able to display long file paths. - -- Issue #6056: Make `multiprocessing` use setblocking(True) on the sockets it - uses. Original patch by J Derek Wilson. - -- Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path. - -- Issue #15413: `os.times()` had disappeared under Windows. - -- Issue #15402: An issue in the struct module that caused `sys.getsizeof()` to - return incorrect results for struct.Struct instances has been fixed. Initial - patch by Serhiy Storchaka. - -- Issue #15232: When mangle_from is True, `email.Generator` now correctly - mangles lines that start with 'From ' that occur in a MIME preamble or - epilogue. - -- Issue #15094: Incorrectly placed #endif in _tkinter.c. Patch by Serhiy - Storchaka. - -- Issue #13922: `argparse` no longer incorrectly strips '--'s that appear after - the first one. - -- Issue #12353: `argparse` now correctly handles null argument values. - -- Issue #10017, issue #14998: Fix TypeError using pprint on dictionaries with - user-defined types as keys or other unorderable keys. - -- Issue #15397: `inspect.getmodulename()` is now based directly on importlib via - a new `importlib.machinery.all_suffixes()` API. - -- Issue #14635: `telnetlib` will use poll() rather than select() when possible to - avoid failing due to the select() file descriptor limit. - -- Issue #15180: Clarify posixpath.join() error message when mixing str & bytes. - -- Issue #15343: pkgutil now includes an iter_importer_modules implementation for - importlib.machinery.FileFinder (similar to the way it already handled - zipimport.zipimporter). - -- Issue #15314: runpy now sets __main__.__loader__ correctly. - -- Issue #15357: The import emulation in pkgutil is now deprecated. pkgutil uses - importlib internally rather than the emulation. - -- Issue #15233: Python now guarantees that callables registered with the atexit - module will be called in a deterministic order. - -- Issue #15238: `shutil.copystat()` now copies Linux "extended attributes". - -- Issue #15230: runpy.run_path now correctly sets __package__ as described in - the documentation. - -- Issue #15315: Support VS 2010 in distutils cygwincompiler. - -- Issue #15294: Fix a regression in pkgutil.extend_path()'s handling of nested - namespace packages. - -- Issue #15056: `imp.cache_from_source()` and `imp.source_from_cache()` raise - NotImplementedError when `sys.implementation.cache_tag` is set to None. - -- Issue #15256: Grammatical mistake in exception raised by `imp.find_module()`. - -- Issue #5931: `wsgiref` environ variable SERVER_SOFTWARE will specify an - implementation specific term like CPython, Jython instead of generic "Python". - -- Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter and - BufferedRWPair, from the io module. - -- Issue #13248: Remove obsolete argument "version" of `argparse.ArgumentParser`. - -- Issue #14814: Implement more consistent ordering and sorting behaviour for - ipaddress objects. - -- Issue #14814: `ipaddress` network objects correctly return NotImplemented when - compared to arbitrary objects instead of raising TypeError. - -- Issue #14990: Correctly fail with SyntaxError on invalid encoding declaration. - -- Issue #14814: `ipaddress` now provides more informative error messages when - constructing instances directly (changes permitted during beta due to - provisional API status). - -- Issue #15247: `io.FileIO` now raises an error when given a file descriptor - pointing to a directory. - -- Issue #15261: Stop os.stat(fd) crashing on Windows when fd not open. - -- Issue #15166: Implement `imp.get_tag()` using `sys.implementation.cache_tag`. - -- Issue #15210: Catch KeyError when `importlib.__init__()` can't find - _frozen_importlib in sys.modules, not ImportError. - -- Issue #15030: `importlib.abc.PyPycLoader` now supports the new source size - header field in .pyc files. - -- Issue #5346: Preserve permissions of mbox, MMDF and Babyl mailbox files on - flush(). - -- Issue #10571: Fix the "--sign" option of distutils' upload command. Patch by - Jakub Wilk. - -- Issue #9559: If messages were only added, a new file is no longer created and - renamed over the old file when flush() is called on an mbox, MMDF or Babyl - mailbox. - -- Issue #10924: Fixed `crypt.mksalt()` to use a RNG that is suitable for - cryptographic purpose. - -- Issue #15184: Ensure consistent results of OS X configuration tailoring for - universal builds by factoring out common OS X-specific customizations from - sysconfig, distutils.sysconfig, distutils.util, and distutils.unixccompiler - into a new module _osx_support. - -C API ------ - -- Issue #15610: `PyImport_ImportModuleEx()` now uses a 'level' of 0 instead of -1. - -- Issue #15169, issue #14599: Strip out the C implementation of - `imp.source_from_cache()` used by PyImport_ExecCodeModuleWithPathnames() and - used the Python code instead. Leads to PyImport_ExecCodeModuleObject() to not - try to infer the source path from the bytecode path as - PyImport_ExecCodeModuleWithPathnames() does. - -Extension Modules ------------------ - -- Issue #6493: An issue in ctypes on Windows that caused structure bitfields of - type `ctypes.c_uint32` and width 32 to incorrectly be set has been fixed. - -- Issue #15194: Update libffi to the 3.0.11 release. - -IDLE ----- - -- Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog - ended with ``\``. Patch by Roger Serwy. - -Tools/Demos ------------ - -- Issue #15458: python-config gets a new option --configdir to print the $LIBPL - value. - -- Move importlib.test.benchmark to Tools/importbench. - -- Issue #12605: The gdb hooks for debugging CPython (within Tools/gdb) have been - enhanced to show information on more C frames relevant to CPython within the - "py-bt" and "py-bt-full" commands: - - * C frames that are waiting on the GIL - * C frames that are garbage-collecting - * C frames that are due to the invocation of a PyCFunction - -Documentation -------------- - -- Issue #15041: Update "see also" list in tkinter documentation. - -- Issue #15444: Use proper spelling for non-ASCII contributor names. Patch by - Serhiy Storchaka. - -- Issue #15295: Reorganize and rewrite the documentation on the import system. - -- Issue #15230: Clearly document some of the limitations of the runpy module and - nudge readers towards importlib when appropriate. - -- Issue #15053: Copy Python 3.3 import lock change notice to all relevant - functions in imp instead of just at the top of the relevant section. - -- Issue #15288: Link to the term "loader" in notes in pkgutil about how things - won't work as expected in Python 3.3 and mark the requisite functions as - "changed" since they will no longer work with modules directly imported by - import itself. - -- Issue #13557: Clarify effect of giving two different namespaces to `exec()` or - `execfile()`. - -- Issue #15250: Document that `filecmp.dircmp()` compares files shallowly. Patch - contributed by Chris Jerdonek. - -- Issue #15442: Expose the default list of directories ignored by - `filecmp.dircmp()` as a module attribute, and expand the list to more modern - values. - -Tests ------ - -- Issue #15467: Move helpers for `__sizeof__()` tests into test_support. Patch - by Serhiy Storchaka. - -- Issue #15320: Make iterating the list of tests thread-safe when running tests - in multiprocess mode. Patch by Chris Jerdonek. - -- Issue #15168: Move `importlib.test` to `test.test_importlib`. - -- Issue #15091: Reactivate a test on UNIX which was failing thanks to a - forgotten `importlib.invalidate_caches()` call. - -- Issue #15230: Adopted a more systematic approach in the runpy tests. - -- Issue #15300: Ensure the temporary test working directories are in the same - parent folder when running tests in multiprocess mode from a Python build. - Patch by Chris Jerdonek. - -- Issue #15284: Skip {send,recv}msg tests in test_socket when IPv6 is not - enabled. Patch by Brian Brazil. - -- Issue #15277: Fix a resource leak in support.py when IPv6 is disabled. Patch - by Brian Brazil. - -Build ------ - -- Issue #11715: Fix multiarch detection without having Debian development tools - (dpkg-dev) installed. - -- Issue #15037: Build OS X installers with local copy of ncurses 5.9 libraries - to avoid curses.unget_wch bug present in older versions of ncurses such as - those shipped with OS X. - -- Issue #15560: Fix building _sqlite3 extension on OS X with an SDK. Also, for - OS X installers, ensure consistent sqlite3 behavior and feature availability - by building a local copy of libsqlite3 rather than depending on the wide range - of versions supplied with various OS X releases. - -- Issue #8847: Disable COMDAT folding in Windows PGO builds. - -- Issue #14018: Fix OS X Tcl/Tk framework checking when using OS X SDKs. - -- Issue #16256: OS X installer now sets correct permissions for doc directory. - -- Issue #15431: Add _freeze_importlib project to regenerate importlib.h on - Windows. Patch by Kristján Valur Jónsson. - -- Issue #14197: For OS X framework builds, ensure links to the shared library - are created with the proper ABI suffix. - -- Issue #14330: For cross builds, don't use host python, use host search paths - for host compiler. - -- Issue #15235: Allow Berkley DB versions up to 5.3 to build the dbm module. - -- Issue #15268: Search curses.h in /usr/include/ncursesw. - - -What's New in Python 3.3.0 Beta 1? -================================== - -*Release date: 27-Jun-2012* - -Core and Builtins ------------------ - -- Fix a (most likely) very rare memory leak when calling main() and not being - able to decode a command-line argument. - -- Issue #14815: Use Py_ssize_t instead of long for the object hash, to - preserve all 64 bits of hash on Win64. - -- 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 #11626: Add _SizeT functions to stable ABI. - -- Issue #15142: Fix reference leak when deallocating instances of types - created using PyType_FromSpec(). - -- Issue #10053: Don't close FDs when FileIO.__init__ fails. Loosely based on - the work by Hirokazu Yamamoto. - -- Issue #15096: Removed support for ur'' as the raw notation isn't - compatible with Python 2.x's raw unicode strings. - -- Issue #13783: Generator objects now use the identifier APIs internally - -- Issue #14874: Restore charmap decoding speed to pre-PEP 393 levels. - Patch by Serhiy Storchaka. - -- Issue #15026: utf-16 encoding is now significantly faster (up to 10x). - Patch by Serhiy Storchaka. - -- Issue #11022: open() and io.TextIOWrapper are now calling - locale.getpreferredencoding(False) instead of locale.getpreferredencoding() - in text mode if the encoding is not specified. Don't change temporary the - locale encoding using locale.setlocale(), use the current locale encoding - instead of the user preferred encoding. - -- Issue #14673: Add Eric Snow's sys.implementation implementation. - -- Issue #15038: Optimize python Locks on Windows. - -Library -------- - -- Issue #12288: Consider '0' and '0.0' as valid initialvalue - for tkinter SimpleDialog. - -- Issue #15512: Add a __sizeof__ implementation for parser. - Patch by Serhiy Storchaka. - -- Issue #15469: Add a __sizeof__ implementation for deque objects. - Patch by Serhiy Storchaka. - -- Issue #15489: Add a __sizeof__ implementation for BytesIO objects. - Patch by Serhiy Storchaka. - -- Issue #15487: Add a __sizeof__ implementation for buffered I/O objects. - Patch by Serhiy Storchaka. - -- Issue #15514: Correct __sizeof__ support for cpu_set. - Patch by Serhiy Storchaka. - -- Issue #15177: Added dir_fd parameter to os.fwalk(). - -- Issue #15061: Re-implemented hmac.compare_digest() in C to prevent further - timing analysis and to support all buffer protocol aware objects as well as - ASCII only str instances safely. - -- Issue #15164: Change return value of platform.uname() from a - plain tuple to a collections.namedtuple. - -- Support Mageia Linux in the platform module. - -- Issue #11678: Support Arch linux in the platform module. - -- Issue #15118: Change return value of os.uname() and os.times() from - plain tuples to immutable iterable objects with named attributes - (structseq objects). - -- Speed up _decimal by another 10-15% by caching the thread local context - that was last accessed. In the pi benchmark (64-bit platform, prec=9), - _decimal is now only 1.5x slower than float. - -- Remove the packaging module, which is not ready for prime time. - -- Issue #15154: Add "dir_fd" parameter to os.rmdir, remove "rmdir" - parameter from os.remove / os.unlink. - -- Issue #4489: Add a shutil.rmtree that isn't susceptible to symlink attacks. - It is used automatically on platforms supporting the necessary os.openat() - and os.unlinkat() functions. Main code by Martin von Löwis. - -- Issue #15156: HTMLParser now uses the new "html.entities.html5" dictionary. - -- Issue #11113: add a new "html5" dictionary containing the named character - references defined by the HTML5 standard and the equivalent Unicode - character(s) to the html.entities module. - -- Issue #15114: the strict mode of HTMLParser and the HTMLParseError exception - are deprecated now that the parser is able to parse invalid markup. - -- Issue #3665: \u and \U escapes are now supported in unicode regular - expressions. Patch by Serhiy Storchaka. - -- Issue #15153: Added inspect.getgeneratorlocals to simplify white box - testing of generator state updates - -- Issue #13062: Added inspect.getclosurevars to simplify testing stateful - closures - -- Issue #11024: Fixes and additional tests for Time2Internaldate. - -- Issue #14626: Large refactoring of functions / parameters in the os module. - Many functions now support "dir_fd" and "follow_symlinks" parameters; - some also support accepting an open file descriptor in place of a path - string. Added os.support_* collections as LBYL helpers. Removed many - functions only previously seen in 3.3 alpha releases (often starting with - "f" or "l", or ending with "at"). Originally suggested by Serhiy Storchaka; - implemented by Larry Hastings. - -- Issue #15008: Implement PEP 362 "Signature Objects". - Patch by Yury Selivanov. - -- Issue: #15138: base64.urlsafe_{en,de}code() are now 3-4x faster. - -- Issue #444582: Add shutil.which, for finding programs on the system path. - Original patch by Erik Demaine, with later iterations by Jan Killian - and Brian Curtin. - -- Issue #14837: SSL errors now have ``library`` and ``reason`` attributes - describing precisely what happened and in which OpenSSL submodule. The - str() of a SSLError is also enhanced accordingly. - -- Issue #9527: datetime.astimezone() method will now supply a class - timezone instance corresponding to the system local timezone when - called with no arguments. - -- Issue #14653: email.utils.mktime_tz() no longer relies on system - mktime() when timezone offest is supplied. - -- Issue #14684: zlib.compressobj() and zlib.decompressobj() now support the use - of predefined compression dictionaries. Original patch by Sam Rushing. - -- Fix GzipFile's handling of filenames given as bytes objects. - -- Issue #14772: Return destination values from some shutil functions. - -- Issue #15064: Implement context manager protocol for multiprocessing types - -- Issue #15101: Make pool finalizer avoid joining current thread. - -- Issue #14657: The frozen instance of importlib used for bootstrap is now - also the module imported as importlib._bootstrap. - -- Issue #14055: Add __sizeof__ support to _elementtree. - -- Issue #15054: A bug in tokenize.tokenize that caused string literals - with 'b' prefixes to be incorrectly tokenized has been fixed. - Patch by Serhiy Storchaka. - -- Issue #15006: Allow equality comparison between naive and aware - time or datetime objects. - -- Issue #15036: Mailbox no longer throws an error if a flush is done - between operations when removing or changing multiple items in mbox, - MMDF, or Babyl mailboxes. - -- Issue #14059: Implement multiprocessing.Barrier. - -- Issue #15061: The inappropriately named hmac.secure_compare has been - renamed to hmac.compare_digest, restricted to operating on bytes inputs - only and had its documentation updated to more accurately reflect both its - intent and its limitations - -- Issue #13841: Make child processes exit using sys.exit() on Windows. - -- Issue #14936: curses_panel was converted to PEP 3121 and PEP 384 API. - Patch by Robin Schreiber. - -- Issue #1667546: On platforms supporting tm_zone and tm_gmtoff fields - in struct tm, time.struct_time objects returned by time.gmtime(), - time.localtime() and time.strptime() functions now have tm_zone and - tm_gmtoff attributes. Original patch by Paul Boddie. - -- Rename adjusted attribute to adjustable in time.get_clock_info() result. - -- Issue #3518: Remove references to non-existent BaseManager.from_address() - method. - -- Issue #13857: Added textwrap.indent() function (initial patch by Ezra - Berch) - -- Issue #2736: Added datetime.timestamp() method. - -- Issue #13854: Make multiprocessing properly handle non-integer - non-string argument to SystemExit. - -- Issue #12157: Make pool.map() empty iterables correctly. Initial - patch by mouad. - -- Issue #11823: disassembly now shows argument counts on calls with keyword args. - -- Issue #14711: os.stat_float_times() has been deprecated. - -- LZMAFile now accepts the modes "rb"/"wb"/"ab" as synonyms of "r"/"w"/"a". - -- The bz2 and lzma modules now each contain an open() function, allowing - compressed files to readily be opened in text mode as well as binary mode. - -- BZ2File.__init__() and LZMAFile.__init__() now accept a file object as their - first argument, rather than requiring a separate "fileobj" argument. - -- gzip.open() now accepts file objects as well as filenames. - -- Issue #14992: os.makedirs(path, exist_ok=True) would raise an OSError - when the path existed and had the S_ISGID mode bit set when it was - not explicitly asked for. This is no longer an exception as mkdir - cannot control if the OS sets that bit for it or not. - -- Issue #14989: Make the CGI enable option to http.server available via command - line. - -- Issue #14987: Add a missing import statement to inspect. - -- Issue #1079: email.header.decode_header now correctly parses all the examples - in RFC2047. There is a necessary visible behavior change: the leading and/or - trailing whitespace on ASCII parts is now preserved. - -- Issue #14969: Better handling of exception chaining in contextlib.ExitStack - -- Issue #14963: Convert contextlib.ExitStack.__exit__ to use an iterative - algorithm (Patch by Alon Horev) - -- Issue #14785: Add sys._debugmallocstats() to help debug low-level memory - allocation issues - -- Issue #14443: Ensure that .py files are byte-compiled with the correct Python - executable within bdist_rpm even on older versions of RPM - -C-API ------ - -- Issue #15146: Add PyType_FromSpecWithBases. Patch by Robin Schreiber. - -- Issue #15042: Add PyState_AddModule and PyState_RemoveModule. Add version - guard for Py_LIMITED_API additions. Patch by Robin Schreiber. - -- Issue #13783: Inadvertent additions to the public C API in the PEP 380 - implementation have either been removed or marked as private interfaces. - -Extension Modules ------------------ - -- Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c. - -IDLE ----- - -- Issue #9803: Don't close IDLE on saving if breakpoint is open. - Patch by Roger Serwy. - -- Issue #14962: Update text coloring in IDLE shell window after changing - options. Patch by Roger Serwy. - -Documentation -------------- - -- Issue #15176: Clarified behavior, documentation, and implementation - of os.listdir(). - -- Issue #14982: Document that pkgutil's iteration functions require the - non-standard iter_modules() method to be defined by an importer (something - the importlib importers do not define). - -- Issue #15081: Document PyState_FindModule. - Patch by Robin Schreiber. - -- Issue #14814: Added first draft of ipaddress module API reference - -Tests ------ - -- Issue #15187: Bugfix: remove temporary directories test_shutil was leaving - behind. - -- Issue #14769: test_capi now has SkipitemTest, which cleverly checks - for "parity" between PyArg_ParseTuple() and the Python/getargs.c static - function skipitem() for all possible "format units". - -- test_nntplib now tolerates being run from behind NNTP gateways that add - "X-Antivirus" headers to articles - -- Issue #15043: test_gdb is now skipped entirely if gdb security settings - block loading of the gdb hooks - -- Issue #14963: Add test cases for exception handling behaviour - in contextlib.ExitStack (Initial patch by Alon Horev) - -Build ------ - -- Issue #13590: Improve support for OS X Xcode 4: - * Try to avoid building Python or extension modules with problematic - llvm-gcc compiler. - * Since Xcode 4 removes ppc support, extension module builds now - check for ppc compiler support and automatically remove ppc and - ppc64 archs when not available. - * Since Xcode 4 no longer install SDKs in default locations, - extension module builds now revert to using installed headers - and libs if the SDK used to build the interpreter is not - available. - * Update ./configure to use better defaults for universal builds; - in particular, --enable-universalsdk=yes uses the Xcode default - SDK and --with-universal-archs now defaults to "intel" if ppc - not available. - -- Issue #14225: Fix Unicode support for curses (#12567) on OS X - -- Issue #14928: Fix importlib bootstrap issues by using a custom executable - (Modules/_freeze_importlib) to build Python/importlib.h. - - -What's New in Python 3.3.0 Alpha 4? -=================================== - -*Release date: 31-May-2012* - -Core and Builtins ------------------ - -- Issue #14835: Make plistlib output empty arrays & dicts like OS X. - Patch by Sidney San Martín. - -- Issue #14744: Use the new _PyUnicodeWriter internal API to speed up - str%args and str.format(args). - -- Issue #14930: Make memoryview objects weakrefable. - -- Issue #14775: Fix a potential quadratic dict build-up due to the garbage - collector repeatedly trying to untrack dicts. - -- Issue #14857: fix regression in references to PEP 3135 implicit __class__ - closure variable (Reopens issue #12370) - -- Issue #14712 (PEP 405): Virtual environments. Implemented by Vinay Sajip. - -- Issue #14660 (PEP 420): Namespace packages. Implemented by Eric Smith. - -- 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. - -- Issue #9260: A finer-grained import lock. Most of the import sequence - now uses per-module locks rather than the global import lock, eliminating - well-known issues with threads and imports. - -- Issue #14624: UTF-16 decoding is now 3x to 4x faster on various inputs. - Patch by Serhiy Storchaka. - -- asdl_seq and asdl_int_seq are now Py_ssize_t sized. - -- Issue #14133 (PEP 415): Implement suppression of __context__ display with an - attribute on BaseException. This replaces the original mechanism of PEP 409. - -- Issue #14417: Mutating a dict during lookup now restarts the lookup instead - of raising a RuntimeError (undoes issue #14205). - -- Issue #14738: Speed-up UTF-8 decoding on non-ASCII data. Patch by Serhiy - Storchaka. - -- Issue #14700: Fix two broken and undefined-behaviour-inducing overflow checks - in old-style string formatting. - -Library -------- - -- Issue #14690: Use monotonic clock instead of system clock in the sched, - subprocess and trace modules. - -- Issue #14443: Tell rpmbuild to use the correct version of Python in - bdist_rpm. Initial patch by Ross Lagerwall. - -- Issue #12515: email now registers a defect if it gets to EOF while parsing - a MIME part without seeing the closing MIME boundary. - -- Issue #1672568: email now always decodes base64 payloads, adding padding and - ignoring non-base64-alphabet characters if needed, and registering defects - for any such problems. - -- Issue #14925: email now registers a defect when the parser decides that there - is a missing header/body separator line. MalformedHeaderDefect, which the - existing code would never actually generate, is deprecated. - -- Issue #10365: File open dialog now works instead of crashing even when - the parent window is closed before the dialog. Patch by Roger Serwy. - -- Issue #8739: Updated smtpd to support RFC 5321, and added support for the - RFC 1870 SIZE extension. - -- Issue #665194: Added a localtime function to email.utils to provide an - aware local datetime for use in setting Date headers. - -- Issue #12586: Added new provisional policies that implement convenient - unicode support for email headers. See What's New for details. - -- Issue #14731: Refactored email Policy framework to support full backward - compatibility with Python 3.2 by default yet allow for the introduction of - new features through new policies. Note that Policy.must_be_7bit is renamed - to cte_type. - -- Issue #14876: Use user-selected font for highlight configuration. - -- Issue #14920: Fix the help(urllib.parse) failure on locale C on terminals. - Have ascii characters in help. - -- Issue #14548: Make multiprocessing finalizers check pid before - running to cope with possibility of gc running just after fork. - -- Issue #14036: Add an additional check to validate that port in urlparse does - not go in illegal range and returns None. - -- Issue #14862: Add missing names to os.__all__ - -- Issue #14875: Use float('inf') instead of float('1e66666') in the json module. - -- Issue #13585: Added contextlib.ExitStack - -- PEP 3144, Issue #14814: Added the ipaddress module - -- Issue #14426: Correct the Date format in Expires attribute of Set-Cookie - Header in Cookie.py. - -- Issue #14588: The types module now provide new_class() and prepare_class() - functions to support PEP 3115 compliant dynamic class creation. Patch by - Daniel Urban and Nick Coghlan. - -- Issue #13152: Allow to specify a custom tabsize for expanding tabs in - textwrap. Patch by John Feuerstein. - -- Issue #14721: Send the correct 'Content-length: 0' header when the body is an - empty string ''. Initial Patch contributed by Arve Knudsen. - -- Issue #14072: Fix parsing of 'tel' URIs in urlparse by making the check for - ports stricter. - -- Issue #9374: Generic parsing of query and fragment portions of url for any - scheme. Supported both by RFC3986 and RFC2396. - -- Issue #14798: Fix the functions in pyclbr to raise an ImportError - when the first part of a dotted name is not a package. Patch by - Xavier de Gaye. - -- Issue #12098: multiprocessing on Windows now starts child processes - using the same sys.flags as the current process. Initial patch by - Sergey Mezentsev. - -- Issue #13031: Small speed-up for tarfile when unzipping tarfiles. - Patch by Justin Peel. - -- Issue #14780: urllib.request.urlopen() now has a ``cadefault`` argument - to use the default certificate store. Initial patch by James Oakley. - -- Issue #14829: Fix bisect and range() indexing with large indices - (>= 2 ** 32) under 64-bit Windows. - -- Issue #14732: The _csv module now uses PEP 3121 module initialization. - Patch by Robin Schreiber. - -- Issue #14809: Add HTTP status codes introduced by RFC 6585 to http.server - and http.client. Patch by EungJun Yi. - -- Issue #14777: tkinter may return undecoded UTF-8 bytes as a string when - accessing the Tk clipboard. Modify clipboad_get() to first request type - UTF8_STRING when no specific type is requested in an X11 windowing - environment, falling back to the current default type STRING if that fails. - Original patch by Thomas Kluyver. - -- Issue #14773: Fix os.fwalk() failing on dangling symlinks. - -- Issue #12541: Be lenient with quotes around Realm field of HTTP Basic - Authentation in urllib2. - -- Issue #14807: move undocumented tarfile.filemode() to stat.filemode() and add - doc entry. Add tarfile.filemode alias with deprecation warning. - -- Issue #13815: TarFile.extractfile() now returns io.BufferedReader objects. - -- Issue #14532: Add a secure_compare() helper to the hmac module, to mitigate - timing attacks. Patch by Jon Oberheide. - -- Add importlib.util.resolve_name(). - -- Issue #14366: Support lzma compression in zip files. - Patch by Serhiy Storchaka. - -- Issue #13959: Introduce importlib.find_loader() and document - imp.find_module/load_module as deprecated. - -- Issue #14082: shutil.copy2() now copies extended attributes, if possible. - Patch by Hynek Schlawack. - -- Issue #13959: Make importlib.abc.FileLoader.load_module()/get_filename() and - importlib.machinery.ExtensionFileLoader.load_module() have their single - argument be optional. Allows for the replacement (and thus deprecation) of - imp.load_source()/load_package()/load_compiled(). - -- Issue #13959: imp.get_suffixes() has been deprecated in favour of the new - attributes on importlib.machinery: SOURCE_SUFFIXES, DEBUG_BYTECODE_SUFFIXES, - OPTIMIZED_BYTECODE_SUFFIXES, BYTECODE_SUFFIXES, and EXTENSION_SUFFIXES. This - led to an indirect deprecation of inspect.getmoduleinfo(). - -- Issue #14662: Prevent shutil failures on OS X when destination does not - support chflag operations. Patch by Hynek Schlawack. - -- Issue #14157: Fix time.strptime failing without a year on February 29th. - Patch by Hynek Schlawack. - -- Issue #14753: Make multiprocessing's handling of negative timeouts - the same as it was in Python 3.2. - -- Issue #14583: Fix importlib bug when a package's __init__.py would first - import one of its modules then raise an error. - -- Issue #14741: Fix missing support for Ellipsis ('...') in parser module. - -- Issue #14697: Fix missing support for set displays and set comprehensions in - parser module. - -- Issue #14701: Fix missing support for 'raise ... from' in parser module. - -- Add support for timeouts to the acquire() methods of - multiprocessing's lock/semaphore/condition proxies. - -- Issue #13989: Add support for text mode to gzip.open(). - -- Issue #14127: The os.stat() result object now provides three additional - fields: st_ctime_ns, st_mtime_ns, and st_atime_ns, providing those times as an - integer with nanosecond resolution. The functions os.utime(), os.lutimes(), - and os.futimes() now accept a new parameter, ns, which accepts mtime and atime - as integers with nanosecond resolution. - -- Issue #14127 and #10148: shutil.copystat now preserves exact mtime and atime - on filesystems providing nanosecond resolution. - -IDLE ----- - -- Issue #14958: Change IDLE systax highlighting to recognize all string and - byte literals supported in Python 3.3. - -- Issue #10997: Prevent a duplicate entry in IDLE's "Recent Files" menu. - -- Issue #14929: Stop IDLE 3.x from closing on Unicode decode errors when - grepping. Patch by Roger Serwy. - -- Issue #12510: Attempting to get invalid tooltip no longer closes IDLE. - Other tooltipss have been corrected or improved and the number of tests - has been tripled. Original patch by Roger Serwy. - -Tools/Demos ------------ - -- Issue #14695: Bring Tools/parser/unparse.py support up to date with - the Python 3.3 Grammar. - -Build ------ - -- Issue #14472: Update .gitignore. Patch by Matej Cepl. - -- Upgrade Windows library versions: bzip 1.0.6, OpenSSL 1.0.1c. - -- Issue #14693: Under non-Windows platforms, hashlib's fallback modules are - always compiled, even if OpenSSL is present at build time. - -- Issue #13210: Windows build now uses VS2010, ported from VS2008. - -C-API ------ - -- Issue #14705: The PyArg_Parse() family of functions now support the 'p' format - unit, which accepts a "boolean predicate" argument. It converts any Python - value into an integer--0 if it is "false", and 1 otherwise. - -Documentation -------------- - -- Issue #14863: Update the documentation of os.fdopen() to reflect the - fact that it's only a thin wrapper around open() anymore. - -- Issue #14588: The language reference now accurately documents the Python 3 - class definition process. Patch by Nick Coghlan. - -- Issue #14943: Correct a default argument value for winreg.OpenKey - and correctly list the argument names in the function's explanation. - - -What's New in Python 3.3.0 Alpha 3? -=================================== - -*Release date: 01-May-2012* - -Core and Builtins ------------------ - -- Issue #14699: Fix calling the classmethod descriptor directly. - -- Issue #14433: Prevent msvcrt crash in interactive prompt when stdin is closed. - -- Issue #14521: Make result of float('nan') and float('-nan') more consistent - across platforms. - -- Issue #14646: __import__() sets __loader__ if the loader did not. - -- Issue #14605: No longer have implicit entries in sys.meta_path. If - sys.meta_path is found to be empty, raise ImportWarning. - -- Issue #14605: No longer have implicit entries in sys.path_hooks. If - sys.path_hooks is found to be empty, a warning will be raised. None is now - inserted into sys.path_importer_cache if no finder was discovered. This also - means imp.NullImporter is no longer implicitly used. - -- Issue #13903: Implement PEP 412. Individual dictionary instances can now share - their keys with other dictionaries. Classes take advantage of this to share - their instance dictionary keys for improved memory and performance. - -- Issue #11603 (again): Setting __repr__ to __str__ now raises a RuntimeError - when repr() or str() is called on such an object. - -- Issue #14658: Fix binding a special method to a builtin implementation of a - special method with a different name. - -- Issue #14630: Fix a memory access bug for instances of a subclass of int - with value 0. - -- Issue #14339: Speed improvements to bin, oct and hex functions. Patch by - Serhiy Storchaka. - -- Issue #14385: It is now possible to use a custom type for the __builtins__ - namespace, instead of a dict. It can be used for sandboxing for example. - Raise also a NameError instead of ImportError if __build_class__ name if not - found in __builtins__. - -- Issue #12599: Be more strict in accepting None compared to a false-like - object for importlib.util.module_for_loader and - importlib.machinery.PathFinder. - -- Issue #14612: Fix jumping around with blocks by setting f_lineno. - -- Issue #14592: Attempting a relative import w/o __package__ or __name__ set in - globals raises a KeyError. - -- Issue #14607: Fix keyword-only arguments which started with ``__``. - -- Issue #10854: The ImportError raised when an extension module on Windows - fails to import now uses the new path and name attributes from - Issue #1559549. - -- 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. - -- __import__() now matches PEP 328 and documentation by defaulting 'index' to 0 - instead of -1 and removing support for negative values. - -- Issue #2377: Make importlib the implementation of __import__(). - -- Issue #1559549: ImportError now has 'name' and 'path' attributes that are set - using keyword arguments to its constructor. They are currently not set by - import as they are meant for use by importlib. - -- Issue #14474: Save and restore exception state in thread.start_new_thread() - while writing error message if the thread leaves a unhandled exception. - -- Issue #13019: Fix potential reference leaks in bytearray.extend(). Patch - by Suman Saha. - -Library -------- - -- Issue #14768: os.path.expanduser('~/a') doesn't works correctly when HOME is '/'. - -- Issue #14371: Support bzip2 in zipfile module. Patch by Serhiy Storchaka. - -- Issue #13183: Fix pdb skipping frames after hitting a breakpoint and running - step. Patch by Xavier de Gaye. - -- Issue #14696: Fix parser module to understand 'nonlocal' declarations. - -- Issue #10941: Fix imaplib.Internaldate2tuple to produce correct result near - the DST transition. Patch by Joe Peterson. - -- Issue #9154: Fix parser module to understand function annotations. - -- Issue #6085: In http.server.py SimpleHTTPServer.address_string returns the - client ip address instead client hostname. Patch by Charles-François Natali. - -- Issue #14309: Deprecate time.clock(), use time.perf_counter() or - time.process_time() instead. - -- Issue #14428: Implement the PEP 418. Add time.get_clock_info(), - time.perf_counter() and time.process_time() functions, and rename - time.steady() to time.monotonic(). - -- Issue #14646: importlib.util.module_for_loader() now sets __loader__ and - __package__ (when possible). - -- Issue #14664: It is now possible to use @unittest.skip{If,Unless} on a - test class that doesn't inherit from TestCase (i.e. a mixin). - -- Issue #4892: multiprocessing Connections can now be transferred over - multiprocessing Connections. Patch by Richard Oudkerk (sbt). - -- Issue #14160: TarFile.extractfile() failed to resolve symbolic links when - the links were not located in an archive subdirectory. - -- Issue #14638: pydoc now treats non-string __name__ values as if they - were missing, instead of raising an error. - -- Issue #13684: Fix httplib tunnel issue of infinite loops for certain sites - which send EOF without trailing \r\n. - -- Issue #14605: Add importlib.abc.FileLoader, importlib.machinery.(FileFinder, - SourceFileLoader, SourcelessFileLoader, ExtensionFileLoader). - -- Issue #13959: imp.cache_from_source()/source_from_cache() now follow - os.path.join()/split() semantics for path manipulation instead of its prior, - custom semantics of caring the right-most path separator forward in path - joining. - -- Issue #2193: Allow ":" character in Cookie NAME values. - -- Issue #14629: tokenizer.detect_encoding will specify the filename in the - SyntaxError exception if found at readline.__self__.name. - -- Issue #14629: Raise SyntaxError in tokenizer.detect_encoding if the - first two lines have non-UTF-8 characters without an encoding declaration. - -- Issue #14308: Fix an exception when a "dummy" thread is in the threading - module's active list after a fork(). - -- Issue #11750: The Windows API functions scattered in the _subprocess and - _multiprocessing.win32 modules now live in a single module "_winapi". - Patch by sbt. - -- Issue #14087: multiprocessing: add Condition.wait_for(). Patch by sbt. - -- Issue #14538: HTMLParser can now parse correctly start tags that contain - a bare '/'. - -- Issue #14452: SysLogHandler no longer inserts a UTF-8 BOM into the message. - -- Issue #14386: Expose the dict_proxy internal type as types.MappingProxyType. - -- Issue #13959: Make imp.reload() always use a module's __loader__ to perform - the reload. - -- Issue #13959: Add imp.py and rename the built-in module to _imp, allowing for - re-implementing parts of the module in pure Python. - -- Issue #13496: Fix potential overflow in bisect.bisect algorithm when applied - to a collection of size > sys.maxsize / 2. - -- Have importlib take advantage of ImportError's new 'name' and 'path' - attributes. - -- Issue #14399: zipfile now recognizes that the archive has been modified even - if only the comment is changed. In addition, the TypeError that results from - trying to set a non-binary value as a comment is now raised at the time - the comment is set rather than at the time the zipfile is written. - -- trace.CoverageResults.is_ignored_filename() now ignores any name that starts - with "<" and ends with ">" instead of special-casing "<string>" and - "<doctest ". - -- Issue #12537: The mailbox module no longer depends on knowledge of internal - implementation details of the email package Message object. - -- Issue #7978: socketserver now restarts the select() call when EINTR is - returned. This avoids crashing the server loop when a signal is received. - Patch by Jerzy Kozera. - -- Issue #14522: Avoid duplicating socket handles in multiprocessing.connection. - Patch by sbt. - -- Don't Py_DECREF NULL variable in io.IncrementalNewlineDecoder. - -- Issue #3033: Add displayof parameter to tkinter font. Patch by Guilherme Polo. - -- Issue #14482: Raise a ValueError, not a NameError, when trying to create - a multiprocessing Client or Listener with an AF_UNIX type address under - Windows. Patch by Popa Claudiu. - -- Issue #802310: Generate always unique tkinter font names if not directly passed. - -- Issue #14151: Raise a ValueError, not a NameError, when trying to create - a multiprocessing Client or Listener with an AF_PIPE type address under - non-Windows platforms. Patch by Popa Claudiu. - -- Issue #14493: Use gvfs-open or xdg-open in webbrowser. - -Build ------ - -- "make touch" will now touch generated files that are checked into Mercurial, - after a "hg update" which failed to bring the timestamps into the right order. - -Tests ------ - -- Issue #14026: In test_cmd_line_script, check that sys.argv is populated - correctly for the various invocation approaches (Patch by Jason Yeo) - -- Issue #14032: Fix incorrect variable name in test_cmd_line_script debugging - message (Patch by Jason Yeo) - -- Issue #14589: Update certificate chain for sha256.tbs-internet.com, fixing - a test failure in test_ssl. - -- Issue #14355: Regrtest now supports the standard unittest test loading, and - will use it if a test file contains no `test_main` method. - -IDLE ----- - -- Issue #8515: Set __file__ when run file in IDLE. - Initial patch by Bruce Frederiksen. - -- Issue #14496: Fix wrong name in idlelib/tabbedpages.py. - Patch by Popa Claudiu. - -Tools / Demos -------------- - -- Issue #3561: The Windows installer now has an option, off by default, for - placing the Python installation into the system "Path" environment variable. - -- Issue #13165: stringbench is now available in the Tools/stringbench folder. - It used to live in its own SVN project. - -C-API ------ - -- Issue #14098: New functions PyErr_GetExcInfo and PyErr_SetExcInfo. - Patch by Stefan Behnel. - - -What's New in Python 3.3.0 Alpha 2? -=================================== - -*Release date: 01-Apr-2012* - -Core and Builtins ------------------ - -- Issue #1683368: object.__new__ and object.__init__ raise a TypeError if they - are passed arguments and their complementary method is not overridden. - -- Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as - the module name that was not interned. - -- Issue #14331: Use significantly less stack space when importing modules by - allocating path buffers on the heap instead of the stack. - -- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not - passed strings. - -- Issue #1469629: Allow cycles through an object's __dict__ slot to be - collected. (For example if ``x.__dict__ is x``). - -- Issue #14205: dict lookup raises a RuntimeError if the dict is modified - during a lookup. - -- Issue #14220: When a generator is delegating to another iterator with the - yield from syntax, it needs to have its ``gi_running`` flag set to True. - -- Issue #14435: Remove dedicated block allocator from floatobject.c and rely - on the PyObject_Malloc() api like all other objects. - -- Issue #14471: Fix a possible buffer overrun in the winreg module. - -- Issue #14288: Allow the serialization of builtin iterators - -Library -------- - -- Issue #14300: Under Windows, sockets created using socket.dup() now allow - overlapped I/O. Patch by sbt. - -- Issue #13872: socket.detach() now marks the socket closed (as mirrored - in the socket repr()). Patch by Matt Joiner. - -- Issue #14406: Fix a race condition when using ``concurrent.futures.wait( - return_when=ALL_COMPLETED)``. Patch by Matt Joiner. - -- Issue #5136: deprecate old, unused functions from tkinter. - -- Issue #14416: syslog now defines the LOG_ODELAY and LOG_AUTHPRIV constants - if they are defined in <syslog.h>. - -- Issue #14295: Add unittest.mock - -- Issue #7652: Add --with-system-libmpdec option to configure for linking - the _decimal module against an installed libmpdec. - -- Issue #14380: MIMEText now defaults to utf-8 when passed non-ASCII unicode - with no charset specified. - -- Issue #10340: asyncore - properly handle EINVAL in dispatcher constructor on - OSX; avoid to call handle_connect in case of a disconnected socket which - was not meant to connect. - -- Issue #14204: The ssl module now has support for the Next Protocol - Negotiation extension, if available in the underlying OpenSSL library. - Patch by Colin Marc. - -- Issue #3035: Unused functions from tkinter are marked as pending deprecated. - -- Issue #12757: Fix the skipping of doctests when python is run with -OO so - that it works in unittest's verbose mode as well as non-verbose mode. - -- Issue #7652: Integrate the decimal floating point libmpdec library to speed - up the decimal module. Performance gains of the new C implementation are - between 10x and 100x, depending on the application. - -- Issue #14269: SMTPD now conforms to the RFC and requires a HELO command - before MAIL, RCPT, or DATA. - -- Issue #13694: asynchronous connect in asyncore.dispatcher does not set addr - attribute. - -- Issue #14344: fixed the repr of email.policy objects. - -- Issue #11686: Added missing entries to email package __all__ lists - (mostly the new Bytes classes). - -- Issue #14335: multiprocessing's custom Pickler subclass now inherits from - the C-accelerated implementation. Patch by sbt. - -- Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem. - -- Issue #11199: Fix the with urllib which hangs on particular ftp urls. - -- Improve the memory utilization and speed of functools.lru_cache. - -- Issue #14222: Use the new time.steady() function instead of time.time() for - timeout in queue and threading modules to not be affected of system time - update. - -- Issue #13248: Remove lib2to3.pytree.Base.get_prefix/set_prefix. - -- Issue #14234: CVE-2012-0876: Randomize hashes of xml attributes in the hash - table internal to the pyexpat module's copy of the expat library to avoid a - denial of service due to hash collisions. Patch by David Malcolm with some - modifications by the expat project. - -- Issue #12818: format address no longer needlessly \ escapes ()s in names when - the name ends up being quoted. - -- Issue #14062: BytesGenerator now correctly folds Header objects, - including using linesep when folding. - -- Issue #13839: When invoked on the command-line, the pstats module now - accepts several filenames of profile stat files and merges them all. - Patch by Matt Joiner. - -- Issue #14291: Email now defaults to utf-8 for non-ASCII unicode headers - instead of raising an error. This fixes a regression relative to 2.7. - -- Issue #989712: Support using Tk without a mainloop. - -- Issue #3835: Refuse to use unthreaded Tcl in threaded Python. - -- Issue #2843: Add new Tk API to Tkinter. - -- Issue #14184: Increase the default stack size for secondary threads on - Mac OS X to avoid interpreter crashes when using threads on 10.7. - -- Issue #14180: datetime.date.fromtimestamp(), - datetime.datetime.fromtimestamp() and datetime.datetime.utcfromtimestamp() - now raise an OSError instead of ValueError if localtime() or gmtime() failed. - -- Issue #14180: time.ctime(), gmtime(), time.localtime(), - datetime.date.fromtimestamp(), datetime.datetime.fromtimestamp() and - datetime.datetime.utcfromtimestamp() now raises an OverflowError, instead of - a ValueError, if the timestamp does not fit in time_t. - -- Issue #14180: datetime.datetime.fromtimestamp() and - datetime.datetime.utcfromtimestamp() now round microseconds towards zero - instead of rounding to nearest with ties going away from zero. - -- Issue #10543: Fix unittest test discovery with Jython bytecode files. - -- Issue #1178863: Separate initialisation from setting when initializing - Tkinter.Variables; harmonize exceptions to ValueError; only delete variables - that have not been deleted; assert that variable names are strings. - -- Issue #14104: Implement time.monotonic() on Mac OS X, patch written by - Nicholas Riley. - -- Issue #13394: the aifc module now uses warnings.warn() to signal warnings. - -- Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under - Windows when the child process has already exited. - -- Issue #14223: curses.addch() is no more limited to the range 0-255 when the - Python curses is not linked to libncursesw. It was a regression introduced - in Python 3.3a1. - -- Issue #14168: Check for presence of Element._attrs in minidom before - accessing it. - -- Issue #12328: Fix multiprocessing's use of overlapped I/O on Windows. - Also, add a multiprocessing.connection.wait(rlist, timeout=None) function - for polling multiple objects at once. Patch by sbt. - -- Issue #14007: Accept incomplete TreeBuilder objects (missing start, end, - data or close method) for the Python implementation as well. - Drop the no-op TreeBuilder().xml() method from the C implementation. - -- Issue #14210: pdb now has tab-completion not only for command names, but - also for their arguments, wherever possible. - -- Issue #14310: Sockets can now be with other processes on Windows using - the api socket.socket.share() and socket.fromshare(). - -- Issue #10576: The gc module now has a 'callbacks' member that will get - called when garbage collection takes place. - -Build ------ - -- Issue #14557: Fix extensions build on HP-UX. Patch by Adi Roiban. - -- Issue #14387: Do not include accu.h from Python.h. - -- Issue #14359: Only use O_CLOEXEC in _posixmodule.c if it is defined. - Based on patch from Hervé Coatanhay. - -- Issue #14321: Do not run pgen during the build if files are up to date. - -Documentation -------------- - -- Issue #14034: added the argparse tutorial. - -- Issue #14324: Fix configure tests for cross builds. - -- Issue #14327: Call AC_CANONICAL_HOST in configure.ac and check in - config.{guess,sub}. Don't use uname calls for cross builds. - -Extension Modules ------------------ - -- Issue #9041: An issue in ctypes.c_longdouble, ctypes.c_double, and - ctypes.c_float that caused an incorrect exception to be returned in the - case of overflow has been fixed. - -- Issue #14212: The re module didn't retain a reference to buffers it was - scanning, resulting in segfaults. - -- Issue #14259: The finditer() method of re objects did not take any - keyword arguments, contrary to the documentation. - -- Issue #10142: Support for SEEK_HOLE/SEEK_DATA (for example, under ZFS). - -Tests ------ - -- Issue #14442: Add missing errno import in test_smtplib. - -- Issue #8315: (partial fix) python -m unittest test.test_email now works. - - -What's New in Python 3.3.0 Alpha 1? -=================================== - -*Release date: 05-Mar-2012* - -Core and Builtins ------------------ - -- Issue #14172: Fix reference leak when marshalling a buffer-like object - (other than a bytes object). - -- Issue #13521: dict.setdefault() now does only one lookup for the given key, - making it "atomic" for many purposes. Patch by Filip Gruszczyński. - -- PEP 409, Issue #6210: "raise X from None" is now supported as a means of - suppressing the display of the chained exception context. The chained - context still remains available as the __context__ attribute. - -- Issue #10181: New memoryview implementation fixes multiple ownership - and lifetime issues of dynamically allocated Py_buffer members (#9990) - as well as crashes (#8305, #7433). Many new features have been added - (See whatsnew/3.3), and the documentation has been updated extensively. - The ndarray test object from _testbuffer.c implements all aspects of - PEP-3118, so further development towards the complete implementation - of the PEP can proceed in a test-driven manner. - - Thanks to Nick Coghlan, Antoine Pitrou and Pauli Virtanen for review - and many ideas. - -- Issue #12834: Fix incorrect results of memoryview.tobytes() for - non-contiguous arrays. - -- Issue #5231: Introduce memoryview.cast() method that allows changing - format and shape without making a copy of the underlying memory. - -- Issue #14084: Fix a file descriptor leak when importing a module with a - bad encoding. - -- Upgrade Unicode data to Unicode 6.1. - -- Issue #14040: Remove rarely used file name suffixes for C extensions - (under POSIX mainly). - -- Issue #14051: Allow arbitrary attributes to be set of classmethod and - staticmethod. - -- Issue #13703: oCERT-2011-003: Randomize hashes of str and bytes to protect - against denial of service attacks due to hash collisions within the dict and - set types. Patch by David Malcolm, based on work by Victor Stinner. - -- Issue #13020: Fix a reference leak when allocating a structsequence object - fails. Patch by Suman Saha. - -- Issue #13908: Ready types returned from PyType_FromSpec. - -- Issue #11235: Fix OverflowError when trying to import a source file whose - modification time doesn't fit in a 32-bit timestamp. - -- Issue #12705: A SyntaxError exception is now raised when attempting to - compile multiple statements as a single interactive statement. - -- Fix the builtin module initialization code to store the init function for - future reinitialization. - -- Issue #8052: The posix subprocess module would take a long time closing - all possible file descriptors in the child process rather than just open - file descriptors. It now closes only the open fds if possible for the - default close_fds=True behavior. - -- Issue #13629: Renumber the tokens in token.h so that they match the indexes - into _PyParser_TokenNames. - -- Issue #13752: Add a casefold() method to str. - -- Issue #13761: Add a "flush" keyword argument to the print() function, - used to ensure flushing the output stream. - -- Issue #13645: pyc files now contain the size of the corresponding source - code, to avoid timestamp collisions (especially on filesystems with a low - timestamp resolution) when checking for freshness of the bytecode. - -- PEP 380, Issue #11682: Add "yield from <x>" to support easy delegation to - subgenerators (initial patch by Greg Ewing, integration into 3.3 by - Renaud Blanch, Ryan Kelly, Zbigniew Jędrzejewski-Szmek and Nick Coghlan) - -- Issue #13748: Raw bytes literals can now be written with the ``rb`` prefix - as well as ``br``. - -- Issue #12736: Use full unicode case mappings for upper, lower, and title case. - -- Issue #12760: Add a create mode to open(). Patch by David Townshend. - -- Issue #13738: Simplify implementation of bytes.lower() and bytes.upper(). - -- Issue #13577: Built-in methods and functions now have a __qualname__. - Patch by sbt. - -- Issue #6695: Full garbage collection runs now clear the freelist of set - objects. Initial patch by Matthias Troffaes. - -- Fix OSError.__init__ and OSError.__new__ so that each of them can be - overriden and take additional arguments (followup to issue #12555). - -- Fix the fix for issue #12149: it was incorrect, although it had the side - effect of appearing to resolve the issue. Thanks to Mark Shannon for - noticing. - -- Issue #13505: Pickle bytes objects in a way that is compatible with - Python 2 when using protocols <= 2. - -- Issue #11147: Fix an unused argument in _Py_ANNOTATE_MEMORY_ORDER. (Fix - given by Campbell Barton). - -- Issue #13503: Use a more efficient reduction format for bytearrays with - pickle protocol >= 3. The old reduction format is kept with older protocols - in order to allow unpickling under Python 2. Patch by Irmen de Jong. - -- Issue #7111: Python can now be run without a stdin, stdout or stderr - stream. It was already the case with Python 2. However, the corresponding - sys module entries are now set to None (instead of an unusable file object). - -- Issue #11849: Ensure that free()d memory arenas are really released - on POSIX systems supporting anonymous memory mappings. Patch by - Charles-François Natali. - -- PEP 3155 / issue #13448: Qualified name for classes and functions. - -- Issue #13436: Fix a bogus error message when an AST object was passed - an invalid integer value. - -- Issue #13411: memoryview objects are now hashable when the underlying - object is hashable. - -- Issue #13338: Handle all enumerations in _Py_ANNOTATE_MEMORY_ORDER - to allow compiling extension modules with -Wswitch-enum on gcc. - Initial patch by Floris Bruynooghe. - -- Issue #10227: Add an allocation cache for a single slice object. Patch by - Stefan Behnel. - -- Issue #13393: BufferedReader.read1() now asks the full requested size to - the raw stream instead of limiting itself to the buffer size. - -- Issue #13392: Writing a pyc file should now be atomic under Windows as well. - -- Issue #13333: The UTF-7 decoder now accepts lone surrogates (the encoder - already accepts them). - -- Issue #13389: Full garbage collection passes now clear the freelists for - list and dict objects. They already cleared other freelists in the - interpreter. - -- Issue #13327: Remove the need for an explicit None as the second argument - to os.utime, os.lutimes, os.futimes, os.futimens, os.futimesat, in - order to update to the current time. Also added keyword argument - handling to os.utimensat in order to remove the need for explicit None. - -- Issue #13350: Simplify some C code by replacing most usages of - PyUnicode_Format by PyUnicode_FromFormat. - -- Issue #13342: input() used to ignore sys.stdin's and sys.stdout's unicode - error handler in interactive mode (when calling into PyOS_Readline()). - -- Issue #9896: Add start, stop, and step attributes to range objects. - -- Issue #13343: Fix a SystemError when a lambda expression uses a global - variable in the default value of a keyword-only argument: ``lambda *, - arg=GLOBAL_NAME: None`` - -- Issue #12797: Added custom opener parameter to builtin open() and - FileIO.open(). - -- Issue #10519: Avoid unnecessary recursive function calls in - setobject.c. - -- Issue #10363: Deallocate global locks in Py_Finalize(). - -- Issue #13018: Fix reference leaks in error paths in dictobject.c. - Patch by Suman Saha. - -- Issue #13201: Define '==' and '!=' to compare range objects based on - the sequence of values they define (instead of comparing based on - object identity). - -- Issue #1294232: In a few cases involving metaclass inheritance, the - interpreter would sometimes invoke the wrong metaclass when building a new - class object. These cases now behave correctly. Patch by Daniel Urban. - -- Issue #12753: Add support for Unicode name aliases and named sequences. - Both ``unicodedata.lookup()`` and '\N{...}' now resolve aliases, - and ``unicodedata.lookup()`` resolves named sequences too. - -- Issue #12170: The count(), find(), rfind(), index() and rindex() methods - of bytes and bytearray objects now accept an integer between 0 and 255 - as their first argument. Patch by Petri Lehtinen. - -- Issue #12604: VTRACE macro expanded to no-op in _sre.c to avoid compiler - warnings. Patch by Josh Triplett and Petri Lehtinen. - -- Issue #12281: Rewrite the MBCS codec to handle correctly replace and ignore - error handlers on all Windows versions. The MBCS codec is now supporting all - error handlers, instead of only replace to encode and ignore to decode. - -- Issue #13188: When called without an explicit traceback argument, - generator.throw() now gets the traceback from the passed exception's - ``__traceback__`` attribute. Patch by Petri Lehtinen. - -- Issue #13146: Writing a pyc file is now atomic under POSIX. - -- Issue #7833: Extension modules built using distutils on Windows will no - longer include a "manifest" to prevent them failing at import time in some - embedded situations. - -- PEP 3151 / issue #12555: reworking the OS and IO exception hierarchy. - -- Add internal API for static strings (_Py_identifier et al.). - -- Issue #13063: the Windows error ERROR_NO_DATA (numbered 232 and described - as "The pipe is being closed") is now mapped to POSIX errno EPIPE - (previously EINVAL). - -- Issue #12911: Fix memory consumption when calculating the repr() of huge - tuples or lists. - -- PEP 393: flexible string representation. Thanks to Torsten Becker for the - initial implementation, and Victor Stinner for various bug fixes. - -- Issue #14081: The 'sep' and 'maxsplit' parameter to str.split, bytes.split, - and bytearray.split may now be passed as keyword arguments. - -- Issue #13012: The 'keepends' parameter to str.splitlines may now be passed - as a keyword argument: "my_string.splitlines(keepends=True)". The same - change also applies to bytes.splitlines and bytearray.splitlines. - -- Issue #7732: Don't open a directory as a file anymore while importing a - module. Ignore the direcotry if its name matchs the module name (e.g. - "__init__.py") and raise a ImportError instead. - -- Issue #13021: Missing decref on an error path. Thanks to Suman Saha for - finding the bug and providing a patch. - -- Issue #12973: Fix overflow checks that relied on undefined behaviour in - list_repeat (listobject.c) and islice_next (itertoolsmodule.c). These bugs - caused test failures with recent versions of Clang. - -- Issue #12904: os.utime, os.futimes, os.lutimes, and os.futimesat now write - atime and mtime with nanosecond precision on modern POSIX platforms. - -- Issue #12802: the Windows error ERROR_DIRECTORY (numbered 267) is now - mapped to POSIX errno ENOTDIR (previously EINVAL). - -- Issue #9200: The str.is* methods now work with strings that contain non-BMP - characters even in narrow Unicode builds. - -- Issue #12791: Break reference cycles early when a generator exits with - an exception. - -- Issue #12773: Make __doc__ mutable on user-defined classes. - -- Issue #12766: Raise a ValueError when creating a class with a class variable - that conflicts with a name in __slots__. - -- Issue #12266: Fix str.capitalize() to correctly uppercase/lowercase - titlecased and cased non-letter characters. - -- Issue #12732: In narrow unicode builds, allow Unicode identifiers which fall - outside the BMP. - -- Issue #12575: Validate user-generated AST before it is compiled. - -- Make type(None), type(Ellipsis), and type(NotImplemented) callable. They - return the respective singleton instances. - -- Forbid summing bytes with sum(). - -- Verify the types of AST strings and identifiers provided by the user before - compiling them. - -- Issue #12647: The None object now has a __bool__() method that returns False. - Formerly, bool(None) returned False only because of special case logic - in PyObject_IsTrue(). - -- Issue #12579: str.format_map() now raises a ValueError if used on a - format string that contains positional fields. Initial patch by - Julian Berman. - -- Issue #10271: Allow warnings.showwarning() be any callable. - -- Issue #11627: Fix segfault when __new__ on a exception returns a - non-exception class. - -- Issue #12149: Update the method cache after a type's dictionary gets - cleared by the garbage collector. This fixes a segfault when an instance - and its type get caught in a reference cycle, and the instance's - deallocator calls one of the methods on the type (e.g. when subclassing - IOBase). Diagnosis and patch by Davide Rizzo. - -- Issue #9611, Issue #9015: FileIO.read() clamps the length to INT_MAX on Windows. - -- Issue #9642: Uniformize the tests on the availability of the mbcs codec, add - a new HAVE_MBCS define. - -- Issue #9642: Fix filesystem encoding initialization: use the ANSI code page - on Windows if the mbcs codec is not available, and fail with a fatal error if - we cannot get the locale encoding (if nl_langinfo(CODESET) is not available) - instead of using UTF-8. - -- When a generator yields, do not retain the caller's exception state on the - generator. - -- Issue #12475: Prevent generators from leaking their exception state into the - caller's frame as they return for the last time. - -- Issue #12291: You can now load multiple marshalled objects from a stream, - with other data interleaved between marshalled objects. - -- Issue #12356: When required positional or keyword-only arguments are not - given, produce a informative error message which includes the name(s) of the - missing arguments. - -- Issue #12370: Fix super with no arguments when __class__ is overriden in the - class body. - -- Issue #12084: os.stat on Windows now works properly with relative symbolic - links when called from any directory. - -- Loosen type restrictions on the __dir__ method. __dir__ can now return any - sequence, which will be converted to a list and sorted by dir(). - -- Issue #12265: Make error messages produced by passing an invalid set of - arguments to a function more informative. - -- Issue #12225: Still allow Python to build if Python is not in its hg repo or - mercurial is not installed. - -- Issue #1195: my_fgets() now always clears errors before calling fgets(). Fix - the following case: sys.stdin.read() stopped with CTRL+d (end of file), - raw_input() interrupted by CTRL+c. - -- Issue #12216: Allow unexpected EOF errors to happen on any line of the file. - -- Issue #12199: The TryExcept and TryFinally and AST nodes have been unified - into a Try node. - -- Issue #9670: Increase the default stack size for secondary threads on - Mac OS X and FreeBSD to reduce the chances of a crash instead of a - "maximum recursion depth" RuntimeError exception. - (patch by Ronald Oussoren) - -- Issue #12106: The use of the multiple-with shorthand syntax is now reflected - in the AST. - -- Issue #12190: Try to use the same filename object when compiling unmarshalling - a code objects in the same file. - -- Issue #12166: Move implementations of dir() specialized for various types into - the __dir__() methods of those types. - -- Issue #5715: In socketserver, close the server socket in the child process. - -- Correct lookup of __dir__ on objects. Among other things, this causes errors - besides AttributeError found on lookup to be propagated. - -- Issue #12060: Use sig_atomic_t type and volatile keyword in the signal - module. Patch written by Charles-François Natali. - -- Issue #1746656: Added the if_nameindex, if_indextoname, if_nametoindex - methods to the socket module. - -- Issue #12044: Fixed subprocess.Popen when used as a context manager to - wait for the process to end when exiting the context to avoid unintentionally - leaving zombie processes around. - -- Issue #1195: Fix input() if it is interrupted by CTRL+d and then CTRL+c, - clear the end-of-file indicator after CTRL+d. - -- Issue #1856: Avoid crashes and lockups when daemon threads run while the - interpreter is shutting down; instead, these threads are now killed when - they try to take the GIL. - -- Issue #9756: When calling a method descriptor or a slot wrapper descriptor, - the check of the object type doesn't read the __class__ attribute anymore. - Fix a crash if a class override its __class__ attribute (e.g. a proxy of the - str type). Patch written by Andreas Stührk. - -- Issue #10517: After fork(), reinitialize the TLS used by the PyGILState_* - APIs, to avoid a crash with the pthread implementation in RHEL 5. Patch - by Charles-François Natali. - -- Issue #10914: Initialize correctly the filesystem codec when creating a new - subinterpreter to fix a bootstrap issue with codecs implemented in Python, as - the ISO-8859-15 codec. - -- Issue #11918: OS/2 and VMS are no more supported because of the lack of - maintainer. - -- Issue #6780: fix starts/endswith error message to mention that tuples are - accepted too. - -- Issue #5057: fix a bug in the peepholer that led to non-portable pyc files - between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP - chars (e.g. "\U00012345"[0]). - -- Issue #11845: Fix typo in rangeobject.c that caused a crash in - compute_slice_indices. Patch by Daniel Urban. - -- Issue #5673: Added a `timeout` keyword argument to subprocess.Popen.wait, - subprocess.Popen.communicated, subprocess.call, subprocess.check_call, and - subprocess.check_output. If the blocking operation takes more than `timeout` - seconds, the `subprocess.TimeoutExpired` exception is raised. - -- Issue #11650: PyOS_StdioReadline() retries fgets() if it was interrupted - (EINTR), for example if the program is stopped with CTRL+z on Mac OS X. Patch - written by Charles-Francois Natali. - -- Issue #9319: Include the filename in "Non-UTF8 code ..." syntax error. - -- Issue #10785: Store the filename as Unicode in the Python parser. - -- Issue #11619: _PyImport_LoadDynamicModule() doesn't encode the path to bytes - on Windows. - -- Issue #10998: Remove mentions of -Q, sys.flags.division_warning and - Py_DivisionWarningFlag left over from Python 2. - -- Issue #11244: Remove an unnecessary peepholer check that was preventing - negative zeros from being constant-folded properly. - -- Issue #11395: io.FileIO().write() clamps the data length to 32,767 bytes on - Windows if the file is a TTY to workaround a Windows bug. The Windows console - returns an error (12: not enough space error) on writing into stdout if - stdout mode is binary and the length is greater than 66,000 bytes (or less, - depending on heap usage). - -- Issue #11320: fix bogus memory management in Modules/getpath.c, leading to - a possible crash when calling Py_SetPath(). - -- Issue #11432: A bug was introduced in subprocess.Popen on posix systems with - 3.2.0 where the stdout or stderr file descriptor being the same as the stdin - file descriptor would raise an exception. webbrowser.open would fail. fixed. - -- Issue #9856: Change object.__format__ with a non-empty format string - to be a DeprecationWarning. In 3.2 it was a PendingDeprecationWarning. - In 3.4 it will be a TypeError. - -- Issue #11244: The peephole optimizer is now able to constant-fold - arbitrarily complex expressions. This also fixes a 3.2 regression where - operations involving negative numbers were not constant-folded. - -- Issue #11450: Don't truncate hg version info in Py_GetBuildInfo() when - there are many tags (e.g. when using mq). Patch by Nadeem Vawda. - -- Issue #11335: Fixed a memory leak in list.sort when the key function - throws an exception. - -- Issue #8923: When a string is encoded to UTF-8 in strict mode, the result is - cached into the object. Examples: str.encode(), str.encode('utf-8'), - PyUnicode_AsUTF8String() and PyUnicode_AsEncodedString(unicode, "utf-8", - NULL). - -- Issue #10829: Refactor PyUnicode_FromFormat(), use the same function to parse - the format string in the 3 steps, fix crashs on invalid format strings. - -- Issue #13007: whichdb should recognize gdbm 1.9 magic numbers. - -- Issue #11286: Raise a ValueError from calling PyMemoryView_FromBuffer with - a buffer struct having a NULL data pointer. - -- Issue #11272: On Windows, input() strips '\r' (and not only '\n'), and - sys.stdin uses universal newline (replace '\r\n' by '\n'). - -- Issue #11828: startswith and endswith now accept None as slice index. - Patch by Torsten Becker. - -- Issue #11168: Remove filename debug variable from PyEval_EvalFrameEx(). - It encoded the Unicode filename to UTF-8, but the encoding fails on - undecodable filename (on surrogate characters) which raises an unexpected - UnicodeEncodeError on recursion limit. - -- Issue #11187: Remove bootstrap code (use ASCII) of - PyUnicode_AsEncodedString(), it was replaced by a better fallback (use the - locale encoding) in PyUnicode_EncodeFSDefault(). - -- Check for NULL result in PyType_FromSpec. - -- Issue #10516: New copy() and clear() methods for lists and bytearrays. - -- Issue #11386: bytearray.pop() now throws IndexError when the bytearray is - empty, instead of OverflowError. - -- Issue #12380: The rjust, ljust and center methods of bytes and bytearray - now accept a bytearray argument. - -Library -------- - -- Issue #14195: An issue that caused weakref.WeakSet instances to incorrectly - return True for a WeakSet instance 'a' in both 'a < a' and 'a > a' has been - fixed. - -- Issue #14166: Pickler objects now have an optional ``dispatch_table`` - attribute which allows to set custom per-pickler reduction functions. - Patch by sbt. - -- Issue #14177: marshal.loads() now raises TypeError when given an unicode - string. Patch by Guilherme Gonçalves. - -- Issue #13550: Remove the debug machinery from the threading module: remove - verbose arguments from all threading classes and functions. - -- Issue #14159: Fix the len() of weak containers (WeakSet, WeakKeyDictionary, - WeakValueDictionary) to return a better approximation when some objects - are dead or dying. Moreover, the implementation is now O(1) rather than - O(n). - -- Issue #11841: Fix comparison bug with 'rc' versions in packaging.version. - Patch by Filip Gruszczyński. - -- Issue #6884: Fix long-standing bugs with MANIFEST.in parsing in distutils - on Windows. Also fixed in packaging. - -- Issue #8033: sqlite3: Fix 64-bit integer handling in user functions - on 32-bit architectures. Initial patch by Philippe Devalkeneer. - -- HTMLParser is now able to handle slashes in the start tag. - -- Issue #13641: Decoding functions in the base64 module now accept ASCII-only - unicode strings. Patch by Catalin Iacob. - -- Issue #14043: Speed up importlib's _FileFinder by at least 8x, and add a - new importlib.invalidate_caches() function. - -- Issue #14001: CVE-2012-0845: xmlrpc: Fix an endless loop in - SimpleXMLRPCServer upon malformed POST request. - -- Issue #13961: Move importlib over to using os.replace() for atomic renaming. - -- Do away with ambiguous level values (as suggested by PEP 328) in - importlib.__import__() by raising ValueError when level < 0. - -- Issue #2489: pty.spawn could consume 100% cpu when it encountered an EOF. - -- Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert(). - -- Issue #13777: Add PF_SYSTEM sockets on OS X. - Patch by Michael Goderbauer. - -- Issue #13015: Fix a possible reference leak in defaultdict.__repr__. - Patch by Suman Saha. - -- Issue #1326113: distutils' and packaging's build_ext commands option now - correctly parses multiple values (separated by whitespace or commas) given - to their --libraries option. - -- Issue #10287: nntplib now queries the server's CAPABILITIES first before - sending MODE READER, and only sends it if not already in READER mode. - Patch by Hynek Schlawack. - -- Issue #13993: HTMLParser is now able to handle broken end tags when - strict=False. - -- Issue #13930: lib2to3 now supports writing converted output files to another - directory tree as well as copying unchanged files and altering the file - suffix. - -- Issue #9750: Fix sqlite3.Connection.iterdump on tables and fields - with a name that is a keyword or contains quotes. Patch by Marko - Kohtala. - -- Issue #10287: nntplib now queries the server's CAPABILITIES again after - authenticating (since the result may change, according to RFC 4643). - Patch by Hynek Schlawack. - -- Issue #13590: On OS X 10.7 and 10.6 with Xcode 4.2, building - Distutils-based packages with C extension modules may fail because - Apple has removed gcc-4.2, the version used to build python.org - 64-bit/32-bit Pythons. If the user does not explicitly override - the default C compiler by setting the CC environment variable, - Distutils will now attempt to compile extension modules with clang - if gcc-4.2 is required but not found. Also as a convenience, if - the user does explicitly set CC, substitute its value as the default - compiler in the Distutils LDSHARED configuration variable for OS X. - (Note, the python.org 32-bit-only Pythons use gcc-4.0 and the 10.4u - SDK, neither of which are available in Xcode 4. This change does not - attempt to override settings to support their use with Xcode 4.) - -- Issue #13960: HTMLParser is now able to handle broken comments when - strict=False. - -- When '' is a path (e.g. in sys.path), make sure __file__ uses the current - working directory instead of '' in importlib. - -- Issue #13609: Add two functions to query the terminal size: - os.get_terminal_size (low level) and shutil.get_terminal_size (high level). - Patch by Zbigniew Jędrzejewski-Szmek. - -- Issue #13845: On Windows, time.time() now uses GetSystemTimeAsFileTime() - instead of ftime() to have a resolution of 100 ns instead of 1 ms (the clock - accuracy is between 0.5 ms and 15 ms). - -- Issue #13846: Add time.monotonic(), monotonic clock. - -- Issue #8184: multiprocessing: On Windows, don't set SO_REUSEADDR on - Connection sockets, and set FILE_FLAG_FIRST_PIPE_INSTANCE on named pipes, to - make sure two listeners can't bind to the same socket/pipe (or any existing - socket/pipe). - -- Issue #10811: Fix recursive usage of cursors. Instead of crashing, - raise a ProgrammingError now. - -- Issue #13734: Add os.fwalk(), a directory walking function yielding file - descriptors. - -- Issue #2945: Make the distutils upload command aware of bdist_rpm products. - -- Issue #13712: pysetup create should not convert package_data to extra_files. - -- Issue #11805: package_data in setup.cfg should allow more than one value. - -- Issue #13676: Handle strings with embedded zeros correctly in sqlite3. - -- Issue #8828: Add new function os.replace(), for cross-platform renaming - with overwriting. - -- Issue #13848: open() and the FileIO constructor now check for NUL - characters in the file name. Patch by Hynek Schlawack. - -- Issue #13806: The size check in audioop decompression functions was too - strict and could reject valid compressed data. Patch by Oleg Plakhotnyuk. - -- Issue #13812: When a multiprocessing Process child raises an exception, - flush stderr after printing the exception traceback. - -- Issue #13885: CVE-2011-3389: the _ssl module would always disable the CBC - IV attack countermeasure. - -- Issue #13847: time.localtime() and time.gmtime() now raise an OSError instead - of ValueError on failure. time.ctime() and time.asctime() now raises an - OSError if localtime() failed. time.clock() now raises a RuntimeError if the - processor time used is not available or its value cannot be represented - -- Issue #13772: In os.symlink() under Windows, do not try to guess the link - target's type (file or directory). The detection was buggy and made the - call non-atomic (therefore prone to race conditions). - -- Issue #6631: Disallow relative file paths in urllib urlopen methods. - -- Issue #13722: Avoid silencing ImportErrors when initializing the codecs - registry. - -- Issue #13781: Fix GzipFile bug that caused an exception to be raised when - opening for writing using a fileobj returned by os.fdopen(). - -- Issue #13803: Under Solaris, distutils doesn't include bitness - in the directory name. - -- Issue #10278: Add time.wallclock() function, monotonic clock. - -- Issue #13809: Fix regression where bz2 module wouldn't work when threads are - disabled. Original patch by Amaury Forgeot d'Arc. - -- Issue #13589: Fix some serialization primitives in the aifc module. - Patch by Oleg Plakhotnyuk. - -- Issue #13642: Unquote before b64encoding user:password during Basic - Authentication. Patch contributed by Joonas Kuorilehto. - -- Issue #12364: Fix a hang in concurrent.futures.ProcessPoolExecutor. - The hang would occur when retrieving the result of a scheduled future after - the executor had been shut down. - -- Issue #13502: threading: Fix a race condition in Event.wait() that made it - return False when the event was set and cleared right after. - -- Issue #9993: When the source and destination are on different filesystems, - and the source is a symlink, shutil.move() now recreates a symlink on the - destination instead of copying the file contents. Patch by Jonathan Niehof - and Hynek Schlawack. - -- Issue #12926: Fix a bug in tarfile's link extraction. - -- Issue #13696: Fix the 302 Relative URL Redirection problem. - -- Issue #13636: Weak ciphers are now disabled by default in the ssl module - (except when SSLv2 is explicitly asked for). - -- Issue #12715: Add an optional symlinks argument to shutil functions - (copyfile, copymode, copystat, copy, copy2). When that parameter is - true, symlinks aren't dereferenced and the operation instead acts on the - symlink itself (or creates one, if relevant). Patch by Hynek Schlawack. - -- Add a flags parameter to select.epoll. - -- Issue #13626: Add support for SSL Diffie-Hellman key exchange, through the - SSLContext.load_dh_params() method and the ssl.OP_SINGLE_DH_USE option. - -- Issue #11006: Don't issue low level warning in subprocess when pipe2() fails. - -- Issue #13620: Support for Chrome browser in webbrowser. Patch contributed - by Arnaud Calmettes. - -- Issue #11829: Fix code execution holes in inspect.getattr_static for - metaclasses with metaclasses. Patch by Andreas Stührk. - -- Issue #12708: Add starmap() and starmap_async() methods (similar to - itertools.starmap()) to multiprocessing.Pool. Patch by Hynek Schlawack. - -- Issue #1785: Fix inspect and pydoc with misbehaving descriptors. - -- Issue #13637: "a2b" functions in the binascii module now accept ASCII-only - unicode strings. - -- Issue #13634: Add support for querying and disabling SSL compression. - -- Issue #13627: Add support for SSL Elliptic Curve-based Diffie-Hellman - key exchange, through the SSLContext.set_ecdh_curve() method and the - ssl.OP_SINGLE_ECDH_USE option. - -- Issue #13635: Add ssl.OP_CIPHER_SERVER_PREFERENCE, so that SSL servers - choose the cipher based on their own preferences, rather than on the - client's. - -- Issue #11813: Fix inspect.getattr_static for modules. Patch by Andreas - Stührk. - -- Issue #7502: Fix equality comparison for DocTestCase instances. Patch by - Cédric Krier. - -- Issue #11870: threading: Properly reinitialize threads internal locks and - condition variables to avoid deadlocks in child processes. - -- Issue #8035: urllib: Fix a bug where the client could remain stuck after a - redirection or an error. - -- Issue #13560: os.strerror() now uses the current locale encoding instead of - UTF-8. - -- Issue #8373: The filesystem path of AF_UNIX sockets now uses the filesystem - encoding and the surrogateescape error handler, rather than UTF-8. Patch - by David Watson. - -- Issue #10350: Read and save errno before calling a function which might - overwrite it. Original patch by Hallvard B Furuseth. - -- Issue #11610: Introduce a more general way to declare abstract properties. - -- Issue #13591: A bug in importlib has been fixed that caused import_module - to load a module twice. - -- Issue #13449 sched.scheduler.run() method has a new "blocking" parameter which - when set to False makes run() execute the scheduled events due to expire - soonest (if any) and then return. Patch by Giampaolo Rodolà. - -- Issue #8684 sched.scheduler class can be safely used in multi-threaded - environments. Patch by Josiah Carlson and Giampaolo Rodolà. - -- Alias resource.error to OSError ala PEP 3151. - -- Issue #5689: Add support for lzma compression to the tarfile module. - -- Issue #13248: Turn 3.2's PendingDeprecationWarning into 3.3's - DeprecationWarning. It covers 'cgi.escape', 'importlib.abc.PyLoader', - 'importlib.abc.PyPycLoader', 'nntplib.NNTP.xgtitle', 'nntplib.NNTP.xpath', - and private attributes of 'smtpd.SMTPChannel'. - -- Issue #5905, Issue #13560: time.strftime() is now using the current locale - encoding, instead of UTF-8, if the wcsftime() function is not available. - -- Issue #13464: Add a readinto() method to http.client.HTTPResponse. Patch - by Jon Kuhn. - -- tarfile.py: Correctly detect bzip2 compressed streams with blocksizes - other than 900k. - -- Issue #13439: Fix many errors in turtle docstrings. - -- Issue #6715: Add a module 'lzma' for compression using the LZMA algorithm. - Thanks to Per Øyvind Karlsen for the initial implementation. - -- Issue #13487: Make inspect.getmodule robust against changes done to - sys.modules while it is iterating over it. - -- Issue #12618: Fix a bug that prevented py_compile from creating byte - compiled files in the current directory. Initial patch by Sjoerd de Vries. - -- Issue #13444: When stdout has been closed explicitly, we should not attempt - to flush it at shutdown and print an error. - -- Issue #12567: The curses module uses Unicode functions for Unicode arguments - when it is linked to the ncurses library. It encodes also Unicode strings to - the locale encoding instead of UTF-8. - -- Issue #12856: Ensure child processes do not inherit the parent's random - seed for filename generation in the tempfile module. Patch by Brian - Harring. - -- Issue #9957: SpooledTemporaryFile.truncate() now accepts an optional size - parameter, as other file-like objects. Patch by Ryan Kelly. - -- Issue #13458: Fix a memory leak in the ssl module when decoding a - certificate with a subjectAltName. Patch by Robert Xiao. - -- Issue #13415: os.unsetenv() doesn't ignore errors anymore. - -- Issue #13245: sched.scheduler class constructor's timefunc and - delayfunct parameters are now optional. - scheduler.enter and scheduler.enterabs methods gained a new kwargs parameter. - Patch contributed by Chris Clark. - -- Issue #12328: Under Windows, refactor handling of Ctrl-C events and - make _multiprocessing.win32.WaitForMultipleObjects interruptible when - the wait_flag parameter is false. Patch by sbt. - -- Issue #13322: Fix BufferedWriter.write() to ensure that BlockingIOError is - raised when the wrapped raw file is non-blocking and the write would block. - Previous code assumed that the raw write() would raise BlockingIOError, but - RawIOBase.write() is defined to returned None when the call would block. - Patch by sbt. - -- Issue #13358: HTMLParser now calls handle_data only once for each CDATA. - -- Issue #4147: minidom's toprettyxml no longer adds whitespace around a text - node when it is the only child of an element. Initial patch by Dan - Kenigsberg. - -- Issue #13374: The Windows bytes API has been deprecated in the os module. Use - Unicode filenames instead of bytes filenames to not depend on the ANSI code - page anymore and to support any filename. - -- Issue #13297: Use bytes type to send and receive binary data through XMLRPC. - -- Issue #6397: Support "/dev/poll" polling objects in select module, - under Solaris & derivatives. - -- Issues #1745761, #755670, #13357, #12629, #1200313: HTMLParser now correctly - handles non-valid attributes, including adjacent and unquoted attributes. - -- Issue #13193: Fix distutils.filelist.FileList and packaging.manifest.Manifest - under Windows. - -- Issue #13384: Remove unnecessary __future__ import in Lib/random.py - -- Issue #13149: Speed up append-only StringIO objects. - -- Issue #13373: multiprocessing.Queue.get() could sometimes block indefinitely - when called with a timeout. Patch by Arnaud Ysmal. - -- Issue #13254: Fix Maildir initialization so that maildir contents - are read correctly. - -- Issue #3067: locale.setlocale() now raises TypeError if the second - argument is an invalid iterable. Its documentation and docstring - were also updated. Initial patch by Jyrki Pulliainen. - -- Issue #13140: Fix the daemon_threads attribute of ThreadingMixIn. - -- Issue #13339: Fix compile error in posixmodule.c due to missing semicolon. - Thanks to Robert Xiao. - -- Byte compilation in packaging is now isolated from the calling Python -B or - -O options, instead of being disallowed under -B or buggy under -O. - -- Issue #10570: curses.putp() and curses.tparm() are now expecting a byte - string, instead of a Unicode string. - -- Issue #13295: http.server now produces valid HTML 4.01 strict. - -- Issue #2892: preserve iterparse events in case of SyntaxError. - -- Issue #13287: urllib.request and urllib.error now contains an __all__ - attribute to expose only relevant classes and functions. Patch by Florent - Xicluna. - -- Issue #670664: Fix HTMLParser to correctly handle the content of - ``<script>...</script>`` and ``<style>...</style>``. - -- Issue #10817: Fix urlretrieve function to raise ContentTooShortError even - when reporthook is None. Patch by Jyrki Pulliainen. - -- Fix the xmlrpc.client user agent to return something similar to - urllib.request user agent: "Python-xmlrpc/3.3". - -- Issue #13293: Better error message when trying to marshal bytes using - xmlrpc.client. - -- Issue #13291: NameError in xmlrpc package. - -- Issue #13258: Use callable() built-in in the standard library. - -- Issue #13273: fix a bug that prevented HTMLParser to properly detect some - tags when strict=False. - -- Issue #11183: Add finer-grained exceptions to the ssl module, so that - you don't have to inspect the exception's attributes in the common case. - -- Issue #13216: Add cp65001 codec, the Windows UTF-8 (CP_UTF8). - -- Issue #13226: Add RTLD_xxx constants to the os module. These constants can be - used with sys.setdlopenflags(). - -- Issue #10278: Add clock_getres(), clock_gettime() and CLOCK_xxx constants to - the time module. time.clock_gettime(time.CLOCK_MONOTONIC) provides a - monotonic clock - -- Issue #10332: multiprocessing: fix a race condition when a Pool is closed - before all tasks have completed. - -- Issue #13255: wrong docstrings in array module. - -- Issue #8540: Remove deprecated Context._clamp attribute in Decimal module. - -- Issue #13235: Added DeprecationWarning to logging.warn() method and function. - -- Issue #9168: now smtpd is able to bind privileged port. - -- Issue #12529: fix cgi.parse_header issue on strings with double-quotes and - semicolons together. Patch by Ben Darnell and Petri Lehtinen. - -- Issue #13227: functools.lru_cache() now has a option to distinguish - calls with different argument types. - -- Issue #6090: zipfile raises a ValueError when a document with a timestamp - earlier than 1980 is provided. Patch contributed by Petri Lehtinen. - -- Issue #13150: sysconfig no longer parses the Makefile and config.h files - when imported, instead doing it at build time. This makes importing - sysconfig faster and reduces Python startup time by 20%. - -- Issue #12448: smtplib now flushes stdout while running ``python -m smtplib`` - in order to display the prompt correctly. - -- Issue #12454: The mailbox module is now using ASCII, instead of the locale - encoding, to read and write .mh_sequences files. - -- Issue #13194: zlib.compressobj().copy() and zlib.decompressobj().copy() are - now available on Windows. - -- Issue #1673007: urllib.request now supports HEAD request via new method argument. - Patch contributions by David Stanek, Patrick Westerhoff and Ezio Melotti. - -- Issue #12386: packaging does not fail anymore when writing the RESOURCES - file. - -- Issue #13158: Fix decoding and encoding of GNU tar specific base-256 number - fields in tarfile. - -- Issue #13025: mimetypes is now reading MIME types using the UTF-8 encoding, - instead of the locale encoding. - -- Issue #10653: On Windows, use strftime() instead of wcsftime() because - wcsftime() doesn't format time zone correctly. - -- Issue #13150: The tokenize module doesn't compile large regular expressions - at startup anymore. - -- Issue #11171: Fix distutils.sysconfig.get_makefile_filename when Python was - configured with different prefix and exec-prefix. - -- Issue #11254: Teach distutils and packaging to compile .pyc and .pyo files in - PEP 3147-compliant __pycache__ directories. - -- Issue #7367: Fix pkgutil.walk_paths to skip directories whose - contents cannot be read. - -- Issue #3163: The struct module gets new format characters 'n' and 'N' - supporting C integer types ``ssize_t`` and ``size_t``, respectively. - -- Issue #13099: Fix sqlite3.Cursor.lastrowid under a Turkish locale. - Reported and diagnosed by Thomas Kluyver. - -- Issue #13087: BufferedReader.seek() now always raises UnsupportedOperation - if the underlying raw stream is unseekable, even if the seek could be - satisfied using the internal buffer. Patch by John O'Connor. - -- Issue #7689: Allow pickling of dynamically created classes when their - metaclass is registered with copyreg. Patch by Nicolas M. Thiéry and Craig - Citro. - -- Issue #13034: When decoding some SSL certificates, the subjectAltName - extension could be unreported. - -- Issue #12306: Expose the runtime version of the zlib C library as a constant, - ZLIB_RUNTIME_VERSION, in the zlib module. Patch by Torsten Landschoff. - -- Issue #12959: Add collections.ChainMap to collections.__all__. - -- Issue #8933: distutils' PKG-INFO files and packaging's METADATA files will - now correctly report Metadata-Version: 1.1 instead of 1.0 if a Classifier or - Download-URL field is present. - -- Issue #12567: Add curses.unget_wch() function. Push a character so the next - get_wch() will return it. - -- Issue #9561: distutils and packaging now writes egg-info files using UTF-8, - instead of the locale encoding. - -- Issue #8286: The distutils command sdist will print a warning message instead - of crashing when an invalid path is given in the manifest template. - -- Issue #12841: tarfile unnecessarily checked the existence of numerical user - and group ids on extraction. If one of them did not exist the respective id - of the current user (i.e. root) was used for the file and ownership - information was lost. - -- Issue #12888: Fix a bug in HTMLParser.unescape that prevented it to escape - more than 128 entities. Patch by Peter Otten. - -- Issue #12878: Expose a __dict__ attribute on io.IOBase and its subclasses. - -- Issue #12494: On error, call(), check_call(), check_output() and - getstatusoutput() functions of the subprocess module now kill the process, - read its status (to avoid zombis) and close pipes. - -- Issue #12720: Expose low-level Linux extended file attribute functions in os. - -- Issue #10946: The distutils commands bdist_dumb, bdist_wininst and bdist_msi - now respect a --skip-build option given to bdist. The packaging commands - were fixed too. - -- Issue #12847: Fix a crash with negative PUT and LONG_BINPUT arguments in - the C pickle implementation. - -- Issue #11564: Avoid crashes when trying to pickle huge objects or containers - (more than 2**31 items). Instead, in most cases, an OverflowError is raised. - -- Issue #12287: Fix a stack corruption in ossaudiodev module when the FD is - greater than FD_SETSIZE. - -- Issue #12839: Fix crash in zlib module due to version mismatch. - Fix by Richard M. Tew. - -- Issue #9923: The mailcap module now correctly uses the platform path - separator for the MAILCAP environment variable on non-POSIX platforms. - -- Issue #12835: Follow up to #6560 that unconditionally prevents use of the - unencrypted sendmsg/recvmsg APIs on SSL wrapped sockets. Patch by David - Watson. - -- Issue #12803: SSLContext.load_cert_chain() now accepts a password argument - to be used if the private key is encrypted. Patch by Adam Simpkins. - -- Issue #11657: Fix sending file descriptors over 255 over a multiprocessing - Pipe. - -- Issue #12811: tabnanny.check() now promptly closes checked files. Patch by - Anthony Briggs. - -- Issue #6560: The sendmsg/recvmsg API is now exposed by the socket module - when provided by the underlying platform, supporting processing of - ancillary data in pure Python code. Patch by David Watson and Heiko Wundram. - -- Issue #12326: On Linux, sys.platform doesn't contain the major version - anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending - on the Linux version used to build Python. - -- Issue #12213: Fix a buffering bug with interleaved reads and writes that - could appear on BufferedRandom streams. - -- Issue #12778: Reduce memory consumption when JSON-encoding a large - container of many small objects. - -- Issue #12650: Fix a race condition where a subprocess.Popen could leak - resources (FD/zombie) when killed at the wrong time. - -- Issue #12744: Fix inefficient representation of integers between 2**31 and - 2**63 on systems with a 64-bit C "long". - -- Issue #12646: Add an 'eof' attribute to zlib.Decompress, to make it easier to - detect truncated input streams. - -- Issue #11513: Fix exception handling ``tarfile.TarFile.gzopen()`` when - the file cannot be opened. - -- Issue #12687: Fix a possible buffering bug when unpickling text mode - (protocol 0, mostly) pickles. - -- Issue #10087: Fix the html output format of the calendar module. - -- Issue #13121: add support for inplace math operators to collections.Counter. - -- Add support for unary plus and unary minus to collections.Counter. - -- Issue #12683: urlparse updated to include svn as schemes that uses relative - paths. (svn from 1.5 onwards support relative path). - -- Issue #12655: Expose functions from sched.h in the os module: sched_yield(), - sched_setscheduler(), sched_getscheduler(), sched_setparam(), - sched_get_min_priority(), sched_get_max_priority(), sched_rr_get_interval(), - sched_getaffinity(), sched_setaffinity(). - -- Add ThreadError to threading.__all__. - -- Issues #11104, #8688: Fix the behavior of distutils' sdist command with - manually-maintained MANIFEST files. - -- Issue #11281: smtplib.STMP gets source_address parameter, which adds the - ability to bind to specific source address on a machine with multiple - interfaces. Patch by Paulo Scardine. - -- Issue #12464: tempfile.TemporaryDirectory.cleanup() should not follow - symlinks: fix it. Patch by Petri Lehtinen. - -- Issue #8887: "pydoc somebuiltin.somemethod" (or help('somebuiltin.somemethod') - in Python code) now finds the doc of the method. - -- Issue #10968: Remove indirection in threading. The public names (Event, - Condition, etc.) used to be factory functions returning instances of hidden - classes (_Event, _Condition, etc.), because (if Guido recalls correctly) this - code pre-dates the ability to subclass extension types. It is now possible - to inherit from these classes, without having to import the private - underscored names like multiprocessing did. - -- Issue #9723: Add shlex.quote functions, to escape filenames and command - lines. - -- Issue #12603: Fix pydoc.synopsis() on files with non-negative st_mtime. - -- Issue #12514: Use try/finally to assure the timeit module restores garbage - collections when it is done. - -- Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is - given as a low fd, it gets overwritten. - -- Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates) - ``Connection: close`` header. - -- Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling. - -- Issue #1813: Fix codec lookup under Turkish locales. - -- Issue #12591: Improve support of "universal newlines" in the subprocess - module: the piped streams can now be properly read from or written to. - -- Issue #12591: Allow io.TextIOWrapper to work with raw IO objects (without - a read1() method), and add a *write_through* parameter to mandate - unbuffered writes. - -- Issue #10883: Fix socket leaks in urllib.request when using FTP. - -- Issue #12592: Make Python build on OpenBSD 5 (and future major releases). - -- Issue #12372: POSIX semaphores are broken on AIX: don't use them. - -- Issue #12551: Provide a get_channel_binding() method on SSL sockets so as - to get channel binding data for the current SSL session (only the - "tls-unique" channel binding is implemented). This allows the implementation - of certain authentication mechanisms such as SCRAM-SHA-1-PLUS. Patch by - Jacek Konieczny. - -- Issue #665194: email.utils now has format_datetime and parsedate_to_datetime - functions, allowing for round tripping of RFC2822 format dates. - -- Issue #12571: Add a plat-linux3 directory mirroring the plat-linux2 - directory, so that "import DLFCN" and other similar imports work on - Linux 3.0. - -- Issue #7484: smtplib no longer puts <> around addresses in VRFY and EXPN - commands; they aren't required and in fact postfix doesn't support that form. - -- Issue #12273: Remove ast.__version__. AST changes can be accounted for by - checking sys.version_info or sys._mercurial. - -- Silence spurious "broken pipe" tracebacks when shutting down a - ProcessPoolExecutor. - -- Fix potential resource leaks in concurrent.futures.ProcessPoolExecutor - by joining all queues and processes when shutdown() is called. - -- Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by - Andreas Stührk. - -- Issue #11321: Fix a crash with multiple imports of the _pickle module when - embedding Python. Patch by Andreas Stührk. - -- Issue #6755: Add get_wch() method to curses.window class. Patch by Iñigo - Serna. - -- Add cgi.closelog() function to close the log file. - -- Issue #12502: asyncore: fix polling loop with AF_UNIX sockets. - -- Issue #4376: ctypes now supports nested structures in a endian different than - the parent structure. Patch by Vlad Riscutia. - -- Raise ValueError when attempting to set the _CHUNK_SIZE attribute of a - TextIOWrapper to a huge value, not TypeError. - -- Issue #12504: Close file handles in a timely manner in packaging.database. - This fixes a bug with the remove (uninstall) feature on Windows. - -- Issues #12169 and #10510: Factor out code used by various packaging commands - to make HTTP POST requests, and make sure it uses CRLF. - -- Issue #12016: Multibyte CJK decoders now resynchronize faster. They only - ignore the first byte of an invalid byte sequence. For example, - b'\xff\n'.decode('gb2312', 'replace') gives '\ufffd\n' instead of '\ufffd'. - -- Issue #12459: time.sleep() now raises a ValueError if the sleep length is - negative, instead of an infinite sleep on Windows or raising an IOError on - Linux for example, to have the same behaviour on all platforms. - -- Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support - Python scripts using a encoding different than UTF-8 (read the coding cookie - of the script). - -- Issue #12493: subprocess: Popen.communicate() now also handles EINTR errors - if the process has only one pipe. - -- Issue #12467: warnings: fix a race condition if a warning is emitted at - shutdown, if globals()['__file__'] is None. - -- Issue #12451: pydoc: importfile() now opens the Python script in binary mode, - instead of text mode using the locale encoding, to avoid encoding issues. - -- Issue #12451: runpy: run_path() now opens the Python script in binary mode, - instead of text mode using the locale encoding, to support other encodings - than UTF-8 (scripts using the coding cookie). - -- Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead - of the text mode (using the locale encoding) to avoid encoding issues. - -- Issue #12147: Adjust the new-in-3.2 smtplib.send_message method for better - conformance to the RFCs: correctly handle Sender and Resent- headers. - -- Issue #12352: Fix a deadlock in multiprocessing.Heap when a block is freed by - the garbage collector while the Heap lock is held. - -- Issue #12462: time.sleep() now immediately calls the (Python) signal handler - if it is interrupted by a signal, instead of having to wait until the next - instruction. - -- Issue #12442: new shutil.disk_usage function, providing total, used and free - disk space statistics. - -- Issue #12451: The XInclude default loader of xml.etree now decodes files from - UTF-8 instead of the locale encoding if the encoding is not specified. It now - also opens XML files for the parser in binary mode instead of the text mode - to avoid encoding issues. - -- Issue #12451: doctest.debug_script() doesn't create a temporary file - anymore to avoid encoding issues. - -- Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, - to read the Python script from the right encoding. - -- Issue #12451: distutils now opens the setup script in binary mode to read the - encoding cookie, instead of opening it in UTF-8. - -- Issue #9516: On Mac OS X, change Distutils to no longer globally attempt to - check or set the MACOSX_DEPLOYMENT_TARGET environment variable for the - interpreter process. This could cause failures in non-Distutils subprocesses - and was unreliable since tests or user programs could modify the interpreter - environment after Distutils set it. Instead, have Distutils set the - deployment target only in the environment of each build subprocess. It is - still possible to globally override the default by setting - MACOSX_DEPLOYMENT_TARGET before launching the interpreter; its value must be - greater or equal to the default value, the value with which the interpreter - was built. Also, implement the same handling in packaging. - -- Issue #12422: In the copy module, don't store objects that are their own copy - in the memo dict. - -- Issue #12303: Add sigwaitinfo() and sigtimedwait() to the signal module. - -- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira - Kitada. - -- Issue #1874: email now detects and reports as a defect the presence of - any CTE other than 7bit, 8bit, or binary on a multipart. - -- Issue #12383: Fix subprocess module with env={}: don't copy the environment - variables, start with an empty environment. - -- Issue #11637: Fix support for importing packaging setup hooks from the - project directory. - -- Issue #6771: Moved the curses.wrapper function from the single-function - wrapper module into __init__, eliminating the module. Since __init__ was - already importing the function to curses.wrapper, there is no API change. - -- Issue #11584: email.header.decode_header no longer fails if the header - passed to it is a Header object, and Header/make_header no longer fail - if given binary unknown-8bit input. - -- Issue #11700: mailbox proxy object close methods can now be called multiple - times without error. - -- Issue #11767: Correct file descriptor leak in mailbox's __getitem__ method. - -- Issue #12133: AbstractHTTPHandler.do_open() of urllib.request closes the HTTP - connection if its getresponse() method fails with a socket error. Patch - written by Ezio Melotti. - -- Issue #12240: Allow multiple setup hooks in packaging's setup.cfg files. - Original patch by Erik Bray. - -- Issue #9284: Allow inspect.findsource() to find the source of doctest - functions. - -- Issue #11595: Fix assorted bugs in packaging.util.cfg_to_args, a - compatibility helper for the distutils-packaging transition. Original patch - by Erik Bray. - -- Issue #12287: In ossaudiodev, check that the device isn't closed in several - methods. - -- Issue #12009: Fixed regression in netrc file comment handling. - -- Issue #12246: Warn and fail when trying to install a third-party project from - an uninstalled Python (built in a source checkout). Original patch by - Tshepang Lekhonkhobe. - -- Issue #10694: zipfile now ignores garbage at the end of a zipfile. - -- Issue #12283: Fixed regression in smtplib quoting of leading dots in DATA. - -- Issue #10424: Argparse now includes the names of the missing required - arguments in the missing arguments error message. - -- Issue #12168: SysLogHandler now allows NUL termination to be controlled using - a new 'append_nul' attribute on the handler. - -- Issue #11583: Speed up os.path.isdir on Windows by using GetFileAttributes - instead of os.stat. - -- Issue #12021: Make mmap's read() method argument optional. Patch by Petri - Lehtinen. - -- Issue #9205: concurrent.futures.ProcessPoolExecutor now detects killed - children and raises BrokenProcessPool in such a situation. Previously it - would reliably freeze/deadlock. - -- Issue #12040: Expose a new attribute ``sentinel`` on instances of - ``multiprocessing.Process``. Also, fix Process.join() to not use polling - anymore, when given a timeout. - -- Issue #11893: Remove obsolete internal wrapper class ``SSLFakeFile`` in the - smtplib module. Patch by Catalin Iacob. - -- Issue #12080: Fix a Decimal.power() case that took an unreasonably long time - to compute. - -- Issue #12221: Remove __version__ attributes from pyexpat, pickle, tarfile, - pydoc, tkinter, and xml.parsers.expat. This were useless version constants - left over from the Mercurial transition - -- Named tuples now work correctly with vars(). - -- Issue #12085: Fix an attribute error in subprocess.Popen destructor if the - constructor has failed, e.g. because of an undeclared keyword argument. Patch - written by Oleg Oshmyan. - -- Issue #12028: Make threading._get_ident() public, rename it to - threading.get_ident() and document it. This function was already used using - _thread.get_ident(). - -- Issue #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls - encreset() instead of decreset(). - -- Issue #12218: Removed wsgiref.egg-info. - -- Issue #12196: Add pipe2() to the os module. - -- Issue #985064: Make plistlib more resilient to faulty input plists. - Patch by Mher Movsisyan. - -- Issue #1625: BZ2File and bz2.decompress() now support multi-stream files. - Initial patch by Nir Aides. - -- Issue #12175: BufferedReader.read(-1) now calls raw.readall() if available. - -- Issue #12175: FileIO.readall() now only reads the file position and size - once. - -- Issue #12175: RawIOBase.readall() now returns None if read() returns None. - -- Issue #12175: FileIO.readall() now raises a ValueError instead of an IOError - if the file is closed. - -- Issue #11109: New service_action method for BaseServer, used by ForkingMixin - class for cleanup. Initial Patch by Justin Warkentin. - -- Issue #12045: Avoid duplicate execution of command in - ctypes.util._get_soname(). Patch by Sijin Joseph. - -- Issue #10818: Remove the Tk GUI and the serve() function of the pydoc module, - pydoc -g has been deprecated in Python 3.2 and it has a new enhanced web - server. - -- Issue #1441530: In imaplib, read the data in one chunk to speed up large - reads and simplify code. - -- Issue #12070: Fix the Makefile parser of the sysconfig module to handle - correctly references to "bogus variable" (e.g. "prefix=$/opt/python"). - -- Issue #12100: Don't reset incremental encoders of CJK codecs at each call to - their encode() method anymore, but continue to call the reset() method if the - final argument is True. - -- Issue #12049: Add RAND_bytes() and RAND_pseudo_bytes() functions to the ssl - module. - -- Issue #6501: os.device_encoding() returns None on Windows if the application - has no console. - -- Issue #12105: Add O_CLOEXEC to the os module. - -- Issue #12079: Decimal('Infinity').fma(Decimal('0'), (3.91224318126786e+19+0j)) - now raises TypeError (reflecting the invalid type of the 3rd argument) rather - than Decimal.InvalidOperation. - -- Issue #12124: zipimport doesn't keep a reference to zlib.decompress() anymore - to be able to unload the module. - -- Add the packaging module, an improved fork of distutils (also known as - distutils2). - -- Issue #12065: connect_ex() on an SSL socket now returns the original errno - when the socket's timeout expires (it used to return None). - -- Issue #8809: The SMTP_SSL constructor and SMTP.starttls() now support - passing a ``context`` argument pointing to an ssl.SSLContext instance. - Patch by Kasun Herath. - -- Issue #9516: Issue #9516: avoid errors in sysconfig when MACOSX_DEPLOYMENT_TARGET - is set in shell. - -- Issue #8650: Make zlib module 64-bit clean. compress(), decompress() and - their incremental counterparts now raise OverflowError if given an input - larger than 4GB, instead of silently truncating the input and returning - an incorrect result. - -- Issue #12050: zlib.decompressobj().decompress() now clears the unconsumed_tail - attribute when called without a max_length argument. - -- Issue #12062: Fix a flushing bug when doing a certain type of I/O sequence - on a file opened in read+write mode (namely: reading, seeking a bit forward, - writing, then seeking before the previous write but still within buffered - data, and writing again). - -- Issue #9971: Write an optimized implementation of BufferedReader.readinto(). - Patch by John O'Connor. - -- Issue #11799: urllib.request Authentication Handlers will raise a ValueError - when presented with an unsupported Authentication Scheme. Patch contributed - by Yuval Greenfield. - -- Issue #10419, #6011: build_scripts command of distutils handles correctly - non-ASCII path (path to the Python executable). Open and write the script in - binary mode, but ensure that the shebang is decodable from UTF-8 and from the - encoding of the script. - -- Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in - order to accept exactly one connection. Patch by Daniel Evers. - -- Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError, - instead of a RuntimeError: OSError has an errno attribute. - -- Issue #3709: add a flush_headers method to BaseHTTPRequestHandler, which - manages the sending of headers to output stream and flushing the internal - headers buffer. Patch contribution by Andrew Schaaf - -- Issue #11743: Rewrite multiprocessing connection classes in pure Python. - -- Issue #11164: Stop trying to use _xmlplus in the xml module. - -- Issue #11888: Add log2 function to math module. Patch written by Mark - Dickinson. - -- Issue #12012: ssl.PROTOCOL_SSLv2 becomes optional. - -- Issue #8407: The signal handler writes the signal number as a single byte - instead of a nul byte into the wakeup file descriptor. So it is possible to - wait more than one signal and know which signals were raised. - -- Issue #8407: Add pthread_kill(), sigpending() and sigwait() functions to the - signal module. - -- Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch - by Kasun Herath. - -- Issue #12002: ftplib's abort() method raises TypeError. - -- Issue #11916: Add a number of MacOSX specific definitions to the errno module. - Patch by Pierre Carrier. - -- Issue #11999: fixed sporadic sync failure mailbox.Maildir due to its trying to - detect mtime changes by comparing to the system clock instead of to the - previous value of the mtime. - -- Issue #11072: added MLSD command (RFC-3659) support to ftplib. - -- Issue #8808: The IMAP4_SSL constructor now allows passing an SSLContext - parameter to control parameters of the secure channel. Patch by Sijin - Joseph. - -- ntpath.samefile failed to notice that "a.txt" and "A.TXT" refer to the same - file on Windows XP. As noticed in issue #10684. - -- Issue #12000: When a SSL certificate has a subjectAltName without any - dNSName entry, ssl.match_hostname() should use the subject's commonName. - Patch by Nicolas Bareil. - -- Issue #10775: assertRaises, assertRaisesRegex, assertWarns, and - assertWarnsRegex now accept a keyword argument 'msg' when used as context - managers. Initial patch by Winston Ewert. - -- Issue #10684: shutil.move used to delete a folder on case insensitive - filesystems when the source and destination name where the same except - for the case. - -- Issue #11647: objects created using contextlib.contextmanager now support - more than one call to the function when used as a decorator. Initial patch - by Ysj Ray. - -- Issue #11930: Removed deprecated time.accept2dyear variable. - Removed year >= 1000 restriction from datetime.strftime. - -- logging: don't define QueueListener if Python has no thread support. - -- functools.cmp_to_key() now works with collections.Hashable(). - -- Issue #11277: mmap.mmap() calls fcntl(fd, F_FULLFSYNC) on Mac OS X to get - around a mmap bug with sparse files. Patch written by Steffen Daode Nurpmeso. - -- Issue #8407: Add signal.pthread_sigmask() function to fetch and/or change the - signal mask of the calling thread. - -- Issue #11858: configparser.ExtendedInterpolation expected lower-case section - names. - -- Issue #11324: ConfigParser(interpolation=None) now works correctly. - -- Issue #11811: ssl.get_server_certificate() is now IPv6-compatible. Patch - by Charles-François Natali. - -- Issue #11763: don't use difflib in TestCase.assertMultiLineEqual if the - strings are too long. - -- Issue #11236: getpass.getpass responds to ctrl-c or ctrl-z on terminal. - -- Issue #11856: Speed up parsing of JSON numbers. - -- Issue #11005: threading.RLock()._release_save() raises a RuntimeError if the - lock was not acquired. - -- Issue #11258: Speed up ctypes.util.find_library() under Linux by a factor - of 5 to 10. Initial patch by Jonas H. - -- Issue #11382: Trivial system calls, such as dup() or pipe(), needn't - release the GIL. Patch by Charles-François Natali. - -- Issue #11223: Add threading._info() function providing informations about - the thread implementation. - -- Issue #11731: simplify/enhance email parser/generator API by introducing - policy objects. - -- Issue #11768: The signal handler of the signal module only calls - Py_AddPendingCall() for the first signal to fix a deadlock on reentrant or - parallel calls. PyErr_SetInterrupt() writes also into the wake up file. - -- Issue #11492: fix several issues with header folding in the email package. - -- Issue #11852: Add missing imports and update tests. - -- Issue #11875: collections.OrderedDict's __reduce__ was temporarily - mutating the object instead of just working on a copy. - -- Issue #11467: Fix urlparse behavior when handling urls which contains scheme - specific part only digits. Patch by Santoso Wijaya. - -- collections.Counter().copy() now works correctly for subclasses. - -- Issue #11474: Fix the bug with url2pathname() handling of '/C|/' on Windows. - Patch by Santoso Wijaya. - -- Issue #11684: complete email.parser bytes API by adding BytesHeaderParser. - -- The bz2 module now handles 4GiB+ input buffers correctly. - -- Issue #9233: Fix json.loads('{}') to return a dict (instead of a list), when - _json is not available. - -- Issue #11830: Remove unnecessary introspection code in the decimal module. - -- Issue #11703: urllib2.geturl() does not return correct url when the original - url contains #fragment. - -- Issue #10019: Fixed regression in json module where an indent of 0 stopped - adding newlines and acted instead like 'None'. - -- Issue #11186: pydoc ignores a module if its name contains a surrogate - character in the index of modules. - -- Issue #11815: Use a light-weight SimpleQueue for the result queue in - concurrent.futures.ProcessPoolExecutor. - -- Issue #5162: Treat services like frozen executables to allow child spawning - from multiprocessing.forking on Windows. - -- logging.basicConfig now supports an optional 'handlers' argument taking an - iterable of handlers to be added to the root logger. Additional parameter - checks were also added to basicConfig. - -- Issue #11814: Fix likely typo in multiprocessing.Pool._terminate(). - -- Issue #11747: Fix range formatting in difflib.context_diff() and - difflib.unified_diff(). - -- Issue #8428: Fix a race condition in multiprocessing.Pool when terminating - worker processes: new processes would be spawned while the pool is being - shut down. Patch by Charles-François Natali. - -- Issue #2650: re.escape() no longer escapes the '_'. - -- Issue #11757: select.select() now raises ValueError when a negative timeout - is passed (previously, a select.error with EINVAL would be raised). Patch - by Charles-François Natali. - -- Issue #7311: fix html.parser to accept non-ASCII attribute values. - -- Issue #11605: email.parser.BytesFeedParser was incorrectly converting - multipart subparts with an 8-bit CTE into unicode instead of preserving the - bytes. - -- Issue #1690608: email.util.formataddr is now RFC 2047 aware: it now has a - charset parameter that defaults to utf-8 and is used as the charset for RFC - 2047 encoding when the realname contains non-ASCII characters. - -- Issue #10963: Ensure that subprocess.communicate() never raises EPIPE. - -- Issue #10791: Implement missing method GzipFile.read1(), allowing GzipFile - to be wrapped in a TextIOWrapper. Patch by Nadeem Vawda. - -- Issue #11707: Added a fast C version of functools.cmp_to_key(). - Patch by Filip Gruszczyński. - -- Issue #11688: Add sqlite3.Connection.set_trace_callback(). Patch by - Torsten Landschoff. - -- Issue #11746: Fix SSLContext.load_cert_chain() to accept elliptic curve - private keys. - -- Issue #5863: Rewrite BZ2File in pure Python, and allow it to accept - file-like objects using a new ``fileobj`` constructor argument. Patch by - Nadeem Vawda. - -- unittest.TestCase.assertSameElements has been removed. - -- sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not - called yet: detect bootstrap (startup) issues earlier. - -- Issue #11393: Add the new faulthandler module. - -- Issue #11618: Fix the timeout logic in threading.Lock.acquire() under Windows. - -- Removed the 'strict' argument to email.parser.Parser, which has been - deprecated since Python 2.4. - -- Issue #11256: Fix inspect.getcallargs on functions that take only keyword - arguments. - -- Issue #11696: Fix ID generation in msilib. - -- itertools.accumulate now supports an optional *func* argument for - a user-supplied binary function. - -- Issue #11692: Remove unnecessary demo functions in subprocess module. - -- Issue #9696: Fix exception incorrectly raised by xdrlib.Packer.pack_int when - trying to pack a negative (in-range) integer. - -- Issue #11675: multiprocessing.[Raw]Array objects created from an integer size - are now zeroed on creation. This matches the behaviour specified by the - documentation. - -- Issue #7639: Fix short file name generation in bdist_msi - -- Issue #11635: Don't use polling in worker threads and processes launched by - concurrent.futures. - -- Issue #5845: Automatically read readline configuration to enable completion - in interactive mode. - -- Issue #6811: Allow importlib to change a code object's co_filename attribute - to match the path to where the source code currently is, not where the code - object originally came from. - -- Issue #8754: Have importlib use the repr of a module name in error messages. - -- Issue #11591: Prevent "import site" from modifying sys.path when python - was started with -S. - -- collections.namedtuple() now adds a _source attribute to the generated - class. This make the source more accessible than the outdated - "verbose" option which prints to stdout but doesn't make the source - string available. - -- Issue #11371: Mark getopt error messages as localizable. Patch by Filip - Gruszczyński. - -- Issue #11333: Add __slots__ to collections ABCs. - -- Issue #11628: cmp_to_key generated class should use __slots__. - -- Issue #11666: let help() display named tuple attributes and methods - that start with a leading underscore. - -- Issue #11662: Make urllib and urllib2 ignore redirections if the - scheme is not HTTP, HTTPS or FTP (CVE-2011-1521). - -- Issue #5537: Fix time2isoz() and time2netscape() functions of - httplib.cookiejar for expiration year greater than 2038 on 32-bit systems. - -- Issue #4391: Use proper gettext plural forms in optparse. - -- Issue #11127: Raise a TypeError when trying to pickle a socket object. - -- Issue #11563: ``Connection: close`` header is sent by requests using URLOpener - class which helps in closing of sockets after connection is over. Patch - contributions by Jeff McNeil and Nadeem Vawda. - -- Issue #11459: A ``bufsize`` value of 0 in subprocess.Popen() really creates - unbuffered pipes, such that select() works properly on them. - -- Issue #5421: Fix misleading error message when one of socket.sendto()'s - arguments has the wrong type. Patch by Nikita Vetoshkin. - -- Issue #10812: Add some extra posix functions to the os module. - -- Issue #10979: unittest stdout buffering now works with class and module - setup and teardown. - -- Issue #11243: fix the parameter querying methods of Message to work if - the headers contain un-encoded non-ASCII data. - -- Issue #11401: fix handling of headers with no value; this fixes a regression - relative to Python2 and the result is now the same as it was in Python2. - -- Issue #9298: base64 bodies weren't being folded to line lengths less than 78, - which was a regression relative to Python2. Unlike Python2, the last line - of the folded body now ends with a carriage return. - -- Issue #11560: shutil.unpack_archive now correctly handles the format - parameter. Patch by Evan Dandrea. - -- Issue #5870: Add `subprocess.DEVNULL` constant. - -- Issue #11133: fix two cases where inspect.getattr_static can trigger code - execution. Patch by Andreas Stührk. - -- Issue #11569: use absolute path to the sysctl command in multiprocessing to - ensure that it will be found regardless of the shell PATH. This ensures - that multiprocessing.cpu_count works on default installs of MacOSX. - -- Issue #11501: disutils.archive_utils.make_zipfile no longer fails if zlib is - not installed. Instead, the zipfile.ZIP_STORED compression is used to create - the ZipFile. Patch by Natalia B. Bidart. - -- Issue #11289: `smtp.SMTP` class is now a context manager so it can be used - in a `with` statement. Contributed by Giampaolo Rodola. - -- Issue #11554: Fixed support for Japanese codecs; previously the body output - encoding was not done if euc-jp or shift-jis was specified as the charset. - -- Issue #11407: `TestCase.run` returns the result object used or created. - Contributed by Janathan Hartley. - -- Issue #11500: Fixed a bug in the OS X proxy bypass code for fully qualified - IP addresses in the proxy exception list. - -- Issue #11491: dbm.error is no longer raised when dbm.open is called with - the "n" as the flag argument and the file exists. The behavior matches - the documentation and general logic. - -- Issue #1162477: Postel Principle adjustment to email date parsing: handle the - fact that some non-compliant MUAs use '.' instead of ':' in time specs. - -- Issue #11131: Fix sign of zero in decimal.Decimal plus and minus - operations when the rounding mode is ROUND_FLOOR. - -- Issue #9935: Speed up pickling of instances of user-defined classes. - -- Issue #5622: Fix curses.wrapper to raise correct exception if curses - initialization fails. - -- Issue #11408: In threading.Lock.acquire(), only call gettimeofday() when - really necessary. Patch by Charles-François Natali. - -- Issue #11391: Writing to a mmap object created with - ``mmap.PROT_READ|mmap.PROT_EXEC`` would segfault instead of raising a - TypeError. Patch by Charles-François Natali. - -- Issue #9795: add context manager protocol support for nntplib.NNTP class. - -- Issue #11306: mailbox in certain cases adapts to an inability to open - certain files in read-write mode. Previously it detected this by - checking for EACCES, now it also checks for EROFS. - -- Issue #11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors - on accept(), send() and recv(). - -- Issue #11377: Deprecate platform.popen() and reimplement it with os.popen(). - -- Issue #8513: On UNIX, subprocess supports bytes command string. - -- Issue #10866: Add socket.sethostname(). Initial patch by Ross Lagerwall. - -- Issue #11140: Lock.release() now raises a RuntimeError when attempting - to release an unacquired lock, as claimed in the threading documentation. - The _thread.error exception is now an alias of RuntimeError. Patch by - Filip Gruszczyński. Patch for _dummy_thread by Aymeric Augustin. - -- Issue #8594: ftplib now provides a source_address parameter to specify which - (address, port) to bind to before connecting. - -- Issue #11326: Add the missing connect_ex() implementation for SSL sockets, - and make it work for non-blocking connects. - -- Issue #11297: Add collections.ChainMap(). - -- Issue #10755: Add the posix.flistdir() function. Patch by Ross Lagerwall. - -- Issue #4761: Add the ``*at()`` family of functions (openat(), etc.) to the - posix module. Patch by Ross Lagerwall. - -- Issue #7322: Trying to read from a socket's file-like object after a timeout - occurred now raises an error instead of silently losing data. - -- Issue #11291: poplib.POP no longer suppresses errors on quit(). - -- Issue #11177: asyncore's create_socket() arguments can now be omitted. - -- Issue #6064: Add a ``daemon`` keyword argument to the threading.Thread - and multiprocessing.Process constructors in order to override the - default behaviour of inheriting the daemonic property from the current - thread/process. - -- Issue #10956: Buffered I/O classes retry reading or writing after a signal - has arrived and the handler returned successfully. - -- Issue #10784: New os.getpriority() and os.setpriority() functions. - -- Issue #11114: Fix catastrophic performance of tell() on text files (up - to 1000x faster in some cases). It is still one to two order of magnitudes - slower than binary tell(). - -- Issue #10882: Add os.sendfile function. - -- Issue #10868: Allow usage of the register method of an ABC as a class - decorator. - -- Issue #11224: Fixed a regression in tarfile that affected the file-like - objects returned by TarFile.extractfile() regarding performance, memory - consumption and failures with the stream interface. - -- Issue #10924: Adding salt and Modular Crypt Format to crypt library. - Moved old C wrapper to _crypt, and added a Python wrapper with - enhanced salt generation and simpler API for password generation. - -- Issue #11074: Make 'tokenize' so it can be reloaded. - -- Issue #11085: Moved collections abstract base classes into a separate - module called collections.abc, following the pattern used by importlib.abc. - For backwards compatibility, the names are imported into the collections - module. - -- Issue #4681: Allow mmap() to work on file sizes and offsets larger than - 4GB, even on 32-bit builds. Initial patch by Ross Lagerwall, adapted for - 32-bit Windows. - -- Issue #11169: compileall module uses repr() to format filenames and paths to - escape surrogate characters and show spaces. - -- Issue #11089: Fix performance issue limiting the use of ConfigParser() - with large config files. - -- Issue #10276: Fix the results of zlib.crc32() and zlib.adler32() on buffers - larger than 4GB. Patch by Nadeem Vawda. - -- Issue #11388: Added a clear() method to MutableSequence - -- Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names - for the names of optional and positional arguments in help messages. - -- Issue #9348: Raise an early error if argparse nargs and metavar don't match. - -- Issue #9026: Fix order of argparse sub-commands in help messages. - -- Issue #9347: Fix formatting for tuples in argparse type= error messages. - -- Issue #12191: Added shutil.chown() to change user and/or group owner of a - given path also specifying their names. - -- Issue #13988: The _elementtree accelerator is used whenever available. - Now xml.etree.cElementTree becomes a deprecated alias to ElementTree. - -Build ------ - -- Issue #6807: Run msisupport.mak earlier. - -- Issue #10580: Minor grammar change in Windows installer. - -- Issue #13326: Clean __pycache__ directories correctly on OpenBSD. - -- PEP 393: the configure option --with-wide-unicode is removed. - -- Issue #12852: Set _XOPEN_SOURCE to 700, instead of 600, to get POSIX 2008 - functions on OpenBSD (e.g. fdopendir). - -- Issue #11863: Remove support for legacy systems deprecated in Python 3.2 - (following PEP 11). These systems are systems using Mach C Threads, - SunOS lightweight processes, GNU pth threads and IRIX threads. - -- Issue #8746: Correct faulty configure checks so that os.chflags() and - os.lchflags() are once again built on systems that support these - functions (BSD and OS X). Also add new stat file flags for OS X - (UF_HIDDEN and UF_COMPRESSED). - -- Issue #10645: Installing Python no longer creates a - Python-X.Y.Z-pyX.Y.egg-info file in the lib-dynload directory. - -- Do not accidentally include the directory containing sqlite.h twice when - building sqlite3. - -- Issue #11217: For 64-bit/32-bit Mac OS X universal framework builds, - ensure "make install" creates symlinks in --prefix bin for the "-32" - files in the framework bin directory like the installer does. - -- Issue #11347: Use --no-as-needed when linking libpython3.so. - -- Issue #11411: Fix 'make DESTDIR=' with a relative destination. - -- Issue #11268: Prevent Mac OS X Installer failure if Documentation - package had previously been installed. - -- Issue #11495: OSF support is eliminated. It was deprecated in Python 3.2. - -IDLE ----- - -- Issue #14409: IDLE now properly executes commands in the Shell window - when it cannot read the normal config files on startup and - has to use the built-in default key bindings. - There was previously a bug in one of the defaults. - -- IDLE can be launched as python -m idlelib - -- Issue #3573: IDLE hangs when passing invalid command line args - (directory(ies) instead of file(s)) (Patch by Guilherme Polo) - -- Issue #14200: IDLE shell crash on printing non-BMP unicode character. - -- Issue #5219: Prevent event handler cascade in IDLE. - -- Issue #964437: Make IDLE help window non-modal. - Patch by Guilherme Polo and Roger Serwy. - -- Issue #13933: IDLE auto-complete did not work with some imported - module, like hashlib. (Patch by Roger Serwy) - -- Issue #13506: Add '' to path for IDLE Shell when started and restarted with Restart Shell. - Original patches by Marco Scataglini and Roger Serwy. - -- Issue #4625: If IDLE cannot write to its recent file or breakpoint files, - display a message popup and continue rather than crash. Original patch by - Roger Serwy. - -- Issue #8641: Update IDLE 3 syntax coloring to recognize b".." and not u"..". - Patch by Tal Einat. - -- Issue #13296: Fix IDLE to clear compile __future__ flags on shell restart. - (Patch by Roger Serwy) - -- Issue #9871: Prevent IDLE 3 crash when given byte stings - with invalid hex escape sequences, like b'\x0'. - (Original patch by Claudiu Popa.) - -- Issue #12636: IDLE reads the coding cookie when executing a Python script. - -- Issue #12540: Prevent zombie IDLE processes on Windows due to changes - in os.kill(). - -- Issue #12590: IDLE editor window now always displays the first line - when opening a long file. With Tk 8.5, the first line was hidden. - -- Issue #11088: don't crash when using F5 to run a script in IDLE on MacOSX - with Tk 8.5. - -- Issue #1028: Tk returns invalid Unicode null in %A: UnicodeDecodeError. - With Tk < 8.5 _tkinter.c:PythonCmd() raised UnicodeDecodeError, caused - IDLE to exit. Converted to valid Unicode null in PythonCmd(). - -- Issue #11718: IDLE's open module dialog couldn't find the __init__.py - file in a package. - -Tools/Demos ------------ - -- Issue #14053: patchcheck.py ("make patchcheck") now works with MQ patches. - Patch by Francisco Martín Brugué. - -- Issue #13930: 2to3 is now able to write its converted output files to another - directory tree as well as copying unchanged files and altering the file - suffix. See its new -o, -W and --add-suffix options. This makes it more - useful in many automated code translation workflows. - -- Issue #13628: python-gdb.py is now able to retrieve more frames in the Python - traceback if Python is optimized. - -- Issue #11996: libpython (gdb), replace "py-bt" command by "py-bt-full" and - add a smarter "py-bt" command printing a classic Python traceback. - -- Issue #11179: Make ccbench work under Python 3.1 and 2.7 again. - -- Issue #10639: reindent.py no longer converts newlines and will raise - an error if attempting to convert a file with mixed newlines. - "--newline" option added to specify new line character. - -Extension Modules ------------------ - -- Issue #16847: Fixed improper use of _PyUnicode_CheckConsistency() in - non-pydebug builds. Several extension modules now compile cleanly when - assert()s are enabled in standard builds (-DDEBUG flag). - -- Issue #13840: The error message produced by ctypes.create_string_buffer - when given a Unicode string has been fixed. - -- Issue #9975: socket: Fix incorrect use of flowinfo and scope_id. Patch by - Vilmos Nebehaj. - -- Issue #7777: socket: Add Reliable Datagram Sockets (PF_RDS) support. - -- Issue #13159: FileIO and BZ2Compressor/BZ2Decompressor now use a linear-time - buffer growth strategy instead of a quadratic-time one. - -- Issue #10141: socket: Add SocketCAN (PF_CAN) support. Initial patch by - Matthias Fuchs, updated by Tiago Gonçalves. - -- Issue #13070: Fix a crash when a TextIOWrapper caught in a reference cycle - would be finalized after the reference to its underlying BufferedRWPair's - writer got cleared by the GC. - -- Issue #12881: ctypes: Fix segfault with large structure field names. - -- Issue #13058: ossaudiodev: fix a file descriptor leak on error. Patch by - Thomas Jarosch. - -- Issue #13013: ctypes: Fix a reference leak in PyCArrayType_from_ctype. - Thanks to Suman Saha for finding the bug and providing a patch. - -- Issue #13022: Fix: _multiprocessing.recvfd() doesn't check that - file descriptor was actually received. - -- Issue #1172711: Add 'long long' support to the array module. - Initial patch by Oren Tirosh and Hirokazu Yamamoto. - -- Issue #12483: ctypes: Fix a crash when the destruction of a callback - object triggers the garbage collector. - -- Issue #12950: Fix passing file descriptors in multiprocessing, under - OpenIndiana/Illumos. - -- Issue #12764: Fix a crash in ctypes when the name of a Structure field is not - a string. - -- Issue #11241: subclasses of ctypes.Array can now be subclassed. - -- Issue #9651: Fix a crash when ctypes.create_string_buffer(0) was passed to - some functions like file.write(). - -- Issue #10309: Define _GNU_SOURCE so that mremap() gets the proper - signature. Without this, architectures where sizeof void* != sizeof int are - broken. Patch given by Hallvard B Furuseth. - -- Issue #12051: Fix segfault in json.dumps() while encoding highly-nested - objects using the C accelerations. - -- Issue #12017: Fix segfault in json.loads() while decoding highly-nested - objects using the C accelerations. - -- Issue #1838: Prevent segfault in ctypes, when _as_parameter_ on a class is set - to an instance of the class. - -Tests ------ - -- Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode. - Patch by Mikhail Novikov. - -- Issue #13447: Add a test file to host regression tests for bugs in the - scripts found in the Tools directory. - -- Issue #10881: Fix test_site failure with OS X framework builds. - -- Issue #13901: Prevent test_distutils failures on OS X with --enable-shared. - -- Issue #13862: Fix spurious failure in test_zlib due to runtime/compile time - minor versions not matching. - -- Issue #12804: Fix test_socket and test_urllib2net failures when running tests - on a system without internet access. - -- Issue #13726: Fix the ambiguous -S flag in regrtest. It is -o/--slow for slow - tests. - -- Issue #11659: Fix ResourceWarning in test_subprocess introduced by #11459. - Patch by Ben Hayden. - -- Issue #11577: fix ResourceWarning triggered by improved binhex test coverage - -- Issue #11509: Significantly increase test coverage of fileinput. - Patch by Denver Coneybeare at PyCon 2011 Sprints. - -- Issue #11689: Fix a variable scoping error in an sqlite3 test - -- Issue #13786: Remove unimplemented 'trace' long option from regrtest.py. - -- Issue #13725: Fix regrtest to recognize the documented -d flag. - Patch by Erno Tukia. - -- Issue #13304: Skip test case if user site-packages disabled (-s or - PYTHONNOUSERSITE). (Patch by Carl Meyer) - -- Issue #5661: Add a test for ECONNRESET/EPIPE handling to test_asyncore. Patch - by Xavier de Gaye. - -- Issue #13218: Fix test_ssl failures on Debian/Ubuntu. - -- Re-enable lib2to3's test_parser.py tests, though with an expected failure - (see issue 13125). - -- Issue #12656: Add tests for IPv6 and Unix sockets to test_asyncore. - -- Issue #6484: Add unit tests for mailcap module (patch by Gregory Nofi) - -- Issue #11651: Improve the Makefile test targets to run more of the test suite - more quickly. The --multiprocess option is now enabled by default, reducing - the amount of time needed to run the tests. "make test" and "make quicktest" - now include some resource-intensive tests, but no longer run the test suite - twice to check for bugs in .pyc generation. Tools/scripts/run_test.py provides - an easy platform-independent way to run test suite with sensible defaults. - -- Issue #12331: The test suite for the packaging module can now run from an - installed Python. - -- Issue #12331: The test suite for lib2to3 can now run from an installed - Python. - -- Issue #12626: In regrtest, allow to filter tests using a glob filter - with the ``-m`` (or ``--match``) option. This works with all test cases - using the unittest module. This is useful with long test suites - such as test_io or test_subprocess. - -- Issue #12624: It is now possible to fail after the first failure when - running in verbose mode (``-v`` or ``-W``), by using the ``--failfast`` - (or ``-G``) option to regrtest. This is useful with long test suites - such as test_io or test_subprocess. - -- Issue #12587: Correct faulty test file and reference in test_tokenize. - (Patch by Robert Xiao) - -- Issue #12573: Add resource checks for dangling Thread and Process objects. - -- Issue #12549: Correct test_platform to not fail when OS X returns 'x86_64' - as the processor type on some Mac systems. - -- Skip network tests when getaddrinfo() returns EAI_AGAIN, meaning a temporary - failure in name resolution. - -- Issue #11812: Solve transient socket failure to connect to 'localhost' - in test_telnetlib.py. - -- Solved a potential deadlock in test_telnetlib.py. Related to issue #11812. - -- Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and - an overzealous DNS service (e.g. OpenDNS) redirects to a placeholder - Web site. - -- Avoid failing in test_urllibnet.test_bad_address when some overzealous - DNS service (e.g. OpenDNS) resolves a non-existent domain name. The test - is now skipped instead. - -- Issue #12440: When testing whether some bits in SSLContext.options can be - reset, check the version of the OpenSSL headers Python was compiled against, - rather than the runtime version of the OpenSSL library. - -- Issue #11512: Add a test suite for the cgitb module. Patch by Robbie Clemons. - -- Issue #12497: Install test/data to prevent failures of the various codecmaps - tests. - -- Issue #12496: Install test/capath directory to prevent test_connect_capath - testcase failure in test_ssl. - -- Issue #12469: Run wakeup and pending signal tests in a subprocess to run the - test in a fresh process with only one thread and to not change signal - handling of the parent process. - -- Issue #8716: Avoid crashes caused by Aqua Tk on OSX when attempting to run - test_tk or test_ttk_guionly under a username that is not currently logged - in to the console windowserver (as may be the case under buildbot or ssh). - -- Issue #12407: Explicitly skip test_capi.EmbeddingTest under Windows. - -- Issue #12400: regrtest -W doesn't rerun the tests twice anymore, but captures - the output and displays it on failure instead. regrtest -v doesn't print the - error twice anymore if there is only one error. - -- Issue #12141: Install copies of template C module file so that - test_build_ext of test_distutils and test_command_build_ext of - test_packaging are no longer silently skipped when - run outside of a build directory. - -- Issue #8746: Add additional tests for os.chflags() and os.lchflags(). - Patch by Garrett Cooper. - -- Issue #10736: Fix test_ttk test_widgets failures with Cocoa Tk 8.5.9 - 2.8 + on Mac OS X. (Patch by Ronald Oussoren) - -- Issue #12057: Add tests for ISO 2022 codecs (iso2022_jp, iso2022_jp_2, - iso2022_kr). - -- Issue #12096: Fix a race condition in test_threading.test_waitfor(). Patch - written by Charles-François Natali. - -- Issue #11614: import __hello__ prints "Hello World!". Patch written by - Andreas Stührk. - -- Issue #5723: Improve json tests to be executed with and without accelerations. - -- Issue #12041: Make test_wait3 more robust. - -- Issue #11873: Change regex in test_compileall to fix occasional failures when - when the randomly generated temporary path happened to match the regex. - -- Issue #11958: Fix FTP tests for IPv6, bind to "::1" instead of "localhost". - Patch written by Charles-Francois Natali. - -- Issue #8407, #11859: Fix tests of test_io using threads and an alarm: use - pthread_sigmask() to ensure that the SIGALRM signal is received by the main - thread. - -- Issue #11811: Factor out detection of IPv6 support on the current host - and make it available as ``test.support.IPV6_ENABLED``. Patch by - Charles-François Natali. - -- Issue #10914: Add a minimal embedding test to test_capi. - -- Issue #11223: Skip test_lock_acquire_interruption() and - test_rlock_acquire_interruption() of test_threadsignals if a thread lock is - implemented using a POSIX mutex and a POSIX condition variable. A POSIX - condition variable cannot be interrupted by a signal (e.g. on Linux, the - futex system call is restarted). - -- Issue #11790: Fix sporadic failures in test_multiprocessing.WithProcessesTestCondition. - -- Fix possible "file already exists" error when running the tests in parallel. - -- Issue #11719: Fix message about unexpected test_msilib skip on non-Windows - platforms. Patch by Nadeem Vawda. - -- Issue #11727: Add a --timeout option to regrtest: if a test takes more than - TIMEOUT seconds, dumps the traceback of all threads and exits. - -- Issue #11653: fix -W with -j in regrtest. - -- The email test suite now lives in the Lib/test/test_email package. The test - harness code has also been modernized to allow use of new unittest features. - -- regrtest now discovers test packages as well as test modules. - -- Issue #11577: improve test coverage of binhex.py. Patch by Arkady Koplyarov. - -- New test_crashers added to exercise the scripts in the Lib/test/crashers - directory and confirm they fail as expected - -- Issue #11578: added test for the timeit module. Patch by Michael Henry. - -- Issue #11503: improve test coverage of posixpath.py. Patch by Evan Dandrea. - -- Issue #11505: improves test coverage of string.py, increases granularity of - string.Formatter tests. Initial patch by Alicia Arlen. - -- Issue #11548: Improve test coverage of the shutil module. Patch by - Evan Dandrea. - -- Issue #11554: Reactivated test_email_codecs. - -- Issue #11505: improves test coverage of string.py. Patch by Alicia - Arlen - -- Issue #11490: test_subprocess.test_leaking_fds_on_error no longer gives a - false positive if the last directory in the path is inaccessible. - -- Issue #11223: Fix test_threadsignals to fail, not hang, when the - non-semaphore implementation of locks is used under POSIX. - -- Issue #10911: Add tests on CGI with non-ASCII characters. Patch written by - Pierre Quentel. - -- Issue #9931: Fix hangs in GUI tests under Windows in certain conditions. - Patch by Hirokazu Yamamoto. - -- Issue #10512: Properly close sockets under test.test_cgi. - -- Issue #10992: Make tests pass under coverage. - -- Issue #10826: Prevent sporadic failure in test_subprocess on Solaris due - to open door files. - -- Issue #10990: Prevent tests from clobbering a set trace function. - -C-API ------ - -- Issue #13452: PyUnicode_EncodeDecimal() doesn't support error handlers - different than "strict" anymore. The caller was unable to compute the - size of the output buffer: it depends on the error handler. - -- Issue #13560: Add PyUnicode_DecodeLocale(), PyUnicode_DecodeLocaleAndSize() - and PyUnicode_EncodeLocale() functions to the C API to decode/encode from/to - the current locale encoding. - -- Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats. - -- Issue #11246: Fix PyUnicode_FromFormat("%V") to decode the byte string from - UTF-8 (with replace error handler) instead of ISO-8859-1 (in strict mode). - Patch written by Ray Allen. - -- Issue #10830: Fix PyUnicode_FromFormatV("%c") for non-BMP characters on - narrow build. - -- Add PyObject_GenericGetDict and PyObject_GeneriSetDict. They are generic - implementations for the getter and setter of a ``__dict__`` descriptor of C - types. - -- Issue #13727: Add 3 macros to access PyDateTime_Delta members: - PyDateTime_DELTA_GET_DAYS, PyDateTime_DELTA_GET_SECONDS, - PyDateTime_DELTA_GET_MICROSECONDS. - -- Issue #10542: Add 4 macros to work with surrogates: Py_UNICODE_IS_SURROGATE, - Py_UNICODE_IS_HIGH_SURROGATE, Py_UNICODE_IS_LOW_SURROGATE, - Py_UNICODE_JOIN_SURROGATES. - -- Issue #12724: Add Py_RETURN_NOTIMPLEMENTED macro for returning NotImplemented. - -- PY_PATCHLEVEL_REVISION has been removed, since it's meaningless with - Mercurial. - -- Issue #12173: The first argument of PyImport_ImportModuleLevel is now `const - char *` instead of `char *`. - -- Issue #12380: PyArg_ParseTuple now accepts a bytearray for the 'c' format. - -Documentation -------------- - -- Issue #23006: Improve the documentation and indexing of dict.__missing__. - Add an entry in the language datamodel special methods section. - Revise and index its discussion in the stdtypes mapping/dict section. - -- Issue #13989: Document that GzipFile does not support text mode, and give a - more helpful error message when opened with an invalid mode string. - -- Issue #13921: Undocument and clean up sqlite3.OptimizedUnicode, - which is obsolete in Python 3.x. It's now aliased to str for - backwards compatibility. - -- Issue #12102: Document that buffered files must be flushed before being used - with mmap. Patch by Steffen Daode Nurpmeso. - -- Issue #8982: Improve the documentation for the argparse Namespace object. - -- Issue #9343: Document that argparse parent parsers must be configured before - their children. - -- Issue #13498: Clarify docs of os.makedirs()'s exist_ok argument. Done with - great native-speaker help from R. David Murray. - -- Issues #13491 and #13995: Fix many errors in sqlite3 documentation. - Initial patch for #13491 by Johannes Vogel. - -- Issue #13402: Document absoluteness of sys.executable. - -- Issue #13883: PYTHONCASEOK also works on OS X. - -- Issue #9021: Add an introduction to the copy module documentation. - -- Issue #6005: Examples in the socket library documentation use sendall, where - relevant, instead send method. - -- Issue #12798: Updated the mimetypes documentation. - -- Issue #12949: Document the kwonlyargcount argument for the PyCode_New - C API function. - -- Issue #13513: Fix io.IOBase documentation to correctly link to the - io.IOBase.readline method instead of the readline module. - -- Issue #13237: Reorganise subprocess documentation to emphasise convenience - functions and the most commonly needed arguments to Popen. - -- Issue #13141: Demonstrate recommended style for socketserver examples. - -- Issue #11818: Fix tempfile examples for Python 3. - - **(For information about older versions, consult the HISTORY file.)** diff --git a/Misc/Porting b/Misc/Porting index 51f73e6..c283cb2 100644 --- a/Misc/Porting +++ b/Misc/Porting @@ -27,7 +27,7 @@ And you'll need a config.c file, which lists the built-in modules you support. Start with Modules/config.c.in. Finally, you'll run into some things that aren't supported on your -target platform. Forget about the posix module for now -- simply take +target platform. Forget about the posix module for now -- simply take it out of the config.c file. Bang on it until you get a >>> prompt. (You may have to disable the diff --git a/Misc/coverity_model.c b/Misc/coverity_model.c index 57f3aeb..493e7c1 100644 --- a/Misc/coverity_model.c +++ b/Misc/coverity_model.c @@ -85,7 +85,7 @@ PyObject *PyErr_SetFromErrnoWithFilename(PyObject *exc, const char *filename) } /* Python/fileutils.c */ -wchar_t *_Py_char2wchar(const char* arg, size_t *size) +wchar_t *Py_DecodeLocale(const char* arg, size_t *size) { wchar_t *w; __coverity_tainted_data_sink__(arg); @@ -122,7 +122,8 @@ static long r_long(RFILE *p) /* Coverity doesn't understand that fdopendir() may take ownership of fd. */ -DIR *fdopendir(int fd) { +DIR *fdopendir(int fd) +{ DIR *d; if (d) { __coverity_close__(fd); @@ -130,3 +131,58 @@ DIR *fdopendir(int fd) { return d; } +/* Modules/_datetime.c + * + * Coverity thinks that the input values for these function come from a + * tainted source PyDateTime_DATE_GET_* macros use bit shifting. + */ +static PyObject * +build_struct_time(int y, int m, int d, int hh, int mm, int ss, int dstflag) +{ + PyObject *result; + + __coverity_tainted_data_sanitize__(y); + __coverity_tainted_data_sanitize__(m); + __coverity_tainted_data_sanitize__(d); + __coverity_tainted_data_sanitize__(hh); + __coverity_tainted_data_sanitize__(mm); + __coverity_tainted_data_sanitize__(ss); + __coverity_tainted_data_sanitize__(dstflag); + + return result; +} + +static int +ymd_to_ord(int year, int month, int day) +{ + int ord = 0; + + __coverity_tainted_data_sanitize__(year); + __coverity_tainted_data_sanitize__(month); + __coverity_tainted_data_sanitize__(day); + + return ord; +} + +static int +normalize_date(int *year, int *month, int *day) +{ + __coverity_tainted_data_sanitize__(*year); + __coverity_tainted_data_sanitize__(*month); + __coverity_tainted_data_sanitize__(*day); + + return 0; +} + +static int +weekday(int year, int month, int day) +{ + int w = 0; + + __coverity_tainted_data_sanitize__(year); + __coverity_tainted_data_sanitize__(month); + __coverity_tainted_data_sanitize__(day); + + return w; +} + diff --git a/Misc/gdbinit b/Misc/gdbinit index 9484b51..3b6fe50 100644 --- a/Misc/gdbinit +++ b/Misc/gdbinit @@ -150,10 +150,10 @@ end # generally useful macro to print a Unicode string def pu - set $uni = $arg0 + set $uni = $arg0 set $i = 0 while (*$uni && $i++<100) - if (*$uni < 0x80) + if (*$uni < 0x80) print *(char*)$uni++ else print /x *(short*)$uni++ diff --git a/Misc/python.man b/Misc/python.man index ea9540c..6dbdba9 100644 --- a/Misc/python.man +++ b/Misc/python.man @@ -103,10 +103,10 @@ Python is also adaptable as an extension language for existing applications. See the internal documentation for hints. .PP -Documentation for installed Python modules and packages can be -viewed by running the +Documentation for installed Python modules and packages can be +viewed by running the .B pydoc -program. +program. .SH COMMAND LINE OPTIONS .TP .B \-B @@ -149,23 +149,20 @@ Further restrictions may be imposed to prevent the user from injecting malicious code. .TP .BI "\-m " module-name -Searches -.I sys.path -for the named module and runs the corresponding -.I .py +Searches +.I sys.path +for the named module and runs the corresponding +.I .py file as a script. .TP .B \-O -Turn on basic optimizations. This changes the filename extension for -compiled (bytecode) files from -.I .pyc -to \fI.pyo\fP. Given twice, causes docstrings to be discarded. +Turn on basic optimizations. Given twice, causes docstrings to be discarded. .TP .B \-OO Discard docstrings in addition to the \fB-O\fP optimizations. .TP .B \-q -Do not print the version and copyright messages. These messages are +Do not print the version and copyright messages. These messages are also suppressed in non-interactive mode. .TP .B \-s @@ -192,7 +189,7 @@ The text I/O layer will still be line-buffered. .B \-v Print a message each time a module is initialized, showing the place (filename or built-in module) from which it is loaded. When given -twice, print a message for each file that is checked for when +twice, print a message for each file that is checked for when searching for a module. Also provides information on module cleanup at exit. .TP @@ -417,7 +414,7 @@ the \fB\-u\fP option. .IP PYTHONVERBOSE If this is set to a non-empty string it is equivalent to specifying the \fB\-v\fP option. If set to an integer, it is equivalent to -specifying \fB\-v\fP multiple times. +specifying \fB\-v\fP multiple times. .IP PYTHONWARNINGS If this is set to a comma-separated string it is equivalent to specifying the \fB\-W\fP option for each separate value. |