From c450e655dc6e8c8fb12e9cba525dc61a2a558722 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Thu, 27 Jan 2022 18:22:12 +0100 Subject: [PATCH] Update info dir --- info/python-figures/hashlib-blake2-tree.png | Bin 0 -> 11146 bytes info/python-figures/logging_flow.png | Bin 0 -> 22058 bytes info/python-figures/pathlib-inheritance.png | Bin 0 -> 6431 bytes info/python-figures/turtle-star.png | Bin 0 -> 33808 bytes info/python-figures/win_installer.png | Bin 0 -> 95096 bytes info/python.info | 217765 ++++++++--------- 6 files changed, 100425 insertions(+), 117340 deletions(-) create mode 100644 info/python-figures/hashlib-blake2-tree.png create mode 100644 info/python-figures/logging_flow.png create mode 100644 info/python-figures/pathlib-inheritance.png create mode 100644 info/python-figures/turtle-star.png create mode 100644 info/python-figures/win_installer.png diff --git a/info/python-figures/hashlib-blake2-tree.png b/info/python-figures/hashlib-blake2-tree.png new file mode 100644 index 0000000000000000000000000000000000000000..73e849444ed7d38fa57e700f4acd2fc5110d7a44 GIT binary patch literal 11146 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 literal 0 HcmV?d00001 diff --git a/info/python-figures/logging_flow.png b/info/python-figures/logging_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..fac4acd775530259deeef077a125fb2e6fb5502b GIT binary patch literal 22058 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 BxikO( literal 0 HcmV?d00001 diff --git a/info/python-figures/turtle-star.png b/info/python-figures/turtle-star.png new file mode 100644 index 0000000000000000000000000000000000000000..0961e1e2153f7238423a55fab9cea824146fde71 GIT binary patch literal 33808 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 L)z4*}Q$iB}o>anN literal 0 HcmV?d00001 diff --git a/info/python-figures/win_installer.png b/info/python-figures/win_installer.png new file mode 100644 index 0000000000000000000000000000000000000000..9c18ff19cf5e81f8fadf55aac01ce1e41148c846 GIT binary patch literal 95096 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

L4l#aZb2>Nv6T9|FSv^Ke9bXW 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

6Bh#M+;fY#b4w0{$2XkD^MHXuL}9s60( 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. -* Porting to Python 3.9: Porting to Python 3 9<2>. -* Removed: Removed<2>. - -Notable changes in Python 3.9.1 - -* typing: typing<2>. -* macOS 11.0 (Big Sur) and Apple Silicon Mac support: macOS 11 0 Big Sur and Apple Silicon Mac support. - -Notable changes in Python 3.9.2 - -* collections.abc: collections abc. -* urllib.parse: urllib parse. - -Notable changes in Python 3.9.5 - -* urllib.parse: urllib parse<2>. - -What’s New In Python 3.8 - -* Summary – Release highlights: Summary – Release highlights<2>. -* New Features: New Features<3>. -* Other Language Changes: Other Language Changes<2>. -* New Modules: New Modules<2>. -* Improved Modules: Improved Modules<2>. -* Optimizations: Optimizations<2>. * Build and C API Changes:: -* Deprecated: Deprecated<2>. +* Deprecated:: * API and Feature Removals:: * Porting to Python 3.8: Porting to Python 3 8. * Notable changes in Python 3.8.1: Notable changes in Python 3 8 1. +* Notable changes in Python 3.8.2: Notable changes in Python 3 8 2. +* Notable changes in Python 3.8.3: Notable changes in Python 3 8 3. * Notable changes in Python 3.8.8: Notable changes in Python 3 8 8. +* Notable changes in Python 3.8.9: Notable changes in Python 3 8 9. +* Notable changes in Python 3.8.10: Notable changes in Python 3 8 10. +* Notable changes in Python 3.8.10: Notable changes in Python 3 8 10<2>. +* Notable changes in Python 3.8.12: Notable changes in Python 3 8 12. New Features @@ -194,77 +102,89 @@ New Features * f-strings support = for self-documenting expressions and debugging:: * PEP 578; Python Runtime Audit Hooks: PEP 578 Python Runtime Audit Hooks. * PEP 587; Python Initialization Configuration: PEP 587 Python Initialization Configuration. -* PEP 590; Vectorcall; a fast calling protocol for CPython: PEP 590 Vectorcall a fast calling protocol for CPython. +* Vectorcall; a fast calling protocol for CPython: Vectorcall a fast calling protocol for CPython. * Pickle protocol 5 with out-of-band data buffers:: Improved Modules -* ast: ast<2>. -* asyncio: asyncio<2>. +* ast:: +* asyncio:: * builtins:: * collections:: * cProfile:: * csv:: -* curses: curses<2>. +* curses:: * ctypes:: -* datetime: datetime<2>. +* datetime:: * functools:: -* gc: gc<2>. +* gc:: * gettext:: * gzip:: -* IDLE and idlelib: IDLE and idlelib<2>. -* inspect: inspect<2>. +* IDLE and idlelib:: +* inspect:: * io:: * itertools:: * json.tool: json tool. * logging:: -* math: math<2>. +* math:: * mmap:: -* multiprocessing: multiprocessing<2>. -* os: os<2>. +* multiprocessing:: +* os:: * os.path: os path. -* pathlib: pathlib<2>. +* pathlib:: * pickle:: * plistlib:: -* pprint: pprint<2>. +* pprint:: * py_compile:: * shlex:: * shutil:: -* socket: socket<2>. +* socket:: * ssl:: * statistics:: -* sys: sys<2>. +* sys:: * tarfile:: * threading:: * tokenize:: * tkinter:: -* time: time<2>. -* typing: typing<3>. -* unicodedata: unicodedata<2>. +* time:: +* typing:: +* unicodedata:: * unittest:: -* venv: venv<2>. +* venv:: * weakref:: -* xml: xml<2>. +* xml:: * xmlrpc:: Porting to Python 3.8 * Changes in Python behavior:: -* Changes in the Python API: Changes in the Python API<2>. -* Changes in the C API: Changes in the C API<2>. -* CPython bytecode changes: CPython bytecode changes<2>. +* Changes in the Python API:: +* Changes in the C API:: +* CPython bytecode changes:: * Demos and Tools:: +Notable changes in Python 3.8.10 + +* macOS 11.0 (Big Sur) and Apple Silicon Mac support: macOS 11 0 Big Sur and Apple Silicon Mac support. + +Notable changes in Python 3.8.10 + +* urllib.parse: urllib parse. + +Notable changes in Python 3.8.12 + +* Changes in the Python API: Changes in the Python API<2>. + What’s New In Python 3.7 * Summary – Release Highlights:: -* New Features: New Features<4>. -* Other Language Changes: Other Language Changes<3>. -* New Modules: New Modules<3>. -* Improved Modules: Improved Modules<3>. -* C API Changes: C API Changes<2>. -* Build Changes: Build Changes<2>. -* Optimizations: Optimizations<3>. +* New Features: New Features<2>. +* Other Language Changes: Other Language Changes<2>. +* New Modules: New Modules<2>. +* Improved Modules: Improved Modules<2>. +* C API Changes:: +* Build Changes:: +* Optimizations: Optimizations<2>. * Other CPython Implementation Changes:: * Deprecated Python Behavior:: * Deprecated Python modules, functions and methods: Deprecated Python modules functions and methods. @@ -292,7 +212,7 @@ New Features * PEP 560; Core Support for typing module and Generic Types: PEP 560 Core Support for typing module and Generic Types. * PEP 552; Hash-based .pyc Files: PEP 552 Hash-based pyc Files. * PEP 545; Python Documentation Translations: PEP 545 Python Documentation Translations. -* Python Development Mode (-X dev): Python Development Mode -X dev. +* Development Runtime Mode; -X dev: Development Runtime Mode -X dev. New Modules @@ -303,60 +223,60 @@ New Modules Improved Modules * argparse:: -* asyncio: asyncio<3>. +* asyncio: asyncio<2>. * binascii:: * calendar:: * collections: collections<2>. -* compileall: compileall<2>. -* concurrent.futures: concurrent futures<2>. +* compileall:: +* concurrent.futures: concurrent futures. * contextlib:: * cProfile: cProfile<2>. * crypt:: -* datetime: datetime<3>. +* datetime: datetime<2>. * dbm:: * decimal:: * dis:: -* distutils: distutils<2>. +* distutils:: * enum:: * functools: functools<2>. -* gc: gc<3>. +* gc: gc<2>. * hmac:: * http.client: http client. * http.server: http server. * idlelib and IDLE:: -* importlib: importlib<2>. +* importlib:: * io: io<2>. -* ipaddress: ipaddress<2>. +* ipaddress:: * itertools: itertools<2>. * locale:: * logging: logging<2>. -* math: math<3>. +* math: math<2>. * mimetypes:: * msilib:: -* multiprocessing: multiprocessing<3>. -* os: os<3>. -* pathlib: pathlib<3>. -* pdb: pdb<2>. +* multiprocessing: multiprocessing<2>. +* os: os<2>. +* pathlib: pathlib<2>. +* pdb:: * py_compile: py_compile<2>. -* pydoc: pydoc<2>. +* pydoc:: * queue:: * re:: -* signal: signal<2>. -* socket: socket<3>. +* signal:: +* socket: socket<2>. * socketserver:: * sqlite3:: * ssl: ssl<2>. * string:: * subprocess:: -* sys: sys<3>. -* time: time<3>. +* sys: sys<2>. +* time: time<2>. * tkinter: tkinter<2>. -* tracemalloc: tracemalloc<2>. +* tracemalloc:: * types:: -* unicodedata: unicodedata<3>. +* unicodedata: unicodedata<2>. * unittest: unittest<2>. * unittest.mock: unittest mock. -* urllib.parse: urllib parse<3>. +* urllib.parse: urllib parse<2>. * uu:: * uuid:: * warnings:: @@ -368,42 +288,42 @@ Improved Modules Deprecated Python modules, functions and methods * aifc:: -* asyncio: asyncio<4>. +* asyncio: asyncio<3>. * collections: collections<3>. * dbm: dbm<2>. * enum: enum<2>. * gettext: gettext<2>. -* importlib: importlib<3>. +* importlib: importlib<2>. * locale: locale<2>. * macpath:: * threading: threading<2>. -* socket: socket<4>. +* socket: socket<3>. * ssl: ssl<3>. * sunau:: -* sys: sys<4>. +* sys: sys<3>. * wave:: Porting to Python 3.7 * Changes in Python Behavior:: * Changes in the Python API: Changes in the Python API<3>. -* Changes in the C API: Changes in the C API<3>. -* CPython bytecode changes: CPython bytecode changes<3>. +* Changes in the C API: Changes in the C API<2>. +* CPython bytecode changes: CPython bytecode changes<2>. * Windows-only Changes: Windows-only Changes<2>. * Other CPython implementation changes:: What’s New In Python 3.6 -* Summary – Release highlights: Summary – Release highlights<3>. -* New Features: New Features<5>. -* Other Language Changes: Other Language Changes<4>. -* New Modules: New Modules<4>. -* Improved Modules: Improved Modules<4>. -* Optimizations: Optimizations<4>. +* Summary – Release highlights: Summary – Release highlights<2>. +* New Features: New Features<3>. +* Other Language Changes: Other Language Changes<3>. +* New Modules: New Modules<3>. +* Improved Modules: Improved Modules<3>. +* Optimizations: Optimizations<3>. * Build and C API Changes: Build and C API Changes<2>. * Other Improvements:: -* Deprecated: Deprecated<3>. -* Removed: Removed<3>. +* Deprecated: Deprecated<2>. +* Removed:: * Porting to Python 3.6: Porting to Python 3 6. * Notable changes in Python 3.6.2: Notable changes in Python 3 6 2. * Notable changes in Python 3.6.4: Notable changes in Python 3 6 4. @@ -439,62 +359,62 @@ New Modules Improved Modules * array:: -* ast: ast<3>. -* asyncio: asyncio<5>. +* ast: ast<2>. +* asyncio: asyncio<4>. * binascii: binascii<2>. * cmath:: * collections: collections<4>. -* concurrent.futures: concurrent futures<3>. +* concurrent.futures: concurrent futures<2>. * contextlib: contextlib<2>. -* datetime: datetime<4>. +* datetime: datetime<3>. * decimal: decimal<2>. -* distutils: distutils<3>. +* distutils: distutils<2>. * email:: * encodings:: * enum: enum<3>. * faulthandler:: * fileinput:: -* hashlib: hashlib<2>. +* hashlib:: * http.client: http client<2>. * idlelib and IDLE: idlelib and IDLE<2>. -* importlib: importlib<4>. -* inspect: inspect<3>. +* importlib: importlib<3>. +* inspect: inspect<2>. * json:: * logging: logging<3>. -* math: math<4>. -* multiprocessing: multiprocessing<4>. -* os: os<4>. -* pathlib: pathlib<4>. -* pdb: pdb<3>. +* math: math<3>. +* multiprocessing: multiprocessing<3>. +* os: os<3>. +* pathlib: pathlib<3>. +* pdb: pdb<2>. * pickle: pickle<2>. * pickletools:: -* pydoc: pydoc<3>. -* random: random<2>. +* pydoc: pydoc<2>. +* random:: * re: re<2>. * readline:: * rlcompleter:: * shlex: shlex<2>. * site:: * sqlite3: sqlite3<2>. -* socket: socket<5>. +* socket: socket<4>. * socketserver: socketserver<2>. * ssl: ssl<4>. * statistics: statistics<2>. * struct:: * subprocess: subprocess<2>. -* sys: sys<5>. +* sys: sys<4>. * telnetlib:: -* time: time<4>. +* time: time<3>. * timeit:: * tkinter: tkinter<3>. * traceback:: -* tracemalloc: tracemalloc<3>. -* typing: typing<4>. -* unicodedata: unicodedata<4>. +* tracemalloc: tracemalloc<2>. +* typing: typing<2>. +* unicodedata: unicodedata<3>. * unittest.mock: unittest mock<2>. * urllib.request: urllib request. * urllib.robotparser: urllib robotparser. -* venv: venv<3>. +* venv: venv<2>. * warnings: warnings<2>. * winreg:: * winsound:: @@ -515,14 +435,14 @@ Deprecated Python modules, functions and methods * asynchat:: * asyncore:: * dbm: dbm<3>. -* distutils: distutils<4>. +* distutils: distutils<3>. * grp:: -* importlib: importlib<5>. -* os: os<5>. +* importlib: importlib<4>. +* os: os<4>. * re: re<3>. * ssl: ssl<5>. * tkinter: tkinter<4>. -* venv: venv<4>. +* venv: venv<3>. Removed @@ -532,8 +452,8 @@ Porting to Python 3.6 * Changes in ‘python’ Command Behavior:: * Changes in the Python API: Changes in the Python API<4>. -* Changes in the C API: Changes in the C API<4>. -* CPython bytecode changes: CPython bytecode changes<4>. +* Changes in the C API: Changes in the C API<3>. +* CPython bytecode changes: CPython bytecode changes<3>. Notable changes in Python 3.6.2 @@ -542,16 +462,16 @@ Notable changes in Python 3.6.2 What’s New In Python 3.5 -* Summary – Release highlights: Summary – Release highlights<4>. -* New Features: New Features<6>. -* Other Language Changes: Other Language Changes<5>. -* New Modules: New Modules<5>. -* Improved Modules: Improved Modules<5>. +* Summary – Release highlights: Summary – Release highlights<3>. +* New Features: New Features<4>. +* Other Language Changes: Other Language Changes<4>. +* New Modules: New Modules<4>. +* Improved Modules: Improved Modules<4>. * Other module-level changes:: -* Optimizations: Optimizations<5>. +* Optimizations: Optimizations<4>. * Build and C API Changes: Build and C API Changes<3>. -* Deprecated: Deprecated<4>. -* Removed: Removed<4>. +* Deprecated: Deprecated<3>. +* Removed: Removed<2>. * Porting to Python 3.5: Porting to Python 3 5. * Notable changes in Python 3.5.4: Notable changes in Python 3 5 4. @@ -572,28 +492,28 @@ New Features New Modules -* typing: typing<5>. +* typing: typing<3>. * zipapp: zipapp<2>. Improved Modules * argparse: argparse<2>. -* asyncio: asyncio<6>. +* asyncio: asyncio<5>. * bz2:: * cgi:: * cmath: cmath<2>. * code:: * collections: collections<5>. -* collections.abc: collections abc<2>. -* compileall: compileall<3>. -* concurrent.futures: concurrent futures<4>. +* collections.abc: collections abc. +* compileall: compileall<2>. +* concurrent.futures: concurrent futures<3>. * configparser:: * contextlib: contextlib<3>. * csv: csv<2>. -* curses: curses<3>. +* curses: curses<2>. * dbm: dbm<4>. * difflib:: -* distutils: distutils<5>. +* distutils: distutils<4>. * doctest:: * email: email<2>. * enum: enum<4>. @@ -602,49 +522,49 @@ Improved Modules * glob:: * gzip: gzip<2>. * heapq:: -* http: http<2>. +* http:: * http.client: http client<3>. * idlelib and IDLE: idlelib and IDLE<3>. -* imaplib: imaplib<2>. +* imaplib:: * imghdr:: -* importlib: importlib<6>. -* inspect: inspect<4>. +* importlib: importlib<5>. +* inspect: inspect<3>. * io: io<3>. -* ipaddress: ipaddress<3>. +* ipaddress: ipaddress<2>. * json: json<2>. * linecache:: * locale: locale<3>. * logging: logging<4>. * lzma:: -* math: math<5>. -* multiprocessing: multiprocessing<5>. +* math: math<4>. +* multiprocessing: multiprocessing<4>. * operator:: -* os: os<6>. -* pathlib: pathlib<5>. +* os: os<5>. +* pathlib: pathlib<4>. * pickle: pickle<3>. -* poplib: poplib<2>. +* poplib:: * re: re<4>. * readline: readline<2>. * selectors:: * shutil: shutil<2>. -* signal: signal<3>. +* signal: signal<2>. * smtpd:: -* smtplib: smtplib<2>. +* smtplib:: * sndhdr:: -* socket: socket<6>. +* socket: socket<5>. * ssl: ssl<6>. * sqlite3: sqlite3<3>. * subprocess: subprocess<3>. -* sys: sys<6>. +* sys: sys<5>. * sysconfig:: * tarfile: tarfile<2>. * threading: threading<3>. -* time: time<5>. +* time: time<4>. * timeit: timeit<2>. * tkinter: tkinter<5>. * traceback: traceback<2>. * types: types<2>. -* unicodedata: unicodedata<5>. +* unicodedata: unicodedata<4>. * unittest: unittest<3>. * unittest.mock: unittest mock<3>. * urllib:: @@ -674,7 +594,7 @@ Porting to Python 3.5 * Changes in Python behavior: Changes in Python behavior<2>. * Changes in the Python API: Changes in the Python API<5>. -* Changes in the C API: Changes in the C API<5>. +* Changes in the C API: Changes in the C API<4>. Notable changes in Python 3.5.4 @@ -684,12 +604,12 @@ Notable changes in Python 3.5.4 What’s New In Python 3.4 * Summary – Release Highlights: Summary – Release Highlights<2>. -* New Features: New Features<7>. -* New Modules: New Modules<6>. -* Improved Modules: Improved Modules<6>. +* New Features: New Features<5>. +* New Modules: New Modules<5>. +* Improved Modules: Improved Modules<5>. * CPython Implementation Changes:: -* Deprecated: Deprecated<5>. -* Removed: Removed<5>. +* Deprecated: Deprecated<4>. +* Removed: Removed<3>. * Porting to Python 3.4: Porting to Python 3 4. * Changed in 3.4.3: Changed in 3 4 3. @@ -699,7 +619,7 @@ New Features * PEP 446; Newly Created File Descriptors Are Non-Inheritable: PEP 446 Newly Created File Descriptors Are Non-Inheritable. * Improvements to Codec Handling:: * PEP 451; A ModuleSpec Type for the Import System: PEP 451 A ModuleSpec Type for the Import System. -* Other Language Changes: Other Language Changes<6>. +* Other Language Changes: Other Language Changes<5>. PEP 453: Explicit Bootstrapping of PIP in Python Installations @@ -708,13 +628,13 @@ PEP 453: Explicit Bootstrapping of PIP in Python Installations New Modules -* asyncio: asyncio<7>. +* asyncio: asyncio<6>. * ensurepip:: * enum: enum<5>. -* pathlib: pathlib<6>. +* pathlib: pathlib<5>. * selectors: selectors<2>. * statistics: statistics<3>. -* tracemalloc: tracemalloc<4>. +* tracemalloc: tracemalloc<3>. Improved Modules @@ -732,44 +652,44 @@ Improved Modules * email: email<3>. * filecmp:: * functools: functools<4>. -* gc: gc<4>. +* gc: gc<3>. * glob: glob<2>. -* hashlib: hashlib<3>. +* hashlib: hashlib<2>. * hmac: hmac<2>. * html:: -* http: http<3>. +* http: http<2>. * idlelib and IDLE: idlelib and IDLE<4>. -* importlib: importlib<7>. -* inspect: inspect<5>. -* ipaddress: ipaddress<4>. +* importlib: importlib<6>. +* inspect: inspect<4>. +* ipaddress: ipaddress<3>. * logging: logging<5>. * marshal:: * mmap: mmap<2>. -* multiprocessing: multiprocessing<6>. +* multiprocessing: multiprocessing<5>. * operator: operator<2>. -* os: os<7>. -* pdb: pdb<4>. +* os: os<6>. +* pdb: pdb<3>. * pickle: pickle<4>. * plistlib: plistlib<2>. -* poplib: poplib<3>. -* pprint: pprint<3>. +* poplib: poplib<2>. +* pprint: pprint<2>. * pty:: -* pydoc: pydoc<4>. +* pydoc: pydoc<3>. * re: re<5>. * resource:: * select:: * shelve:: * shutil: shutil<3>. * smtpd: smtpd<2>. -* smtplib: smtplib<3>. -* socket: socket<7>. +* smtplib: smtplib<2>. +* socket: socket<6>. * sqlite3: sqlite3<4>. * ssl: ssl<7>. * stat:: * struct: struct<2>. * subprocess: subprocess<4>. * sunau: sunau<2>. -* sys: sys<7>. +* sys: sys<6>. * tarfile: tarfile<3>. * textwrap:: * threading: threading<4>. @@ -777,7 +697,7 @@ Improved Modules * types: types<3>. * urllib: urllib<2>. * unittest: unittest<4>. -* venv: venv<5>. +* venv: venv<4>. * wave: wave<2>. * weakref: weakref<2>. * xml.etree: xml etree<2>. @@ -808,7 +728,7 @@ Porting to Python 3.4 * Changes in ‘python’ Command Behavior: Changes in ‘python’ Command Behavior<2>. * Changes in the Python API: Changes in the Python API<6>. -* Changes in the C API: Changes in the C API<6>. +* Changes in the C API: Changes in the C API<5>. Changed in 3.4.3 @@ -816,7 +736,7 @@ Changed in 3.4.3 What’s New In Python 3.3 -* Summary – Release highlights: Summary – Release highlights<5>. +* Summary – Release highlights: Summary – Release highlights<4>. * PEP 405; Virtual Environments: PEP 405 Virtual Environments. * PEP 420; Implicit Namespace Packages: PEP 420 Implicit Namespace Packages. * PEP 3118; New memoryview implementation and buffer protocol documentation: PEP 3118 New memoryview implementation and buffer protocol documentation. @@ -831,14 +751,14 @@ What’s New In Python 3.3 * PEP 362; Function Signature Object: PEP 362 Function Signature Object. * PEP 421; Adding sys.implementation: PEP 421 Adding sys implementation. * Using importlib as the Implementation of Import:: -* Other Language Changes: Other Language Changes<7>. +* Other Language Changes: Other Language Changes<6>. * A Finer-Grained Import Lock:: * Builtin functions and types:: -* New Modules: New Modules<7>. -* Improved Modules: Improved Modules<7>. -* Optimizations: Optimizations<6>. +* New Modules: New Modules<6>. +* Improved Modules: Improved Modules<6>. +* Optimizations: Optimizations<5>. * Build and C API Changes: Build and C API Changes<4>. -* Deprecated: Deprecated<6>. +* Deprecated: Deprecated<5>. * Porting to Python 3.3: Porting to Python 3 3. PEP 3118: New memoryview implementation and buffer protocol documentation @@ -863,7 +783,7 @@ Using importlib as the Implementation of Import New Modules * faulthandler: faulthandler<3>. -* ipaddress: ipaddress<5>. +* ipaddress: ipaddress<4>. * lzma: lzma<2>. Improved Modules @@ -877,50 +797,50 @@ Improved Modules * collections: collections<7>. * contextlib: contextlib<5>. * crypt: crypt<2>. -* curses: curses<4>. -* datetime: datetime<5>. +* curses: curses<3>. +* datetime: datetime<4>. * decimal: decimal<3>. * email: email<4>. -* ftplib: ftplib<2>. +* ftplib:: * functools: functools<5>. -* gc: gc<5>. +* gc: gc<4>. * hmac: hmac<3>. -* http: http<4>. +* http: http<3>. * html: html<2>. -* imaplib: imaplib<3>. -* inspect: inspect<6>. +* imaplib: imaplib<2>. +* inspect: inspect<5>. * io: io<4>. * itertools: itertools<3>. * logging: logging<6>. -* math: math<6>. +* math: math<5>. * mmap: mmap<3>. -* multiprocessing: multiprocessing<7>. -* nntplib: nntplib<2>. -* os: os<8>. -* pdb: pdb<5>. +* multiprocessing: multiprocessing<6>. +* nntplib:: +* os: os<7>. +* pdb: pdb<4>. * pickle: pickle<5>. -* pydoc: pydoc<5>. +* pydoc: pydoc<4>. * re: re<6>. * sched:: * select: select<2>. * shlex: shlex<3>. * shutil: shutil<4>. -* signal: signal<4>. +* signal: signal<3>. * smtpd: smtpd<3>. -* smtplib: smtplib<4>. -* socket: socket<8>. +* smtplib: smtplib<3>. +* socket: socket<7>. * socketserver: socketserver<3>. * sqlite3: sqlite3<5>. * ssl: ssl<8>. * stat: stat<2>. * struct: struct<3>. * subprocess: subprocess<5>. -* sys: sys<8>. +* sys: sys<7>. * tarfile: tarfile<4>. * tempfile:: * textwrap: textwrap<2>. * threading: threading<5>. -* time: time<6>. +* time: time<5>. * types: types<4>. * unittest: unittest<5>. * urllib: urllib<3>. @@ -962,10 +882,10 @@ What’s New In Python 3.2 * PEP 3147; PYC Repository Directories: PEP 3147 PYC Repository Directories. * PEP 3149; ABI Version Tagged .so Files: PEP 3149 ABI Version Tagged so Files. * PEP 3333; Python Web Server Gateway Interface v1.0.1: PEP 3333 Python Web Server Gateway Interface v1 0 1. -* Other Language Changes: Other Language Changes<8>. +* Other Language Changes: Other Language Changes<7>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules. * Multi-threading:: -* Optimizations: Optimizations<7>. +* Optimizations: Optimizations<6>. * Unicode:: * Codecs:: * Documentation:: @@ -983,7 +903,7 @@ New, Improved, and Deprecated Modules * collections: collections<8>. * threading: threading<6>. * datetime and time:: -* math: math<7>. +* math: math<6>. * abc: abc<3>. * io: io<5>. * reprlib:: @@ -996,33 +916,33 @@ New, Improved, and Deprecated Modules * select: select<3>. * gzip and zipfile:: * tarfile: tarfile<5>. -* hashlib: hashlib<4>. -* ast: ast<4>. -* os: os<9>. +* hashlib: hashlib<3>. +* ast: ast<3>. +* os: os<8>. * shutil: shutil<5>. * sqlite3: sqlite3<6>. * html: html<3>. -* socket: socket<9>. +* socket: socket<8>. * ssl: ssl<9>. * nntp:: * certificates:: -* imaplib: imaplib<4>. +* imaplib: imaplib<3>. * http.client: http client<4>. * unittest: unittest<6>. -* random: random<3>. -* poplib: poplib<4>. +* random: random<2>. +* poplib: poplib<3>. * asyncore: asyncore<2>. * tempfile: tempfile<2>. -* inspect: inspect<7>. -* pydoc: pydoc<6>. +* inspect: inspect<6>. +* pydoc: pydoc<5>. * dis: dis<3>. * dbm: dbm<6>. * ctypes: ctypes<2>. * site: site<2>. * sysconfig: sysconfig<2>. -* pdb: pdb<6>. +* pdb: pdb<5>. * configparser: configparser<2>. -* urllib.parse: urllib parse<4>. +* urllib.parse: urllib parse<3>. * mailbox:: * turtledemo:: @@ -1030,9 +950,9 @@ What’s New In Python 3.1 * PEP 372; Ordered Dictionaries: PEP 372 Ordered Dictionaries. * PEP 378; Format Specifier for Thousands Separator: PEP 378 Format Specifier for Thousands Separator. -* Other Language Changes: Other Language Changes<9>. +* Other Language Changes: Other Language Changes<8>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules<2>. -* Optimizations: Optimizations<8>. +* Optimizations: Optimizations<7>. * IDLE: IDLE<2>. * Build and C API Changes: Build and C API Changes<6>. * Porting to Python 3.1: Porting to Python 3 1. @@ -1080,7 +1000,7 @@ What’s New in Python 2.7 * PEP 391; Dictionary-Based Configuration For Logging: PEP 391 Dictionary-Based Configuration For Logging. * PEP 3106; Dictionary Views: PEP 3106 Dictionary Views. * PEP 3137; The memoryview Object: PEP 3137 The memoryview Object. -* Other Language Changes: Other Language Changes<10>. +* Other Language Changes: Other Language Changes<9>. * New and Improved Modules:: * Build and C API Changes: Build and C API Changes<8>. * Other Changes and Fixes:: @@ -1091,7 +1011,7 @@ What’s New in Python 2.7 Other Language Changes * Interpreter Changes:: -* Optimizations: Optimizations<9>. +* Optimizations: Optimizations<8>. New and Improved Modules @@ -1142,7 +1062,7 @@ What’s New in Python 2.6 * PEP 3127; Integer Literal Support and Syntax: PEP 3127 Integer Literal Support and Syntax. * PEP 3129; Class Decorators: PEP 3129 Class Decorators. * PEP 3141; A Type Hierarchy for Numbers: PEP 3141 A Type Hierarchy for Numbers. -* Other Language Changes: Other Language Changes<11>. +* Other Language Changes: Other Language Changes<10>. * New and Improved Modules: New and Improved Modules<2>. * Deprecations and Removals:: * Build and C API Changes: Build and C API Changes<9>. @@ -1165,7 +1085,7 @@ PEP 3141: A Type Hierarchy for Numbers Other Language Changes -* Optimizations: Optimizations<10>. +* Optimizations: Optimizations<9>. * Interpreter Changes: Interpreter Changes<2>. New and Improved Modules @@ -1196,7 +1116,7 @@ What’s New in Python 2.5 * PEP 352; Exceptions as New-Style Classes: PEP 352 Exceptions as New-Style Classes. * PEP 353; Using ssize_t as the index type: PEP 353 Using ssize_t as the index type. * PEP 357; The ‘__index__’ method: PEP 357 The ‘__index__’ method. -* Other Language Changes: Other Language Changes<12>. +* Other Language Changes: Other Language Changes<11>. * New, Improved, and Removed Modules: New Improved and Removed Modules. * Build and C API Changes: Build and C API Changes<10>. * Porting to Python 2.5: Porting to Python 2 5. @@ -1210,7 +1130,7 @@ PEP 343: The ‘with’ statement Other Language Changes * Interactive Interpreter Changes:: -* Optimizations: Optimizations<11>. +* Optimizations: Optimizations<10>. New, Improved, and Removed Modules @@ -1236,7 +1156,7 @@ What’s New in Python 2.4 * PEP 327; Decimal Data Type: PEP 327 Decimal Data Type. * PEP 328; Multi-line Imports: PEP 328 Multi-line Imports. * PEP 331; Locale-Independent Float/String Conversions: PEP 331 Locale-Independent Float/String Conversions. -* Other Language Changes: Other Language Changes<13>. +* Other Language Changes: Other Language Changes<12>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules<3>. * Build and C API Changes: Build and C API Changes<11>. * Porting to Python 2.4: Porting to Python 2 4. @@ -1250,7 +1170,7 @@ PEP 327: Decimal Data Type Other Language Changes -* Optimizations: Optimizations<12>. +* Optimizations: Optimizations<11>. New, Improved, and Deprecated Modules @@ -1278,7 +1198,7 @@ What’s New in Python 2.3 * PEP 305; Comma-separated Files: PEP 305 Comma-separated Files. * PEP 307; Pickle Enhancements: PEP 307 Pickle Enhancements. * Extended Slices:: -* Other Language Changes: Other Language Changes<14>. +* Other Language Changes: Other Language Changes<13>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules<4>. * Pymalloc; A Specialized Object Allocator: Pymalloc A Specialized Object Allocator. * Build and C API Changes: Build and C API Changes<12>. @@ -1289,7 +1209,7 @@ What’s New in Python 2.3 Other Language Changes * String Changes:: -* Optimizations: Optimizations<13>. +* Optimizations: Optimizations<12>. New, Improved, and Deprecated Modules @@ -1375,28 +1295,31 @@ XML Modules Changelog -* Python 3.9.6 final: Python 3 9 6 final. -* Python 3.9.5 final: Python 3 9 5 final. -* Python 3.9.4 final: Python 3 9 4 final. -* Python 3.9.3 final: Python 3 9 3 final. -* Python 3.9.2 final: Python 3 9 2 final. -* Python 3.9.2 release candidate 1: Python 3 9 2 release candidate 1. -* Python 3.9.1 final: Python 3 9 1 final. -* Python 3.9.1 release candidate 1: Python 3 9 1 release candidate 1. -* Python 3.9.0 final: Python 3 9 0 final. -* Python 3.9.0 release candidate 2: Python 3 9 0 release candidate 2. -* Python 3.9.0 release candidate 1: Python 3 9 0 release candidate 1. -* Python 3.9.0 beta 5: Python 3 9 0 beta 5. -* Python 3.9.0 beta 4: Python 3 9 0 beta 4. -* Python 3.9.0 beta 3: Python 3 9 0 beta 3. -* Python 3.9.0 beta 2: Python 3 9 0 beta 2. -* Python 3.9.0 beta 1: Python 3 9 0 beta 1. -* Python 3.9.0 alpha 6: Python 3 9 0 alpha 6. -* Python 3.9.0 alpha 5: Python 3 9 0 alpha 5. -* Python 3.9.0 alpha 4: Python 3 9 0 alpha 4. -* Python 3.9.0 alpha 3: Python 3 9 0 alpha 3. -* Python 3.9.0 alpha 2: Python 3 9 0 alpha 2. -* Python 3.9.0 alpha 1: Python 3 9 0 alpha 1. +* Python 3.8.12 final: Python 3 8 12 final. +* Python 3.8.11 final: Python 3 8 11 final. +* Python 3.8.10 final: Python 3 8 10 final. +* Python 3.8.9 final: Python 3 8 9 final. +* Python 3.8.8 final: Python 3 8 8 final. +* Python 3.8.8 release candidate 1: Python 3 8 8 release candidate 1. +* Python 3.8.7 final: Python 3 8 7 final. +* Python 3.8.7 release candidate 1: Python 3 8 7 release candidate 1. +* Python 3.8.6 final: Python 3 8 6 final. +* Python 3.8.6 release candidate 1: Python 3 8 6 release candidate 1. +* Python 3.8.5 final: Python 3 8 5 final. +* Python 3.8.4 final: Python 3 8 4 final. +* Python 3.8.4 release candidate 1: Python 3 8 4 release candidate 1. +* Python 3.8.3 final: Python 3 8 3 final. +* Python 3.8.3 release candidate 1: Python 3 8 3 release candidate 1. +* Python 3.8.2 final: Python 3 8 2 final. +* Python 3.8.2 release candidate 2: Python 3 8 2 release candidate 2. +* Python 3.8.2 release candidate 1: Python 3 8 2 release candidate 1. +* Python 3.8.1 final: Python 3 8 1 final. +* Python 3.8.1 release candidate 1: Python 3 8 1 release candidate 1. +* Python 3.8.0 final: Python 3 8 0 final. +* Python 3.8.0 release candidate 1: Python 3 8 0 release candidate 1. +* Python 3.8.0 beta 4: Python 3 8 0 beta 4. +* Python 3.8.0 beta 3: Python 3 8 0 beta 3. +* Python 3.8.0 beta 2: Python 3 8 0 beta 2. * Python 3.8.0 beta 1: Python 3 8 0 beta 1. * Python 3.8.0 alpha 4: Python 3 8 0 alpha 4. * Python 3.8.0 alpha 3: Python 3 8 0 alpha 3. @@ -1461,797 +1384,819 @@ Changelog * Python 3.5.0 alpha 2: Python 3 5 0 alpha 2. * Python 3.5.0 alpha 1: Python 3 5 0 alpha 1. -Python 3.9.6 final +Python 3.8.12 final * Security:: * Core and Builtins:: * Library:: * Documentation: Documentation<2>. -* Tests:: -* Build:: * Windows:: * macOS:: -* IDLE: IDLE<3>. -* Tools/Demos:: -* C API:: -Python 3.9.5 final +Python 3.8.11 final * Security: Security<2>. * Core and Builtins: Core and Builtins<2>. * Library: Library<2>. -* Documentation: Documentation<3>. -* Tests: Tests<2>. -* Windows: Windows<2>. -* macOS: macOS<2>. -* IDLE: IDLE<4>. -Python 3.9.4 final - -* Core and Builtins: Core and Builtins<3>. -* Library: Library<3>. - -Python 3.9.3 final +Python 3.8.10 final * Security: Security<3>. +* Core and Builtins: Core and Builtins<3>. +* Library: Library<3>. +* Documentation: Documentation<3>. +* Tests:: +* Windows: Windows<2>. +* macOS: macOS<2>. +* IDLE: IDLE<3>. +* C API:: + +Python 3.8.9 final + +* Security: Security<4>. * Core and Builtins: Core and Builtins<4>. * Library: Library<4>. * Documentation: Documentation<4>. -* Tests: Tests<3>. -* Build: Build<2>. +* Tests: Tests<2>. +* Build:: * macOS: macOS<3>. -* IDLE: IDLE<5>. +* IDLE: IDLE<4>. -Python 3.9.2 final +Python 3.8.8 release candidate 1 -* Windows: Windows<3>. - -Python 3.9.2 release candidate 1 - -* Security: Security<4>. +* Security: Security<5>. * Core and Builtins: Core and Builtins<5>. * Library: Library<5>. * Documentation: Documentation<5>. -* Tests: Tests<4>. -* Build: Build<3>. -* Windows: Windows<4>. +* Tests: Tests<3>. +* Build: Build<2>. +* Windows: Windows<3>. * macOS: macOS<4>. -* IDLE: IDLE<6>. -* Tools/Demos: Tools/Demos<2>. +* IDLE: IDLE<5>. +* Tools/Demos:: * C API: C API<2>. -Python 3.9.1 final +Python 3.8.7 final * Core and Builtins: Core and Builtins<6>. * Library: Library<6>. -* Tests: Tests<5>. -* macOS: macOS<5>. -* IDLE: IDLE<7>. - -Python 3.9.1 release candidate 1 - -* Security: Security<5>. -* Core and Builtins: Core and Builtins<7>. -* Library: Library<7>. * Documentation: Documentation<6>. -* Tests: Tests<6>. -* Build: Build<4>. -* Windows: Windows<5>. -* macOS: macOS<6>. -* IDLE: IDLE<8>. -* C API: C API<3>. +* Build: Build<3>. +* Tools/Demos: Tools/Demos<2>. -Python 3.9.0 final - -* Library: Library<8>. -* Tests: Tests<7>. -* Build: Build<5>. - -Python 3.9.0 release candidate 2 - -* Core and Builtins: Core and Builtins<8>. -* Library: Library<9>. -* Documentation: Documentation<7>. -* Tests: Tests<8>. -* Build: Build<6>. -* Windows: Windows<6>. -* C API: C API<4>. - -Python 3.9.0 release candidate 1 - -* Core and Builtins: Core and Builtins<9>. -* Library: Library<10>. -* Documentation: Documentation<8>. -* Windows: Windows<7>. -* IDLE: IDLE<9>. - -Python 3.9.0 beta 5 +Python 3.8.7 release candidate 1 * Security: Security<6>. -* Core and Builtins: Core and Builtins<10>. -* Library: Library<11>. -* Documentation: Documentation<9>. -* macOS: macOS<7>. -* IDLE: IDLE<10>. -* C API: C API<5>. +* Core and Builtins: Core and Builtins<7>. +* Library: Library<7>. +* Documentation: Documentation<7>. +* Tests: Tests<4>. +* Build: Build<4>. +* Windows: Windows<4>. +* macOS: macOS<5>. +* IDLE: IDLE<6>. +* C API: C API<3>. -Python 3.9.0 beta 4 +Python 3.8.6 final + +* Core and Builtins: Core and Builtins<8>. +* Library: Library<8>. +* Documentation: Documentation<8>. +* Tests: Tests<5>. +* Windows: Windows<5>. +* IDLE: IDLE<7>. + +Python 3.8.6 release candidate 1 + +* Core and Builtins: Core and Builtins<9>. +* Library: Library<9>. +* Documentation: Documentation<9>. +* Windows: Windows<6>. +* IDLE: IDLE<8>. +* C API: C API<4>. + +Python 3.8.5 final * Security: Security<7>. -* Core and Builtins: Core and Builtins<11>. -* Library: Library<12>. -* Tests: Tests<9>. -* Build: Build<7>. -* Windows: Windows<8>. -* macOS: macOS<8>. -* IDLE: IDLE<11>. -* C API: C API<6>. +* Core and Builtins: Core and Builtins<10>. +* Library: Library<10>. +* Documentation: Documentation<10>. +* Build: Build<5>. +* macOS: macOS<6>. +* IDLE: IDLE<9>. -Python 3.9.0 beta 3 - -* Library: Library<13>. -* Build: Build<8>. - -Python 3.9.0 beta 2 - -* Core and Builtins: Core and Builtins<12>. -* Library: Library<14>. -* Tests: Tests<10>. -* Build: Build<9>. -* Windows: Windows<9>. -* macOS: macOS<9>. -* IDLE: IDLE<12>. -* C API: C API<7>. - -Python 3.9.0 beta 1 +Python 3.8.4 final * Security: Security<8>. -* Core and Builtins: Core and Builtins<13>. -* Library: Library<15>. -* Documentation: Documentation<10>. -* Tests: Tests<11>. -* Build: Build<10>. -* Windows: Windows<10>. -* macOS: macOS<10>. -* Tools/Demos: Tools/Demos<3>. -* C API: C API<8>. +* Core and Builtins: Core and Builtins<11>. +* Library: Library<11>. +* IDLE: IDLE<10>. -Python 3.9.0 alpha 6 +Python 3.8.4 release candidate 1 * Security: Security<9>. -* Core and Builtins: Core and Builtins<14>. -* Library: Library<16>. -* Documentation: Documentation<11>. -* Tests: Tests<12>. -* Build: Build<11>. -* Windows: Windows<11>. -* macOS: macOS<11>. -* IDLE: IDLE<13>. -* Tools/Demos: Tools/Demos<4>. -* C API: C API<9>. +* Core and Builtins: Core and Builtins<12>. +* Library: Library<12>. +* Tests: Tests<6>. +* Build: Build<6>. +* Windows: Windows<7>. +* macOS: macOS<7>. +* IDLE: IDLE<11>. +* Tools/Demos: Tools/Demos<3>. -Python 3.9.0 alpha 5 +Python 3.8.3 final + +* Core and Builtins: Core and Builtins<13>. +* Library: Library<13>. +* Documentation: Documentation<11>. +* Windows: Windows<8>. +* C API: C API<5>. + +Python 3.8.3 release candidate 1 * Security: Security<10>. -* Core and Builtins: Core and Builtins<15>. -* Library: Library<17>. +* Core and Builtins: Core and Builtins<14>. +* Library: Library<14>. * Documentation: Documentation<12>. -* Tests: Tests<13>. -* Build: Build<12>. -* Windows: Windows<12>. -* macOS: macOS<12>. -* IDLE: IDLE<14>. -* Tools/Demos: Tools/Demos<5>. -* C API: C API<10>. +* Tests: Tests<7>. +* Build: Build<7>. +* Windows: Windows<9>. +* macOS: macOS<8>. +* IDLE: IDLE<12>. +* Tools/Demos: Tools/Demos<4>. +* C API: C API<6>. -Python 3.9.0 alpha 4 +Python 3.8.2 final + +* Core and Builtins: Core and Builtins<15>. +* Library: Library<15>. +* Documentation: Documentation<13>. +* IDLE: IDLE<13>. + +Python 3.8.2 release candidate 2 * Security: Security<11>. * Core and Builtins: Core and Builtins<16>. -* Library: Library<18>. -* Documentation: Documentation<13>. -* Tests: Tests<14>. -* Build: Build<13>. -* Windows: Windows<13>. -* IDLE: IDLE<15>. -* C API: C API<11>. +* Library: Library<16>. +* IDLE: IDLE<14>. -Python 3.9.0 alpha 3 - -* Core and Builtins: Core and Builtins<17>. -* Library: Library<19>. -* Documentation: Documentation<14>. -* Build: Build<14>. -* IDLE: IDLE<16>. -* C API: C API<12>. - -Python 3.9.0 alpha 2 +Python 3.8.2 release candidate 1 * Security: Security<12>. -* Core and Builtins: Core and Builtins<18>. -* Library: Library<20>. -* Documentation: Documentation<15>. -* Tests: Tests<15>. -* Build: Build<15>. -* Windows: Windows<14>. -* macOS: macOS<13>. -* IDLE: IDLE<17>. -* C API: C API<13>. +* Core and Builtins: Core and Builtins<17>. +* Library: Library<17>. +* Documentation: Documentation<14>. +* Tests: Tests<8>. +* Build: Build<8>. +* Windows: Windows<10>. +* IDLE: IDLE<15>. -Python 3.9.0 alpha 1 +Python 3.8.1 final + +* Core and Builtins: Core and Builtins<18>. +* Library: Library<18>. +* Tests: Tests<9>. +* Windows: Windows<11>. +* macOS: macOS<9>. +* IDLE: IDLE<16>. + +Python 3.8.1 release candidate 1 * Security: Security<13>. * Core and Builtins: Core and Builtins<19>. -* Library: Library<21>. -* Documentation: Documentation<16>. -* Tests: Tests<16>. -* Build: Build<16>. -* Windows: Windows<15>. -* macOS: macOS<14>. -* IDLE: IDLE<18>. -* Tools/Demos: Tools/Demos<6>. -* C API: C API<14>. +* Library: Library<19>. +* Documentation: Documentation<15>. +* Tests: Tests<10>. +* Build: Build<9>. +* Windows: Windows<12>. +* macOS: macOS<10>. +* IDLE: IDLE<17>. +* C API: C API<7>. -Python 3.8.0 beta 1 +Python 3.8.0 final + +* Core and Builtins: Core and Builtins<20>. +* Library: Library<20>. +* Documentation: Documentation<16>. +* Tests: Tests<11>. +* Windows: Windows<13>. +* IDLE: IDLE<18>. +* Tools/Demos: Tools/Demos<5>. +* C API: C API<8>. + +Python 3.8.0 release candidate 1 * Security: Security<14>. -* Core and Builtins: Core and Builtins<20>. -* Library: Library<22>. +* Core and Builtins: Core and Builtins<21>. +* Library: Library<21>. * Documentation: Documentation<17>. -* Tests: Tests<17>. -* Build: Build<17>. -* Windows: Windows<16>. -* macOS: macOS<15>. +* Tests: Tests<12>. +* Build: Build<10>. +* Windows: Windows<14>. +* macOS: macOS<11>. * IDLE: IDLE<19>. -* Tools/Demos: Tools/Demos<7>. -* C API: C API<15>. +* Tools/Demos: Tools/Demos<6>. +* C API: C API<9>. -Python 3.8.0 alpha 4 +Python 3.8.0 beta 4 * Security: Security<15>. -* Core and Builtins: Core and Builtins<21>. -* Library: Library<23>. +* Core and Builtins: Core and Builtins<22>. +* Library: Library<22>. * Documentation: Documentation<18>. -* Tests: Tests<18>. -* Build: Build<18>. -* Windows: Windows<17>. -* macOS: macOS<16>. +* Tests: Tests<13>. +* Build: Build<11>. +* Windows: Windows<15>. +* macOS: macOS<12>. * IDLE: IDLE<20>. -* Tools/Demos: Tools/Demos<8>. -* C API: C API<16>. +* Tools/Demos: Tools/Demos<7>. +* C API: C API<10>. -Python 3.8.0 alpha 3 +Python 3.8.0 beta 3 * Security: Security<16>. -* Core and Builtins: Core and Builtins<22>. -* Library: Library<24>. -* Documentation: Documentation<19>. -* Tests: Tests<19>. -* Build: Build<19>. -* Windows: Windows<18>. -* IDLE: IDLE<21>. -* Tools/Demos: Tools/Demos<9>. -* C API: C API<17>. - -Python 3.8.0 alpha 2 - * Core and Builtins: Core and Builtins<23>. -* Library: Library<25>. -* Documentation: Documentation<20>. -* Tests: Tests<20>. -* Windows: Windows<19>. -* IDLE: IDLE<22>. +* Library: Library<23>. +* Documentation: Documentation<19>. +* Tests: Tests<14>. +* Build: Build<12>. +* Windows: Windows<16>. +* IDLE: IDLE<21>. +* Tools/Demos: Tools/Demos<8>. -Python 3.8.0 alpha 1 +Python 3.8.0 beta 2 * Security: Security<17>. * Core and Builtins: Core and Builtins<24>. -* Library: Library<26>. +* Library: Library<24>. +* Documentation: Documentation<20>. +* Tests: Tests<15>. +* Build: Build<13>. +* Windows: Windows<17>. +* macOS: macOS<13>. +* IDLE: IDLE<22>. +* C API: C API<11>. + +Python 3.8.0 beta 1 + +* Security: Security<18>. +* Core and Builtins: Core and Builtins<25>. +* Library: Library<25>. * Documentation: Documentation<21>. -* Tests: Tests<21>. -* Build: Build<20>. -* Windows: Windows<20>. -* macOS: macOS<17>. +* Tests: Tests<16>. +* Build: Build<14>. +* Windows: Windows<18>. +* macOS: macOS<14>. * IDLE: IDLE<23>. +* Tools/Demos: Tools/Demos<9>. +* C API: C API<12>. + +Python 3.8.0 alpha 4 + +* Security: Security<19>. +* Core and Builtins: Core and Builtins<26>. +* Library: Library<26>. +* Documentation: Documentation<22>. +* Tests: Tests<17>. +* Build: Build<15>. +* Windows: Windows<19>. +* macOS: macOS<15>. +* IDLE: IDLE<24>. * Tools/Demos: Tools/Demos<10>. -* C API: C API<18>. +* C API: C API<13>. + +Python 3.8.0 alpha 3 + +* Security: Security<20>. +* Core and Builtins: Core and Builtins<27>. +* Library: Library<27>. +* Documentation: Documentation<23>. +* Tests: Tests<18>. +* Build: Build<16>. +* Windows: Windows<20>. +* IDLE: IDLE<25>. +* Tools/Demos: Tools/Demos<11>. +* C API: C API<14>. + +Python 3.8.0 alpha 2 + +* Core and Builtins: Core and Builtins<28>. +* Library: Library<28>. +* Documentation: Documentation<24>. +* Tests: Tests<19>. +* Windows: Windows<21>. +* IDLE: IDLE<26>. + +Python 3.8.0 alpha 1 + +* Security: Security<21>. +* Core and Builtins: Core and Builtins<29>. +* Library: Library<29>. +* Documentation: Documentation<25>. +* Tests: Tests<20>. +* Build: Build<17>. +* Windows: Windows<22>. +* macOS: macOS<16>. +* IDLE: IDLE<27>. +* Tools/Demos: Tools/Demos<12>. +* C API: C API<15>. Python 3.7.0 final -* Library: Library<27>. -* C API: C API<19>. +* Library: Library<30>. +* C API: C API<16>. Python 3.7.0 release candidate 1 -* Core and Builtins: Core and Builtins<25>. -* Library: Library<28>. -* Documentation: Documentation<22>. -* Build: Build<21>. -* Windows: Windows<21>. -* IDLE: IDLE<24>. +* Core and Builtins: Core and Builtins<30>. +* Library: Library<31>. +* Documentation: Documentation<26>. +* Build: Build<18>. +* Windows: Windows<23>. +* IDLE: IDLE<28>. Python 3.7.0 beta 5 -* Core and Builtins: Core and Builtins<26>. -* Library: Library<29>. -* Documentation: Documentation<23>. -* Tests: Tests<22>. -* Build: Build<22>. -* macOS: macOS<18>. -* IDLE: IDLE<25>. +* Core and Builtins: Core and Builtins<31>. +* Library: Library<32>. +* Documentation: Documentation<27>. +* Tests: Tests<21>. +* Build: Build<19>. +* macOS: macOS<17>. +* IDLE: IDLE<29>. Python 3.7.0 beta 4 -* Core and Builtins: Core and Builtins<27>. -* Library: Library<30>. -* Documentation: Documentation<24>. -* Tests: Tests<23>. -* Build: Build<23>. -* Windows: Windows<22>. -* macOS: macOS<19>. -* IDLE: IDLE<26>. -* Tools/Demos: Tools/Demos<11>. +* Core and Builtins: Core and Builtins<32>. +* Library: Library<33>. +* Documentation: Documentation<28>. +* Tests: Tests<22>. +* Build: Build<20>. +* Windows: Windows<24>. +* macOS: macOS<18>. +* IDLE: IDLE<30>. +* Tools/Demos: Tools/Demos<13>. Python 3.7.0 beta 3 -* Security: Security<18>. -* Core and Builtins: Core and Builtins<28>. -* Library: Library<31>. -* Documentation: Documentation<25>. -* Tests: Tests<24>. -* Build: Build<24>. -* Windows: Windows<23>. -* macOS: macOS<20>. -* IDLE: IDLE<27>. -* Tools/Demos: Tools/Demos<12>. -* C API: C API<20>. +* Security: Security<22>. +* Core and Builtins: Core and Builtins<33>. +* Library: Library<34>. +* Documentation: Documentation<29>. +* Tests: Tests<23>. +* Build: Build<21>. +* Windows: Windows<25>. +* macOS: macOS<19>. +* IDLE: IDLE<31>. +* Tools/Demos: Tools/Demos<14>. +* C API: C API<17>. Python 3.7.0 beta 2 -* Security: Security<19>. -* Core and Builtins: Core and Builtins<29>. -* Library: Library<32>. -* Documentation: Documentation<26>. -* Tests: Tests<25>. -* Build: Build<25>. -* Windows: Windows<24>. -* macOS: macOS<21>. -* IDLE: IDLE<28>. -* Tools/Demos: Tools/Demos<13>. +* Security: Security<23>. +* Core and Builtins: Core and Builtins<34>. +* Library: Library<35>. +* Documentation: Documentation<30>. +* Tests: Tests<24>. +* Build: Build<22>. +* Windows: Windows<26>. +* macOS: macOS<20>. +* IDLE: IDLE<32>. +* Tools/Demos: Tools/Demos<15>. Python 3.7.0 beta 1 -* Core and Builtins: Core and Builtins<30>. -* Library: Library<33>. -* Documentation: Documentation<27>. -* Tests: Tests<26>. -* Build: Build<26>. -* Windows: Windows<25>. -* macOS: macOS<22>. -* C API: C API<21>. +* Core and Builtins: Core and Builtins<35>. +* Library: Library<36>. +* Documentation: Documentation<31>. +* Tests: Tests<25>. +* Build: Build<23>. +* Windows: Windows<27>. +* macOS: macOS<21>. +* C API: C API<18>. Python 3.7.0 alpha 4 -* Core and Builtins: Core and Builtins<31>. -* Library: Library<34>. -* Documentation: Documentation<28>. -* Tests: Tests<27>. -* Windows: Windows<26>. -* Tools/Demos: Tools/Demos<14>. -* C API: C API<22>. +* Core and Builtins: Core and Builtins<36>. +* Library: Library<37>. +* Documentation: Documentation<32>. +* Tests: Tests<26>. +* Windows: Windows<28>. +* Tools/Demos: Tools/Demos<16>. +* C API: C API<19>. Python 3.7.0 alpha 3 -* Core and Builtins: Core and Builtins<32>. -* Library: Library<35>. -* Documentation: Documentation<29>. -* Tests: Tests<28>. -* Build: Build<27>. -* Windows: Windows<27>. -* macOS: macOS<23>. -* IDLE: IDLE<29>. -* Tools/Demos: Tools/Demos<15>. -* C API: C API<23>. +* Core and Builtins: Core and Builtins<37>. +* Library: Library<38>. +* Documentation: Documentation<33>. +* Tests: Tests<27>. +* Build: Build<24>. +* Windows: Windows<29>. +* macOS: macOS<22>. +* IDLE: IDLE<33>. +* Tools/Demos: Tools/Demos<17>. +* C API: C API<20>. Python 3.7.0 alpha 2 -* Core and Builtins: Core and Builtins<33>. -* Library: Library<36>. -* Documentation: Documentation<30>. -* Build: Build<28>. -* IDLE: IDLE<30>. -* C API: C API<24>. +* Core and Builtins: Core and Builtins<38>. +* Library: Library<39>. +* Documentation: Documentation<34>. +* Build: Build<25>. +* IDLE: IDLE<34>. +* C API: C API<21>. Python 3.7.0 alpha 1 -* Security: Security<20>. -* Core and Builtins: Core and Builtins<34>. -* Library: Library<37>. -* Documentation: Documentation<31>. -* Tests: Tests<29>. -* Build: Build<29>. -* Windows: Windows<28>. -* IDLE: IDLE<31>. -* Tools/Demos: Tools/Demos<16>. -* C API: C API<25>. +* Security: Security<24>. +* Core and Builtins: Core and Builtins<39>. +* Library: Library<40>. +* Documentation: Documentation<35>. +* Tests: Tests<28>. +* Build: Build<26>. +* Windows: Windows<30>. +* IDLE: IDLE<35>. +* Tools/Demos: Tools/Demos<18>. +* C API: C API<22>. Python 3.6.6 release candidate 1 -* Core and Builtins: Core and Builtins<35>. -* Library: Library<38>. -* Documentation: Documentation<32>. -* Tests: Tests<30>. -* Build: Build<30>. -* Windows: Windows<29>. -* macOS: macOS<24>. -* IDLE: IDLE<32>. -* Tools/Demos: Tools/Demos<17>. -* C API: C API<26>. +* Core and Builtins: Core and Builtins<40>. +* Library: Library<41>. +* Documentation: Documentation<36>. +* Tests: Tests<29>. +* Build: Build<27>. +* Windows: Windows<31>. +* macOS: macOS<23>. +* IDLE: IDLE<36>. +* Tools/Demos: Tools/Demos<19>. +* C API: C API<23>. Python 3.6.5 final -* Tests: Tests<31>. -* Build: Build<31>. +* Tests: Tests<30>. +* Build: Build<28>. Python 3.6.5 release candidate 1 -* Security: Security<21>. -* Core and Builtins: Core and Builtins<36>. -* Library: Library<39>. -* Documentation: Documentation<33>. -* Tests: Tests<32>. -* Build: Build<32>. -* Windows: Windows<30>. -* macOS: macOS<25>. -* IDLE: IDLE<33>. -* Tools/Demos: Tools/Demos<18>. -* C API: C API<27>. +* Security: Security<25>. +* Core and Builtins: Core and Builtins<41>. +* Library: Library<42>. +* Documentation: Documentation<37>. +* Tests: Tests<31>. +* Build: Build<29>. +* Windows: Windows<32>. +* macOS: macOS<24>. +* IDLE: IDLE<37>. +* Tools/Demos: Tools/Demos<20>. +* C API: C API<24>. Python 3.6.4 release candidate 1 -* Core and Builtins: Core and Builtins<37>. -* Library: Library<40>. -* Documentation: Documentation<34>. -* Tests: Tests<33>. -* Build: Build<33>. -* Windows: Windows<31>. -* macOS: macOS<26>. -* IDLE: IDLE<34>. -* Tools/Demos: Tools/Demos<19>. -* C API: C API<28>. +* Core and Builtins: Core and Builtins<42>. +* Library: Library<43>. +* Documentation: Documentation<38>. +* Tests: Tests<32>. +* Build: Build<30>. +* Windows: Windows<33>. +* macOS: macOS<25>. +* IDLE: IDLE<38>. +* Tools/Demos: Tools/Demos<21>. +* C API: C API<25>. Python 3.6.3 final -* Library: Library<41>. -* Build: Build<34>. +* Library: Library<44>. +* Build: Build<31>. Python 3.6.3 release candidate 1 -* Security: Security<22>. -* Core and Builtins: Core and Builtins<38>. -* Library: Library<42>. -* Documentation: Documentation<35>. -* Tests: Tests<34>. -* Build: Build<35>. -* Windows: Windows<32>. -* IDLE: IDLE<35>. -* Tools/Demos: Tools/Demos<20>. +* Security: Security<26>. +* Core and Builtins: Core and Builtins<43>. +* Library: Library<45>. +* Documentation: Documentation<39>. +* Tests: Tests<33>. +* Build: Build<32>. +* Windows: Windows<34>. +* IDLE: IDLE<39>. +* Tools/Demos: Tools/Demos<22>. Python 3.6.2 release candidate 2 -* Security: Security<23>. +* Security: Security<27>. Python 3.6.2 release candidate 1 -* Core and Builtins: Core and Builtins<39>. -* Library: Library<43>. -* Security: Security<24>. -* Library: Library<44>. -* IDLE: IDLE<36>. -* C API: C API<29>. -* Build: Build<36>. -* Documentation: Documentation<36>. -* Tools/Demos: Tools/Demos<21>. -* Tests: Tests<35>. -* Windows: Windows<33>. +* Core and Builtins: Core and Builtins<44>. +* Library: Library<46>. +* Security: Security<28>. +* Library: Library<47>. +* IDLE: IDLE<40>. +* C API: C API<26>. +* Build: Build<33>. +* Documentation: Documentation<40>. +* Tools/Demos: Tools/Demos<23>. +* Tests: Tests<34>. +* Windows: Windows<35>. Python 3.6.1 final -* Core and Builtins: Core and Builtins<40>. -* Build: Build<37>. +* Core and Builtins: Core and Builtins<45>. +* Build: Build<34>. Python 3.6.1 release candidate 1 -* Core and Builtins: Core and Builtins<41>. -* Library: Library<45>. -* IDLE: IDLE<37>. -* Windows: Windows<34>. -* C API: C API<30>. -* Documentation: Documentation<37>. -* Tests: Tests<36>. -* Build: Build<38>. +* Core and Builtins: Core and Builtins<46>. +* Library: Library<48>. +* IDLE: IDLE<41>. +* Windows: Windows<36>. +* C API: C API<27>. +* Documentation: Documentation<41>. +* Tests: Tests<35>. +* Build: Build<35>. Python 3.6.0 release candidate 2 -* Core and Builtins: Core and Builtins<42>. -* Tools/Demos: Tools/Demos<22>. -* Windows: Windows<35>. -* Build: Build<39>. +* Core and Builtins: Core and Builtins<47>. +* Tools/Demos: Tools/Demos<24>. +* Windows: Windows<37>. +* Build: Build<36>. Python 3.6.0 release candidate 1 -* Core and Builtins: Core and Builtins<43>. -* Library: Library<46>. -* C API: C API<31>. -* Documentation: Documentation<38>. -* Tools/Demos: Tools/Demos<23>. +* Core and Builtins: Core and Builtins<48>. +* Library: Library<49>. +* C API: C API<28>. +* Documentation: Documentation<42>. +* Tools/Demos: Tools/Demos<25>. Python 3.6.0 beta 4 -* Core and Builtins: Core and Builtins<44>. -* Library: Library<47>. -* Documentation: Documentation<39>. -* Tests: Tests<37>. -* Build: Build<40>. +* Core and Builtins: Core and Builtins<49>. +* Library: Library<50>. +* Documentation: Documentation<43>. +* Tests: Tests<36>. +* Build: Build<37>. Python 3.6.0 beta 3 -* Core and Builtins: Core and Builtins<45>. -* Library: Library<48>. -* Windows: Windows<36>. -* Build: Build<41>. -* Tests: Tests<38>. +* Core and Builtins: Core and Builtins<50>. +* Library: Library<51>. +* Windows: Windows<38>. +* Build: Build<38>. +* Tests: Tests<37>. Python 3.6.0 beta 2 -* Core and Builtins: Core and Builtins<46>. -* Library: Library<49>. -* Windows: Windows<37>. -* C API: C API<32>. -* Build: Build<42>. -* Tests: Tests<39>. +* Core and Builtins: Core and Builtins<51>. +* Library: Library<52>. +* Windows: Windows<39>. +* C API: C API<29>. +* Build: Build<39>. +* Tests: Tests<38>. Python 3.6.0 beta 1 -* Core and Builtins: Core and Builtins<47>. -* Library: Library<50>. -* IDLE: IDLE<38>. -* C API: C API<33>. -* Tests: Tests<40>. -* Build: Build<43>. -* Tools/Demos: Tools/Demos<24>. -* Windows: Windows<38>. +* Core and Builtins: Core and Builtins<52>. +* Library: Library<53>. +* IDLE: IDLE<42>. +* C API: C API<30>. +* Tests: Tests<39>. +* Build: Build<40>. +* Tools/Demos: Tools/Demos<26>. +* Windows: Windows<40>. Python 3.6.0 alpha 4 -* Core and Builtins: Core and Builtins<48>. -* Library: Library<51>. -* IDLE: IDLE<39>. -* Tests: Tests<41>. -* Windows: Windows<39>. -* Build: Build<44>. +* Core and Builtins: Core and Builtins<53>. +* Library: Library<54>. +* IDLE: IDLE<43>. +* Tests: Tests<40>. +* Windows: Windows<41>. +* Build: Build<41>. Python 3.6.0 alpha 3 -* Core and Builtins: Core and Builtins<49>. -* Library: Library<52>. -* Security: Security<25>. -* Library: Library<53>. -* Security: Security<26>. -* Library: Library<54>. -* IDLE: IDLE<40>. -* C API: C API<34>. -* Build: Build<45>. -* Tools/Demos: Tools/Demos<25>. -* Documentation: Documentation<40>. -* Tests: Tests<42>. +* Core and Builtins: Core and Builtins<54>. +* Library: Library<55>. +* Security: Security<29>. +* Library: Library<56>. +* Security: Security<30>. +* Library: Library<57>. +* IDLE: IDLE<44>. +* C API: C API<31>. +* Build: Build<42>. +* Tools/Demos: Tools/Demos<27>. +* Documentation: Documentation<44>. +* Tests: Tests<41>. Python 3.6.0 alpha 2 -* Core and Builtins: Core and Builtins<50>. -* Library: Library<55>. -* Security: Security<27>. -* Library: Library<56>. -* Security: Security<28>. -* Library: Library<57>. -* IDLE: IDLE<41>. -* Documentation: Documentation<41>. -* Tests: Tests<43>. -* Windows: Windows<40>. -* Build: Build<46>. -* Windows: Windows<41>. -* C API: C API<35>. -* Tools/Demos: Tools/Demos<26>. +* Core and Builtins: Core and Builtins<55>. +* Library: Library<58>. +* Security: Security<31>. +* Library: Library<59>. +* Security: Security<32>. +* Library: Library<60>. +* IDLE: IDLE<45>. +* Documentation: Documentation<45>. +* Tests: Tests<42>. +* Windows: Windows<42>. +* Build: Build<43>. +* Windows: Windows<43>. +* C API: C API<32>. +* Tools/Demos: Tools/Demos<28>. Python 3.6.0 alpha 1 -* Core and Builtins: Core and Builtins<51>. -* Library: Library<58>. -* Security: Security<29>. -* Library: Library<59>. -* Security: Security<30>. -* Library: Library<60>. -* Security: Security<31>. +* Core and Builtins: Core and Builtins<56>. * Library: Library<61>. -* IDLE: IDLE<42>. -* Documentation: Documentation<42>. -* Tests: Tests<44>. -* Build: Build<47>. -* Windows: Windows<42>. -* Tools/Demos: Tools/Demos<27>. -* C API: C API<36>. +* Security: Security<33>. +* Library: Library<62>. +* Security: Security<34>. +* Library: Library<63>. +* Security: Security<35>. +* Library: Library<64>. +* IDLE: IDLE<46>. +* Documentation: Documentation<46>. +* Tests: Tests<43>. +* Build: Build<44>. +* Windows: Windows<44>. +* Tools/Demos: Tools/Demos<29>. +* C API: C API<33>. Python 3.5.5 release candidate 1 -* Security: Security<32>. -* Core and Builtins: Core and Builtins<52>. -* Library: Library<62>. +* Security: Security<36>. +* Core and Builtins: Core and Builtins<57>. +* Library: Library<65>. Python 3.5.4 final -* Library: Library<63>. +* Library: Library<66>. Python 3.5.4 release candidate 1 -* Security: Security<33>. -* Core and Builtins: Core and Builtins<53>. -* Library: Library<64>. -* Documentation: Documentation<43>. -* Tests: Tests<45>. -* Build: Build<48>. -* Windows: Windows<43>. -* C API: C API<37>. +* Security: Security<37>. +* Core and Builtins: Core and Builtins<58>. +* Library: Library<67>. +* Documentation: Documentation<47>. +* Tests: Tests<44>. +* Build: Build<45>. +* Windows: Windows<45>. +* C API: C API<34>. Python 3.5.3 release candidate 1 -* Core and Builtins: Core and Builtins<54>. -* Library: Library<65>. -* Security: Security<34>. -* Library: Library<66>. -* Security: Security<35>. -* Library: Library<67>. -* IDLE: IDLE<43>. -* C API: C API<38>. -* Documentation: Documentation<44>. -* Tests: Tests<46>. -* Tools/Demos: Tools/Demos<28>. -* Windows: Windows<44>. -* Build: Build<49>. +* Core and Builtins: Core and Builtins<59>. +* Library: Library<68>. +* Security: Security<38>. +* Library: Library<69>. +* Security: Security<39>. +* Library: Library<70>. +* IDLE: IDLE<47>. +* C API: C API<35>. +* Documentation: Documentation<48>. +* Tests: Tests<45>. +* Tools/Demos: Tools/Demos<30>. +* Windows: Windows<46>. +* Build: Build<46>. Python 3.5.2 final -* Core and Builtins: Core and Builtins<55>. -* Tests: Tests<47>. -* IDLE: IDLE<44>. +* Core and Builtins: Core and Builtins<60>. +* Tests: Tests<46>. +* IDLE: IDLE<48>. Python 3.5.2 release candidate 1 -* Core and Builtins: Core and Builtins<56>. -* Security: Security<36>. -* Library: Library<68>. -* Security: Security<37>. -* Library: Library<69>. -* Security: Security<38>. -* Library: Library<70>. -* Security: Security<39>. -* Library: Library<71>. +* Core and Builtins: Core and Builtins<61>. * Security: Security<40>. +* Library: Library<71>. +* Security: Security<41>. * Library: Library<72>. -* IDLE: IDLE<45>. -* Documentation: Documentation<45>. -* Tests: Tests<48>. -* Build: Build<50>. -* Windows: Windows<45>. -* Tools/Demos: Tools/Demos<29>. -* Windows: Windows<46>. +* Security: Security<42>. +* Library: Library<73>. +* Security: Security<43>. +* Library: Library<74>. +* Security: Security<44>. +* Library: Library<75>. +* IDLE: IDLE<49>. +* Documentation: Documentation<49>. +* Tests: Tests<47>. +* Build: Build<47>. +* Windows: Windows<47>. +* Tools/Demos: Tools/Demos<31>. +* Windows: Windows<48>. Python 3.5.1 final -* Core and Builtins: Core and Builtins<57>. -* Windows: Windows<47>. +* Core and Builtins: Core and Builtins<62>. +* Windows: Windows<49>. Python 3.5.1 release candidate 1 -* Core and Builtins: Core and Builtins<58>. -* Library: Library<73>. -* IDLE: IDLE<46>. -* Documentation: Documentation<46>. -* Tests: Tests<49>. -* Build: Build<51>. -* Windows: Windows<48>. -* Tools/Demos: Tools/Demos<30>. +* Core and Builtins: Core and Builtins<63>. +* Library: Library<76>. +* IDLE: IDLE<50>. +* Documentation: Documentation<50>. +* Tests: Tests<48>. +* Build: Build<48>. +* Windows: Windows<50>. +* Tools/Demos: Tools/Demos<32>. Python 3.5.0 final -* Build: Build<52>. +* Build: Build<49>. Python 3.5.0 release candidate 4 -* Library: Library<74>. -* Build: Build<53>. +* Library: Library<77>. +* Build: Build<50>. Python 3.5.0 release candidate 3 -* Core and Builtins: Core and Builtins<59>. -* Library: Library<75>. +* Core and Builtins: Core and Builtins<64>. +* Library: Library<78>. Python 3.5.0 release candidate 2 -* Core and Builtins: Core and Builtins<60>. -* Library: Library<76>. +* Core and Builtins: Core and Builtins<65>. +* Library: Library<79>. Python 3.5.0 release candidate 1 -* Core and Builtins: Core and Builtins<61>. -* Library: Library<77>. -* IDLE: IDLE<47>. -* Documentation: Documentation<47>. -* Tests: Tests<50>. +* Core and Builtins: Core and Builtins<66>. +* Library: Library<80>. +* IDLE: IDLE<51>. +* Documentation: Documentation<51>. +* Tests: Tests<49>. Python 3.5.0 beta 4 -* Core and Builtins: Core and Builtins<62>. -* Library: Library<78>. -* Build: Build<54>. +* Core and Builtins: Core and Builtins<67>. +* Library: Library<81>. +* Build: Build<51>. Python 3.5.0 beta 3 -* Core and Builtins: Core and Builtins<63>. -* Library: Library<79>. -* Tests: Tests<51>. -* Documentation: Documentation<48>. -* Build: Build<55>. +* Core and Builtins: Core and Builtins<68>. +* Library: Library<82>. +* Tests: Tests<50>. +* Documentation: Documentation<52>. +* Build: Build<52>. Python 3.5.0 beta 2 -* Core and Builtins: Core and Builtins<64>. -* Library: Library<80>. +* Core and Builtins: Core and Builtins<69>. +* Library: Library<83>. Python 3.5.0 beta 1 -* Core and Builtins: Core and Builtins<65>. -* Library: Library<81>. -* IDLE: IDLE<48>. -* Tests: Tests<52>. -* Documentation: Documentation<49>. -* Tools/Demos: Tools/Demos<31>. +* Core and Builtins: Core and Builtins<70>. +* Library: Library<84>. +* IDLE: IDLE<52>. +* Tests: Tests<51>. +* Documentation: Documentation<53>. +* Tools/Demos: Tools/Demos<33>. Python 3.5.0 alpha 4 -* Core and Builtins: Core and Builtins<66>. -* Library: Library<82>. -* Build: Build<56>. -* Tests: Tests<53>. -* Tools/Demos: Tools/Demos<32>. -* C API: C API<39>. +* Core and Builtins: Core and Builtins<71>. +* Library: Library<85>. +* Build: Build<53>. +* Tests: Tests<52>. +* Tools/Demos: Tools/Demos<34>. +* C API: C API<36>. Python 3.5.0 alpha 3 -* Core and Builtins: Core and Builtins<67>. -* Library: Library<83>. -* Build: Build<57>. -* Tests: Tests<54>. -* Tools/Demos: Tools/Demos<33>. +* Core and Builtins: Core and Builtins<72>. +* Library: Library<86>. +* Build: Build<54>. +* Tests: Tests<53>. +* Tools/Demos: Tools/Demos<35>. Python 3.5.0 alpha 2 -* Core and Builtins: Core and Builtins<68>. -* Library: Library<84>. -* Build: Build<58>. -* C API: C API<40>. -* Windows: Windows<49>. +* Core and Builtins: Core and Builtins<73>. +* Library: Library<87>. +* Build: Build<55>. +* C API: C API<37>. +* Windows: Windows<51>. Python 3.5.0 alpha 1 -* Core and Builtins: Core and Builtins<69>. -* Library: Library<85>. -* IDLE: IDLE<49>. -* Build: Build<59>. -* C API: C API<41>. -* Documentation: Documentation<50>. -* Tests: Tests<55>. -* Tools/Demos: Tools/Demos<34>. -* Windows: Windows<50>. +* Core and Builtins: Core and Builtins<74>. +* Library: Library<88>. +* IDLE: IDLE<53>. +* Build: Build<56>. +* C API: C API<38>. +* Documentation: Documentation<54>. +* Tests: Tests<54>. +* Tools/Demos: Tools/Demos<36>. +* Windows: Windows<52>. The Python Tutorial @@ -2387,7 +2332,6 @@ Errors and Exceptions * Exceptions:: * Handling Exceptions:: * Raising Exceptions:: -* Exception Chaining:: * User-defined Exceptions:: * Defining Clean-up Actions:: * Predefined Clean-up Actions:: @@ -2705,7 +2649,7 @@ Naming and binding The import system -* importlib: importlib<8>. +* importlib: importlib<7>. * Packages: Packages<2>. * Searching:: * Loading:: @@ -2909,7 +2853,6 @@ Built-in Types * Set Types — set, frozenset: Set Types — set frozenset. * Mapping Types — dict:: * Context Manager Types:: -* Generic Alias Type:: * Other Built-in Types:: * Special Attributes:: @@ -2950,11 +2893,6 @@ Mapping Types — dict * Dictionary view objects:: -Generic Alias Type - -* Standard Generic Collections:: -* Special Attributes of Generic Alias:: - Other Built-in Types * Modules: Modules<2>. @@ -3101,7 +3039,6 @@ Python Specific Encodings Data Types * datetime — Basic date and time types:: -* zoneinfo — IANA time zone support:: * calendar — General calendar-related functions:: * collections — Container datatypes:: * collections.abc — Abstract Base Classes for Containers: collections abc — Abstract Base Classes for Containers. @@ -3114,7 +3051,6 @@ Data Types * pprint — Data pretty printer:: * reprlib — Alternate repr() implementation: reprlib — Alternate repr implementation. * enum — Support for enumerations:: -* graphlib — Functionality to operate with graph-like structures:: datetime — Basic date and time types @@ -3155,30 +3091,6 @@ strftime() and strptime() Behavior * strftime() and strptime() Format Codes: strftime and strptime Format Codes. * Technical Detail:: -zoneinfo — IANA time zone support - -* Using ZoneInfo:: -* Data sources:: -* The ZoneInfo class:: -* Functions: Functions<2>. -* Globals:: -* Exceptions and warnings:: - -Data sources - -* Configuring the data sources:: - -Configuring the data sources - -* Compile-time configuration:: -* Environment configuration:: -* Runtime configuration:: - -The ZoneInfo class - -* String representations:: -* Pickle serialization:: - collections — Container datatypes * ChainMap objects:: @@ -3297,16 +3209,11 @@ Finer Points * Supported __dunder__ names:: * Supported _sunder_ names:: -* _Private__names:: * Enum member type:: * Boolean value of Enum classes and members:: * Enum classes with methods:: * Combining members of Flag:: -graphlib — Functionality to operate with graph-like structures - -* Exceptions: Exceptions<3>. - Numeric and Mathematical Modules * numbers — Numeric abstract base classes:: @@ -3371,21 +3278,19 @@ Floating Point Notes random — Generate pseudo-random numbers * Bookkeeping functions:: -* Functions for bytes:: * Functions for integers:: * Functions for sequences:: * Real-valued distributions:: * Alternative Generator:: * Notes on Reproducibility:: -* Examples: Examples<3>. -* Recipes: Recipes<2>. +* Examples and Recipes:: statistics — Mathematical statistics functions * Averages and measures of central location:: * Measures of spread:: * Function details:: -* Exceptions: Exceptions<4>. +* Exceptions: Exceptions<3>. * NormalDist objects:: NormalDist objects @@ -3449,7 +3354,7 @@ filecmp — File and Directory Comparisons tempfile — Generate temporary files and directories -* Examples: Examples<4>. +* Examples: Examples<3>. * Deprecated functions and variables:: shutil — High-level file operations @@ -3489,7 +3394,7 @@ pickle — Python object serialization * Out-of-band Buffers:: * Restricting Globals:: * Performance: Performance<2>. -* Examples: Examples<5>. +* Examples: Examples<4>. Relationship to other Python modules @@ -3529,7 +3434,7 @@ sqlite3 — DB-API 2.0 interface for SQLite databases * Connection Objects:: * Cursor Objects:: * Row Objects:: -* Exceptions: Exceptions<5>. +* Exceptions: Exceptions<4>. * SQLite and Python types:: * Controlling Transactions:: * Using sqlite3 efficiently:: @@ -3583,7 +3488,7 @@ lzma — Compression using the LZMA algorithm * Compressing and decompressing data in memory:: * Miscellaneous: Miscellaneous<2>. * Specifying custom filter chains:: -* Examples: Examples<6>. +* Examples: Examples<5>. zipfile — Work with ZIP archives @@ -3611,7 +3516,7 @@ tarfile — Read and write tar archive files * TarFile Objects:: * TarInfo Objects:: * Command-Line Interface: Command-Line Interface<2>. -* Examples: Examples<7>. +* Examples: Examples<6>. * Supported tar formats:: * Unicode issues:: @@ -3625,7 +3530,7 @@ File Formats * configparser — Configuration file parser:: * netrc — netrc file processing:: * xdrlib — Encode and decode XDR data:: -* plistlib — Generate and parse Apple .plist files: plistlib — Generate and parse Apple plist files. +* plistlib — Generate and parse Mac OS X .plist files: plistlib — Generate and parse Mac OS X plist files. csv — CSV File Reading and Writing @@ -3633,7 +3538,7 @@ csv — CSV File Reading and Writing * Dialects and Formatting Parameters:: * Reader Objects:: * Writer Objects:: -* Examples: Examples<8>. +* Examples: Examples<7>. configparser — Configuration file parser @@ -3647,7 +3552,7 @@ configparser — Configuration file parser * Legacy API Examples:: * ConfigParser Objects:: * RawConfigParser Objects:: -* Exceptions: Exceptions<6>. +* Exceptions: Exceptions<5>. netrc — netrc file processing @@ -3657,11 +3562,11 @@ xdrlib — Encode and decode XDR data * Packer Objects:: * Unpacker Objects:: -* Exceptions: Exceptions<7>. +* Exceptions: Exceptions<6>. -plistlib — Generate and parse Apple .plist files +plistlib — Generate and parse Mac OS X .plist files -* Examples: Examples<9>. +* Examples: Examples<8>. Cryptographic Services @@ -3680,7 +3585,7 @@ BLAKE2 * Creating hash objects:: * Constants: Constants<5>. -* Examples: Examples<10>. +* Examples: Examples<9>. * Credits:: Examples @@ -3772,7 +3677,7 @@ Performance time — Time access and conversions -* Functions: Functions<3>. +* Functions: Functions<2>. * Clock ID Constants:: * Timezone Constants:: @@ -3805,7 +3710,6 @@ ArgumentParser objects * allow_abbrev:: * conflict_handler:: * add_help:: -* exit_on_error:: The add_argument() method @@ -3896,7 +3800,7 @@ logging.handlers — Logging handlers curses — Terminal handling for character-cell displays -* Functions: Functions<4>. +* Functions: Functions<3>. * Window Objects:: * Constants: Constants<6>. @@ -3906,7 +3810,7 @@ curses.textpad — Text input widget for curses programs curses.panel — A panel stack extension for curses -* Functions: Functions<5>. +* Functions: Functions<4>. * Panel Objects:: platform — Access to underlying platform’s identifying data @@ -3969,6 +3873,8 @@ Concurrent Execution * queue — A synchronized queue class:: * contextvars — Context Variables:: * _thread — Low-level threading API:: +* _dummy_thread — Drop-in replacement for the _thread module:: +* dummy_threading — Drop-in replacement for the threading module:: threading — Thread-based parallelism @@ -3992,7 +3898,7 @@ multiprocessing — Process-based parallelism * Introduction: Introduction<8>. * Reference:: * Programming guidelines:: -* Examples: Examples<11>. +* Examples: Examples<10>. Introduction @@ -4073,7 +3979,7 @@ Using the subprocess Module * Frequently Used Arguments:: * Popen Constructor:: -* Exceptions: Exceptions<8>. +* Exceptions: Exceptions<7>. Windows Popen Helpers @@ -4126,7 +4032,7 @@ asyncio — Asynchronous I/O * Synchronization Primitives:: * Subprocesses:: * Queues:: -* Exceptions: Exceptions<10>. +* Exceptions: Exceptions<9>. * Event Loop:: * Futures:: * Transports and Protocols:: @@ -4147,7 +4053,6 @@ Coroutines and Tasks * Shielding From Cancellation:: * Timeouts:: * Waiting Primitives:: -* Running in Threads:: * Scheduling From Other Threads:: * Introspection:: * Task Object:: @@ -4157,7 +4062,7 @@ Streams * StreamReader:: * StreamWriter:: -* Examples: Examples<12>. +* Examples: Examples<11>. Examples @@ -4183,15 +4088,15 @@ Subprocesses Interacting with Subprocesses * Subprocess and Threads:: -* Examples: Examples<13>. +* Examples: Examples<12>. Queues * Queue:: * Priority Queue:: * LIFO Queue:: -* Exceptions: Exceptions<9>. -* Examples: Examples<14>. +* Exceptions: Exceptions<8>. +* Examples: Examples<13>. Event Loop @@ -4199,7 +4104,7 @@ Event Loop * Callback Handles:: * Server Objects:: * Event Loop Implementations:: -* Examples: Examples<15>. +* Examples: Examples<14>. Event Loop Methods @@ -4237,7 +4142,7 @@ Transports and Protocols * Transports:: * Protocols:: -* Examples: Examples<16>. +* Examples: Examples<15>. Transports @@ -4276,8 +4181,8 @@ Policies Platform Support * All Platforms:: -* Windows: Windows<51>. -* macOS: macOS<27>. +* Windows: Windows<53>. +* macOS: macOS<26>. Windows @@ -4290,7 +4195,7 @@ High-level API Index * Subprocesses: Subprocesses<2>. * Streams: Streams<2>. * Synchronization:: -* Exceptions: Exceptions<11>. +* Exceptions: Exceptions<10>. Low-level API Index @@ -4319,9 +4224,9 @@ socket — Low-level networking interface Module contents -* Exceptions: Exceptions<12>. +* Exceptions: Exceptions<11>. * Constants: Constants<8>. -* Functions: Functions<6>. +* Functions: Functions<5>. Functions @@ -4339,7 +4244,7 @@ ssl — TLS/SSL wrapper for socket objects * SSL Sockets:: * SSL Contexts:: * Certificates:: -* Examples: Examples<17>. +* Examples: Examples<16>. * Notes on non-blocking sockets:: * Memory BIO Support: Memory BIO Support<2>. * SSL session:: @@ -4351,7 +4256,7 @@ Functions, Constants, and Exceptions * Socket creation:: * Context creation:: -* Exceptions: Exceptions<13>. +* Exceptions: Exceptions<12>. * Random generation:: * Certificate handling:: * Constants: Constants<9>. @@ -4393,7 +4298,7 @@ selectors — High-level I/O multiplexing * Introduction: Introduction<9>. * Classes: Classes<3>. -* Examples: Examples<18>. +* Examples: Examples<17>. asyncore — Asynchronous socket handler @@ -4465,7 +4370,7 @@ json — JSON encoder and decoder * Basic Usage:: * Encoders and Decoders:: -* Exceptions: Exceptions<14>. +* Exceptions: Exceptions<13>. * Standard Compliance and Interoperability:: * Command Line Interface: Command Line Interface<2>. @@ -4485,8 +4390,8 @@ mailbox — Manipulate mailboxes in various formats * Mailbox objects:: * Message objects:: -* Exceptions: Exceptions<15>. -* Examples: Examples<19>. +* Exceptions: Exceptions<14>. +* Examples: Examples<18>. Mailbox objects @@ -4532,7 +4437,7 @@ html.parser — Simple HTML and XHTML parser * Example HTML Parser Application:: * HTMLParser Methods:: -* Examples: Examples<20>. +* Examples: Examples<19>. XML Processing Modules @@ -4565,7 +4470,7 @@ XPath support Reference -* Functions: Functions<7>. +* Functions: Functions<6>. XInclude support @@ -4573,14 +4478,14 @@ XInclude support Reference -* Functions: Functions<8>. +* Functions: Functions<7>. * Element Objects:: * ElementTree Objects:: * QName Objects:: * TreeBuilder Objects:: * XMLParser Objects:: * XMLPullParser Objects:: -* Exceptions: Exceptions<16>. +* Exceptions: Exceptions<15>. xml.dom — The Document Object Model API @@ -4601,7 +4506,7 @@ Objects in the DOM * Comment Objects:: * Text and CDATASection Objects:: * ProcessingInstruction Objects:: -* Exceptions: Exceptions<17>. +* Exceptions: Exceptions<16>. Conformance @@ -4686,7 +4591,7 @@ cgi — Common Gateway Interface support * Introduction: Introduction<10>. * Using the cgi module:: * Higher Level Interface:: -* Functions: Functions<9>. +* Functions: Functions<8>. * Caring about security:: * Installing your CGI script on a Unix system:: * Testing your CGI script:: @@ -4700,7 +4605,7 @@ wsgiref — WSGI Utilities and Reference Implementation * wsgiref.simple_server – a simple WSGI HTTP server: wsgiref simple_server – a simple WSGI HTTP server. * wsgiref.validate — WSGI conformance checker: wsgiref validate — WSGI conformance checker. * wsgiref.handlers – server/gateway base classes: wsgiref handlers – server/gateway base classes. -* Examples: Examples<21>. +* Examples: Examples<20>. urllib.request — Extensible library for opening URLs @@ -4726,7 +4631,7 @@ urllib.request — Extensible library for opening URLs * CacheFTPHandler Objects:: * UnknownHandler Objects:: * HTTPErrorProcessor Objects:: -* Examples: Examples<22>. +* Examples: Examples<21>. * Legacy interface:: * urllib.request Restrictions: urllib request Restrictions. @@ -4745,7 +4650,7 @@ http.client — HTTP protocol client * HTTPConnection Objects:: * HTTPResponse Objects:: -* Examples: Examples<23>. +* Examples: Examples<22>. * HTTPMessage Objects:: ftplib — FTP protocol client @@ -4800,7 +4705,7 @@ socketserver — A framework for network servers * Server Creation Notes:: * Server Objects: Server Objects<2>. * Request Handler Objects:: -* Examples: Examples<24>. +* Examples: Examples<23>. Examples @@ -4821,7 +4726,7 @@ http.cookiejar — Cookie handling for HTTP clients * CookiePolicy Objects:: * DefaultCookiePolicy Objects:: * Cookie Objects: Cookie Objects<2>. -* Examples: Examples<25>. +* Examples: Examples<24>. xmlrpc.client — XML-RPC client access @@ -5021,15 +4926,10 @@ shlex — Simple lexical analysis Graphical User Interfaces with Tk * tkinter — Python interface to Tcl/Tk:: -* tkinter.colorchooser — Color choosing dialog: tkinter colorchooser — Color choosing dialog. -* tkinter.font — Tkinter font wrapper: tkinter font — Tkinter font wrapper. -* Tkinter Dialogs:: -* tkinter.messagebox — Tkinter message prompts: tkinter messagebox — Tkinter message prompts. -* tkinter.scrolledtext — Scrolled Text Widget: tkinter scrolledtext — Scrolled Text Widget. -* tkinter.dnd — Drag and drop support: tkinter dnd — Drag and drop support. * tkinter.ttk — Tk themed widgets: tkinter ttk — Tk themed widgets. * tkinter.tix — Extension widgets for Tk: tkinter tix — Extension widgets for Tk. -* IDLE: IDLE<50>. +* tkinter.scrolledtext — Scrolled Text Widget: tkinter scrolledtext — Scrolled Text Widget. +* IDLE: IDLE<54>. * Other Graphical User Interface Packages:: tkinter — Python interface to Tcl/Tk @@ -5059,16 +4959,6 @@ Handy Reference * The index Parameter:: * Images:: -Tkinter Dialogs - -* tkinter.simpledialog — Standard Tkinter input dialogs: tkinter simpledialog — Standard Tkinter input dialogs. -* tkinter.filedialog — File selection dialogs: tkinter filedialog — File selection dialogs. -* tkinter.commondialog — Dialog window templates: tkinter commondialog — Dialog window templates. - -tkinter.filedialog — File selection dialogs - -* Native Load/Save Dialogs:: - tkinter.ttk — Tk themed widgets * Using Ttk:: @@ -5207,10 +5097,6 @@ Development Tools * typing — Support for type hints:: * pydoc — Documentation generator and online help system:: -* Python Development Mode:: -* Effects of the Python Development Mode:: -* ResourceWarning Example:: -* Bad file descriptor error example:: * doctest — Test interactive Python examples:: * unittest — Unit testing framework:: * unittest.mock — mock object library: unittest mock — mock object library. @@ -5218,9 +5104,7 @@ Development Tools * 2to3 - Automated Python 2 to 3 code translation:: * test — Regression tests package for Python:: * test.support — Utilities for the Python test suite: test support — Utilities for the Python test suite. -* test.support.socket_helper — Utilities for socket tests: test support socket_helper — Utilities for socket tests. * test.support.script_helper — Utilities for the Python execution tests: test support script_helper — Utilities for the Python execution tests. -* test.support.bytecode_helper — Support tools for testing correct bytecode generation: test support bytecode_helper — Support tools for testing correct bytecode generation. typing — Support for type hints @@ -5231,37 +5115,7 @@ typing — Support for type hints * User-defined generic types:: * The Any type:: * Nominal vs structural subtyping:: -* Module contents: Module contents<3>. - -Module contents - -* Special typing primitives:: -* Generic concrete collections:: -* Abstract Base Classes:: -* Protocols: Protocols<3>. -* Functions and decorators:: -* Introspection helpers:: -* Constant:: - -Special typing primitives - -* Special types:: -* Special forms:: -* Building generic types:: -* Other special directives:: - -Generic concrete collections - -* Corresponding to built-in types:: -* Corresponding to types in collections:: -* Other concrete types:: - -Abstract Base Classes - -* Corresponding to collections in collections.abc: Corresponding to collections in collections abc. -* Corresponding to other types in collections.abc: Corresponding to other types in collections abc. -* Asynchronous programming:: -* Context manager types:: +* Classes, functions, and decorators: Classes functions and decorators. doctest — Test interactive Python examples @@ -5461,7 +5315,7 @@ timeit — Measure execution time of small code snippets * Basic Examples: Basic Examples<2>. * Python Interface:: * Command-Line Interface: Command-Line Interface<4>. -* Examples: Examples<26>. +* Examples: Examples<25>. trace — Trace or track Python statement execution @@ -5476,7 +5330,7 @@ Command-Line Usage tracemalloc — Trace memory allocations -* Examples: Examples<27>. +* Examples: Examples<26>. * API:: Examples @@ -5486,13 +5340,9 @@ Examples * Get the traceback of a memory block:: * Pretty top:: -Pretty top - -* Record the current and peak size of all traced memory blocks:: - API -* Functions: Functions<10>. +* Functions: Functions<9>. * DomainFilter:: * Filter:: * Frame:: @@ -5525,7 +5375,7 @@ zipapp — Manage executable Python zip archives * Basic Example:: * Command-Line Interface: Command-Line Interface<5>. * Python API:: -* Examples: Examples<28>. +* Examples: Examples<27>. * Specifying the Interpreter:: * Creating Standalone Applications with zipapp:: * The Python Zip Application Archive Format:: @@ -5585,12 +5435,12 @@ dataclasses — Data Classes * Inheritance: Inheritance<2>. * Default factory functions:: * Mutable default values:: -* Exceptions: Exceptions<18>. +* Exceptions: Exceptions<17>. contextlib — Utilities for with-statement contexts * Utilities:: -* Examples and Recipes:: +* Examples and Recipes: Examples and Recipes<2>. * Single use, reusable and reentrant context managers: Single use reusable and reentrant context managers. Examples and Recipes @@ -5632,7 +5482,7 @@ inspect — Inspect live objects site — Site-specific configuration hook * Readline configuration:: -* Module contents: Module contents<4>. +* Module contents: Module contents<3>. * Command Line Interface: Command Line Interface<4>. Custom Python Interpreters @@ -5657,7 +5507,7 @@ Importing Modules zipimport — Import modules from Zip archives * zipimporter Objects:: -* Examples: Examples<29>. +* Examples: Examples<28>. modulefinder — Find modules used by a script @@ -5666,12 +5516,12 @@ modulefinder — Find modules used by a script importlib — The implementation of import * Introduction: Introduction<12>. -* Functions: Functions<11>. +* Functions: Functions<10>. * importlib.abc – Abstract base classes related to import: importlib abc – Abstract base classes related to import. * importlib.resources – Resources: importlib resources – Resources. * importlib.machinery – Importers and path hooks: importlib machinery – Importers and path hooks. * importlib.util – Utility code for importers: importlib util – Utility code for importers. -* Examples: Examples<30>. +* Examples: Examples<29>. Examples @@ -5723,30 +5573,9 @@ parser — Access Python parse trees ast — Abstract Syntax Trees -* Abstract Grammar:: * Node classes:: +* Abstract Grammar:: * ast Helpers:: -* Compiler Flags:: -* Command-Line Usage: Command-Line Usage<2>. - -Node classes - -* Literals: Literals<3>. -* Variables:: -* Expressions: Expressions<2>. -* Statements:: -* Control flow:: -* Function and class definitions:: -* Async and await:: - -Expressions - -* Subscripting:: -* Comprehensions:: - -Statements - -* Imports:: symtable — Access to the compiler’s symbol tables @@ -5756,8 +5585,8 @@ symtable — Access to the compiler’s symbol tables tokenize — Tokenizer for Python source * Tokenizing Input:: -* Command-Line Usage: Command-Line Usage<3>. -* Examples: Examples<31>. +* Command-Line Usage: Command-Line Usage<2>. +* Examples: Examples<30>. pyclbr — Python module browser support @@ -5824,7 +5653,7 @@ msvcrt — Useful routines from the MS VC++ runtime winreg — Windows registry access -* Functions: Functions<12>. +* Functions: Functions<11>. * Constants: Constants<10>. * Registry Handle Objects:: @@ -5864,7 +5693,7 @@ crypt — Function to check Unix passwords * Hashing Methods:: * Module Attributes:: * Module Functions: Module Functions<2>. -* Examples: Examples<32>. +* Examples: Examples<31>. termios — POSIX style tty control @@ -5885,7 +5714,7 @@ resource — Resource usage information syslog — Unix syslog library routines -* Examples: Examples<33>. +* Examples: Examples<32>. Examples @@ -5959,7 +5788,7 @@ Extending optparse imp — Access the import internals -* Examples: Examples<34>. +* Examples: Examples<33>. Undocumented Modules @@ -6070,7 +5899,7 @@ Introduction * Include Files:: * Useful macros:: * Objects, Types and Reference Counts: Objects Types and Reference Counts. -* Exceptions: Exceptions<19>. +* Exceptions: Exceptions<18>. * Embedding Python: Embedding Python<2>. * Debugging Builds:: @@ -6129,7 +5958,6 @@ Codec registry and support functions Abstract Objects Layer * Object Protocol:: -* Call Protocol:: * Number Protocol:: * Sequence Protocol:: * Mapping Protocol:: @@ -6137,18 +5965,6 @@ Abstract Objects Layer * Buffer Protocol:: * Old Buffer Protocol:: -Call Protocol - -* The tp_call Protocol:: -* The Vectorcall Protocol:: -* Object Calling API:: -* Call Support API:: - -The Vectorcall Protocol - -* Recursion Control: Recursion Control<2>. -* Vectorcall Support API:: - Buffer Protocol * Buffer structure:: @@ -6273,7 +6089,6 @@ Other Objects * Coroutine Objects: Coroutine Objects<2>. * Context Variables Objects:: * DateTime Objects: DateTime Objects<2>. -* Objects for Type Hinting:: Module Objects @@ -6334,7 +6149,6 @@ Python Initialization Configuration * Python Configuration:: * Path Configuration:: * Py_RunMain(): Py_RunMain. -* Py_GetArgcArgv(): Py_GetArgcArgv. * Multi-Phase Initialization Private Provisional API:: Memory Management @@ -6347,7 +6161,7 @@ Memory Management * Customize Memory Allocators:: * The pymalloc allocator:: * tracemalloc C API:: -* Examples: Examples<35>. +* Examples: Examples<34>. The pymalloc allocator @@ -6364,15 +6178,9 @@ Object Implementation Support * Buffer Object Structures:: * Async Object Structures:: * Slot Type typedefs:: -* Examples: Examples<36>. +* Examples: Examples<35>. * Supporting Cyclic Garbage Collection:: -Common Object Structures - -* Base object types and macros:: -* Implementing functions and methods:: -* Accessing attributes of extension types:: - Type Objects * Quick Reference:: @@ -6483,46 +6291,14 @@ Displaying Text Descriptor HowTo Guide -* Primer:: -* Complete Practical Example:: -* Technical Tutorial:: -* Pure Python Equivalents:: - -Primer - -* Simple example; A descriptor that returns a constant: Simple example A descriptor that returns a constant. -* Dynamic lookups:: -* Managed attributes:: -* Customized names:: -* Closing thoughts:: - -Complete Practical Example - -* Validator class:: -* Custom validators:: -* Practical application:: - -Technical Tutorial - * Abstract:: -* Definition and introduction:: -* Descriptor protocol:: -* Overview of descriptor invocation:: -* Invocation from an instance:: -* Invocation from a class:: -* Invocation from super:: -* Summary of invocation logic:: -* Automatic name notification:: -* ORM example:: - -Pure Python Equivalents - +* Definition and Introduction:: +* Descriptor Protocol:: +* Invoking Descriptors: Invoking Descriptors<2>. +* Descriptor Example:: * Properties:: -* Functions and methods:: -* Kinds of methods:: -* Static methods:: -* Class methods:: -* Member objects and __slots__:: +* Functions and Methods:: +* Static Methods and Class Methods:: Functional Programming HOWTO @@ -6870,7 +6646,7 @@ Instrumenting CPython with DTrace and SystemTap * Static SystemTap markers:: * Available static markers:: * SystemTap Tapsets:: -* Examples: Examples<37>. +* Examples: Examples<36>. Python Frequently Asked Questions @@ -7001,7 +6777,6 @@ Objects * My class defines __del__ but it is not called when I delete the object.: My class defines __del__ but it is not called when I delete the object. * How do I get a list of all instances of a given class?:: * Why does the result of id() appear to be not unique?: Why does the result of id appear to be not unique?. -* When can I rely on identity tests with the is operator?:: Modules @@ -7038,7 +6813,6 @@ Design and History FAQ * Why is there no goto?:: * Why can’t raw strings (r-strings) end with a backslash?: Why can’t raw strings r-strings end with a backslash?. * Why doesn’t Python have a “with” statement for attribute assignments?:: -* Why don’t generators support the with statement?:: * Why are colons required for the if/while/def/class statements?:: * Why does Python allow commas at the end of lists and tuples?:: @@ -7179,11 +6953,11 @@ History and License Terms and conditions for accessing or otherwise using Python -* PSF LICENSE AGREEMENT FOR PYTHON 3.9.6: PSF LICENSE AGREEMENT FOR PYTHON 3 9 6. +* PSF LICENSE AGREEMENT FOR PYTHON 3.8.12: PSF LICENSE AGREEMENT FOR PYTHON 3 8 12. * BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0: BEOPEN COM LICENSE AGREEMENT FOR PYTHON 2 0. * CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1: CNRI LICENSE AGREEMENT FOR PYTHON 1 6 1. * CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2: CWI LICENSE AGREEMENT FOR PYTHON 0 9 0 THROUGH 1 2. -* ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON 3.9.6 DOCUMENTATION: ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON 3 9 6 DOCUMENTATION. +* ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON 3.8.12 DOCUMENTATION: ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON 3 8 12 DOCUMENTATION. Licenses and Acknowledgements for Incorporated Software @@ -7396,7 +7170,6 @@ for anyone wishing to stay up-to-date after a new release. * Menu: -* What’s New In Python 3.9: What’s New In Python 3 9. * What’s New In Python 3.8: What’s New In Python 3 8. * What’s New In Python 3.7: What’s New In Python 3 7. * What’s New In Python 3.6: What’s New In Python 3 6. @@ -7417,2540 +7190,50 @@ for anyone wishing to stay up-to-date after a new release. * Changelog::  -File: python.info, Node: What’s New In Python 3 9, Next: What’s New In Python 3 8, Up: What’s New in Python +File: python.info, Node: What’s New In Python 3 8, Next: What’s New In Python 3 7, Up: What’s New in Python -1.1 What’s New In Python 3.9 -============================ - - -Release: 3.9.6 - - -Date: August 13, 2021 - - -Editor: Łukasz Langa - -This article explains the new features in Python 3.9, compared to 3.8. -Python 3.9 was released on October 5th, 2020. - -For full details, see the *note changelog: 156. - -See also -........ - -PEP 596(1) - Python 3.9 Release Schedule - -* Menu: - -* Summary – Release highlights:: -* You should check for DeprecationWarning in your code:: -* New Features:: -* Other Language Changes:: -* New Modules:: -* Improved Modules:: -* Optimizations:: -* Deprecated:: -* Removed:: -* Porting to Python 3.9: Porting to Python 3 9. -* Build Changes:: -* C API Changes:: -* Notable changes in Python 3.9.1: Notable changes in Python 3 9 1. -* Notable changes in Python 3.9.2: Notable changes in Python 3 9 2. -* Notable changes in Python 3.9.3: Notable changes in Python 3 9 3. -* Notable changes in Python 3.9.5: Notable changes in Python 3 9 5. - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0596 - - -File: python.info, Node: Summary – Release highlights, Next: You should check for DeprecationWarning in your code, Up: What’s New In Python 3 9 - -1.1.1 Summary – Release highlights ----------------------------------- - -New syntax features: - - * PEP 584(1), union operators added to ‘dict’; - - * PEP 585(2), type hinting generics in standard collections; - - * PEP 614(3), relaxed grammar restrictions on decorators. - -New built-in features: - - * PEP 616(4), string methods to remove prefixes and suffixes. - -New features in the standard library: - - * PEP 593(5), flexible function and variable annotations; - - * *note os.pidfd_open(): 158. added that allows process management - without races and signals. - -Interpreter improvements: - - * PEP 573(6), fast access to module state from methods of C extension - types; - - * PEP 617(7), CPython now uses a new parser based on PEG; - - * a number of Python builtins (range, tuple, set, frozenset, list, - dict) are now sped up using PEP 590(8) vectorcall; - - * garbage collection does not block on resurrected objects; - - * a number of Python modules (‘_abc’, *note audioop: c, ‘_bz2’, - ‘_codecs’, ‘_contextvars’, ‘_crypt’, ‘_functools’, ‘_json’, - ‘_locale’, *note math: b1, *note operator: c2, *note resource: e0, - *note time: 10c, ‘_weakref’) now use multiphase initialization as - defined by PEP 489; - - * a number of standard library modules (*note audioop: c, *note ast: - 7, *note grp: 8a, ‘_hashlib’, *note pwd: d6, ‘_posixsubprocess’, - *note random: dc, *note select: e5, *note struct: f8, *note - termios: 104, *note zlib: 14d.) are now using the stable ABI - defined by PEP 384. - -New library modules: - - * PEP 615(9), the IANA Time Zone Database is now present in the - standard library in the *note zoneinfo: 14e. module; - - * an implementation of a topological sort of a graph is now provided - in the new *note graphlib: 89. module. - -Release process changes: - - * PEP 602(10), CPython adopts an annual release cycle. - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0584 - - (2) https://www.python.org/dev/peps/pep-0585 - - (3) https://www.python.org/dev/peps/pep-0614 - - (4) https://www.python.org/dev/peps/pep-0616 - - (5) https://www.python.org/dev/peps/pep-0593 - - (6) https://www.python.org/dev/peps/pep-0573 - - (7) https://www.python.org/dev/peps/pep-0617 - - (8) https://www.python.org/dev/peps/pep-0590 - - (9) https://www.python.org/dev/peps/pep-0615 - - (10) https://www.python.org/dev/peps/pep-0602 - - -File: python.info, Node: You should check for DeprecationWarning in your code, Next: New Features, Prev: Summary – Release highlights, Up: What’s New In Python 3 9 - -1.1.2 You should check for DeprecationWarning in your code ----------------------------------------------------------- - -When Python 2.7 was still supported, a lot of functionality in Python 3 -was kept for backward compatibility with Python 2.7. With the end of -Python 2 support, these backward compatibility layers have been removed, -or will be removed soon. Most of them emitted a *note -DeprecationWarning: 15a. warning for several years. For example, using -‘collections.Mapping’ instead of ‘collections.abc.Mapping’ emits a *note -DeprecationWarning: 15a. since Python 3.3, released in 2012. - -Test your application with the *note -W: 15b. ‘default’ command-line -option to see *note DeprecationWarning: 15a. and *note -PendingDeprecationWarning: 15c, or even with *note -W: 15b. ‘error’ to -treat them as errors. *note Warnings Filter: 15d. can be used to ignore -warnings from third-party code. - -Python 3.9 is the last version providing those Python 2 backward -compatibility layers, to give more time to Python projects maintainers -to organize the removal of the Python 2 support and add support for -Python 3.9. - -Aliases to *note Abstract Base Classes: 15e. in the *note collections: -1d. module, like ‘collections.Mapping’ alias to *note -collections.abc.Mapping: 15f, are kept for one last release for backward -compatibility. They will be removed from Python 3.10. - -More generally, try to run your tests in the *note Python Development -Mode: 160. which helps to prepare your code to make it compatible with -the next Python version. - -Note: a number of pre-existing deprecations were removed in this version -of Python as well. Consult the *note Removed: 161. section. - - -File: python.info, Node: New Features, Next: Other Language Changes, Prev: You should check for DeprecationWarning in your code, Up: What’s New In Python 3 9 - -1.1.3 New Features ------------------- - -* Menu: - -* Dictionary Merge & Update Operators:: -* New String Methods to Remove Prefixes and Suffixes:: -* Type Hinting Generics in Standard Collections:: -* New Parser:: - - -File: python.info, Node: Dictionary Merge & Update Operators, Next: New String Methods to Remove Prefixes and Suffixes, Up: New Features - -1.1.3.1 Dictionary Merge & Update Operators -........................................... - -Merge (‘|’) and update (‘|=’) operators have been added to the built-in -*note dict: 164. class. Those complement the existing ‘dict.update’ and -‘{**d1, **d2}’ methods of merging dictionaries. - -Example: - - >>> x = {"key1": "value1 from x", "key2": "value2 from x"} - >>> y = {"key2": "value2 from y", "key3": "value3 from y"} - >>> x | y - {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'} - >>> y | x - {'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'} - -See PEP 584(1) for a full description. (Contributed by Brandt Bucher in -bpo-36144(2).) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0584 - - (2) https://bugs.python.org/issue36144 - - -File: python.info, Node: New String Methods to Remove Prefixes and Suffixes, Next: Type Hinting Generics in Standard Collections, Prev: Dictionary Merge & Update Operators, Up: New Features - -1.1.3.2 New String Methods to Remove Prefixes and Suffixes -.......................................................... - -*note str.removeprefix(prefix): 166. and *note str.removesuffix(suffix): -167. have been added to easily remove an unneeded prefix or a suffix -from a string. Corresponding ‘bytes’, ‘bytearray’, and -‘collections.UserString’ methods have also been added. See PEP 616(1) -for a full description. (Contributed by Dennis Sweeney in -bpo-39939(2).) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0616 - - (2) https://bugs.python.org/issue39939 - - -File: python.info, Node: Type Hinting Generics in Standard Collections, Next: New Parser, Prev: New String Methods to Remove Prefixes and Suffixes, Up: New Features - -1.1.3.3 Type Hinting Generics in Standard Collections -..................................................... - -In type annotations you can now use built-in collection types such as -‘list’ and ‘dict’ as generic types instead of importing the -corresponding capitalized types (e.g. ‘List’ or ‘Dict’) from ‘typing’. -Some other types in the standard library are also now generic, for -example ‘queue.Queue’. - -Example: - - def greet_all(names: list[str]) -> None: - for name in names: - print("Hello", name) - -See PEP 585(1) for more details. (Contributed by Guido van Rossum, -Ethan Smith, and Batuhan Taşkaya in bpo-39481(2).) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0585 - - (2) https://bugs.python.org/issue39481 - - -File: python.info, Node: New Parser, Prev: Type Hinting Generics in Standard Collections, Up: New Features - -1.1.3.4 New Parser -.................. - -Python 3.9 uses a new parser, based on PEG(1) instead of LL(1)(2). The -new parser’s performance is roughly comparable to that of the old -parser, but the PEG formalism is more flexible than LL(1) when it comes -to designing new language features. We’ll start using this flexibility -in Python 3.10 and later. - -The *note ast: 7. module uses the new parser and produces the same AST -as the old parser. - -In Python 3.10, the old parser will be deleted and so will all -functionality that depends on it (primarily the *note parser: c7. -module, which has long been deprecated). In Python 3.9 `only', you can -switch back to the LL(1) parser using a command line switch (‘-X -oldparser’) or an environment variable (‘PYTHONOLDPARSER=1’). - -See PEP 617(3) for more details. (Contributed by Guido van Rossum, -Pablo Galindo and Lysandros Nikolaou in bpo-40334(4).) - - ---------- Footnotes ---------- - - (1) https://en.wikipedia.org/wiki/Parsing_expression_grammar - - (2) https://en.wikipedia.org/wiki/LL_parser - - (3) https://www.python.org/dev/peps/pep-0617 - - (4) https://bugs.python.org/issue40334 - - -File: python.info, Node: Other Language Changes, Next: New Modules, Prev: New Features, Up: What’s New In Python 3 9 - -1.1.4 Other Language Changes ----------------------------- - - * *note __import__(): 16b. now raises *note ImportError: 16c. instead - of *note ValueError: 16d, which used to occur when a relative - import went past its top-level package. (Contributed by Ngalim - Siregar in bpo-37444(1).) - - * Python now gets the absolute path of the script filename specified - on the command line (ex: ‘python3 script.py’): the ‘__file__’ - attribute of the *note __main__: 1. module became an absolute path, - rather than a relative path. These paths now remain valid after - the current directory is changed by *note os.chdir(): 16e. As a - side effect, the traceback also displays the absolute path for - *note __main__: 1. module frames in this case. (Contributed by - Victor Stinner in bpo-20443(2).) - - * In the *note Python Development Mode: 160. and in debug build, the - `encoding' and `errors' arguments are now checked for string - encoding and decoding operations. Examples: *note open(): 16f, - *note str.encode(): 170. and *note bytes.decode(): 171. - - By default, for best performance, the `errors' argument is only - checked at the first encoding/decoding error and the `encoding' - argument is sometimes ignored for empty strings. (Contributed by - Victor Stinner in bpo-37388(3).) - - * ‘"".replace("", s, n)’ now returns ‘s’ instead of an empty string - for all non-zero ‘n’. It is now consistent with ‘"".replace("", - s)’. There are similar changes for *note bytes: 172. and *note - bytearray: 173. objects. (Contributed by Serhiy Storchaka in - bpo-28029(4).) - - * Any valid expression can now be used as a *note decorator: 174. - Previously, the grammar was much more restrictive. See PEP 614(5) - for details. (Contributed by Brandt Bucher in bpo-39702(6).) - - * Improved help for the *note typing: 122. module. Docstrings are - now shown for all special forms and special generic aliases (like - ‘Union’ and ‘List’). Using *note help(): 175. with generic alias - like ‘List[int]’ will show the help for the correspondent concrete - type (‘list’ in this case). (Contributed by Serhiy Storchaka in - bpo-40257(7).) - - * Parallel running of *note aclose(): 176. / *note asend(): 177. / - *note athrow(): 178. is now prohibited, and ‘ag_running’ now - reflects the actual running status of the async generator. - (Contributed by Yury Selivanov in bpo-30773(8).) - - * Unexpected errors in calling the ‘__iter__’ method are no longer - masked by ‘TypeError’ in the *note in: 179. operator and functions - *note contains(): 17a, *note indexOf(): 17b. and *note countOf(): - 17c. of the *note operator: c2. module. (Contributed by Serhiy - Storchaka in bpo-40824(9).) - - * Unparenthesized lambda expressions can no longer be the expression - part in an ‘if’ clause in comprehensions and generator expressions. - See bpo-41848(10) and bpo-43755(11) for details. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37444 - - (2) https://bugs.python.org/issue20443 - - (3) https://bugs.python.org/issue37388 - - (4) https://bugs.python.org/issue28029 - - (5) https://www.python.org/dev/peps/pep-0614 - - (6) https://bugs.python.org/issue39702 - - (7) https://bugs.python.org/issue40257 - - (8) https://bugs.python.org/issue30773 - - (9) https://bugs.python.org/issue40824 - - (10) https://bugs.python.org/issue41848 - - (11) https://bugs.python.org/issue43755 - - -File: python.info, Node: New Modules, Next: Improved Modules, Prev: Other Language Changes, Up: What’s New In Python 3 9 - -1.1.5 New Modules ------------------ - -* Menu: - -* zoneinfo:: -* graphlib:: - - -File: python.info, Node: zoneinfo, Next: graphlib, Up: New Modules - -1.1.5.1 zoneinfo -................ - -The *note zoneinfo: 14e. module brings support for the IANA time zone -database to the standard library. It adds *note zoneinfo.ZoneInfo: 17f, -a concrete *note datetime.tzinfo: 180. implementation backed by the -system’s time zone data. - -Example: - - >>> from zoneinfo import ZoneInfo - >>> from datetime import datetime, timedelta - - >>> # Daylight saving time - >>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles")) - >>> print(dt) - 2020-10-31 12:00:00-07:00 - >>> dt.tzname() - 'PDT' - - >>> # Standard time - >>> dt += timedelta(days=7) - >>> print(dt) - 2020-11-07 12:00:00-08:00 - >>> print(dt.tzname()) - PST - -As a fall-back source of data for platforms that don’t ship the IANA -database, the tzdata(1) module was released as a first-party package – -distributed via PyPI and maintained by the CPython core team. - -See also -........ - -PEP 615(2) – Support for the IANA Time Zone Database in the Standard Library - - PEP written and implemented by Paul Ganssle - - ---------- Footnotes ---------- - - (1) https://pypi.org/project/tzdata/ - - (2) https://www.python.org/dev/peps/pep-0615 - - -File: python.info, Node: graphlib, Prev: zoneinfo, Up: New Modules - -1.1.5.2 graphlib -................ - -A new module, *note graphlib: 89, was added that contains the *note -graphlib.TopologicalSorter: 182. class to offer functionality to perform -topological sorting of graphs. (Contributed by Pablo Galindo, Tim -Peters and Larry Hastings in bpo-17005(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue17005 - - -File: python.info, Node: Improved Modules, Next: Optimizations, Prev: New Modules, Up: What’s New In Python 3 9 - -1.1.6 Improved Modules ----------------------- - -* Menu: - -* ast:: -* asyncio:: -* compileall:: -* concurrent.futures: concurrent futures. -* curses:: -* datetime:: -* distutils:: -* fcntl:: -* ftplib:: -* gc:: -* hashlib:: -* http:: -* IDLE and idlelib:: -* imaplib:: -* importlib:: -* inspect:: -* ipaddress:: -* math:: -* multiprocessing:: -* nntplib:: -* os:: -* pathlib:: -* pdb:: -* poplib:: -* pprint:: -* pydoc:: -* random:: -* signal:: -* smtplib:: -* socket:: -* time:: -* sys:: -* tracemalloc:: -* typing:: -* unicodedata:: -* venv:: -* xml:: - - -File: python.info, Node: ast, Next: asyncio, Up: Improved Modules - -1.1.6.1 ast -........... - -Added the `indent' option to *note dump(): 185. which allows it to -produce a multiline indented output. (Contributed by Serhiy Storchaka -in bpo-37995(1).) - -Added *note ast.unparse(): 186. as a function in the *note ast: 7. -module that can be used to unparse an *note ast.AST: 187. object and -produce a string with code that would produce an equivalent *note -ast.AST: 187. object when parsed. (Contributed by Pablo Galindo and -Batuhan Taskaya in bpo-38870(2).) - -Added docstrings to AST nodes that contains the ASDL signature used to -construct that node. (Contributed by Batuhan Taskaya in bpo-39638(3).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37995 - - (2) https://bugs.python.org/issue38870 - - (3) https://bugs.python.org/issue39638 - - -File: python.info, Node: asyncio, Next: compileall, Prev: ast, Up: Improved Modules - -1.1.6.2 asyncio -............... - -Due to significant security concerns, the `reuse_address' parameter of -*note asyncio.loop.create_datagram_endpoint(): 189. is no longer -supported. This is because of the behavior of the socket option -‘SO_REUSEADDR’ in UDP. For more details, see the documentation for -‘loop.create_datagram_endpoint()’. (Contributed by Kyle Stanley, -Antoine Pitrou, and Yury Selivanov in bpo-37228(1).) - -Added a new *note coroutine: 18a. *note shutdown_default_executor(): -18b. that schedules a shutdown for the default executor that waits on -the *note ThreadPoolExecutor: 18c. to finish closing. Also, *note -asyncio.run(): 18d. has been updated to use the new *note coroutine: -18a. (Contributed by Kyle Stanley in bpo-34037(2).) - -Added *note asyncio.PidfdChildWatcher: 18e, a Linux-specific child -watcher implementation that polls process file descriptors. -(bpo-38692(3)) - -Added a new *note coroutine: 18a. *note asyncio.to_thread(): 18f. It is -mainly used for running IO-bound functions in a separate thread to avoid -blocking the event loop, and essentially works as a high-level version -of *note run_in_executor(): 190. that can directly take keyword -arguments. (Contributed by Kyle Stanley and Yury Selivanov in -bpo-32309(4).) - -When cancelling the task due to a timeout, *note asyncio.wait_for(): -191. will now wait until the cancellation is complete also in the case -when `timeout' is <= 0, like it does with positive timeouts. -(Contributed by Elvis Pranskevichus in bpo-32751(5).) - -*note asyncio: 9. now raises ‘TyperError’ when calling incompatible -methods with an *note ssl.SSLSocket: 192. socket. (Contributed by Ido -Michael in bpo-37404(6).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37228 - - (2) https://bugs.python.org/issue34037 - - (3) https://bugs.python.org/issue38692 - - (4) https://bugs.python.org/issue32309 - - (5) https://bugs.python.org/issue32751 - - (6) https://bugs.python.org/issue37404 - - -File: python.info, Node: compileall, Next: concurrent futures, Prev: asyncio, Up: Improved Modules - -1.1.6.3 compileall -.................. - -Added new possibility to use hardlinks for duplicated ‘.pyc’ files: -`hardlink_dupes' parameter and –hardlink-dupes command line option. -(Contributed by Lumír ‘Frenzy’ Balhar in bpo-40495(1).) - -Added new options for path manipulation in resulting ‘.pyc’ files: -`stripdir', `prependdir', `limit_sl_dest' parameters and -s, -p, -e -command line options. Added the possibility to specify the option for -an optimization level multiple times. (Contributed by Lumír ‘Frenzy’ -Balhar in bpo-38112(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40495 - - (2) https://bugs.python.org/issue38112 - - -File: python.info, Node: concurrent futures, Next: curses, Prev: compileall, Up: Improved Modules - -1.1.6.4 concurrent.futures -.......................... - -Added a new `cancel_futures' parameter to *note -concurrent.futures.Executor.shutdown(): 195. that cancels all pending -futures which have not started running, instead of waiting for them to -complete before shutting down the executor. (Contributed by Kyle -Stanley in bpo-39349(1).) - -Removed daemon threads from *note ThreadPoolExecutor: 18c. and *note -ProcessPoolExecutor: 196. This improves compatibility with -subinterpreters and predictability in their shutdown processes. -(Contributed by Kyle Stanley in bpo-39812(2).) - -Workers in *note ProcessPoolExecutor: 196. are now spawned on demand, -only when there are no available idle workers to reuse. This optimizes -startup overhead and reduces the amount of lost CPU time to idle -workers. (Contributed by Kyle Stanley in bpo-39207(3).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39349 - - (2) https://bugs.python.org/issue39812 - - (3) https://bugs.python.org/issue39207 - - -File: python.info, Node: curses, Next: datetime, Prev: concurrent futures, Up: Improved Modules - -1.1.6.5 curses -.............. - -Added *note curses.get_escdelay(): 198, *note curses.set_escdelay(): -199, *note curses.get_tabsize(): 19a, and *note curses.set_tabsize(): -19b. functions. (Contributed by Anthony Sottile in bpo-38312(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38312 - - -File: python.info, Node: datetime, Next: distutils, Prev: curses, Up: Improved Modules - -1.1.6.6 datetime -................ - -The *note isocalendar(): 19d. of *note datetime.date: 19e. and *note -isocalendar(): 19f. of *note datetime.datetime: 1a0. methods now returns -a *note namedtuple(): 1a1. instead of a *note tuple: 1a2. (Contributed -by Dong-hee Na in bpo-24416(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue24416 - - -File: python.info, Node: distutils, Next: fcntl, Prev: datetime, Up: Improved Modules - -1.1.6.7 distutils -................. - -The ‘upload’ command now creates SHA2-256 and Blake2b-256 hash digests. -It skips MD5 on platforms that block MD5 digest. (Contributed by -Christian Heimes in bpo-40698(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40698 - - -File: python.info, Node: fcntl, Next: ftplib, Prev: distutils, Up: Improved Modules - -1.1.6.8 fcntl -............. - -Added constants ‘F_OFD_GETLK’, ‘F_OFD_SETLK’ and ‘F_OFD_SETLKW’. -(Contributed by Dong-hee Na in bpo-38602(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38602 - - -File: python.info, Node: ftplib, Next: gc, Prev: fcntl, Up: Improved Modules - -1.1.6.9 ftplib -.............. - -*note FTP: 1a6. and *note FTP_TLS: 1a7. now raise a *note ValueError: -16d. if the given timeout for their constructor is zero to prevent the -creation of a non-blocking socket. (Contributed by Dong-hee Na in -bpo-39259(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39259 - - -File: python.info, Node: gc, Next: hashlib, Prev: ftplib, Up: Improved Modules - -1.1.6.10 gc -........... - -When the garbage collector makes a collection in which some objects -resurrect (they are reachable from outside the isolated cycles after the -finalizers have been executed), do not block the collection of all -objects that are still unreachable. (Contributed by Pablo Galindo and -Tim Peters in bpo-38379(1).) - -Added a new function *note gc.is_finalized(): 1a9. to check if an object -has been finalized by the garbage collector. (Contributed by Pablo -Galindo in bpo-39322(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38379 - - (2) https://bugs.python.org/issue39322 - - -File: python.info, Node: hashlib, Next: http, Prev: gc, Up: Improved Modules - -1.1.6.11 hashlib -................ - -The *note hashlib: 8c. module can now use SHA3 hashes and SHAKE XOF from -OpenSSL when available. (Contributed by Christian Heimes in -bpo-37630(1).) - -Builtin hash modules can now be disabled with ‘./configure ---without-builtin-hashlib-hashes’ or selectively enabled with e.g. -‘./configure --with-builtin-hashlib-hashes=sha3,blake2’ to force use of -OpenSSL based implementation. (Contributed by Christian Heimes in -bpo-40479(2)) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37630 - - (2) https://bugs.python.org/issue40479 - - -File: python.info, Node: http, Next: IDLE and idlelib, Prev: hashlib, Up: Improved Modules - -1.1.6.12 http -............. - -HTTP status codes ‘103 EARLY_HINTS’, ‘418 IM_A_TEAPOT’ and ‘425 -TOO_EARLY’ are added to *note http.HTTPStatus: 1ac. (Contributed by -Dong-hee Na in bpo-39509(1) and Ross Rhodes in bpo-39507(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39509 - - (2) https://bugs.python.org/issue39507 - - -File: python.info, Node: IDLE and idlelib, Next: imaplib, Prev: http, Up: Improved Modules - -1.1.6.13 IDLE and idlelib -......................... - -Added option to toggle cursor blink off. (Contributed by Zackery Spytz -in bpo-4603(1).) - -Escape key now closes IDLE completion windows. (Contributed by Johnny -Najera in bpo-38944(2).) - -Added keywords to module name completion list. (Contributed by Terry J. -Reedy in bpo-37765(3).) - -The changes above have been backported to 3.8 maintenance releases. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue4603 - - (2) https://bugs.python.org/issue38944 - - (3) https://bugs.python.org/issue37765 - - -File: python.info, Node: imaplib, Next: importlib, Prev: IDLE and idlelib, Up: Improved Modules - -1.1.6.14 imaplib -................ - -*note IMAP4: 1af. and *note IMAP4_SSL: 1b0. now have an optional -`timeout' parameter for their constructors. Also, the *note open(): -1b1. method now has an optional `timeout' parameter with this change. -The overridden methods of *note IMAP4_SSL: 1b0. and *note IMAP4_stream: -1b2. were applied to this change. (Contributed by Dong-hee Na in -bpo-38615(1).) - -*note imaplib.IMAP4.unselect(): 1b3. is added. *note -imaplib.IMAP4.unselect(): 1b3. frees server’s resources associated with -the selected mailbox and returns the server to the authenticated state. -This command performs the same actions as *note imaplib.IMAP4.close(): -1b4, except that no messages are permanently removed from the currently -selected mailbox. (Contributed by Dong-hee Na in bpo-40375(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38615 - - (2) https://bugs.python.org/issue40375 - - -File: python.info, Node: importlib, Next: inspect, Prev: imaplib, Up: Improved Modules - -1.1.6.15 importlib -.................. - -To improve consistency with import statements, *note -importlib.util.resolve_name(): 1b6. now raises *note ImportError: 16c. -instead of *note ValueError: 16d. for invalid relative import attempts. -(Contributed by Ngalim Siregar in bpo-37444(1).) - -Import loaders which publish immutable module objects can now publish -immutable packages in addition to individual modules. (Contributed by -Dino Viehland in bpo-39336(2).) - -Added *note importlib.resources.files(): 1b7. function with support for -subdirectories in package data, matching backport in -‘importlib_resources’ version 1.5. (Contributed by Jason R. Coombs in -bpo-39791(3).) - -Refreshed ‘importlib.metadata’ from ‘importlib_metadata’ version 1.6.1. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37444 - - (2) https://bugs.python.org/issue39336 - - (3) https://bugs.python.org/issue39791 - - -File: python.info, Node: inspect, Next: ipaddress, Prev: importlib, Up: Improved Modules - -1.1.6.16 inspect -................ - -*note inspect.BoundArguments.arguments: 1b9. is changed from -‘OrderedDict’ to regular dict. (Contributed by Inada Naoki in -bpo-36350(1) and bpo-39775(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue36350 - - (2) https://bugs.python.org/issue39775 - - -File: python.info, Node: ipaddress, Next: math, Prev: inspect, Up: Improved Modules - -1.1.6.17 ipaddress -.................. - -*note ipaddress: a2. now supports IPv6 Scoped Addresses (IPv6 address -with suffix ‘%’). - -Scoped IPv6 addresses can be parsed using *note ipaddress.IPv6Address: -1bb. If present, scope zone ID is available through the *note scope_id: -1bc. attribute. (Contributed by Oleksandr Pavliuk in bpo-34788(1).) - -Starting with Python 3.9.5 the *note ipaddress: a2. module no longer -accepts any leading zeros in IPv4 address strings. (Contributed by -Christian Heimes in bpo-36384(2)). - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue34788 - - (2) https://bugs.python.org/issue36384 - - -File: python.info, Node: math, Next: multiprocessing, Prev: ipaddress, Up: Improved Modules - -1.1.6.18 math -............. - -Expanded the *note math.gcd(): 1be. function to handle multiple -arguments. Formerly, it only supported two arguments. (Contributed by -Serhiy Storchaka in bpo-39648(1).) - -Added *note math.lcm(): 1bf.: return the least common multiple of -specified arguments. (Contributed by Mark Dickinson, Ananthakrishnan -and Serhiy Storchaka in bpo-39479(2) and bpo-39648(3).) - -Added *note math.nextafter(): 1c0.: return the next floating-point value -after `x' towards `y'. (Contributed by Victor Stinner in bpo-39288(4).) - -Added *note math.ulp(): 1c1.: return the value of the least significant -bit of a float. (Contributed by Victor Stinner in bpo-39310(5).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39648 - - (2) https://bugs.python.org/issue39479 - - (3) https://bugs.python.org/issue39648 - - (4) https://bugs.python.org/issue39288 - - (5) https://bugs.python.org/issue39310 - - -File: python.info, Node: multiprocessing, Next: nntplib, Prev: math, Up: Improved Modules - -1.1.6.19 multiprocessing -........................ - -The *note multiprocessing.SimpleQueue: 1c3. class has a new *note -close(): 1c4. method to explicitly close the queue. (Contributed by -Victor Stinner in bpo-30966(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue30966 - - -File: python.info, Node: nntplib, Next: os, Prev: multiprocessing, Up: Improved Modules - -1.1.6.20 nntplib -................ - -*note NNTP: 1c6. and *note NNTP_SSL: 1c7. now raise a *note ValueError: -16d. if the given timeout for their constructor is zero to prevent the -creation of a non-blocking socket. (Contributed by Dong-hee Na in -bpo-39259(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39259 - - -File: python.info, Node: os, Next: pathlib, Prev: nntplib, Up: Improved Modules - -1.1.6.21 os -........... - -Added *note CLD_KILLED: 1c9. and *note CLD_STOPPED: 1ca. for ‘si_code’. -(Contributed by Dong-hee Na in bpo-38493(1).) - -Exposed the Linux-specific *note os.pidfd_open(): 158. (bpo-38692(2)) -and *note os.P_PIDFD: 1cb. (bpo-38713(3)) for process management with -file descriptors. - -The *note os.unsetenv(): 1cc. function is now also available on Windows. -(Contributed by Victor Stinner in bpo-39413(4).) - -The *note os.putenv(): 1cd. and *note os.unsetenv(): 1cc. functions are -now always available. (Contributed by Victor Stinner in bpo-39395(5).) - -Added *note os.waitstatus_to_exitcode(): 1ce. function: convert a wait -status to an exit code. (Contributed by Victor Stinner in -bpo-40094(6).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38493 - - (2) https://bugs.python.org/issue38692 - - (3) https://bugs.python.org/issue38713 - - (4) https://bugs.python.org/issue39413 - - (5) https://bugs.python.org/issue39395 - - (6) https://bugs.python.org/issue40094 - - -File: python.info, Node: pathlib, Next: pdb, Prev: os, Up: Improved Modules - -1.1.6.22 pathlib -................ - -Added *note pathlib.Path.readlink(): 1d0. which acts similarly to *note -os.readlink(): 1d1. (Contributed by Girts Folkmanis in bpo-30618(1)) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue30618 - - -File: python.info, Node: pdb, Next: poplib, Prev: pathlib, Up: Improved Modules - -1.1.6.23 pdb -............ - -On Windows now *note Pdb: 1d3. supports ‘~/.pdbrc’. (Contributed by Tim -Hopper and Dan Lidral-Porter in bpo-20523(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue20523 - - -File: python.info, Node: poplib, Next: pprint, Prev: pdb, Up: Improved Modules - -1.1.6.24 poplib -............... - -*note POP3: 1d5. and *note POP3_SSL: 1d6. now raise a *note ValueError: -16d. if the given timeout for their constructor is zero to prevent the -creation of a non-blocking socket. (Contributed by Dong-hee Na in -bpo-39259(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39259 - - -File: python.info, Node: pprint, Next: pydoc, Prev: poplib, Up: Improved Modules - -1.1.6.25 pprint -............... - -*note pprint: d2. can now pretty-print *note types.SimpleNamespace: 1d8. -(Contributed by Carl Bordum Hansen in bpo-37376(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37376 - - -File: python.info, Node: pydoc, Next: random, Prev: pprint, Up: Improved Modules - -1.1.6.26 pydoc -.............. - -The documentation string is now shown not only for class, function, -method etc, but for any object that has its own ‘__doc__’ attribute. -(Contributed by Serhiy Storchaka in bpo-40257(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40257 - - -File: python.info, Node: random, Next: signal, Prev: pydoc, Up: Improved Modules - -1.1.6.27 random -............... - -Added a new ‘random.Random.randbytes’ method: generate random bytes. -(Contributed by Victor Stinner in bpo-40286(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40286 - - -File: python.info, Node: signal, Next: smtplib, Prev: random, Up: Improved Modules - -1.1.6.28 signal -............... - -Exposed the Linux-specific *note signal.pidfd_send_signal(): 1dc. for -sending to signals to a process using a file descriptor instead of a -pid. (bpo-38712(1)) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38712 - - -File: python.info, Node: smtplib, Next: socket, Prev: signal, Up: Improved Modules - -1.1.6.29 smtplib -................ - -*note SMTP: 1de. and *note SMTP_SSL: 1df. now raise a *note ValueError: -16d. if the given timeout for their constructor is zero to prevent the -creation of a non-blocking socket. (Contributed by Dong-hee Na in -bpo-39259(1).) - -*note LMTP: 1e0. constructor now has an optional `timeout' parameter. -(Contributed by Dong-hee Na in bpo-39329(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39259 - - (2) https://bugs.python.org/issue39329 - - -File: python.info, Node: socket, Next: time, Prev: smtplib, Up: Improved Modules - -1.1.6.30 socket -............... - -The *note socket: ef. module now exports the *note CAN_RAW_JOIN_FILTERS: -1e2. constant on Linux 4.1 and greater. (Contributed by Stefan -Tatschner and Zackery Spytz in bpo-25780(1).) - -The socket module now supports the *note CAN_J1939: 1e3. protocol on -platforms that support it. (Contributed by Karl Ding in bpo-40291(2).) - -The socket module now has the *note socket.send_fds(): 1e4. and *note -socket.recv_fds(): 1e5. functions. (Contributed by Joannah Nanjekye, -Shinya Okano and Victor Stinner in bpo-28724(3).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue25780 - - (2) https://bugs.python.org/issue40291 - - (3) https://bugs.python.org/issue28724 - - -File: python.info, Node: time, Next: sys, Prev: socket, Up: Improved Modules - -1.1.6.31 time -............. - -On AIX, *note thread_time(): 1e7. is now implemented with -‘thread_cputime()’ which has nanosecond resolution, rather than -‘clock_gettime(CLOCK_THREAD_CPUTIME_ID)’ which has a resolution of 10 -ms. (Contributed by Batuhan Taskaya in bpo-40192(1)) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40192 - - -File: python.info, Node: sys, Next: tracemalloc, Prev: time, Up: Improved Modules - -1.1.6.32 sys -............ - -Added a new *note sys.platlibdir: 1e9. attribute: name of the -platform-specific library directory. It is used to build the path of -standard library and the paths of installed extension modules. It is -equal to ‘"lib"’ on most platforms. On Fedora and SuSE, it is equal to -‘"lib64"’ on 64-bit platforms. (Contributed by Jan Matějek, Matěj Cepl, -Charalampos Stratakis and Victor Stinner in bpo-1294959(1).) - -Previously, *note sys.stderr: 1ea. was block-buffered when -non-interactive. Now ‘stderr’ defaults to always being line-buffered. -(Contributed by Jendrik Seipp in bpo-13601(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue1294959 - - (2) https://bugs.python.org/issue13601 - - -File: python.info, Node: tracemalloc, Next: typing, Prev: sys, Up: Improved Modules - -1.1.6.33 tracemalloc -.................... - -Added *note tracemalloc.reset_peak(): 1ec. to set the peak size of -traced memory blocks to the current size, to measure the peak of -specific pieces of code. (Contributed by Huon Wilson in bpo-40630(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40630 - - -File: python.info, Node: typing, Next: unicodedata, Prev: tracemalloc, Up: Improved Modules - -1.1.6.34 typing -............... - -PEP 593(1) introduced an *note typing.Annotated: 1ee. type to decorate -existing types with context-specific metadata and new ‘include_extras’ -parameter to *note typing.get_type_hints(): 1ef. to access the metadata -at runtime. (Contributed by Till Varoquaux and Konstantin Kashin.) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0593 - - -File: python.info, Node: unicodedata, Next: venv, Prev: typing, Up: Improved Modules - -1.1.6.35 unicodedata -.................... - -The Unicode database has been updated to version 13.0.0. -(bpo-39926(1)). - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39926 - - -File: python.info, Node: venv, Next: xml, Prev: unicodedata, Up: Improved Modules - -1.1.6.36 venv -............. - -The activation scripts provided by *note venv: 12e. now all specify -their prompt customization consistently by always using the value -specified by ‘__VENV_PROMPT__’. Previously some scripts unconditionally -used ‘__VENV_PROMPT__’, others only if it happened to be set (which was -the default case), and one used ‘__VENV_NAME__’ instead. (Contributed -by Brett Cannon in bpo-37663(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue37663 - - -File: python.info, Node: xml, Prev: venv, Up: Improved Modules - -1.1.6.37 xml -............ - -White space characters within attributes are now preserved when -serializing *note xml.etree.ElementTree: 140. to XML file. EOLNs are no -longer normalized to “n”. This is the result of discussion about how to -interpret section 2.11 of XML spec. (Contributed by Mefistotelis in -bpo-39011(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39011 - - -File: python.info, Node: Optimizations, Next: Deprecated, Prev: Improved Modules, Up: What’s New In Python 3 9 - -1.1.7 Optimizations -------------------- - - * Optimized the idiom for assignment a temporary variable in - comprehensions. Now ‘for y in [expr]’ in comprehensions is as fast - as a simple assignment ‘y = expr’. For example: - - sums = [s for s in [0] for x in data for s in [s + x]] - - Unlike the ‘:=’ operator this idiom does not leak a variable to the - outer scope. - - (Contributed by Serhiy Storchaka in bpo-32856(1).) - - * Optimized signal handling in multithreaded applications. If a - thread different than the main thread gets a signal, the bytecode - evaluation loop is no longer interrupted at each bytecode - instruction to check for pending signals which cannot be handled. - Only the main thread of the main interpreter can handle signals. - - Previously, the bytecode evaluation loop was interrupted at each - instruction until the main thread handles signals. (Contributed by - Victor Stinner in bpo-40010(2).) - - * Optimized the *note subprocess: f9. module on FreeBSD using - ‘closefrom()’. (Contributed by Ed Maste, Conrad Meyer, Kyle Evans, - Kubilay Kocak and Victor Stinner in bpo-38061(3).) - - * *note PyLong_FromDouble(): 1f4. is now up to 1.87x faster for - values that fit into ‘long’. (Contributed by Sergey Fedoseev in - bpo-37986(4).) - - * A number of Python builtins (*note range: 1f5, *note tuple: 1a2, - *note set: 1f6, *note frozenset: 1f7, *note list: 1f8, *note dict: - 164.) are now sped up by using PEP 590(5) vectorcall protocol. - (Contributed by Dong-hee Na, Mark Shannon, Jeroen Demeyer and Petr - Viktorin in bpo-37207(6).) - - * Optimized ‘difference_update()’ for the case when the other set is - much larger than the base set. (Suggested by Evgeny Kapun with - code contributed by Michele Orrù in bpo-8425(7).) - - * Python’s small object allocator (‘obmalloc.c’) now allows (no more - than) one empty arena to remain available for immediate reuse, - without returning it to the OS. This prevents thrashing in simple - loops where an arena could be created and destroyed anew on each - iteration. (Contributed by Tim Peters in bpo-37257(8).) - - * *note floor division: 1f9. of float operation now has a better - performance. Also the message of *note ZeroDivisionError: 1fa. for - this operation is updated. (Contributed by Dong-hee Na in - bpo-39434(9).) - - * Decoding short ASCII strings with UTF-8 and ascii codecs is now - about 15% faster. (Contributed by Inada Naoki in bpo-37348(10).) - -Here’s a summary of performance improvements from Python 3.4 through -Python 3.9: - - Python version 3.4 3.5 3.6 3.7 3.8 3.9 - -------------- --- --- --- --- --- --- - - Variable and attribute read access: - read_local 7.1 7.1 5.4 5.1 3.9 3.9 - read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.5 - read_global 15.5 19.0 14.3 13.6 7.6 7.8 - read_builtin 21.1 21.6 18.5 19.0 7.5 7.8 - read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 17.9 - read_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 16.9 - read_instancevar 32.4 33.1 28.0 26.3 25.4 25.3 - read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 20.5 - read_namedtuple 73.8 57.5 45.0 46.8 18.4 18.7 - read_boundmethod 37.6 37.9 29.6 26.9 27.7 41.1 - - Variable and attribute write access: - write_local 8.7 9.3 5.5 5.3 4.3 4.3 - write_nonlocal 10.5 11.1 5.6 5.5 4.7 4.8 - write_global 19.7 21.2 18.0 18.0 15.8 16.7 - write_classvar 92.9 96.0 104.6 102.1 39.2 39.8 - write_instancevar 44.6 45.8 40.0 38.9 35.5 37.4 - write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 25.8 - - Data structure read access: - read_list 24.2 24.5 20.8 20.8 19.0 19.5 - read_deque 24.7 25.5 20.2 20.6 19.8 20.2 - read_dict 24.3 25.7 22.3 23.0 21.0 22.4 - read_strdict 22.6 24.3 19.5 21.2 18.9 21.5 - - Data structure write access: - write_list 27.1 28.5 22.5 21.6 20.0 20.0 - write_deque 28.7 30.1 22.7 21.8 23.5 21.7 - write_dict 31.4 33.3 29.3 29.2 24.7 25.4 - write_strdict 28.4 29.9 27.5 25.2 23.1 24.5 - - Stack (or queue) operations: - list_append_pop 93.4 112.7 75.4 74.2 50.8 50.6 - deque_append_pop 43.5 57.0 49.4 49.2 42.5 44.2 - deque_append_popleft 43.7 57.3 49.7 49.7 42.8 46.4 - - Timing loop: - loop_overhead 0.5 0.6 0.4 0.3 0.3 0.3 - -These results were generated from the variable access benchmark script -at: ‘Tools/scripts/var_access_benchmark.py’. The benchmark script -displays timings in nanoseconds. The benchmarks were measured on an -Intel® Core™ i7-4960HQ processor(11) running the macOS 64-bit builds -found at python.org(12). - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue32856 - - (2) https://bugs.python.org/issue40010 - - (3) https://bugs.python.org/issue38061 - - (4) https://bugs.python.org/issue37986 - - (5) https://www.python.org/dev/peps/pep-0590 - - (6) https://bugs.python.org/issue37207 - - (7) https://bugs.python.org/issue8425 - - (8) https://bugs.python.org/issue37257 - - (9) https://bugs.python.org/issue39434 - - (10) https://bugs.python.org/issue37348 - - (11) -https://ark.intel.com/content/www/us/en/ark/products/76088/intel-core-i7-4960hq-processor-6m-cache-up-to-3-80-ghz.html - - (12) https://www.python.org/downloads/mac-osx/ - - -File: python.info, Node: Deprecated, Next: Removed, Prev: Optimizations, Up: What’s New In Python 3 9 - -1.1.8 Deprecated ----------------- - - * The distutils ‘bdist_msi’ command is now deprecated, use - ‘bdist_wheel’ (wheel packages) instead. (Contributed by Hugo van - Kemenade in bpo-39586(1).) - - * Currently *note math.factorial(): 1fc. accepts *note float: 1fd. - instances with non-negative integer values (like ‘5.0’). It raises - a *note ValueError: 16d. for non-integral and negative floats. It - is now deprecated. In future Python versions it will raise a *note - TypeError: 1fe. for all floats. (Contributed by Serhiy Storchaka - in bpo-37315(2).) - - * The *note parser: c7. and *note symbol: fb. modules are deprecated - and will be removed in future versions of Python. For the majority - of use cases, users can leverage the Abstract Syntax Tree (AST) - generation and compilation stage, using the *note ast: 7. module. - - * The Public C API functions *note PyParser_SimpleParseStringFlags(): - 1ff, *note PyParser_SimpleParseStringFlagsFilename(): 200, *note - PyParser_SimpleParseFileFlags(): 201. and ‘PyNode_Compile()’ are - deprecated and will be removed in Python 3.10 together with the old - parser. - - * Using *note NotImplemented: 202. in a boolean context has been - deprecated, as it is almost exclusively the result of incorrect - rich comparator implementations. It will be made a *note - TypeError: 1fe. in a future version of Python. (Contributed by - Josh Rosenberg in bpo-35712(3).) - - * The *note random: dc. module currently accepts any hashable type as - a possible seed value. Unfortunately, some of those types are not - guaranteed to have a deterministic hash value. After Python 3.9, - the module will restrict its seeds to *note None: 203, *note int: - 204, *note float: 1fd, *note str: 205, *note bytes: 172, and *note - bytearray: 173. - - * Opening the *note GzipFile: 206. file for writing without - specifying the `mode' argument is deprecated. In future Python - versions it will always be opened for reading by default. Specify - the `mode' argument for opening it for writing and silencing a - warning. (Contributed by Serhiy Storchaka in bpo-28286(4).) - - * Deprecated the ‘split()’ method of ‘_tkinter.TkappType’ in favour - of the ‘splitlist()’ method which has more consistent and - predicable behavior. (Contributed by Serhiy Storchaka in - bpo-38371(5).) - - * The explicit passing of coroutine objects to *note asyncio.wait(): - 207. has been deprecated and will be removed in version 3.11. - (Contributed by Yury Selivanov and Kyle Stanley in bpo-34790(6).) - - * binhex4 and hexbin4 standards are now deprecated. The *note - binhex: 10. module and the following *note binascii: f. functions - are now deprecated: - - * *note b2a_hqx(): 208, *note a2b_hqx(): 209. - - * *note rlecode_hqx(): 20a, *note rledecode_hqx(): 20b. - - (Contributed by Victor Stinner in bpo-39353(7).) - - * *note ast: 7. classes ‘slice’, ‘Index’ and ‘ExtSlice’ are - considered deprecated and will be removed in future Python - versions. ‘value’ itself should be used instead of ‘Index(value)’. - ‘Tuple(slices, Load())’ should be used instead of - ‘ExtSlice(slices)’. (Contributed by Serhiy Storchaka in - bpo-34822(8).) - - * *note ast: 7. classes ‘Suite’, ‘Param’, ‘AugLoad’ and ‘AugStore’ - are considered deprecated and will be removed in future Python - versions. They were not generated by the parser and not accepted - by the code generator in Python 3. (Contributed by Batuhan Taskaya - in bpo-39639(9) and bpo-39969(10) and Serhiy Storchaka in - bpo-39988(11).) - - * The *note PyEval_InitThreads(): 20c. and *note - PyEval_ThreadsInitialized(): 20d. functions are now deprecated and - will be removed in Python 3.11. Calling *note - PyEval_InitThreads(): 20c. now does nothing. The *note GIL: 20e. - is initialized by *note Py_Initialize(): 20f. since Python 3.7. - (Contributed by Victor Stinner in bpo-39877(12).) - - * Passing ‘None’ as the first argument to the *note shlex.split(): - 210. function has been deprecated. (Contributed by Zackery Spytz - in bpo-33262(13).) - - * *note smtpd.MailmanProxy(): 211. is now deprecated as it is - unusable without an external module, ‘mailman’. (Contributed by - Samuel Colvin in bpo-35800(14).) - - * The *note lib2to3: a7. module now emits a *note - PendingDeprecationWarning: 15c. Python 3.9 switched to a PEG - parser (see PEP 617(15)), and Python 3.10 may include new language - syntax that is not parsable by lib2to3’s LL(1) parser. The - ‘lib2to3’ module may be removed from the standard library in a - future Python version. Consider third-party alternatives such as - LibCST(16) or parso(17). (Contributed by Carl Meyer in - bpo-40360(18).) - - * The `random' parameter of *note random.shuffle(): 212. has been - deprecated. (Contributed by Raymond Hettinger in bpo-40465(19)) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39586 - - (2) https://bugs.python.org/issue37315 - - (3) https://bugs.python.org/issue35712 - - (4) https://bugs.python.org/issue28286 - - (5) https://bugs.python.org/issue38371 - - (6) https://bugs.python.org/issue34790 - - (7) https://bugs.python.org/issue39353 - - (8) https://bugs.python.org/issue34822 - - (9) https://bugs.python.org/issue39639 - - (10) https://bugs.python.org/issue39969 - - (11) https://bugs.python.org/issue39988 - - (12) https://bugs.python.org/issue39877 - - (13) https://bugs.python.org/issue33262 - - (14) https://bugs.python.org/issue35800 - - (15) https://www.python.org/dev/peps/pep-0617 - - (16) https://libcst.readthedocs.io/ - - (17) https://parso.readthedocs.io/ - - (18) https://bugs.python.org/issue40360 - - (19) https://bugs.python.org/issue40465 - - -File: python.info, Node: Removed, Next: Porting to Python 3 9, Prev: Deprecated, Up: What’s New In Python 3 9 - -1.1.9 Removed -------------- - - * The erroneous version at ‘unittest.mock.__version__’ has been - removed. - - * *note nntplib.NNTP: 1c6.: ‘xpath()’ and ‘xgtitle()’ methods have - been removed. These methods are deprecated since Python 3.3. - Generally, these extensions are not supported or not enabled by - NNTP server administrators. For ‘xgtitle()’, please use *note - nntplib.NNTP.descriptions(): 214. or *note - nntplib.NNTP.description(): 215. instead. (Contributed by Dong-hee - Na in bpo-39366(1).) - - * *note array.array: 216.: ‘tostring()’ and ‘fromstring()’ methods - have been removed. They were aliases to ‘tobytes()’ and - ‘frombytes()’, deprecated since Python 3.2. (Contributed by Victor - Stinner in bpo-38916(2).) - - * The undocumented ‘sys.callstats()’ function has been removed. - Since Python 3.7, it was deprecated and always returned *note None: - 203. It required a special build option ‘CALL_PROFILE’ which was - already removed in Python 3.7. (Contributed by Victor Stinner in - bpo-37414(3).) - - * The ‘sys.getcheckinterval()’ and ‘sys.setcheckinterval()’ functions - have been removed. They were deprecated since Python 3.2. Use - *note sys.getswitchinterval(): 217. and *note - sys.setswitchinterval(): 218. instead. (Contributed by Victor - Stinner in bpo-37392(4).) - - * The C function ‘PyImport_Cleanup()’ has been removed. It was - documented as: “Empty the module table. For internal use only.” - (Contributed by Victor Stinner in bpo-36710(5).) - - * ‘_dummy_thread’ and ‘dummy_threading’ modules have been removed. - These modules were deprecated since Python 3.7 which requires - threading support. (Contributed by Victor Stinner in - bpo-37312(6).) - - * ‘aifc.openfp()’ alias to ‘aifc.open()’, ‘sunau.openfp()’ alias to - ‘sunau.open()’, and ‘wave.openfp()’ alias to *note wave.open(): - 219. have been removed. They were deprecated since Python 3.7. - (Contributed by Victor Stinner in bpo-37320(7).) - - * The ‘isAlive()’ method of *note threading.Thread: 21a. has been - removed. It was deprecated since Python 3.8. Use *note - is_alive(): 21b. instead. (Contributed by Dong-hee Na in - bpo-37804(8).) - - * Methods ‘getchildren()’ and ‘getiterator()’ of classes *note - ElementTree: 21c. and *note Element: 21d. in the *note ElementTree: - 140. module have been removed. They were deprecated in Python 3.2. - Use ‘iter(x)’ or ‘list(x)’ instead of ‘x.getchildren()’ and - ‘x.iter()’ or ‘list(x.iter())’ instead of ‘x.getiterator()’. - (Contributed by Serhiy Storchaka in bpo-36543(9).) - - * The old *note plistlib: cf. API has been removed, it was deprecated - since Python 3.4. Use the *note load(): 21e, *note loads(): 21f, - *note dump(): 220, and *note dumps(): 221. functions. - Additionally, the `use_builtin_types' parameter was removed, - standard *note bytes: 172. objects are always used instead. - (Contributed by Jon Janzen in bpo-36409(10).) - - * The C function ‘PyGen_NeedsFinalizing’ has been removed. It was - not documented, tested, or used anywhere within CPython after the - implementation of PEP 442(11). Patch by Joannah Nanjekye. - (Contributed by Joannah Nanjekye in bpo-15088(12)) - - * ‘base64.encodestring()’ and ‘base64.decodestring()’, aliases - deprecated since Python 3.1, have been removed: use *note - base64.encodebytes(): 222. and *note base64.decodebytes(): 223. - instead. (Contributed by Victor Stinner in bpo-39351(13).) - - * ‘fractions.gcd()’ function has been removed, it was deprecated - since Python 3.5 (bpo-22486(14)): use *note math.gcd(): 1be. - instead. (Contributed by Victor Stinner in bpo-39350(15).) - - * The `buffering' parameter of *note bz2.BZ2File: 224. has been - removed. Since Python 3.0, it was ignored and using it emitted a - *note DeprecationWarning: 15a. Pass an open file object to control - how the file is opened. (Contributed by Victor Stinner in - bpo-39357(16).) - - * The `encoding' parameter of *note json.loads(): 225. has been - removed. As of Python 3.1, it was deprecated and ignored; using it - has emitted a *note DeprecationWarning: 15a. since Python 3.8. - (Contributed by Inada Naoki in bpo-39377(17)) - - * ‘with (await asyncio.lock):’ and ‘with (yield from asyncio.lock):’ - statements are not longer supported, use ‘async with lock’ instead. - The same is correct for ‘asyncio.Condition’ and - ‘asyncio.Semaphore’. (Contributed by Andrew Svetlov in - bpo-34793(18).) - - * The ‘sys.getcounts()’ function, the ‘-X showalloccount’ command - line option and the ‘show_alloc_count’ field of the C structure - *note PyConfig: 226. have been removed. They required a special - Python build by defining ‘COUNT_ALLOCS’ macro. (Contributed by - Victor Stinner in bpo-39489(19).) - - * The ‘_field_types’ attribute of the *note typing.NamedTuple: 227. - class has been removed. It was deprecated since Python 3.8. Use - the ‘__annotations__’ attribute instead. (Contributed by Serhiy - Storchaka in bpo-40182(20).) - - * The ‘symtable.SymbolTable.has_exec()’ method has been removed. It - was deprecated since 2006, and only returning ‘False’ when it’s - called. (Contributed by Batuhan Taskaya in bpo-40208(21)) - - * The ‘asyncio.Task.current_task()’ and ‘asyncio.Task.all_tasks()’ - have been removed. They were deprecated since Python 3.7 and you - can use *note asyncio.current_task(): 228. and *note - asyncio.all_tasks(): 229. instead. (Contributed by Rémi Lapeyre in - bpo-40967(22)) - - * The ‘unescape()’ method in the *note html.parser.HTMLParser: 22a. - class has been removed (it was deprecated since Python 3.4). *note - html.unescape(): 22b. should be used for converting character - references to the corresponding unicode characters. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39366 - - (2) https://bugs.python.org/issue38916 - - (3) https://bugs.python.org/issue37414 - - (4) https://bugs.python.org/issue37392 - - (5) https://bugs.python.org/issue36710 - - (6) https://bugs.python.org/issue37312 - - (7) https://bugs.python.org/issue37320 - - (8) https://bugs.python.org/issue37804 - - (9) https://bugs.python.org/issue36543 - - (10) https://bugs.python.org/issue36409 - - (11) https://www.python.org/dev/peps/pep-0442 - - (12) https://bugs.python.org/issue15088 - - (13) https://bugs.python.org/issue39351 - - (14) https://bugs.python.org/issue22486 - - (15) https://bugs.python.org/issue39350 - - (16) https://bugs.python.org/issue39357 - - (17) https://bugs.python.org/issue39377 - - (18) https://bugs.python.org/issue34793 - - (19) https://bugs.python.org/issue39489 - - (20) https://bugs.python.org/issue40182 - - (21) https://bugs.python.org/issue40208 - - (22) https://bugs.python.org/issue40967 - - -File: python.info, Node: Porting to Python 3 9, Next: Build Changes, Prev: Removed, Up: What’s New In Python 3 9 - -1.1.10 Porting to Python 3.9 ----------------------------- - -This section lists previously described changes and other bugfixes that -may require changes to your code. - -* Menu: - -* Changes in the Python API:: -* Changes in the C API:: -* CPython bytecode changes:: - - -File: python.info, Node: Changes in the Python API, Next: Changes in the C API, Up: Porting to Python 3 9 - -1.1.10.1 Changes in the Python API -.................................. - - * *note __import__(): 16b. and *note importlib.util.resolve_name(): - 1b6. now raise *note ImportError: 16c. where it previously raised - *note ValueError: 16d. Callers catching the specific exception - type and supporting both Python 3.9 and earlier versions will need - to catch both using ‘except (ImportError, ValueError):’. - - * The *note venv: 12e. activation scripts no longer special-case when - ‘__VENV_PROMPT__’ is set to ‘""’. - - * The *note select.epoll.unregister(): 22e. method no longer ignores - the *note EBADF: 22f. error. (Contributed by Victor Stinner in - bpo-39239(1).) - - * The `compresslevel' parameter of *note bz2.BZ2File: 224. became - keyword-only, since the `buffering' parameter has been removed. - (Contributed by Victor Stinner in bpo-39357(2).) - - * Simplified AST for subscription. Simple indices will be - represented by their value, extended slices will be represented as - tuples. ‘Index(value)’ will return a ‘value’ itself, - ‘ExtSlice(slices)’ will return ‘Tuple(slices, Load())’. - (Contributed by Serhiy Storchaka in bpo-34822(3).) - - * The *note importlib: 9a. module now ignores the *note PYTHONCASEOK: - 230. environment variable when the *note -E: 231. or *note -I: 232. - command line options are being used. - - * The `encoding' parameter has been added to the classes *note - ftplib.FTP: 1a6. and *note ftplib.FTP_TLS: 1a7. as a keyword-only - parameter, and the default encoding is changed from Latin-1 to - UTF-8 to follow RFC 2640(4). - - * *note asyncio.loop.shutdown_default_executor(): 18b. has been added - to *note AbstractEventLoop: 233, meaning alternative event loops - that inherit from it should have this method defined. (Contributed - by Kyle Stanley in bpo-34037(5).) - - * The constant values of future flags in the *note __future__: 0. - module is updated in order to prevent collision with compiler - flags. Previously ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ was clashing with - ‘CO_FUTURE_DIVISION’. (Contributed by Batuhan Taskaya in - bpo-39562(6)) - - * ‘array('u')’ now uses ‘wchar_t’ as C type instead of ‘Py_UNICODE’. - This change doesn’t affect to its behavior because ‘Py_UNICODE’ is - alias of ‘wchar_t’ since Python 3.3. (Contributed by Inada Naoki - in bpo-34538(7).) - - * The *note logging.getLogger(): 234. API now returns the root logger - when passed the name ‘'root'’, whereas previously it returned a - non-root logger named ‘'root'’. This could affect cases where user - code explicitly wants a non-root logger named ‘'root'’, or - instantiates a logger using ‘logging.getLogger(__name__)’ in some - top-level module called ‘'root.py'’. (Contributed by Vinay Sajip - in bpo-37742(8).) - - * Division handling of *note PurePath: 235. now returns - ‘NotImplemented’ instead of raising a *note TypeError: 1fe. when - passed something other than an instance of ‘str’ or *note PurePath: - 235. This allows creating compatible classes that don’t inherit - from those mentioned types. (Contributed by Roger Aiudi in - bpo-34775(9)). - - * Starting with Python 3.9.5 the *note ipaddress: a2. module no - longer accepts any leading zeros in IPv4 address strings. Leading - zeros are ambiguous and interpreted as octal notation by some - libraries. For example the legacy function *note - socket.inet_aton(): 236. treats leading zeros as octal notatation. - glibc implementation of modern *note inet_pton(): 237. does not - accept any leading zeros. (Contributed by Christian Heimes in - bpo-36384(10)). - - * *note codecs.lookup(): 238. now normalizes the encoding name the - same way as ‘encodings.normalize_encoding()’, except that *note - codecs.lookup(): 238. also converts the name to lower case. For - example, ‘"latex+latin1"’ encoding name is now normalized to - ‘"latex_latin1"’. (Contributed by Jordon Xu in bpo-37751(11).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39239 - - (2) https://bugs.python.org/issue39357 - - (3) https://bugs.python.org/issue34822 - - (4) https://tools.ietf.org/html/rfc2640.html - - (5) https://bugs.python.org/issue34037 - - (6) https://bugs.python.org/issue39562 - - (7) https://bugs.python.org/issue34538 - - (8) https://bugs.python.org/issue37742 - - (9) https://bugs.python.org/issue34775 - - (10) https://bugs.python.org/issue36384 - - (11) https://bugs.python.org/issue37751 - - -File: python.info, Node: Changes in the C API, Next: CPython bytecode changes, Prev: Changes in the Python API, Up: Porting to Python 3 9 - -1.1.10.2 Changes in the C API -............................. - - * Instances of heap-allocated types (such as those created with *note - PyType_FromSpec(): 23a. and similar APIs) hold a reference to their - type object since Python 3.8. As indicated in the “Changes in the - C API” of Python 3.8, for the vast majority of cases, there should - be no side effect but for types that have a custom *note - tp_traverse: 23b. function, ensure that all custom ‘tp_traverse’ - functions of heap-allocated types visit the object’s type. - - Example: - - int - foo_traverse(foo_struct *self, visitproc visit, void *arg) { - // Rest of the traverse function - #if PY_VERSION_HEX >= 0x03090000 - // This was not needed before Python 3.9 (Python issue 35810 and 40217) - Py_VISIT(Py_TYPE(self)); - #endif - } - - If your traverse function delegates to ‘tp_traverse’ of its base - class (or another type), ensure that ‘Py_TYPE(self)’ is visited - only once. Note that only heap types are expected to visit the - type in ‘tp_traverse’. - - For example, if your ‘tp_traverse’ function includes: - - base->tp_traverse(self, visit, arg) - - then add: - - #if PY_VERSION_HEX >= 0x03090000 - // This was not needed before Python 3.9 (Python issue 35810 and 40217) - if (base->tp_flags & Py_TPFLAGS_HEAPTYPE) { - // a heap type's tp_traverse already visited Py_TYPE(self) - } else { - Py_VISIT(Py_TYPE(self)); - } - #else - - (See bpo-35810(1) and bpo-40217(2) for more information.) - - * The functions ‘PyEval_CallObject’, ‘PyEval_CallFunction’, - ‘PyEval_CallMethod’ and ‘PyEval_CallObjectWithKeywords’ are - deprecated. Use *note PyObject_Call(): 23c. and its variants - instead. (See more details in bpo-29548(3).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue35810 - - (2) https://bugs.python.org/issue40217 - - (3) https://bugs.python.org/issue29548 - - -File: python.info, Node: CPython bytecode changes, Prev: Changes in the C API, Up: Porting to Python 3 9 - -1.1.10.3 CPython bytecode changes -................................. - - * The *note LOAD_ASSERTION_ERROR: 23e. opcode was added for handling - the *note assert: 23f. statement. Previously, the assert statement - would not work correctly if the *note AssertionError: 240. - exception was being shadowed. (Contributed by Zackery Spytz in - bpo-34880(1).) - - * The *note COMPARE_OP: 241. opcode was split into four distinct - instructions: - - * ‘COMPARE_OP’ for rich comparisons - - * ‘IS_OP’ for ‘is’ and ‘is not’ tests - - * ‘CONTAINS_OP’ for ‘in’ and ‘not in’ tests - - * ‘JUMP_IF_NOT_EXC_MATCH’ for checking exceptions in - ‘try-except’ statements. - - (Contributed by Mark Shannon in bpo-39156(2).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue34880 - - (2) https://bugs.python.org/issue39156 - - -File: python.info, Node: Build Changes, Next: C API Changes, Prev: Porting to Python 3 9, Up: What’s New In Python 3 9 - -1.1.11 Build Changes --------------------- - - * Added ‘--with-platlibdir’ option to the ‘configure’ script: name of - the platform-specific library directory, stored in the new *note - sys.platlibdir: 1e9. attribute. See *note sys.platlibdir: 1e9. - attribute for more information. (Contributed by Jan Matějek, Matěj - Cepl, Charalampos Stratakis and Victor Stinner in bpo-1294959(1).) - - * The ‘COUNT_ALLOCS’ special build macro has been removed. - (Contributed by Victor Stinner in bpo-39489(2).) - - * On non-Windows platforms, the ‘setenv()’ and ‘unsetenv()’ functions - are now required to build Python. (Contributed by Victor Stinner - in bpo-39395(3).) - - * On non-Windows platforms, creating ‘bdist_wininst’ installers is - now officially unsupported. (See bpo-10945(4) for more details.) - - * When building Python on macOS from source, ‘_tkinter’ now links - with non-system Tcl and Tk frameworks if they are installed in - ‘/Library/Frameworks’, as had been the case on older releases of - macOS. If a macOS SDK is explicitly configured, by using - ‘--enable-universalsdk=’ or ‘-isysroot’, only the SDK itself is - searched. The default behavior can still be overridden with - ‘--with-tcltk-includes’ and ‘--with-tcltk-libs’. (Contributed by - Ned Deily in bpo-34956(5).) - - * Python can now be built for Windows 10 ARM64. (Contributed by - Steve Dower in bpo-33125(6).) - - * Some individual tests are now skipped when ‘--pgo’ is used. The - tests in question increased the PGO task time significantly and - likely didn’t help improve optimization of the final executable. - This speeds up the task by a factor of about 15x. Running the full - unit test suite is slow. This change may result in a slightly less - optimized build since not as many code branches will be executed. - If you are willing to wait for the much slower build, the old - behavior can be restored using ‘./configure [..] PROFILE_TASK="-m - test --pgo-extended"’. We make no guarantees as to which PGO task - set produces a faster build. Users who care should run their own - relevant benchmarks as results can depend on the environment, - workload, and compiler tool chain. (See bpo-36044(7) and - bpo-37707(8) for more details.) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue1294959 - - (2) https://bugs.python.org/issue39489 - - (3) https://bugs.python.org/issue39395 - - (4) https://bugs.python.org/issue10945 - - (5) https://bugs.python.org/issue34956 - - (6) https://bugs.python.org/issue33125 - - (7) https://bugs.python.org/issue36044 - - (8) https://bugs.python.org/issue37707 - - -File: python.info, Node: C API Changes, Next: Notable changes in Python 3 9 1, Prev: Build Changes, Up: What’s New In Python 3 9 - -1.1.12 C API Changes --------------------- - -* Menu: - -* New Features: New Features<2>. -* Porting to Python 3.9: Porting to Python 3 9<2>. -* Removed: Removed<2>. - - -File: python.info, Node: New Features<2>, Next: Porting to Python 3 9<2>, Up: C API Changes - -1.1.12.1 New Features -..................... - - * PEP 573(1): Added *note PyType_FromModuleAndSpec(): 245. to - associate a module with a class; *note PyType_GetModule(): 246. and - *note PyType_GetModuleState(): 247. to retrieve the module and its - state; and *note PyCMethod: 248. and ‘METH_METHOD’ to allow a - method to access the class it was defined in. (Contributed by - Marcel Plch and Petr Viktorin in bpo-38787(2).) - - * Added *note PyFrame_GetCode(): 249. function: get a frame code. - Added *note PyFrame_GetBack(): 24a. function: get the frame next - outer frame. (Contributed by Victor Stinner in bpo-40421(3).) - - * Added *note PyFrame_GetLineNumber(): 24b. to the limited C API. - (Contributed by Victor Stinner in bpo-40421(4).) - - * Added *note PyThreadState_GetInterpreter(): 24c. and *note - PyInterpreterState_Get(): 24d. functions to get the interpreter. - Added *note PyThreadState_GetFrame(): 24e. function to get the - current frame of a Python thread state. Added *note - PyThreadState_GetID(): 24f. function: get the unique identifier of - a Python thread state. (Contributed by Victor Stinner in - bpo-39947(5).) - - * Added a new public *note PyObject_CallNoArgs(): 250. function to - the C API, which calls a callable Python object without any - arguments. It is the most efficient way to call a callable Python - object without any argument. (Contributed by Victor Stinner in - bpo-37194(6).) - - * Changes in the limited C API (if ‘Py_LIMITED_API’ macro is - defined): - - * Provide *note Py_EnterRecursiveCall(): 251. and *note - Py_LeaveRecursiveCall(): 252. as regular functions for the - limited API. Previously, there were defined as macros, but - these macros didn’t compile with the limited C API which - cannot access ‘PyThreadState.recursion_depth’ field (the - structure is opaque in the limited C API). - - * ‘PyObject_INIT()’ and ‘PyObject_INIT_VAR()’ become regular - “opaque” function to hide implementation details. - - (Contributed by Victor Stinner in bpo-38644(7) and bpo-39542(8).) - - * The *note PyModule_AddType(): 253. function is added to help adding - a type to a module. (Contributed by Dong-hee Na in bpo-40024(9).) - - * Added the functions *note PyObject_GC_IsTracked(): 254. and *note - PyObject_GC_IsFinalized(): 255. to the public API to allow to query - if Python objects are being currently tracked or have been already - finalized by the garbage collector respectively. (Contributed by - Pablo Galindo Salgado in bpo-40241(10).) - - * Added ‘_PyObject_FunctionStr()’ to get a user-friendly string - representation of a function-like object. (Patch by Jeroen Demeyer - in bpo-37645(11).) - - * Added *note PyObject_CallOneArg(): 256. for calling an object with - one positional argument (Patch by Jeroen Demeyer in bpo-37483(12).) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0573 - - (2) https://bugs.python.org/issue38787 - - (3) https://bugs.python.org/issue40421 - - (4) https://bugs.python.org/issue40421 - - (5) https://bugs.python.org/issue39947 - - (6) https://bugs.python.org/issue37194 - - (7) https://bugs.python.org/issue38644 - - (8) https://bugs.python.org/issue39542 - - (9) https://bugs.python.org/issue40024 - - (10) https://bugs.python.org/issue40241 - - (11) https://bugs.python.org/issue37645 - - (12) https://bugs.python.org/issue37483 - - -File: python.info, Node: Porting to Python 3 9<2>, Next: Removed<2>, Prev: New Features<2>, Up: C API Changes - -1.1.12.2 Porting to Python 3.9 -.............................. - - * ‘PyInterpreterState.eval_frame’ ( PEP 523(1)) now requires a new - mandatory `tstate' parameter (‘PyThreadState*’). (Contributed by - Victor Stinner in bpo-38500(2).) - - * Extension modules: *note m_traverse: 258, *note m_clear: 259. and - *note m_free: 25a. functions of *note PyModuleDef: 25b. are no - longer called if the module state was requested but is not - allocated yet. This is the case immediately after the module is - created and before the module is executed (*note Py_mod_exec: 25c. - function). More precisely, these functions are not called if *note - m_size: 25d. is greater than 0 and the module state (as returned by - *note PyModule_GetState(): 25e.) is ‘NULL’. - - Extension modules without module state (‘m_size <= 0’) are not - affected. - - * If *note Py_AddPendingCall(): 25f. is called in a subinterpreter, - the function is now scheduled to be called from the subinterpreter, - rather than being called from the main interpreter. Each - subinterpreter now has its own list of scheduled calls. - (Contributed by Victor Stinner in bpo-39984(3).) - - * The Windows registry is no longer used to initialize *note - sys.path: 260. when the ‘-E’ option is used (if *note - PyConfig.use_environment: 261. is set to ‘0’). This is significant - when embedding Python on Windows. (Contributed by Zackery Spytz in - bpo-8901(4).) - - * The global variable *note PyStructSequence_UnnamedField: 262. is - now a constant and refers to a constant string. (Contributed by - Serhiy Storchaka in bpo-38650(5).) - - * The ‘PyGC_Head’ structure is now opaque. It is only defined in the - internal C API (‘pycore_gc.h’). (Contributed by Victor Stinner in - bpo-40241(6).) - - * The ‘Py_UNICODE_COPY’, ‘Py_UNICODE_FILL’, ‘PyUnicode_WSTR_LENGTH’, - *note PyUnicode_FromUnicode(): 263, *note PyUnicode_AsUnicode(): - 264, ‘_PyUnicode_AsUnicode’, and *note - PyUnicode_AsUnicodeAndSize(): 265. are marked as deprecated in C. - They have been deprecated by PEP 393(7) since Python 3.3. - (Contributed by Inada Naoki in bpo-36346(8).) - - * The *note Py_FatalError(): 266. function is replaced with a macro - which logs automatically the name of the current function, unless - the ‘Py_LIMITED_API’ macro is defined. (Contributed by Victor - Stinner in bpo-39882(9).) - - * The vectorcall protocol now requires that the caller passes only - strings as keyword names. (See bpo-37540(10) for more - information.) - - * Implementation details of a number of macros and functions are now - hidden: - - * *note PyObject_IS_GC(): 267. macro was converted to a - function. - - * The ‘PyObject_NEW()’ macro becomes an alias to the *note - PyObject_New(): 268. macro, and the ‘PyObject_NEW_VAR()’ macro - becomes an alias to the *note PyObject_NewVar(): 269. macro. - They no longer access directly the *note - PyTypeObject.tp_basicsize: 26a. member. - - * *note PyType_HasFeature(): 26b. now always calls *note - PyType_GetFlags(): 26c. Previously, it accessed directly the - *note PyTypeObject.tp_flags: 26d. member when the limited C - API was not used. - - * ‘PyObject_GET_WEAKREFS_LISTPTR()’ macro was converted to a - function: the macro accessed directly the *note - PyTypeObject.tp_weaklistoffset: 26e. member. - - * *note PyObject_CheckBuffer(): 26f. macro was converted to a - function: the macro accessed directly the *note - PyTypeObject.tp_as_buffer: 270. member. - - * *note PyIndex_Check(): 271. is now always declared as an - opaque function to hide implementation details: removed the - ‘PyIndex_Check()’ macro. The macro accessed directly the - *note PyTypeObject.tp_as_number: 272. member. - - (See bpo-40170(11) for more details.) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0523 - - (2) https://bugs.python.org/issue38500 - - (3) https://bugs.python.org/issue39984 - - (4) https://bugs.python.org/issue8901 - - (5) https://bugs.python.org/issue38650 - - (6) https://bugs.python.org/issue40241 - - (7) https://www.python.org/dev/peps/pep-0393 - - (8) https://bugs.python.org/issue36346 - - (9) https://bugs.python.org/issue39882 - - (10) https://bugs.python.org/issue37540 - - (11) https://bugs.python.org/issue40170 - - -File: python.info, Node: Removed<2>, Prev: Porting to Python 3 9<2>, Up: C API Changes - -1.1.12.3 Removed -................ - - * Excluded ‘PyFPE_START_PROTECT()’ and ‘PyFPE_END_PROTECT()’ macros - of ‘pyfpe.h’ from the limited C API. (Contributed by Victor Stinner - in bpo-38835(1).) - - * The ‘tp_print’ slot of *note PyTypeObject: 274. has been removed. - It was used for printing objects to files in Python 2.7 and before. - Since Python 3.0, it has been ignored and unused. (Contributed by - Jeroen Demeyer in bpo-36974(2).) - - * Changes in the limited C API (if ‘Py_LIMITED_API’ macro is - defined): - - * Excluded the following functions from the limited C API: - - * ‘PyThreadState_DeleteCurrent()’ (Contributed by Joannah - Nanjekye in bpo-37878(3).) - - * ‘_Py_CheckRecursionLimit’ - - * ‘_Py_NewReference()’ - - * ‘_Py_ForgetReference()’ - - * ‘_PyTraceMalloc_NewReference()’ - - * ‘_Py_GetRefTotal()’ - - * The trashcan mechanism which never worked in the limited - C API. - - * ‘PyTrash_UNWIND_LEVEL’ - - * ‘Py_TRASHCAN_BEGIN_CONDITION’ - - * ‘Py_TRASHCAN_BEGIN’ - - * ‘Py_TRASHCAN_END’ - - * ‘Py_TRASHCAN_SAFE_BEGIN’ - - * ‘Py_TRASHCAN_SAFE_END’ - - * Moved following functions and definitions to the internal C - API: - - * ‘_PyDebug_PrintTotalRefs()’ - - * ‘_Py_PrintReferences()’ - - * ‘_Py_PrintReferenceAddresses()’ - - * ‘_Py_tracemalloc_config’ - - * ‘_Py_AddToAllObjects()’ (specific to ‘Py_TRACE_REFS’ - build) - - (Contributed by Victor Stinner in bpo-38644(4) and bpo-39542(5).) - - * Removed ‘_PyRuntime.getframe’ hook and removed - ‘_PyThreadState_GetFrame’ macro which was an alias to - ‘_PyRuntime.getframe’. They were only exposed by the internal C - API. Removed also ‘PyThreadFrameGetter’ type. (Contributed by - Victor Stinner in bpo-39946(6).) - - * Removed the following functions from the C API. Call - ‘PyGC_Collect()’ explicitly to clear all free lists. (Contributed - by Inada Naoki and Victor Stinner in bpo-37340(7), bpo-38896(8) and - bpo-40428(9).) - - * ‘PyAsyncGen_ClearFreeLists()’ - - * ‘PyContext_ClearFreeList()’ - - * ‘PyDict_ClearFreeList()’ - - * ‘PyFloat_ClearFreeList()’ - - * ‘PyFrame_ClearFreeList()’ - - * ‘PyList_ClearFreeList()’ - - * ‘PyMethod_ClearFreeList()’ and ‘PyCFunction_ClearFreeList()’: - the free lists of bound method objects have been removed. - - * ‘PySet_ClearFreeList()’: the set free list has been removed in - Python 3.4. - - * ‘PyTuple_ClearFreeList()’ - - * ‘PyUnicode_ClearFreeList()’: the Unicode free list has been - removed in Python 3.3. - - * Removed ‘_PyUnicode_ClearStaticStrings()’ function. (Contributed - by Victor Stinner in bpo-39465(10).) - - * Removed ‘Py_UNICODE_MATCH’. It has been deprecated by PEP 393(11), - and broken since Python 3.3. The *note PyUnicode_Tailmatch(): 275. - function can be used instead. (Contributed by Inada Naoki in - bpo-36346(12).) - - * Cleaned header files of interfaces defined but with no - implementation. The public API symbols being removed are: - ‘_PyBytes_InsertThousandsGroupingLocale’, - ‘_PyBytes_InsertThousandsGrouping’, ‘_Py_InitializeFromArgs’, - ‘_Py_InitializeFromWideArgs’, ‘_PyFloat_Repr’, ‘_PyFloat_Digits’, - ‘_PyFloat_DigitsInit’, ‘PyFrame_ExtendStack’, - ‘_PyAIterWrapper_Type’, ‘PyNullImporter_Type’, ‘PyCmpWrapper_Type’, - ‘PySortWrapper_Type’, ‘PyNoArgsFunction’. (Contributed by Pablo - Galindo Salgado in bpo-39372(13).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38835 - - (2) https://bugs.python.org/issue36974 - - (3) https://bugs.python.org/issue37878 - - (4) https://bugs.python.org/issue38644 - - (5) https://bugs.python.org/issue39542 - - (6) https://bugs.python.org/issue39946 - - (7) https://bugs.python.org/issue37340 - - (8) https://bugs.python.org/issue38896 - - (9) https://bugs.python.org/issue40428 - - (10) https://bugs.python.org/issue39465 - - (11) https://www.python.org/dev/peps/pep-0393 - - (12) https://bugs.python.org/issue36346 - - (13) https://bugs.python.org/issue39372 - - -File: python.info, Node: Notable changes in Python 3 9 1, Next: Notable changes in Python 3 9 2, Prev: C API Changes, Up: What’s New In Python 3 9 - -1.1.13 Notable changes in Python 3.9.1 --------------------------------------- - -* Menu: - -* typing: typing<2>. -* macOS 11.0 (Big Sur) and Apple Silicon Mac support: macOS 11 0 Big Sur and Apple Silicon Mac support. - - -File: python.info, Node: typing<2>, Next: macOS 11 0 Big Sur and Apple Silicon Mac support, Up: Notable changes in Python 3 9 1 - -1.1.13.1 typing -............... - -The behavior of *note typing.Literal: 278. was changed to conform with -PEP 586(1) and to match the behavior of static type checkers specified -in the PEP. - - 1. ‘Literal’ now de-duplicates parameters. - - 2. Equality comparisons between ‘Literal’ objects are now order - independent. - - 3. ‘Literal’ comparisons now respect types. For example, ‘Literal[0] - == Literal[False]’ previously evaluated to ‘True’. It is now - ‘False’. To support this change, the internally used type cache - now supports differentiating types. - - 4. ‘Literal’ objects will now raise a *note TypeError: 1fe. exception - during equality comparisons if any of their parameters are not - *note hashable: 279. Note that declaring ‘Literal’ with mutable - parameters will not throw an error: - - >>> from typing import Literal - >>> Literal[{0}] - >>> Literal[{0}] == Literal[{False}] - Traceback (most recent call last): - File "", line 1, in - TypeError: unhashable type: 'set' - -(Contributed by Yurii Karabas in bpo-42345(2).) - - ---------- Footnotes ---------- - - (1) https://www.python.org/dev/peps/pep-0586 - - (2) https://bugs.python.org/issue42345 - - -File: python.info, Node: macOS 11 0 Big Sur and Apple Silicon Mac support, Prev: typing<2>, Up: Notable changes in Python 3 9 1 - -1.1.13.2 macOS 11.0 (Big Sur) and Apple Silicon Mac support -........................................................... - -As of 3.9.1, Python now fully supports building and running on macOS -11.0 (Big Sur) and on Apple Silicon Macs (based on the ‘ARM64’ -architecture). A new universal build variant, ‘universal2’, is now -available to natively support both ‘ARM64’ and ‘Intel 64’ in one set of -executables. Binaries can also now be built on current versions of -macOS to be deployed on a range of older macOS versions (tested to 10.9) -while making some newer OS functions and options conditionally available -based on the operating system version in use at runtime (“weaklinking”). - -(Contributed by Ronald Oussoren and Lawrence D’Anna in bpo-41100(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue41100 - - -File: python.info, Node: Notable changes in Python 3 9 2, Next: Notable changes in Python 3 9 3, Prev: Notable changes in Python 3 9 1, Up: What’s New In Python 3 9 - -1.1.14 Notable changes in Python 3.9.2 --------------------------------------- - -* Menu: - -* collections.abc: collections abc. -* urllib.parse: urllib parse. - - -File: python.info, Node: collections abc, Next: urllib parse, Up: Notable changes in Python 3 9 2 - -1.1.14.1 collections.abc -........................ - -*note collections.abc.Callable: 27d. generic now flattens type -parameters, similar to what *note typing.Callable: 27e. currently does. -This means that ‘collections.abc.Callable[[int, str], str]’ will have -‘__args__’ of ‘(int, str, str)’; previously this was ‘([int, str], -str)’. To allow this change, *note types.GenericAlias: 27f. can now be -subclassed, and a subclass will be returned when subscripting the *note -collections.abc.Callable: 27d. type. Code which accesses the arguments -via *note typing.get_args(): 280. or ‘__args__’ need to account for this -change. A *note DeprecationWarning: 15a. may be emitted for invalid -forms of parameterizing *note collections.abc.Callable: 27d. which may -have passed silently in Python 3.9.1. This *note DeprecationWarning: -15a. will become a *note TypeError: 1fe. in Python 3.10. (Contributed -by Ken Jin in bpo-42195(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue42195 - - -File: python.info, Node: urllib parse, Prev: collections abc, Up: Notable changes in Python 3 9 2 - -1.1.14.2 urllib.parse -..................... - -Earlier Python versions allowed using both ‘;’ and ‘&’ as query -parameter separators in *note urllib.parse.parse_qs(): 282. and *note -urllib.parse.parse_qsl(): 283. Due to security concerns, and to conform -with newer W3C recommendations, this has been changed to allow only a -single separator key, with ‘&’ as the default. This change also affects -*note cgi.parse(): 284. and *note cgi.parse_multipart(): 285. as they -use the affected functions internally. For more details, please see -their respective documentation. (Contributed by Adam Goldschmidt, -Senthil Kumaran and Ken Jin in bpo-42967(1).) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue42967 - - -File: python.info, Node: Notable changes in Python 3 9 3, Next: Notable changes in Python 3 9 5, Prev: Notable changes in Python 3 9 2, Up: What’s New In Python 3 9 - -1.1.15 Notable changes in Python 3.9.3 --------------------------------------- - -A security fix alters the *note ftplib.FTP: 1a6. behavior to not trust -the IPv4 address sent from the remote server when setting up a passive -data channel. We reuse the ftp server IP address instead. For unusual -code requiring the old behavior, set a ‘trust_server_pasv_ipv4_address’ -attribute on your FTP instance to ‘True’. (See bpo-43285(1)) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue43285 - - -File: python.info, Node: Notable changes in Python 3 9 5, Prev: Notable changes in Python 3 9 3, Up: What’s New In Python 3 9 - -1.1.16 Notable changes in Python 3.9.5 --------------------------------------- - -* Menu: - -* urllib.parse: urllib parse<2>. - - -File: python.info, Node: urllib parse<2>, Up: Notable changes in Python 3 9 5 - -1.1.16.1 urllib.parse -..................... - -The presence of newline or tab characters in parts of a URL allows for -some forms of attacks. Following the WHATWG specification that updates -RFC 3986(1), ASCII newline ‘\n’, ‘\r’ and tab ‘\t’ characters are -stripped from the URL by the parser in *note urllib.parse: 128. -preventing such attacks. The removal characters are controlled by a new -module level variable ‘urllib.parse._UNSAFE_URL_BYTES_TO_REMOVE’. (See -bpo-43882(2)) - - ---------- Footnotes ---------- - - (1) https://tools.ietf.org/html/rfc3986.html - - (2) https://bugs.python.org/issue43882 - - -File: python.info, Node: What’s New In Python 3 8, Next: What’s New In Python 3 7, Prev: What’s New In Python 3 9, Up: What’s New in Python - -1.2 What’s New In Python 3.8 +1.1 What’s New In Python 3.8 ============================ Editor: Raymond Hettinger This article explains the new features in Python 3.8, compared to 3.7. -For full details, see the *note changelog: 156. +For full details, see the *note changelog: 14d. + +Python 3.8 was released on October 14th, 2019. * Menu: -* Summary – Release highlights: Summary – Release highlights<2>. -* New Features: New Features<3>. -* Other Language Changes: Other Language Changes<2>. -* New Modules: New Modules<2>. -* Improved Modules: Improved Modules<2>. -* Optimizations: Optimizations<2>. +* Summary – Release highlights:: +* New Features:: +* Other Language Changes:: +* New Modules:: +* Improved Modules:: +* Optimizations:: * Build and C API Changes:: -* Deprecated: Deprecated<2>. +* Deprecated:: * API and Feature Removals:: * Porting to Python 3.8: Porting to Python 3 8. * Notable changes in Python 3.8.1: Notable changes in Python 3 8 1. +* Notable changes in Python 3.8.2: Notable changes in Python 3 8 2. +* Notable changes in Python 3.8.3: Notable changes in Python 3 8 3. * Notable changes in Python 3.8.8: Notable changes in Python 3 8 8. +* Notable changes in Python 3.8.9: Notable changes in Python 3 8 9. +* Notable changes in Python 3.8.10: Notable changes in Python 3 8 10. +* Notable changes in Python 3.8.10: Notable changes in Python 3 8 10<2>. +* Notable changes in Python 3.8.12: Notable changes in Python 3 8 12.  -File: python.info, Node: Summary – Release highlights<2>, Next: New Features<3>, Up: What’s New In Python 3 8 +File: python.info, Node: Summary – Release highlights, Next: New Features, Up: What’s New In Python 3 8 -1.2.1 Summary – Release highlights +1.1.1 Summary – Release highlights ----------------------------------  -File: python.info, Node: New Features<3>, Next: Other Language Changes<2>, Prev: Summary – Release highlights<2>, Up: What’s New In Python 3 8 +File: python.info, Node: New Features, Next: Other Language Changes, Prev: Summary – Release highlights, Up: What’s New In Python 3 8 -1.2.2 New Features +1.1.2 New Features ------------------ * Menu: @@ -9962,13 +7245,13 @@ File: python.info, Node: New Features<3>, Next: Other Language Changes<2>, Pr * f-strings support = for self-documenting expressions and debugging:: * PEP 578; Python Runtime Audit Hooks: PEP 578 Python Runtime Audit Hooks. * PEP 587; Python Initialization Configuration: PEP 587 Python Initialization Configuration. -* PEP 590; Vectorcall; a fast calling protocol for CPython: PEP 590 Vectorcall a fast calling protocol for CPython. +* Vectorcall; a fast calling protocol for CPython: Vectorcall a fast calling protocol for CPython. * Pickle protocol 5 with out-of-band data buffers::  -File: python.info, Node: Assignment expressions, Next: Positional-only parameters, Up: New Features<3> +File: python.info, Node: Assignment expressions, Next: Positional-only parameters, Up: New Features -1.2.2.1 Assignment expressions +1.1.2.1 Assignment expressions .............................. There is new syntax ‘:=’ that assigns values to variables as part of a @@ -9976,7 +7259,7 @@ larger expression. It is affectionately known as “the walrus operator” due to its resemblance to the eyes and tusks of a walrus(1). In this example, the assignment expression helps avoid calling *note -len(): 28e. twice: +len(): 151. twice: if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)") @@ -10020,9 +7303,9 @@ https://en.wikipedia.org/wiki/Walrus#/media/File:Pacific_Walrus_-_Bull_(82476461 (3) https://bugs.python.org/issue35224  -File: python.info, Node: Positional-only parameters, Next: Parallel filesystem cache for compiled bytecode files, Prev: Assignment expressions, Up: New Features<3> +File: python.info, Node: Positional-only parameters, Next: Parallel filesystem cache for compiled bytecode files, Prev: Assignment expressions, Up: New Features -1.2.2.2 Positional-only parameters +1.1.2.2 Positional-only parameters .................................. There is a new function parameter syntax ‘/’ to indicate that some @@ -10048,7 +7331,7 @@ However, these are invalid calls: One use case for this notation is that it allows pure Python functions to fully emulate behaviors of existing C coded functions. For example, -the built-in *note divmod(): 290. function does not accept keyword +the built-in *note divmod(): 153. function does not accept keyword arguments: def divmod(a, b, /): @@ -10056,7 +7339,7 @@ arguments: return (a // b, a % b) Another use case is to preclude keyword arguments when the parameter -name is not helpful. For example, the builtin *note len(): 28e. +name is not helpful. For example, the builtin *note len(): 151. function has the signature ‘len(obj, /)’. This precludes awkward calls such as: @@ -10064,7 +7347,7 @@ such as: A further benefit of marking a parameter as positional-only is that it allows the parameter name to be changed in the future without risk of -breaking client code. For example, in the *note statistics: f5. module, +breaking client code. For example, in the *note statistics: f6. module, the parameter name `dist' may be changed in the future. This was made possible with the following function specification: @@ -10082,7 +7365,7 @@ keywords, the parameters names remain available for use in ‘**kwargs’: This greatly simplifies the implementation of functions and methods that need to accept arbitrary keyword arguments. For example, here is an -excerpt from code in the *note collections: 1d. module: +excerpt from code in the *note collections: 1e. module: class Counter(dict): @@ -10102,18 +7385,18 @@ See PEP 570(2) for a full description. (3) https://bugs.python.org/issue36540  -File: python.info, Node: Parallel filesystem cache for compiled bytecode files, Next: Debug build uses the same ABI as release build, Prev: Positional-only parameters, Up: New Features<3> +File: python.info, Node: Parallel filesystem cache for compiled bytecode files, Next: Debug build uses the same ABI as release build, Prev: Positional-only parameters, Up: New Features -1.2.2.3 Parallel filesystem cache for compiled bytecode files +1.1.2.3 Parallel filesystem cache for compiled bytecode files ............................................................. -The new *note PYTHONPYCACHEPREFIX: 292. setting (also available as *note --X: 293. ‘pycache_prefix’) configures the implicit bytecode cache to use +The new *note PYTHONPYCACHEPREFIX: 155. setting (also available as *note +-X: 156. ‘pycache_prefix’) configures the implicit bytecode cache to use a separate parallel filesystem tree, rather than the default ‘__pycache__’ subdirectories within each source directory. -The location of the cache is reported in *note sys.pycache_prefix: 294. -(*note None: 203. indicates the default location in ‘__pycache__’ +The location of the cache is reported in *note sys.pycache_prefix: 157. +(*note None: 158. indicates the default location in ‘__pycache__’ subdirectories). (Contributed by Carl Meyer in bpo-33499(1).) @@ -10123,9 +7406,9 @@ subdirectories). (1) https://bugs.python.org/issue33499  -File: python.info, Node: Debug build uses the same ABI as release build, Next: f-strings support = for self-documenting expressions and debugging, Prev: Parallel filesystem cache for compiled bytecode files, Up: New Features<3> +File: python.info, Node: Debug build uses the same ABI as release build, Next: f-strings support = for self-documenting expressions and debugging, Prev: Parallel filesystem cache for compiled bytecode files, Up: New Features -1.2.2.4 Debug build uses the same ABI as release build +1.1.2.4 Debug build uses the same ABI as release build ...................................................... Python now uses the same ABI whether it’s built in release or debug @@ -10137,7 +7420,7 @@ Release builds and debug builds are now ABI compatible: defining the ‘Py_DEBUG’ macro no longer implies the ‘Py_TRACE_REFS’ macro, which introduces the only ABI incompatibility. The ‘Py_TRACE_REFS’ macro, which adds the ‘sys.getobjects()’ function and the *note PYTHONDUMPREFS: -296. environment variable, can be set using the new ‘./configure +15a. environment variable, can be set using the new ‘./configure --with-trace-refs’ build option. (Contributed by Victor Stinner in bpo-36465(1).) @@ -10180,12 +7463,12 @@ bpo-36721(4).) (4) https://bugs.python.org/issue36721  -File: python.info, Node: f-strings support = for self-documenting expressions and debugging, Next: PEP 578 Python Runtime Audit Hooks, Prev: Debug build uses the same ABI as release build, Up: New Features<3> +File: python.info, Node: f-strings support = for self-documenting expressions and debugging, Next: PEP 578 Python Runtime Audit Hooks, Prev: Debug build uses the same ABI as release build, Up: New Features -1.2.2.5 f-strings support ‘=’ for self-documenting expressions and debugging +1.1.2.5 f-strings support ‘=’ for self-documenting expressions and debugging ............................................................................ -Added an ‘=’ specifier to *note f-string: 298.s. An f-string such as +Added an ‘=’ specifier to *note f-string: 15c.s. An f-string such as ‘f'{expr=}'’ will expand to the text of the expression, an equal sign, then the representation of the evaluated expression. For example: @@ -10194,7 +7477,7 @@ then the representation of the evaluated expression. For example: >>> f'{user=} {member_since=}' "user='eric_idle' member_since=datetime.date(1975, 7, 31)" -The usual *note f-string format specifiers: 299. allow more control over +The usual *note f-string format specifiers: 15d. allow more control over how the result of the expression is displayed: >>> delta = date.today() - member_since @@ -10214,9 +7497,9 @@ can be shown: (1) https://bugs.python.org/issue36817  -File: python.info, Node: PEP 578 Python Runtime Audit Hooks, Next: PEP 587 Python Initialization Configuration, Prev: f-strings support = for self-documenting expressions and debugging, Up: New Features<3> +File: python.info, Node: PEP 578 Python Runtime Audit Hooks, Next: PEP 587 Python Initialization Configuration, Prev: f-strings support = for self-documenting expressions and debugging, Up: New Features -1.2.2.6 PEP 578: Python Runtime Audit Hooks +1.1.2.6 PEP 578: Python Runtime Audit Hooks ........................................... The PEP adds an Audit Hook and Verified Open Hook. Both are available @@ -10232,9 +7515,9 @@ See PEP 578(1) for full details. (1) https://www.python.org/dev/peps/pep-0578  -File: python.info, Node: PEP 587 Python Initialization Configuration, Next: PEP 590 Vectorcall a fast calling protocol for CPython, Prev: PEP 578 Python Runtime Audit Hooks, Up: New Features<3> +File: python.info, Node: PEP 587 Python Initialization Configuration, Next: Vectorcall a fast calling protocol for CPython, Prev: PEP 578 Python Runtime Audit Hooks, Up: New Features -1.2.2.7 PEP 587: Python Initialization Configuration +1.1.2.7 PEP 587: Python Initialization Configuration .................................................... The PEP 587(1) adds a new C API to configure the Python Initialization @@ -10243,75 +7526,75 @@ reporting. New structures: - * *note PyConfig: 226. + * *note PyConfig: 160. - * *note PyPreConfig: 29c. + * *note PyPreConfig: 161. - * *note PyStatus: 29d. + * *note PyStatus: 162. - * *note PyWideStringList: 29e. + * *note PyWideStringList: 163. New functions: - * *note PyConfig_Clear(): 29f. + * ‘PyConfig_Clear()’ - * *note PyConfig_InitIsolatedConfig(): 2a0. + * ‘PyConfig_InitIsolatedConfig()’ - * *note PyConfig_InitPythonConfig(): 2a1. + * ‘PyConfig_InitPythonConfig()’ - * *note PyConfig_Read(): 2a2. + * ‘PyConfig_Read()’ - * *note PyConfig_SetArgv(): 2a3. + * ‘PyConfig_SetArgv()’ - * *note PyConfig_SetBytesArgv(): 2a4. + * ‘PyConfig_SetBytesArgv()’ - * *note PyConfig_SetBytesString(): 2a5. + * ‘PyConfig_SetBytesString()’ - * *note PyConfig_SetString(): 2a6. + * ‘PyConfig_SetString()’ - * *note PyPreConfig_InitIsolatedConfig(): 2a7. + * ‘PyPreConfig_InitIsolatedConfig()’ - * *note PyPreConfig_InitPythonConfig(): 2a8. + * ‘PyPreConfig_InitPythonConfig()’ - * *note PyStatus_Error(): 2a9. + * ‘PyStatus_Error()’ - * *note PyStatus_Exception(): 2aa. + * ‘PyStatus_Exception()’ - * *note PyStatus_Exit(): 2ab. + * ‘PyStatus_Exit()’ - * *note PyStatus_IsError(): 2ac. + * ‘PyStatus_IsError()’ - * *note PyStatus_IsExit(): 2ad. + * ‘PyStatus_IsExit()’ - * *note PyStatus_NoMemory(): 2ae. + * ‘PyStatus_NoMemory()’ - * *note PyStatus_Ok(): 2af. + * ‘PyStatus_Ok()’ - * *note PyWideStringList_Append(): 2b0. + * ‘PyWideStringList_Append()’ - * *note PyWideStringList_Insert(): 2b1. + * ‘PyWideStringList_Insert()’ - * *note Py_BytesMain(): 2b2. + * *note Py_BytesMain(): 164. - * *note Py_ExitStatusException(): 2b3. + * ‘Py_ExitStatusException()’ - * *note Py_InitializeFromConfig(): 2b4. + * *note Py_InitializeFromConfig(): 165. - * *note Py_PreInitialize(): 2b5. + * *note Py_PreInitialize(): 166. - * *note Py_PreInitializeFromArgs(): 2b6. + * *note Py_PreInitializeFromArgs(): 167. - * *note Py_PreInitializeFromBytesArgs(): 2b7. + * *note Py_PreInitializeFromBytesArgs(): 168. - * *note Py_RunMain(): 2b8. + * *note Py_RunMain(): 169. -This PEP also adds ‘_PyRuntimeState.preconfig’ (*note PyPreConfig: 29c. -type) and ‘PyInterpreterState.config’ (*note PyConfig: 226. type) fields +This PEP also adds ‘_PyRuntimeState.preconfig’ (*note PyPreConfig: 161. +type) and ‘PyInterpreterState.config’ (*note PyConfig: 160. type) fields to these internal structures. ‘PyInterpreterState.config’ becomes the new reference configuration, replacing global configuration variables and other private variables. -See *note Python Initialization Configuration: 2b9. for the +See *note Python Initialization Configuration: 16a. for the documentation. See PEP 587(2) for a full description. @@ -10327,14 +7610,14 @@ See PEP 587(2) for a full description. (3) https://bugs.python.org/issue36763  -File: python.info, Node: PEP 590 Vectorcall a fast calling protocol for CPython, Next: Pickle protocol 5 with out-of-band data buffers, Prev: PEP 587 Python Initialization Configuration, Up: New Features<3> +File: python.info, Node: Vectorcall a fast calling protocol for CPython, Next: Pickle protocol 5 with out-of-band data buffers, Prev: PEP 587 Python Initialization Configuration, Up: New Features -1.2.2.8 PEP 590: Vectorcall: a fast calling protocol for CPython -................................................................ +1.1.2.8 Vectorcall: a fast calling protocol for CPython +....................................................... -*note The Vectorcall Protocol: 2bb. is added to the Python/C API. It is -meant to formalize existing optimizations which were already done for -various classes. Any static type implementing a callable can use this +The “vectorcall” protocol is added to the Python/C API. It is meant to +formalize existing optimizations which were already done for various +classes. Any extension type implementing a callable can use this protocol. This is currently provisional. The aim is to make it fully public in @@ -10342,8 +7625,7 @@ Python 3.9. See PEP 590(1) for a full description. -(Contributed by Jeroen Demeyer, Mark Shannon and Petr Viktorin in -bpo-36974(2).) +(Contributed by Jeroen Demeyer and Mark Shannon in bpo-36974(2).) ---------- Footnotes ---------- @@ -10352,18 +7634,18 @@ bpo-36974(2).) (2) https://bugs.python.org/issue36974  -File: python.info, Node: Pickle protocol 5 with out-of-band data buffers, Prev: PEP 590 Vectorcall a fast calling protocol for CPython, Up: New Features<3> +File: python.info, Node: Pickle protocol 5 with out-of-band data buffers, Prev: Vectorcall a fast calling protocol for CPython, Up: New Features -1.2.2.9 Pickle protocol 5 with out-of-band data buffers +1.1.2.9 Pickle protocol 5 with out-of-band data buffers ....................................................... -When *note pickle: ca. is used to transfer large data between Python +When *note pickle: cb. is used to transfer large data between Python processes in order to take advantage of multi-core or multi-machine processing, it is important to optimize the transfer by reducing memory copies, and possibly by applying custom techniques such as data-dependent compression. -The *note pickle: ca. protocol 5 introduces support for out-of-band +The *note pickle: cb. protocol 5 introduces support for out-of-band buffers where PEP 3118(1)-compatible data can be transmitted separately from the main pickle stream, at the discretion of the communication layer. @@ -10381,32 +7663,32 @@ See PEP 574(2) for a full description. (3) https://bugs.python.org/issue36785  -File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Prev: New Features<3>, Up: What’s New In Python 3 8 +File: python.info, Node: Other Language Changes, Next: New Modules, Prev: New Features, Up: What’s New In Python 3 8 -1.2.3 Other Language Changes +1.1.3 Other Language Changes ---------------------------- - * A *note continue: 2be. statement was illegal in the *note finally: - 2bf. clause due to a problem with the implementation. In Python + * A *note continue: 16e. statement was illegal in the *note finally: + 16f. clause due to a problem with the implementation. In Python 3.8 this restriction was lifted. (Contributed by Serhiy Storchaka in bpo-32489(1).) - * The *note bool: 2c0, *note int: 204, and *note fractions.Fraction: - 2c1. types now have an *note as_integer_ratio(): 2c2. method like - that found in *note float: 1fd. and *note decimal.Decimal: 2c3. + * The *note bool: 170, *note int: 171, and *note fractions.Fraction: + 172. types now have an *note as_integer_ratio(): 173. method like + that found in *note float: 174. and *note decimal.Decimal: 175. This minor API extension makes it possible to write ‘numerator, denominator = x.as_integer_ratio()’ and have it work across multiple numeric types. (Contributed by Lisa Roach in bpo-33073(2) and Raymond Hettinger in bpo-37819(3).) - * Constructors of *note int: 204, *note float: 1fd. and *note - complex: 2c4. will now use the *note __index__(): 2c5. special + * Constructors of *note int: 171, *note float: 174. and *note + complex: 176. will now use the *note __index__(): 177. special method, if available and the corresponding method *note __int__(): - 2c6, *note __float__(): 2c7. or *note __complex__(): 2c8. is not + 178, *note __float__(): 179. or *note __complex__(): 17a. is not available. (Contributed by Serhiy Storchaka in bpo-20092(4).) * Added support of ‘\N{name}’ escapes in *note regular expressions: - dd.: + de.: >>> notice = 'Copyright © 2019' >>> copyright_year_pattern = re.compile(r'\N{copyright sign}\s*(\d{4})') @@ -10417,7 +7699,7 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre bpo-30688(5).) * Dict and dictviews are now iterable in reversed insertion order - using *note reversed(): 2c9. (Contributed by Rémi Lapeyre in + using *note reversed(): 17b. (Contributed by Rémi Lapeyre in bpo-33462(6).) * The syntax allowed for keyword names in function calls was further @@ -10426,8 +7708,8 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre the left-hand side of a keyword argument assignment term. (Contributed by Benjamin Peterson in bpo-34641(7).) - * Generalized iterable unpacking in *note yield: 2ca. and *note - return: 2cb. statements no longer requires enclosing parentheses. + * Generalized iterable unpacking in *note yield: 17c. and *note + return: 17d. statements no longer requires enclosing parentheses. This brings the `yield' and `return' syntax into better agreement with normal assignment syntax: @@ -10435,27 +7717,27 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre lastname, *members = family.split() return lastname.upper(), *members - >>> parse('simpsons homer marge bart lisa maggie') - ('SIMPSONS', 'homer', 'marge', 'bart', 'lisa', 'maggie') + >>> parse('simpsons homer marge bart lisa sally') + ('SIMPSONS', 'homer', 'marge', 'bart', 'lisa', 'sally') (Contributed by David Cuthbert and Jordan Chapman in bpo-32117(8).) * When a comma is missed in code such as ‘[(10, 20) (30, 40)]’, the - compiler displays a *note SyntaxWarning: 2cc. with a helpful - suggestion. This improves on just having a *note TypeError: 1fe. + compiler displays a *note SyntaxWarning: 17e. with a helpful + suggestion. This improves on just having a *note TypeError: 17f. indicating that the first tuple was not callable. (Contributed by Serhiy Storchaka in bpo-15248(9).) * Arithmetic operations between subclasses of *note datetime.date: - 19e. or *note datetime.datetime: 1a0. and *note datetime.timedelta: - 2cd. objects now return an instance of the subclass, rather than + 180. or *note datetime.datetime: 181. and *note datetime.timedelta: + 182. objects now return an instance of the subclass, rather than the base class. This also affects the return type of operations whose implementation (directly or indirectly) uses *note - datetime.timedelta: 2cd. arithmetic, such as *note astimezone(): - 2ce. (Contributed by Paul Ganssle in bpo-32417(10).) + datetime.timedelta: 182. arithmetic, such as *note astimezone(): + 183. (Contributed by Paul Ganssle in bpo-32417(10).) * When the Python interpreter is interrupted by Ctrl-C (SIGINT) and - the resulting *note KeyboardInterrupt: 2cf. exception is not + the resulting *note KeyboardInterrupt: 184. exception is not caught, the Python process now exits via a SIGINT signal or with the correct exit code such that the calling process can detect that it died due to a Ctrl-C. Shells on POSIX and Windows use this to @@ -10463,13 +7745,13 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre by Google via Gregory P. Smith in bpo-1054041(11).) * Some advanced styles of programming require updating the *note - types.CodeType: 2d0. object for an existing function. Since code + types.CodeType: 185. object for an existing function. Since code objects are immutable, a new code object needs to be created, one that is modeled on the existing code object. With 19 parameters, this was somewhat tedious. Now, the new ‘replace()’ method makes it possible to create a clone with a few altered parameters. - Here’s an example that alters the *note statistics.mean(): 2d1. + Here’s an example that alters the *note statistics.mean(): 186. function to prevent the `data' parameter from being used as a keyword argument: @@ -10484,7 +7766,7 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre (Contributed by Victor Stinner in bpo-37032(12).) - * For integers, the three-argument form of the *note pow(): 2d2. + * For integers, the three-argument form of the *note pow(): 187. function now permits the exponent to be negative in the case where the base is relatively prime to the modulus. It then computes a modular inverse to the base when the exponent is ‘-1’, and a @@ -10535,12 +7817,12 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre (Contributed by Jörn Heissler in bpo-35224(16).) - * The *note object.__reduce__(): 2d3. method can now return a tuple + * The *note object.__reduce__(): 188. method can now return a tuple from two to six elements long. Formerly, five was the limit. The new, optional sixth element is a callable with a ‘(obj, state)’ signature. This allows the direct control over the state-updating behavior of a specific object. If not `None', this callable will - have priority over the object’s *note __setstate__(): 2d4. method. + have priority over the object’s ‘__setstate__()’ method. (Contributed by Pierre Glaser and Olivier Grisel in bpo-35900(17).) ---------- Footnotes ---------- @@ -10580,12 +7862,12 @@ File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Pre (17) https://bugs.python.org/issue35900  -File: python.info, Node: New Modules<2>, Next: Improved Modules<2>, Prev: Other Language Changes<2>, Up: What’s New In Python 3 8 +File: python.info, Node: New Modules, Next: Improved Modules, Prev: Other Language Changes, Up: What’s New In Python 3 8 -1.2.4 New Modules +1.1.4 New Modules ----------------- - * The new *note importlib.metadata: 9d. module provides (provisional) + * The new *note importlib.metadata: 9e. module provides (provisional) support for reading metadata from third-party packages. For example, it can extract an installed package’s version number, list of entry points, and more: @@ -10612,77 +7894,77 @@ File: python.info, Node: New Modules<2>, Next: Improved Modules<2>, Prev: Oth (1) https://bugs.python.org/issue34632  -File: python.info, Node: Improved Modules<2>, Next: Optimizations<2>, Prev: New Modules<2>, Up: What’s New In Python 3 8 +File: python.info, Node: Improved Modules, Next: Optimizations, Prev: New Modules, Up: What’s New In Python 3 8 -1.2.5 Improved Modules +1.1.5 Improved Modules ---------------------- * Menu: -* ast: ast<2>. -* asyncio: asyncio<2>. +* ast:: +* asyncio:: * builtins:: * collections:: * cProfile:: * csv:: -* curses: curses<2>. +* curses:: * ctypes:: -* datetime: datetime<2>. +* datetime:: * functools:: -* gc: gc<2>. +* gc:: * gettext:: * gzip:: -* IDLE and idlelib: IDLE and idlelib<2>. -* inspect: inspect<2>. +* IDLE and idlelib:: +* inspect:: * io:: * itertools:: * json.tool: json tool. * logging:: -* math: math<2>. +* math:: * mmap:: -* multiprocessing: multiprocessing<2>. -* os: os<2>. +* multiprocessing:: +* os:: * os.path: os path. -* pathlib: pathlib<2>. +* pathlib:: * pickle:: * plistlib:: -* pprint: pprint<2>. +* pprint:: * py_compile:: * shlex:: * shutil:: -* socket: socket<2>. +* socket:: * ssl:: * statistics:: -* sys: sys<2>. +* sys:: * tarfile:: * threading:: * tokenize:: * tkinter:: -* time: time<2>. -* typing: typing<3>. -* unicodedata: unicodedata<2>. +* time:: +* typing:: +* unicodedata:: * unittest:: -* venv: venv<2>. +* venv:: * weakref:: -* xml: xml<2>. +* xml:: * xmlrpc::  -File: python.info, Node: ast<2>, Next: asyncio<2>, Up: Improved Modules<2> +File: python.info, Node: ast, Next: asyncio, Up: Improved Modules -1.2.5.1 ast +1.1.5.1 ast ........... AST nodes now have ‘end_lineno’ and ‘end_col_offset’ attributes, which give the precise location of the end of the node. (This only applies to nodes that have ‘lineno’ and ‘col_offset’ attributes.) -New function *note ast.get_source_segment(): 2d8. returns the source +New function *note ast.get_source_segment(): 18c. returns the source code for a specific AST node. (Contributed by Ivan Levkivskyi in bpo-33416(1).) -The *note ast.parse(): 2d9. function has some new flags: +The *note ast.parse(): 18d. function has some new flags: * ‘type_comments=True’ causes it to return the text of PEP 484(2) and PEP 526(3) type comments associated with certain AST nodes; @@ -10692,7 +7974,7 @@ The *note ast.parse(): 2d9. function has some new flags: * ‘feature_version=(3, N)’ allows specifying an earlier Python 3 version. For example, ‘feature_version=(3, 4)’ will treat *note - async: 2da. and *note await: 2db. as non-reserved words. + async: 18e. and *note await: 18f. as non-reserved words. (Contributed by Guido van Rossum in bpo-35766(5).) @@ -10709,13 +7991,13 @@ The *note ast.parse(): 2d9. function has some new flags: (5) https://bugs.python.org/issue35766  -File: python.info, Node: asyncio<2>, Next: builtins, Prev: ast<2>, Up: Improved Modules<2> +File: python.info, Node: asyncio, Next: builtins, Prev: ast, Up: Improved Modules -1.2.5.2 asyncio +1.1.5.2 asyncio ............... -*note asyncio.run(): 18d. has graduated from the provisional to stable -API. This function can be used to execute a *note coroutine: 18a. and +*note asyncio.run(): 191. has graduated from the provisional to stable +API. This function can be used to execute a *note coroutine: 192. and return the result while automatically managing the event loop. For example: @@ -10744,13 +8026,13 @@ This is `roughly' equivalent to: loop.close() The actual implementation is significantly more complex. Thus, *note -asyncio.run(): 18d. should be the preferred way of running asyncio +asyncio.run(): 191. should be the preferred way of running asyncio programs. (Contributed by Yury Selivanov in bpo-32314(1).) Running ‘python -m asyncio’ launches a natively async REPL. This allows -rapid experimentation with code that has a top-level *note await: 2db. +rapid experimentation with code that has a top-level *note await: 18f. There is no longer a need to directly call ‘asyncio.run()’ which would spawn a new event loop on every invocation: @@ -10764,35 +8046,35 @@ spawn a new event loop on every invocation: (Contributed by Yury Selivanov in bpo-37028(2).) -The exception *note asyncio.CancelledError: 2dd. now inherits from *note -BaseException: 2de. rather than *note Exception: 2df. and no longer -inherits from *note concurrent.futures.CancelledError: 2e0. +The exception *note asyncio.CancelledError: 193. now inherits from *note +BaseException: 194. rather than *note Exception: 195. and no longer +inherits from *note concurrent.futures.CancelledError: 196. (Contributed by Yury Selivanov in bpo-32528(3).) -On Windows, the default event loop is now *note ProactorEventLoop: 2e1. +On Windows, the default event loop is now *note ProactorEventLoop: 197. (Contributed by Victor Stinner in bpo-34687(4).) -*note ProactorEventLoop: 2e1. now also supports UDP. (Contributed by +*note ProactorEventLoop: 197. now also supports UDP. (Contributed by Adam Meily and Andrew Svetlov in bpo-29883(5).) -*note ProactorEventLoop: 2e1. can now be interrupted by *note -KeyboardInterrupt: 2cf. (“CTRL+C”). (Contributed by Vladimir Matveev in +*note ProactorEventLoop: 197. can now be interrupted by *note +KeyboardInterrupt: 184. (“CTRL+C”). (Contributed by Vladimir Matveev in bpo-23057(6).) -Added *note asyncio.Task.get_coro(): 2e2. for getting the wrapped -coroutine within an *note asyncio.Task: 2e3. (Contributed by Alex +Added *note asyncio.Task.get_coro(): 198. for getting the wrapped +coroutine within an *note asyncio.Task: 199. (Contributed by Alex Grönholm in bpo-36999(7).) Asyncio tasks can now be named, either by passing the ‘name’ keyword -argument to *note asyncio.create_task(): 2e4. or the *note -create_task(): 2e5. event loop method, or by calling the *note -set_name(): 2e6. method on the task object. The task name is visible in -the ‘repr()’ output of *note asyncio.Task: 2e3. and can also be -retrieved using the *note get_name(): 2e7. method. (Contributed by Alex +argument to *note asyncio.create_task(): 19a. or the *note +create_task(): 19b. event loop method, or by calling the *note +set_name(): 19c. method on the task object. The task name is visible in +the ‘repr()’ output of *note asyncio.Task: 199. and can also be +retrieved using the *note get_name(): 19d. method. (Contributed by Alex Grönholm in bpo-34270(8).) Added support for Happy Eyeballs(9) to *note -asyncio.loop.create_connection(): 2e8. To specify the behavior, two new +asyncio.loop.create_connection(): 19e. To specify the behavior, two new parameters have been added: `happy_eyeballs_delay' and `interleave'. The Happy Eyeballs algorithm improves responsiveness in applications that support IPv4 and IPv6 by attempting to simultaneously connect using @@ -10821,14 +8103,14 @@ both. (Contributed by twisteroid ambassador in bpo-33530(10).) (10) https://bugs.python.org/issue33530  -File: python.info, Node: builtins, Next: collections, Prev: asyncio<2>, Up: Improved Modules<2> +File: python.info, Node: builtins, Next: collections, Prev: asyncio, Up: Improved Modules -1.2.5.3 builtins +1.1.5.3 builtins ................ -The *note compile(): 2ea. built-in has been improved to accept the +The *note compile(): 1a0. built-in has been improved to accept the ‘ast.PyCF_ALLOW_TOP_LEVEL_AWAIT’ flag. With this new flag passed, *note -compile(): 2ea. will allow top-level ‘await’, ‘async for’ and ‘async +compile(): 1a0. will allow top-level ‘await’, ‘async for’ and ‘async with’ constructs that are usually considered invalid syntax. Asynchronous code object marked with the ‘CO_COROUTINE’ flag may then be returned. (Contributed by Matthias Bussonnier in bpo-34616(1)) @@ -10838,14 +8120,14 @@ returned. (Contributed by Matthias Bussonnier in bpo-34616(1)) (1) https://bugs.python.org/issue34616  -File: python.info, Node: collections, Next: cProfile, Prev: builtins, Up: Improved Modules<2> +File: python.info, Node: collections, Next: cProfile, Prev: builtins, Up: Improved Modules -1.2.5.4 collections +1.1.5.4 collections ................... -The *note _asdict(): 2ec. method for *note collections.namedtuple(): -1a1. now returns a *note dict: 164. instead of a *note -collections.OrderedDict: 2ed. This works because regular dicts have +The *note _asdict(): 1a2. method for *note collections.namedtuple(): +1a3. now returns a *note dict: 1a4. instead of a *note +collections.OrderedDict: 1a5. This works because regular dicts have guaranteed ordering since Python 3.7. If the extra features of ‘OrderedDict’ are required, the suggested remediation is to cast the result to the desired type: ‘OrderedDict(nt._asdict())’. (Contributed @@ -10856,12 +8138,12 @@ by Raymond Hettinger in bpo-35864(1).) (1) https://bugs.python.org/issue35864  -File: python.info, Node: cProfile, Next: csv, Prev: collections, Up: Improved Modules<2> +File: python.info, Node: cProfile, Next: csv, Prev: collections, Up: Improved Modules -1.2.5.5 cProfile +1.1.5.5 cProfile ................ -The *note cProfile.Profile: 2ef. class can now be used as a context +The *note cProfile.Profile: 1a7. class can now be used as a context manager. Profile a block of code by running: import cProfile @@ -10877,13 +8159,13 @@ manager. Profile a block of code by running: (1) https://bugs.python.org/issue29235  -File: python.info, Node: csv, Next: curses<2>, Prev: cProfile, Up: Improved Modules<2> +File: python.info, Node: csv, Next: curses, Prev: cProfile, Up: Improved Modules -1.2.5.6 csv +1.1.5.6 csv ........... -The *note csv.DictReader: 2f1. now returns instances of *note dict: 164. -instead of a *note collections.OrderedDict: 2ed. The tool is now faster +The *note csv.DictReader: 1a9. now returns instances of *note dict: 1a4. +instead of a *note collections.OrderedDict: 1a5. The tool is now faster and uses less memory while still preserving the field order. (Contributed by Michael Selik in bpo-34003(1).) @@ -10892,13 +8174,13 @@ and uses less memory while still preserving the field order. (1) https://bugs.python.org/issue34003  -File: python.info, Node: curses<2>, Next: ctypes, Prev: csv, Up: Improved Modules<2> +File: python.info, Node: curses, Next: ctypes, Prev: csv, Up: Improved Modules -1.2.5.7 curses +1.1.5.7 curses .............. Added a new variable holding structured version information for the -underlying ncurses library: *note ncurses_version: 2f3. (Contributed by +underlying ncurses library: *note ncurses_version: 1ab. (Contributed by Serhiy Storchaka in bpo-31680(1).) ---------- Footnotes ---------- @@ -10906,31 +8188,31 @@ Serhiy Storchaka in bpo-31680(1).) (1) https://bugs.python.org/issue31680  -File: python.info, Node: ctypes, Next: datetime<2>, Prev: curses<2>, Up: Improved Modules<2> +File: python.info, Node: ctypes, Next: datetime, Prev: curses, Up: Improved Modules -1.2.5.8 ctypes +1.1.5.8 ctypes .............. -On Windows, *note CDLL: 2f5. and subclasses now accept a `winmode' +On Windows, *note CDLL: 1ad. and subclasses now accept a `winmode' parameter to specify flags for the underlying ‘LoadLibraryEx’ call. The default flags are set to only load DLL dependencies from trusted locations, including the path where the DLL is stored (if a full or partial path is used to load the initial DLL) and paths added by *note -add_dll_directory(): 2f6. (Contributed by Steve Dower in bpo-36085(1).) +add_dll_directory(): 1ae. (Contributed by Steve Dower in bpo-36085(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue36085  -File: python.info, Node: datetime<2>, Next: functools, Prev: ctypes, Up: Improved Modules<2> +File: python.info, Node: datetime, Next: functools, Prev: ctypes, Up: Improved Modules -1.2.5.9 datetime +1.1.5.9 datetime ................ Added new alternate constructors *note datetime.date.fromisocalendar(): -2f8. and *note datetime.datetime.fromisocalendar(): 2f9, which construct -‘date’ and *note datetime: 30. objects respectively from ISO year, week +1b0. and *note datetime.datetime.fromisocalendar(): 1b1, which construct +‘date’ and *note datetime: 31. objects respectively from ISO year, week number, and weekday; these are the inverse of each class’s ‘isocalendar’ method. (Contributed by Paul Ganssle in bpo-36004(1).) @@ -10939,12 +8221,12 @@ method. (Contributed by Paul Ganssle in bpo-36004(1).) (1) https://bugs.python.org/issue36004  -File: python.info, Node: functools, Next: gc<2>, Prev: datetime<2>, Up: Improved Modules<2> +File: python.info, Node: functools, Next: gc, Prev: datetime, Up: Improved Modules -1.2.5.10 functools +1.1.5.10 functools .................. -*note functools.lru_cache(): 2fb. can now be used as a straight +*note functools.lru_cache(): 1b3. can now be used as a straight decorator rather than as a function returning a decorator. So both of these are now supported: @@ -10958,7 +8240,7 @@ these are now supported: (Contributed by Raymond Hettinger in bpo-36772(1).) -Added a new *note functools.cached_property(): 2fc. decorator, for +Added a new *note functools.cached_property(): 1b4. decorator, for computed properties cached for the life of the instance. import functools @@ -10974,9 +8256,9 @@ computed properties cached for the life of the instance. (Contributed by Carl Meyer in bpo-21145(2)) -Added a new *note functools.singledispatchmethod(): 2fd. decorator that -converts methods into *note generic functions: 2fe. using *note single -dispatch: 2ff.: +Added a new *note functools.singledispatchmethod(): 1b5. decorator that +converts methods into *note generic functions: 1b6. using *note single +dispatch: 1b7.: from functools import singledispatchmethod from contextlib import suppress @@ -11007,12 +8289,12 @@ dispatch: 2ff.: (3) https://bugs.python.org/issue32380  -File: python.info, Node: gc<2>, Next: gettext, Prev: functools, Up: Improved Modules<2> +File: python.info, Node: gc, Next: gettext, Prev: functools, Up: Improved Modules -1.2.5.11 gc +1.1.5.11 gc ........... -*note get_objects(): 301. can now receive an optional `generation' +*note get_objects(): 1b9. can now receive an optional `generation' parameter indicating a generation to get objects from. (Contributed by Pablo Galindo in bpo-36016(1).) @@ -11021,12 +8303,12 @@ Pablo Galindo in bpo-36016(1).) (1) https://bugs.python.org/issue36016  -File: python.info, Node: gettext, Next: gzip, Prev: gc<2>, Up: Improved Modules<2> +File: python.info, Node: gettext, Next: gzip, Prev: gc, Up: Improved Modules -1.2.5.12 gettext +1.1.5.12 gettext ................ -Added *note pgettext(): 303. and its variants. (Contributed by Franz +Added *note pgettext(): 1bb. and its variants. (Contributed by Franz Glasner, Éric Araujo, and Cheryl Sabella in bpo-2504(1).) ---------- Footnotes ---------- @@ -11034,16 +8316,16 @@ Glasner, Éric Araujo, and Cheryl Sabella in bpo-2504(1).) (1) https://bugs.python.org/issue2504  -File: python.info, Node: gzip, Next: IDLE and idlelib<2>, Prev: gettext, Up: Improved Modules<2> +File: python.info, Node: gzip, Next: IDLE and idlelib, Prev: gettext, Up: Improved Modules -1.2.5.13 gzip +1.1.5.13 gzip ............. -Added the `mtime' parameter to *note gzip.compress(): 305. for +Added the `mtime' parameter to *note gzip.compress(): 1bd. for reproducible output. (Contributed by Guo Ci Teo in bpo-34898(1).) -A *note BadGzipFile: 306. exception is now raised instead of *note -OSError: 307. for certain types of invalid or corrupt gzip files. +A *note BadGzipFile: 1be. exception is now raised instead of *note +OSError: 1bf. for certain types of invalid or corrupt gzip files. (Contributed by Filip Gruszczyński, Michele Orrù, and Zackery Spytz in bpo-6584(2).) @@ -11054,9 +8336,9 @@ bpo-6584(2).) (2) https://bugs.python.org/issue6584  -File: python.info, Node: IDLE and idlelib<2>, Next: inspect<2>, Prev: gzip, Up: Improved Modules<2> +File: python.info, Node: IDLE and idlelib, Next: inspect, Prev: gzip, Up: Improved Modules -1.2.5.14 IDLE and idlelib +1.1.5.14 IDLE and idlelib ......................... Output over N lines (50 by default) is squeezed down to a button. N can @@ -11119,16 +8401,16 @@ Reedy in bpo-37765(8).) (8) https://bugs.python.org/issue37765  -File: python.info, Node: inspect<2>, Next: io, Prev: IDLE and idlelib<2>, Up: Improved Modules<2> +File: python.info, Node: inspect, Next: io, Prev: IDLE and idlelib, Up: Improved Modules -1.2.5.15 inspect +1.1.5.15 inspect ................ -The *note inspect.getdoc(): 30a. function can now find docstrings for -‘__slots__’ if that attribute is a *note dict: 164. where the values are +The *note inspect.getdoc(): 1c2. function can now find docstrings for +‘__slots__’ if that attribute is a *note dict: 1a4. where the values are docstrings. This provides documentation options similar to what we -already have for *note property(): 30b, *note classmethod(): 30c, and -*note staticmethod(): 30d.: +already have for *note property(): 1c3, *note classmethod(): 1c4, and +*note staticmethod(): 1c5.: class AudioClip: __slots__ = {'bit_rate': 'expressed in kilohertz to one decimal place', @@ -11144,13 +8426,13 @@ already have for *note property(): 30b, *note classmethod(): 30c, and (1) https://bugs.python.org/issue36326  -File: python.info, Node: io, Next: itertools, Prev: inspect<2>, Up: Improved Modules<2> +File: python.info, Node: io, Next: itertools, Prev: inspect, Up: Improved Modules -1.2.5.16 io +1.1.5.16 io ........... -In development mode (*note -X: 293. ‘env’) and in debug build, the *note -io.IOBase: 30f. finalizer now logs the exception if the ‘close()’ method +In development mode (*note -X: 156. ‘env’) and in debug build, the *note +io.IOBase: 1c7. finalizer now logs the exception if the ‘close()’ method fails. The exception is ignored silently by default in release build. (Contributed by Victor Stinner in bpo-18748(1).) @@ -11159,12 +8441,12 @@ fails. The exception is ignored silently by default in release build. (1) https://bugs.python.org/issue18748  -File: python.info, Node: itertools, Next: json tool, Prev: io, Up: Improved Modules<2> +File: python.info, Node: itertools, Next: json tool, Prev: io, Up: Improved Modules -1.2.5.17 itertools +1.1.5.17 itertools .................. -The *note itertools.accumulate(): 311. function added an option +The *note itertools.accumulate(): 1c9. function added an option `initial' keyword argument to specify an initial value: >>> from itertools import accumulate @@ -11178,9 +8460,9 @@ The *note itertools.accumulate(): 311. function added an option (1) https://bugs.python.org/issue34659  -File: python.info, Node: json tool, Next: logging, Prev: itertools, Up: Improved Modules<2> +File: python.info, Node: json tool, Next: logging, Prev: itertools, Up: Improved Modules -1.2.5.18 json.tool +1.1.5.18 json.tool .................. Add option ‘--json-lines’ to parse every input line as a separate JSON @@ -11191,12 +8473,12 @@ object. (Contributed by Weipeng Hong in bpo-31553(1).) (1) https://bugs.python.org/issue31553  -File: python.info, Node: logging, Next: math<2>, Prev: json tool, Up: Improved Modules<2> +File: python.info, Node: logging, Next: math, Prev: json tool, Up: Improved Modules -1.2.5.19 logging +1.1.5.19 logging ................ -Added a `force' keyword argument to *note logging.basicConfig(): 314. +Added a `force' keyword argument to *note logging.basicConfig(): 1cc. When set to true, any existing handlers attached to the root logger are removed and closed before carrying out the configuration specified by the other arguments. @@ -11215,21 +8497,21 @@ reviewed by Vinay Sajip in bpo-33897(1).) (1) https://bugs.python.org/issue33897  -File: python.info, Node: math<2>, Next: mmap, Prev: logging, Up: Improved Modules<2> +File: python.info, Node: math, Next: mmap, Prev: logging, Up: Improved Modules -1.2.5.20 math +1.1.5.20 math ............. -Added new function *note math.dist(): 316. for computing Euclidean +Added new function *note math.dist(): 1ce. for computing Euclidean distance between two points. (Contributed by Raymond Hettinger in bpo-33089(1).) -Expanded the *note math.hypot(): 317. function to handle multiple +Expanded the *note math.hypot(): 1cf. function to handle multiple dimensions. Formerly, it only supported the 2-D case. (Contributed by Raymond Hettinger in bpo-33089(2).) -Added new function, *note math.prod(): 318, as analogous function to -*note sum(): 319. that returns the product of a ‘start’ value (default: +Added new function, *note math.prod(): 1d0, as analogous function to +*note sum(): 1d1. that returns the product of a ‘start’ value (default: 1) times an iterable of numbers: >>> prior = 0.8 @@ -11239,8 +8521,8 @@ Added new function, *note math.prod(): 318, as analogous function to (Contributed by Pablo Galindo in bpo-35606(3).) -Added two new combinatoric functions *note math.perm(): 31a. and *note -math.comb(): 31b.: +Added two new combinatoric functions *note math.perm(): 1d2. and *note +math.comb(): 1d3.: >>> math.perm(10, 3) # Permutations of 10 things taken 3 at a time 720 @@ -11250,10 +8532,10 @@ math.comb(): 31b.: (Contributed by Yash Aggarwal, Keller Fuchs, Serhiy Storchaka, and Raymond Hettinger in bpo-37128(4), bpo-37178(5), and bpo-35431(6).) -Added a new function *note math.isqrt(): 31c. for computing accurate +Added a new function *note math.isqrt(): 1d4. for computing accurate integer square roots without conversion to floating point. The new function supports arbitrarily large integers. It is faster than -‘floor(sqrt(n))’ but slower than *note math.sqrt(): 31d.: +‘floor(sqrt(n))’ but slower than *note math.sqrt(): 1d5.: >>> r = 650320427 >>> s = r ** 2 @@ -11264,7 +8546,7 @@ function supports arbitrarily large integers. It is faster than (Contributed by Mark Dickinson in bpo-36887(7).) -The function *note math.factorial(): 1fc. no longer accepts arguments +The function *note math.factorial(): 1d6. no longer accepts arguments that are not int-like. (Contributed by Pablo Galindo in bpo-33083(8).) ---------- Footnotes ---------- @@ -11286,12 +8568,12 @@ that are not int-like. (Contributed by Pablo Galindo in bpo-33083(8).) (8) https://bugs.python.org/issue33083  -File: python.info, Node: mmap, Next: multiprocessing<2>, Prev: math<2>, Up: Improved Modules<2> +File: python.info, Node: mmap, Next: multiprocessing, Prev: math, Up: Improved Modules -1.2.5.21 mmap +1.1.5.21 mmap ............. -The *note mmap.mmap: 31f. class now has an *note madvise(): 320. method +The *note mmap.mmap: 1d8. class now has an *note madvise(): 1d9. method to access the ‘madvise()’ system call. (Contributed by Zackery Spytz in bpo-32941(1).) @@ -11300,12 +8582,12 @@ bpo-32941(1).) (1) https://bugs.python.org/issue32941  -File: python.info, Node: multiprocessing<2>, Next: os<2>, Prev: mmap, Up: Improved Modules<2> +File: python.info, Node: multiprocessing, Next: os, Prev: mmap, Up: Improved Modules -1.2.5.22 multiprocessing +1.1.5.22 multiprocessing ........................ -Added new *note multiprocessing.shared_memory: bc. module. (Contributed +Added new *note multiprocessing.shared_memory: bd. module. (Contributed by Davin Potts in bpo-35813(1).) On macOS, the `spawn' start method is now used by default. (Contributed @@ -11318,35 +8600,35 @@ by Victor Stinner in bpo-33725(2).) (2) https://bugs.python.org/issue33725  -File: python.info, Node: os<2>, Next: os path, Prev: multiprocessing<2>, Up: Improved Modules<2> +File: python.info, Node: os, Next: os path, Prev: multiprocessing, Up: Improved Modules -1.2.5.23 os +1.1.5.23 os ........... -Added new function *note add_dll_directory(): 2f6. on Windows for +Added new function *note add_dll_directory(): 1ae. on Windows for providing additional search paths for native dependencies when importing -extension modules or loading DLLs using *note ctypes: 2a. (Contributed +extension modules or loading DLLs using *note ctypes: 2b. (Contributed by Steve Dower in bpo-36085(1).) -A new *note os.memfd_create(): 323. function was added to wrap the +A new *note os.memfd_create(): 1dc. function was added to wrap the ‘memfd_create()’ syscall. (Contributed by Zackery Spytz and Christian Heimes in bpo-26836(2).) On Windows, much of the manual logic for handling reparse points (including symlinks and directory junctions) has been delegated to the -operating system. Specifically, *note os.stat(): 324. will now traverse -anything supported by the operating system, while *note os.lstat(): 325. +operating system. Specifically, *note os.stat(): 1dd. will now traverse +anything supported by the operating system, while *note os.lstat(): 1de. will only open reparse points that identify as “name surrogates” while -others are opened as for *note os.stat(): 324. In all cases, +others are opened as for *note os.stat(): 1dd. In all cases, ‘stat_result.st_mode’ will only have ‘S_IFLNK’ set for symbolic links and not other kinds of reparse points. To identify other kinds of reparse point, check the new ‘stat_result.st_reparse_tag’ attribute. -On Windows, *note os.readlink(): 1d1. is now able to read directory -junctions. Note that *note islink(): 326. will return ‘False’ for +On Windows, *note os.readlink(): 1df. is now able to read directory +junctions. Note that *note islink(): 1e0. will return ‘False’ for directory junctions, and so code that checks ‘islink’ first will continue to treat junctions as directories, while code that handles -errors from *note os.readlink(): 1d1. may now treat junctions as links. +errors from *note os.readlink(): 1df. may now treat junctions as links. (Contributed by Steve Dower in bpo-37834(3).) @@ -11359,28 +8641,28 @@ errors from *note os.readlink(): 1d1. may now treat junctions as links. (3) https://bugs.python.org/issue37834  -File: python.info, Node: os path, Next: pathlib<2>, Prev: os<2>, Up: Improved Modules<2> +File: python.info, Node: os path, Next: pathlib, Prev: os, Up: Improved Modules -1.2.5.24 os.path +1.1.5.24 os.path ................ -*note os.path: c5. functions that return a boolean result like *note -exists(): 328, *note lexists(): 329, *note isdir(): 32a, *note isfile(): -32b, *note islink(): 326, and *note ismount(): 32c. now return ‘False’ -instead of raising *note ValueError: 16d. or its subclasses *note -UnicodeEncodeError: 32d. and *note UnicodeDecodeError: 32e. for paths +*note os.path: c6. functions that return a boolean result like *note +exists(): 1e2, *note lexists(): 1e3, *note isdir(): 1e4, *note isfile(): +1e5, *note islink(): 1e0, and *note ismount(): 1e6. now return ‘False’ +instead of raising *note ValueError: 1e7. or its subclasses *note +UnicodeEncodeError: 1e8. and *note UnicodeDecodeError: 1e9. for paths that contain characters or bytes unrepresentable at the OS level. (Contributed by Serhiy Storchaka in bpo-33721(1).) -*note expanduser(): 32f. on Windows now prefers the ‘USERPROFILE’ +*note expanduser(): 1ea. on Windows now prefers the ‘USERPROFILE’ environment variable and does not use ‘HOME’, which is not normally set for regular user accounts. (Contributed by Anthony Sottile in bpo-36264(2).) -*note isdir(): 32a. on Windows no longer returns ‘True’ for a link to a +*note isdir(): 1e4. on Windows no longer returns ‘True’ for a link to a non-existent directory. -*note realpath(): 330. on Windows now resolves reparse points, including +*note realpath(): 1eb. on Windows now resolves reparse points, including symlinks and directory junctions. (Contributed by Steve Dower in bpo-37834(3).) @@ -11394,21 +8676,21 @@ symlinks and directory junctions. (3) https://bugs.python.org/issue37834  -File: python.info, Node: pathlib<2>, Next: pickle, Prev: os path, Up: Improved Modules<2> +File: python.info, Node: pathlib, Next: pickle, Prev: os path, Up: Improved Modules -1.2.5.25 pathlib +1.1.5.25 pathlib ................ -*note pathlib.Path: 332. methods that return a boolean result like *note -exists(): 333, *note is_dir(): 334, *note is_file(): 335, *note -is_mount(): 336, *note is_symlink(): 337, *note is_block_device(): 338, -*note is_char_device(): 339, *note is_fifo(): 33a, *note is_socket(): -33b. now return ‘False’ instead of raising *note ValueError: 16d. or its -subclass *note UnicodeEncodeError: 32d. for paths that contain +*note pathlib.Path: 1ed. methods that return a boolean result like *note +exists(): 1ee, *note is_dir(): 1ef, *note is_file(): 1f0, *note +is_mount(): 1f1, *note is_symlink(): 1f2, *note is_block_device(): 1f3, +*note is_char_device(): 1f4, *note is_fifo(): 1f5, *note is_socket(): +1f6. now return ‘False’ instead of raising *note ValueError: 1e7. or its +subclass *note UnicodeEncodeError: 1e8. for paths that contain characters unrepresentable at the OS level. (Contributed by Serhiy Storchaka in bpo-33721(1).) -Added *note pathlib.Path.link_to(): 33c. which creates a hard link +Added *note pathlib.Path.link_to(): 1f7. which creates a hard link pointing to a path. (Contributed by Joannah Nanjekye in bpo-26978(2)) ---------- Footnotes ---------- @@ -11418,14 +8700,14 @@ pointing to a path. (Contributed by Joannah Nanjekye in bpo-26978(2)) (2) https://bugs.python.org/issue26978  -File: python.info, Node: pickle, Next: plistlib, Prev: pathlib<2>, Up: Improved Modules<2> +File: python.info, Node: pickle, Next: plistlib, Prev: pathlib, Up: Improved Modules -1.2.5.26 pickle +1.1.5.26 pickle ............... -*note pickle: ca. extensions subclassing the C-optimized *note Pickler: -33e. can now override the pickling logic of functions and classes by -defining the special *note reducer_override(): 33f. method. +*note pickle: cb. extensions subclassing the C-optimized *note Pickler: +1f9. can now override the pickling logic of functions and classes by +defining the special *note reducer_override(): 1fa. method. (Contributed by Pierre Glaser and Olivier Grisel in bpo-35900(1).) ---------- Footnotes ---------- @@ -11433,12 +8715,12 @@ defining the special *note reducer_override(): 33f. method. (1) https://bugs.python.org/issue35900  -File: python.info, Node: plistlib, Next: pprint<2>, Prev: pickle, Up: Improved Modules<2> +File: python.info, Node: plistlib, Next: pprint, Prev: pickle, Up: Improved Modules -1.2.5.27 plistlib +1.1.5.27 plistlib ................. -Added new *note plistlib.UID: 341. and enabled support for reading and +Added new *note plistlib.UID: 1fc. and enabled support for reading and writing NSKeyedArchiver-encoded binary plists. (Contributed by Jon Janzen in bpo-26707(1).) @@ -11447,19 +8729,19 @@ Janzen in bpo-26707(1).) (1) https://bugs.python.org/issue26707  -File: python.info, Node: pprint<2>, Next: py_compile, Prev: plistlib, Up: Improved Modules<2> +File: python.info, Node: pprint, Next: py_compile, Prev: plistlib, Up: Improved Modules -1.2.5.28 pprint +1.1.5.28 pprint ............... -The *note pprint: d2. module added a `sort_dicts' parameter to several +The *note pprint: d3. module added a `sort_dicts' parameter to several functions. By default, those functions continue to sort dictionaries before rendering or printing. However, if `sort_dicts' is set to false, the dictionaries retain the order that keys were inserted. This can be useful for comparison to JSON inputs during debugging. In addition, there is a convenience new function, *note pprint.pp(): -343. that is like *note pprint.pprint(): 344. but with `sort_dicts' +1fe. that is like *note pprint.pprint(): 1ff. but with `sort_dicts' defaulting to ‘False’: >>> from pprint import pprint, pp @@ -11480,12 +8762,12 @@ defaulting to ‘False’: (1) https://bugs.python.org/issue30670  -File: python.info, Node: py_compile, Next: shlex, Prev: pprint<2>, Up: Improved Modules<2> +File: python.info, Node: py_compile, Next: shlex, Prev: pprint, Up: Improved Modules -1.2.5.29 py_compile +1.1.5.29 py_compile ................... -*note py_compile.compile(): 346. now supports silent mode. (Contributed +*note py_compile.compile(): 201. now supports silent mode. (Contributed by Joannah Nanjekye in bpo-22640(1).) ---------- Footnotes ---------- @@ -11493,34 +8775,34 @@ by Joannah Nanjekye in bpo-22640(1).) (1) https://bugs.python.org/issue22640  -File: python.info, Node: shlex, Next: shutil, Prev: py_compile, Up: Improved Modules<2> +File: python.info, Node: shlex, Next: shutil, Prev: py_compile, Up: Improved Modules -1.2.5.30 shlex +1.1.5.30 shlex .............. -The new *note shlex.join(): 348. function acts as the inverse of *note -shlex.split(): 210. (Contributed by Bo Bayles in bpo-32102(1).) +The new *note shlex.join(): 203. function acts as the inverse of *note +shlex.split(): 204. (Contributed by Bo Bayles in bpo-32102(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue32102  -File: python.info, Node: shutil, Next: socket<2>, Prev: shlex, Up: Improved Modules<2> +File: python.info, Node: shutil, Next: socket, Prev: shlex, Up: Improved Modules -1.2.5.31 shutil +1.1.5.31 shutil ............... -*note shutil.copytree(): 34a. now accepts a new ‘dirs_exist_ok’ keyword +*note shutil.copytree(): 206. now accepts a new ‘dirs_exist_ok’ keyword argument. (Contributed by Josh Bronson in bpo-20849(1).) -*note shutil.make_archive(): 34b. now defaults to the modern pax +*note shutil.make_archive(): 207. now defaults to the modern pax (POSIX.1-2001) format for new archives to improve portability and standards conformance, inherited from the corresponding change to the -*note tarfile: 101. module. (Contributed by C.A.M. Gerlach in +*note tarfile: 102. module. (Contributed by C.A.M. Gerlach in bpo-30661(2).) -*note shutil.rmtree(): 34c. on Windows now removes directory junctions +*note shutil.rmtree(): 208. on Windows now removes directory junctions without recursively removing their contents first. (Contributed by Steve Dower in bpo-37834(3).) @@ -11533,19 +8815,19 @@ Steve Dower in bpo-37834(3).) (3) https://bugs.python.org/issue37834  -File: python.info, Node: socket<2>, Next: ssl, Prev: shutil, Up: Improved Modules<2> +File: python.info, Node: socket, Next: ssl, Prev: shutil, Up: Improved Modules -1.2.5.32 socket +1.1.5.32 socket ............... -Added *note create_server(): 34e. and *note has_dualstack_ipv6(): 34f. +Added *note create_server(): 20a. and *note has_dualstack_ipv6(): 20b. convenience functions to automate the necessary tasks usually involved when creating a server socket, including accepting both IPv4 and IPv6 connections on the same socket. (Contributed by Giampaolo Rodolà in bpo-17561(1).) -The *note socket.if_nameindex(): 350, *note socket.if_nametoindex(): -351, and *note socket.if_indextoname(): 352. functions have been +The *note socket.if_nameindex(): 20c, *note socket.if_nametoindex(): +20d, and *note socket.if_indextoname(): 20e. functions have been implemented on Windows. (Contributed by Zackery Spytz in bpo-37007(2).) ---------- Footnotes ---------- @@ -11555,13 +8837,13 @@ implemented on Windows. (Contributed by Zackery Spytz in bpo-37007(2).) (2) https://bugs.python.org/issue37007  -File: python.info, Node: ssl, Next: statistics, Prev: socket<2>, Up: Improved Modules<2> +File: python.info, Node: ssl, Next: statistics, Prev: socket, Up: Improved Modules -1.2.5.33 ssl +1.1.5.33 ssl ............ -Added *note post_handshake_auth: 354. to enable and *note -verify_client_post_handshake(): 355. to initiate TLS 1.3 post-handshake +Added *note post_handshake_auth: 210. to enable and *note +verify_client_post_handshake(): 211. to initiate TLS 1.3 post-handshake authentication. (Contributed by Christian Heimes in bpo-34670(1).) ---------- Footnotes ---------- @@ -11569,26 +8851,26 @@ authentication. (Contributed by Christian Heimes in bpo-34670(1).) (1) https://bugs.python.org/issue34670  -File: python.info, Node: statistics, Next: sys<2>, Prev: ssl, Up: Improved Modules<2> +File: python.info, Node: statistics, Next: sys, Prev: ssl, Up: Improved Modules -1.2.5.34 statistics +1.1.5.34 statistics ................... -Added *note statistics.fmean(): 357. as a faster, floating point variant -of *note statistics.mean(): 2d1. (Contributed by Raymond Hettinger and +Added *note statistics.fmean(): 213. as a faster, floating point variant +of *note statistics.mean(): 186. (Contributed by Raymond Hettinger and Steven D’Aprano in bpo-35904(1).) -Added *note statistics.geometric_mean(): 358. (Contributed by Raymond +Added *note statistics.geometric_mean(): 214. (Contributed by Raymond Hettinger in bpo-27181(2).) -Added *note statistics.multimode(): 359. that returns a list of the most +Added *note statistics.multimode(): 215. that returns a list of the most common values. (Contributed by Raymond Hettinger in bpo-35892(3).) -Added *note statistics.quantiles(): 35a. that divides data or a +Added *note statistics.quantiles(): 216. that divides data or a distribution in to equiprobable intervals (e.g. quartiles, deciles, or percentiles). (Contributed by Raymond Hettinger in bpo-36546(4).) -Added *note statistics.NormalDist: 35b, a tool for creating and +Added *note statistics.NormalDist: 217, a tool for creating and manipulating normal distributions of a random variable. (Contributed by Raymond Hettinger in bpo-36018(5).) @@ -11627,16 +8909,16 @@ Raymond Hettinger in bpo-36018(5).) (5) https://bugs.python.org/issue36018  -File: python.info, Node: sys<2>, Next: tarfile, Prev: statistics, Up: Improved Modules<2> +File: python.info, Node: sys, Next: tarfile, Prev: statistics, Up: Improved Modules -1.2.5.35 sys +1.1.5.35 sys ............ -Add new *note sys.unraisablehook(): 35d. function which can be +Add new *note sys.unraisablehook(): 219. function which can be overridden to control how “unraisable exceptions” are handled. It is called when an exception has occurred but there is no way for Python to handle it. For example, when a destructor raises an exception or during -garbage collection (*note gc.collect(): 35e.). (Contributed by Victor +garbage collection (*note gc.collect(): 21a.). (Contributed by Victor Stinner in bpo-36829(1).) ---------- Footnotes ---------- @@ -11644,12 +8926,12 @@ Stinner in bpo-36829(1).) (1) https://bugs.python.org/issue36829  -File: python.info, Node: tarfile, Next: threading, Prev: sys<2>, Up: Improved Modules<2> +File: python.info, Node: tarfile, Next: threading, Prev: sys, Up: Improved Modules -1.2.5.36 tarfile +1.1.5.36 tarfile ................ -The *note tarfile: 101. module now defaults to the modern pax +The *note tarfile: 102. module now defaults to the modern pax (POSIX.1-2001) format for new archives, instead of the previous GNU-specific one. This improves cross-platform portability with a consistent encoding (UTF-8) in a standardized and extensible format, and @@ -11661,22 +8943,22 @@ bpo-36268(1).) (1) https://bugs.python.org/issue36268  -File: python.info, Node: threading, Next: tokenize, Prev: tarfile, Up: Improved Modules<2> +File: python.info, Node: threading, Next: tokenize, Prev: tarfile, Up: Improved Modules -1.2.5.37 threading +1.1.5.37 threading .................. -Add a new *note threading.excepthook(): 361. function which handles -uncaught *note threading.Thread.run(): 362. exception. It can be -overridden to control how uncaught *note threading.Thread.run(): 362. +Add a new *note threading.excepthook(): 21d. function which handles +uncaught *note threading.Thread.run(): 21e. exception. It can be +overridden to control how uncaught *note threading.Thread.run(): 21e. exceptions are handled. (Contributed by Victor Stinner in bpo-1230540(1).) -Add a new *note threading.get_native_id(): 363. function and a *note -native_id: 364. attribute to the *note threading.Thread: 21a. class. +Add a new *note threading.get_native_id(): 21f. function and a *note +native_id: 220. attribute to the *note threading.Thread: 221. class. These return the native integral Thread ID of the current thread assigned by the kernel. This feature is only available on certain -platforms, see *note get_native_id: 363. for more information. +platforms, see *note get_native_id: 21f. for more information. (Contributed by Jake Tesler in bpo-36084(2).) ---------- Footnotes ---------- @@ -11686,12 +8968,12 @@ platforms, see *note get_native_id: 363. for more information. (2) https://bugs.python.org/issue36084  -File: python.info, Node: tokenize, Next: tkinter, Prev: threading, Up: Improved Modules<2> +File: python.info, Node: tokenize, Next: tkinter, Prev: threading, Up: Improved Modules -1.2.5.38 tokenize +1.1.5.38 tokenize ................. -The *note tokenize: 11a. module now implicitly emits a ‘NEWLINE’ token +The *note tokenize: 112. module now implicitly emits a ‘NEWLINE’ token when provided with input that does not have a trailing new line. This behavior now matches what the C tokenizer does internally. (Contributed by Ammar Askar in bpo-33899(1).) @@ -11701,9 +8983,9 @@ by Ammar Askar in bpo-33899(1).) (1) https://bugs.python.org/issue33899  -File: python.info, Node: tkinter, Next: time<2>, Prev: tokenize, Up: Improved Modules<2> +File: python.info, Node: tkinter, Next: time, Prev: tokenize, Up: Improved Modules -1.2.5.39 tkinter +1.1.5.39 tkinter ................ Added methods ‘selection_from()’, ‘selection_present()’, @@ -11726,12 +9008,12 @@ bpo-25451(3).) (3) https://bugs.python.org/issue25451  -File: python.info, Node: time<2>, Next: typing<3>, Prev: tkinter, Up: Improved Modules<2> +File: python.info, Node: time, Next: typing, Prev: tkinter, Up: Improved Modules -1.2.5.40 time +1.1.5.40 time ............. -Added new clock *note CLOCK_UPTIME_RAW: 368. for macOS 10.12. +Added new clock *note CLOCK_UPTIME_RAW: 225. for macOS 10.12. (Contributed by Joannah Nanjekye in bpo-35702(1).) ---------- Footnotes ---------- @@ -11739,15 +9021,15 @@ Added new clock *note CLOCK_UPTIME_RAW: 368. for macOS 10.12. (1) https://bugs.python.org/issue35702  -File: python.info, Node: typing<3>, Next: unicodedata<2>, Prev: time<2>, Up: Improved Modules<2> +File: python.info, Node: typing, Next: unicodedata, Prev: time, Up: Improved Modules -1.2.5.41 typing +1.1.5.41 typing ............... -The *note typing: 122. module incorporates several new features: +The *note typing: 11a. module incorporates several new features: * A dictionary type with per-key types. See PEP 589(1) and *note - typing.TypedDict: 36a. TypedDict uses only string keys. By + typing.TypedDict: 227. TypedDict uses only string keys. By default, every key is required to be present. Specify “total=False” to allow keys to be optional: @@ -11756,7 +9038,7 @@ The *note typing: 122. module incorporates several new features: grid_square: str xy_coordinate: tuple - * Literal types. See PEP 586(2) and *note typing.Literal: 278. + * Literal types. See PEP 586(2) and *note typing.Literal: 228. Literal types indicate that a parameter or return value is constrained to one or more specific literal values: @@ -11764,20 +9046,20 @@ The *note typing: 122. module incorporates several new features: ... * “Final” variables, functions, methods and classes. See PEP 591(3), - *note typing.Final: 36b. and *note typing.final(): 36c. The final + *note typing.Final: 229. and *note typing.final(): 22a. The final qualifier instructs a static type checker to restrict subclassing, overriding, or reassignment: pi: Final[float] = 3.1415926536 - * Protocol definitions. See PEP 544(4), *note typing.Protocol: 36d. - and *note typing.runtime_checkable(): 36e. Simple ABCs like *note - typing.SupportsInt: 36f. are now ‘Protocol’ subclasses. + * Protocol definitions. See PEP 544(4), *note typing.Protocol: 22b. + and *note typing.runtime_checkable(): 22c. Simple ABCs like *note + typing.SupportsInt: 22d. are now ‘Protocol’ subclasses. - * New protocol class *note typing.SupportsIndex: 370. + * New protocol class *note typing.SupportsIndex: 22e. - * New functions *note typing.get_origin(): 371. and *note - typing.get_args(): 280. + * New functions *note typing.get_origin(): 22f. and *note + typing.get_args(): 230. ---------- Footnotes ---------- @@ -11790,15 +9072,15 @@ The *note typing: 122. module incorporates several new features: (4) https://www.python.org/dev/peps/pep-0544  -File: python.info, Node: unicodedata<2>, Next: unittest, Prev: typing<3>, Up: Improved Modules<2> +File: python.info, Node: unicodedata, Next: unittest, Prev: typing, Up: Improved Modules -1.2.5.42 unicodedata +1.1.5.42 unicodedata .................... -The *note unicodedata: 123. module has been upgraded to use the Unicode +The *note unicodedata: 11b. module has been upgraded to use the Unicode 12.1.0(1) release. -New function *note is_normalized(): 373. can be used to verify a string +New function *note is_normalized(): 232. can be used to verify a string is in a specific normal form, often much faster than by actually normalizing the string. (Contributed by Max Belanger, David Euresti, and Greg Price in bpo-32285(2) and bpo-37966(3)). @@ -11812,24 +9094,24 @@ and Greg Price in bpo-32285(2) and bpo-37966(3)). (3) https://bugs.python.org/issue37966  -File: python.info, Node: unittest, Next: venv<2>, Prev: unicodedata<2>, Up: Improved Modules<2> +File: python.info, Node: unittest, Next: venv, Prev: unicodedata, Up: Improved Modules -1.2.5.43 unittest +1.1.5.43 unittest ................. -Added *note AsyncMock: 375. to support an asynchronous version of *note -Mock: 376. Appropriate new assert functions for testing have been added +Added *note AsyncMock: 234. to support an asynchronous version of *note +Mock: 235. Appropriate new assert functions for testing have been added as well. (Contributed by Lisa Roach in bpo-26467(1)). -Added *note addModuleCleanup(): 377. and *note addClassCleanup(): 378. +Added *note addModuleCleanup(): 236. and *note addClassCleanup(): 237. to unittest to support cleanups for ‘setUpModule()’ and *note -setUpClass(): 379. (Contributed by Lisa Roach in bpo-24412(2).) +setUpClass(): 238. (Contributed by Lisa Roach in bpo-24412(2).) Several mock assert functions now also print a list of actual calls upon failure. (Contributed by Petter Strandmark in bpo-35047(3).) -*note unittest: 124. module gained support for coroutines to be used as -test cases with *note unittest.IsolatedAsyncioTestCase: 37a. +*note unittest: 11c. module gained support for coroutines to be used as +test cases with *note unittest.IsolatedAsyncioTestCase: 239. (Contributed by Andrew Svetlov in bpo-32972(4).) Example: @@ -11864,12 +9146,12 @@ Example: (4) https://bugs.python.org/issue32972  -File: python.info, Node: venv<2>, Next: weakref, Prev: unittest, Up: Improved Modules<2> +File: python.info, Node: venv, Next: weakref, Prev: unittest, Up: Improved Modules -1.2.5.44 venv +1.1.5.44 venv ............. -*note venv: 12e. now includes an ‘Activate.ps1’ script on all platforms +*note venv: 126. now includes an ‘Activate.ps1’ script on all platforms for activating virtual environments under PowerShell Core 6.1. (Contributed by Brett Cannon in bpo-32718(1).) @@ -11878,12 +9160,12 @@ for activating virtual environments under PowerShell Core 6.1. (1) https://bugs.python.org/issue32718  -File: python.info, Node: weakref, Next: xml<2>, Prev: venv<2>, Up: Improved Modules<2> +File: python.info, Node: weakref, Next: xml, Prev: venv, Up: Improved Modules -1.2.5.45 weakref +1.1.5.45 weakref ................ -The proxy objects returned by *note weakref.proxy(): 37d. now support +The proxy objects returned by *note weakref.proxy(): 23c. now support the matrix multiplication operators ‘@’ and ‘@=’ in addition to the other numeric operators. (Contributed by Mark Dickinson in bpo-36669(1).) @@ -11893,29 +9175,29 @@ bpo-36669(1).) (1) https://bugs.python.org/issue36669  -File: python.info, Node: xml<2>, Next: xmlrpc, Prev: weakref, Up: Improved Modules<2> +File: python.info, Node: xml, Next: xmlrpc, Prev: weakref, Up: Improved Modules -1.2.5.46 xml +1.1.5.46 xml ............ As mitigation against DTD and external entity retrieval, the *note -xml.dom.minidom: 13e. and *note xml.sax: 144. modules no longer process +xml.dom.minidom: 136. and *note xml.sax: 13c. modules no longer process external entities by default. (Contributed by Christian Heimes in bpo-17239(1).) -The ‘.find*()’ methods in the *note xml.etree.ElementTree: 140. module +The ‘.find*()’ methods in the *note xml.etree.ElementTree: 138. module support wildcard searches like ‘{*}tag’ which ignores the namespace and ‘{namespace}*’ which returns all tags in the given namespace. (Contributed by Stefan Behnel in bpo-28238(2).) -The *note xml.etree.ElementTree: 140. module provides a new function +The *note xml.etree.ElementTree: 138. module provides a new function ‘–xml.etree.ElementTree.canonicalize()’ that implements C14N 2.0. (Contributed by Stefan Behnel in bpo-13611(3).) -The target object of *note xml.etree.ElementTree.XMLParser: 37f. can +The target object of *note xml.etree.ElementTree.XMLParser: 23e. can receive namespace declaration events through the new callback methods ‘start_ns()’ and ‘end_ns()’. Additionally, the *note -xml.etree.ElementTree.TreeBuilder: 380. target can be configured to +xml.etree.ElementTree.TreeBuilder: 23f. target can be configured to process events about comments and processing instructions to include them in the generated tree. (Contributed by Stefan Behnel in bpo-36676(4) and bpo-36673(5).) @@ -11933,12 +9215,12 @@ bpo-36676(4) and bpo-36673(5).) (5) https://bugs.python.org/issue36673  -File: python.info, Node: xmlrpc, Prev: xml<2>, Up: Improved Modules<2> +File: python.info, Node: xmlrpc, Prev: xml, Up: Improved Modules -1.2.5.47 xmlrpc +1.1.5.47 xmlrpc ............... -*note xmlrpc.client.ServerProxy: 382. now supports an optional `headers' +*note xmlrpc.client.ServerProxy: 241. now supports an optional `headers' keyword argument for a sequence of HTTP headers to be sent with each request. Among other things, this makes it possible to upgrade from default basic authentication to faster session authentication. @@ -11949,13 +9231,13 @@ default basic authentication to faster session authentication. (1) https://bugs.python.org/issue35153  -File: python.info, Node: Optimizations<2>, Next: Build and C API Changes, Prev: Improved Modules<2>, Up: What’s New In Python 3 8 +File: python.info, Node: Optimizations, Next: Build and C API Changes, Prev: Improved Modules, Up: What’s New In Python 3 8 -1.2.6 Optimizations +1.1.6 Optimizations ------------------- - * The *note subprocess: f9. module can now use the *note - os.posix_spawn(): 384. function in some cases for better + * The *note subprocess: fa. module can now use the *note + os.posix_spawn(): 243. function in some cases for better performance. Currently, it is only used on macOS and Linux (using glibc 2.24 or newer) if all these conditions are met: @@ -11969,31 +9251,31 @@ File: python.info, Node: Optimizations<2>, Next: Build and C API Changes, Pre (Contributed by Joannah Nanjekye and Victor Stinner in bpo-35537(1).) - * *note shutil.copyfile(): 385, *note shutil.copy(): 386, *note - shutil.copy2(): 387, *note shutil.copytree(): 34a. and *note - shutil.move(): 388. use platform-specific “fast-copy” syscalls on + * *note shutil.copyfile(): 244, *note shutil.copy(): 245, *note + shutil.copy2(): 246, *note shutil.copytree(): 206. and *note + shutil.move(): 247. use platform-specific “fast-copy” syscalls on Linux and macOS in order to copy the file more efficiently. “fast-copy” means that the copying operation occurs within the kernel, avoiding the use of userspace buffers in Python as in “‘outfd.write(infd.read())’”. On Windows *note shutil.copyfile(): - 385. uses a bigger default buffer size (1 MiB instead of 16 KiB) - and a *note memoryview(): 389.-based variant of *note - shutil.copyfileobj(): 38a. is used. The speedup for copying a 512 + 244. uses a bigger default buffer size (1 MiB instead of 16 KiB) + and a *note memoryview(): 248.-based variant of *note + shutil.copyfileobj(): 249. is used. The speedup for copying a 512 MiB file within the same partition is about +26% on Linux, +50% on macOS and +40% on Windows. Also, much less CPU cycles are consumed. See *note Platform-dependent efficient copy operations: - 38b. section. (Contributed by Giampaolo Rodolà in bpo-33671(2).) + 24a. section. (Contributed by Giampaolo Rodolà in bpo-33671(2).) - * *note shutil.copytree(): 34a. uses *note os.scandir(): 38c. + * *note shutil.copytree(): 206. uses *note os.scandir(): 24b. function and all copy functions depending from it use cached *note - os.stat(): 324. values. The speedup for copying a directory with + os.stat(): 1dd. values. The speedup for copying a directory with 8000 files is around +9% on Linux, +20% on Windows and +30% on a - Windows SMB share. Also the number of *note os.stat(): 324. - syscalls is reduced by 38% making *note shutil.copytree(): 34a. + Windows SMB share. Also the number of *note os.stat(): 1dd. + syscalls is reduced by 38% making *note shutil.copytree(): 206. especially faster on network filesystems. (Contributed by Giampaolo Rodolà in bpo-33695(3).) - * The default protocol in the *note pickle: ca. module is now + * The default protocol in the *note pickle: cb. module is now Protocol 4, first introduced in Python 3.4. It offers better performance and smaller size compared to Protocol 3 available since Python 3.0. @@ -12002,23 +9284,23 @@ File: python.info, Node: Optimizations<2>, Next: Build and C API Changes, Pre objects (e.g. tuple, list, dict) size is reduced 4 or 8 bytes. (Contributed by Inada Naoki in bpo-33597(4).) - * *note uuid.UUID: 38d. now uses ‘__slots__’ to reduce its memory + * *note uuid.UUID: 24c. now uses ‘__slots__’ to reduce its memory footprint. (Contributed by Wouter Bolsterlee and Tal Einat in bpo-30977(5)) - * Improved performance of *note operator.itemgetter(): 38e. by 33%. + * Improved performance of *note operator.itemgetter(): 24d. by 33%. Optimized argument handling and added a fast path for the common case of a single non-negative integer index into a tuple (which is the typical use case in the standard library). (Contributed by Raymond Hettinger in bpo-35664(6).) - * Sped-up field lookups in *note collections.namedtuple(): 1a1. They + * Sped-up field lookups in *note collections.namedtuple(): 1a3. They are now more than two times faster, making them the fastest form of instance variable lookup in Python. (Contributed by Raymond Hettinger, Pablo Galindo, and Joe Jevnik, Serhiy Storchaka in bpo-32492(7).) - * The *note list: 1f8. constructor does not overallocate the internal + * The *note list: 24e. constructor does not overallocate the internal item buffer if the input iterable has a known length (the input implements ‘__len__’). This makes the created list 12% smaller on average. (Contributed by Raymond Hettinger and Pablo Galindo in @@ -12068,12 +9350,12 @@ File: python.info, Node: Optimizations<2>, Next: Build and C API Changes, Pre (13) https://bugs.python.org/issue26219  -File: python.info, Node: Build and C API Changes, Next: Deprecated<2>, Prev: Optimizations<2>, Up: What’s New In Python 3 8 +File: python.info, Node: Build and C API Changes, Next: Deprecated, Prev: Optimizations, Up: What’s New In Python 3 8 -1.2.7 Build and C API Changes +1.1.7 Build and C API Changes ----------------------------- - * Default *note sys.abiflags: 390. became an empty string: the ‘m’ + * Default *note sys.abiflags: 250. became an empty string: the ‘m’ flag for pymalloc became useless (builds with and without pymalloc are ABI compatible) and so has been removed. (Contributed by Victor Stinner in bpo-36707(1).) @@ -12119,9 +9401,9 @@ File: python.info, Node: Build and C API Changes, Next: Deprecated<2>, Prev: issues specific to macros, variables have a local scopes. Examples: - * *note Py_INCREF(): 391, *note Py_DECREF(): 392. + * *note Py_INCREF(): 251, *note Py_DECREF(): 252. - * *note Py_XINCREF(): 393, *note Py_XDECREF(): 394. + * *note Py_XINCREF(): 253, *note Py_XDECREF(): 254. * ‘PyObject_INIT()’, ‘PyObject_INIT_VAR()’ @@ -12156,34 +9438,34 @@ File: python.info, Node: Build and C API Changes, Next: Deprecated<2>, Prev: (Contributed by Antoine Pitrou in bpo-32430(7).) * Functions that convert Python number to C integer like *note - PyLong_AsLong(): 395. and argument parsing functions like *note - PyArg_ParseTuple(): 396. with integer converting format units like - ‘'i'’ will now use the *note __index__(): 2c5. special method - instead of *note __int__(): 2c6, if available. The deprecation + PyLong_AsLong(): 255. and argument parsing functions like *note + PyArg_ParseTuple(): 256. with integer converting format units like + ‘'i'’ will now use the *note __index__(): 177. special method + instead of *note __int__(): 178, if available. The deprecation warning will be emitted for objects with the ‘__int__()’ method but - without the ‘__index__()’ method (like *note Decimal: 2c3. and - *note Fraction: 2c1.). *note PyNumber_Check(): 397. will now + without the ‘__index__()’ method (like *note Decimal: 175. and + *note Fraction: 172.). *note PyNumber_Check(): 257. will now return ‘1’ for objects implementing ‘__index__()’. *note - PyNumber_Long(): 398, *note PyNumber_Float(): 399. and *note - PyFloat_AsDouble(): 39a. also now use the ‘__index__()’ method if + PyNumber_Long(): 258, *note PyNumber_Float(): 259. and *note + PyFloat_AsDouble(): 25a. also now use the ‘__index__()’ method if available. (Contributed by Serhiy Storchaka in bpo-36048(8) and bpo-20092(9).) * Heap-allocated type objects will now increase their reference count - in *note PyObject_Init(): 39b. (and its parallel macro - ‘PyObject_INIT’) instead of in *note PyType_GenericAlloc(): 39c. + in *note PyObject_Init(): 25b. (and its parallel macro + ‘PyObject_INIT’) instead of in *note PyType_GenericAlloc(): 25c. Types that modify instance allocation or deallocation may need to be adjusted. (Contributed by Eddie Elizondo in bpo-35810(10).) - * The new function *note PyCode_NewWithPosOnlyArgs(): 39d. allows to - create code objects like *note PyCode_New(): 39e, but with an extra + * The new function *note PyCode_NewWithPosOnlyArgs(): 25d. allows to + create code objects like *note PyCode_New(): 25e, but with an extra `posonlyargcount' parameter for indicating the number of positional-only arguments. (Contributed by Pablo Galindo in bpo-37221(11).) - * *note Py_SetPath(): 39f. now sets *note sys.executable: 3a0. to the - program full path (*note Py_GetProgramFullPath(): 3a1.) rather than - to the program name (*note Py_GetProgramName(): 3a2.). + * *note Py_SetPath(): 25f. now sets *note sys.executable: 260. to the + program full path (*note Py_GetProgramFullPath(): 261.) rather than + to the program name (*note Py_GetProgramName(): 262.). (Contributed by Victor Stinner in bpo-38234(12).) ---------- Footnotes ---------- @@ -12213,9 +9495,9 @@ File: python.info, Node: Build and C API Changes, Next: Deprecated<2>, Prev: (12) https://bugs.python.org/issue38234  -File: python.info, Node: Deprecated<2>, Next: API and Feature Removals, Prev: Build and C API Changes, Up: What’s New In Python 3 8 +File: python.info, Node: Deprecated, Next: API and Feature Removals, Prev: Build and C API Changes, Up: What’s New In Python 3 8 -1.2.8 Deprecated +1.1.8 Deprecated ---------------- * The distutils ‘bdist_wininst’ command is now deprecated, use @@ -12223,115 +9505,115 @@ File: python.info, Node: Deprecated<2>, Next: API and Feature Removals, Prev: Stinner in bpo-37481(1).) * Deprecated methods ‘getchildren()’ and ‘getiterator()’ in the *note - ElementTree: 140. module now emit a *note DeprecationWarning: 15a. - instead of *note PendingDeprecationWarning: 15c. They will be + ElementTree: 138. module now emit a *note DeprecationWarning: 264. + instead of *note PendingDeprecationWarning: 265. They will be removed in Python 3.9. (Contributed by Serhiy Storchaka in bpo-29209(2).) * Passing an object that is not an instance of *note - concurrent.futures.ThreadPoolExecutor: 18c. to *note - loop.set_default_executor(): 3a4. is deprecated and will be + concurrent.futures.ThreadPoolExecutor: 266. to *note + loop.set_default_executor(): 267. is deprecated and will be prohibited in Python 3.9. (Contributed by Elvis Pranskevichus in bpo-34075(3).) - * The *note __getitem__(): 3a5. methods of *note - xml.dom.pulldom.DOMEventStream: 3a6, *note - wsgiref.util.FileWrapper: 3a7. and *note fileinput.FileInput: 3a8. + * The ‘__getitem__()’ methods of *note + xml.dom.pulldom.DOMEventStream: 268, *note + wsgiref.util.FileWrapper: 269. and *note fileinput.FileInput: 26a. have been deprecated. Implementations of these methods have been ignoring their `index' parameter, and returning the next item instead. (Contributed by Berker Peksag in bpo-9372(4).) - * The *note typing.NamedTuple: 227. class has deprecated the + * The *note typing.NamedTuple: 26b. class has deprecated the ‘_field_types’ attribute in favor of the ‘__annotations__’ attribute which has the same information. (Contributed by Raymond Hettinger in bpo-36320(5).) - * *note ast: 7. classes ‘Num’, ‘Str’, ‘Bytes’, ‘NameConstant’ and + * *note ast: 8. classes ‘Num’, ‘Str’, ‘Bytes’, ‘NameConstant’ and ‘Ellipsis’ are considered deprecated and will be removed in future - Python versions. *note Constant: 3a9. should be used instead. - (Contributed by Serhiy Storchaka in bpo-32892(6).) + Python versions. ‘Constant’ should be used instead. (Contributed + by Serhiy Storchaka in bpo-32892(6).) - * *note ast.NodeVisitor: 3aa. methods ‘visit_Num()’, ‘visit_Str()’, + * *note ast.NodeVisitor: 26c. methods ‘visit_Num()’, ‘visit_Str()’, ‘visit_Bytes()’, ‘visit_NameConstant()’ and ‘visit_Ellipsis()’ are deprecated now and will not be called in future Python versions. Add the ‘visit_Constant()’ method to handle all constant nodes. (Contributed by Serhiy Storchaka in bpo-36917(7).) - * The *note asyncio.coroutine(): 3ab. *note decorator: 174. is + * The *note asyncio.coroutine(): 26d. *note decorator: 26e. is deprecated and will be removed in version 3.10. Instead of - ‘@asyncio.coroutine’, use *note async def: 3ac. instead. + ‘@asyncio.coroutine’, use *note async def: 26f. instead. (Contributed by Andrew Svetlov in bpo-36921(8).) - * In *note asyncio: 9, the explicit passing of a `loop' argument has + * In *note asyncio: a, the explicit passing of a `loop' argument has been deprecated and will be removed in version 3.10 for the - following: *note asyncio.sleep(): 3ad, *note asyncio.gather(): 3ae, - *note asyncio.shield(): 3af, *note asyncio.wait_for(): 191, *note - asyncio.wait(): 207, *note asyncio.as_completed(): 3b0, *note - asyncio.Task: 2e3, *note asyncio.Lock: 3b1, *note asyncio.Event: - 3b2, *note asyncio.Condition: 3b3, *note asyncio.Semaphore: 3b4, - *note asyncio.BoundedSemaphore: 3b5, *note asyncio.Queue: 3b6, - *note asyncio.create_subprocess_exec(): 3b7, and *note - asyncio.create_subprocess_shell(): 3b8. + following: *note asyncio.sleep(): 270, *note asyncio.gather(): 271, + *note asyncio.shield(): 272, *note asyncio.wait_for(): 273, *note + asyncio.wait(): 274, *note asyncio.as_completed(): 275, *note + asyncio.Task: 199, *note asyncio.Lock: 276, *note asyncio.Event: + 277, *note asyncio.Condition: 278, *note asyncio.Semaphore: 279, + *note asyncio.BoundedSemaphore: 27a, *note asyncio.Queue: 27b, + *note asyncio.create_subprocess_exec(): 27c, and *note + asyncio.create_subprocess_shell(): 27d. * The explicit passing of coroutine objects to *note asyncio.wait(): - 207. has been deprecated and will be removed in version 3.11. + 274. has been deprecated and will be removed in version 3.11. (Contributed by Yury Selivanov in bpo-34790(9).) * The following functions and methods are deprecated in the *note - gettext: 87. module: *note lgettext(): 3b9, *note ldgettext(): 3ba, - *note lngettext(): 3bb. and *note ldngettext(): 3bc. They return + gettext: 89. module: *note lgettext(): 27e, *note ldgettext(): 27f, + *note lngettext(): 280. and *note ldngettext(): 281. They return encoded bytes, and it’s possible that you will get unexpected Unicode-related exceptions if there are encoding problems with the translated strings. It’s much better to use alternatives which return Unicode strings in Python 3. These functions have been broken for a long time. - Function *note bind_textdomain_codeset(): 3bd, methods *note - output_charset(): 3be. and *note set_output_charset(): 3bf, and the - `codeset' parameter of functions *note translation(): 3c0. and - *note install(): 3c1. are also deprecated, since they are only used + Function *note bind_textdomain_codeset(): 282, methods *note + output_charset(): 283. and *note set_output_charset(): 284, and the + `codeset' parameter of functions *note translation(): 285. and + *note install(): 286. are also deprecated, since they are only used for the ‘l*gettext()’ functions. (Contributed by Serhiy Storchaka in bpo-33710(10).) - * The ‘isAlive()’ method of *note threading.Thread: 21a. has been + * The ‘isAlive()’ method of *note threading.Thread: 221. has been deprecated. (Contributed by Dong-hee Na in bpo-35283(11).) * Many builtin and extension functions that take integer arguments - will now emit a deprecation warning for *note Decimal: 2c3.s, *note - Fraction: 2c1.s and any other objects that can be converted to + will now emit a deprecation warning for *note Decimal: 175.s, *note + Fraction: 172.s and any other objects that can be converted to integers only with a loss (e.g. that have the *note __int__(): - 2c6. method but do not have the *note __index__(): 2c5. method). + 178. method but do not have the *note __index__(): 177. method). In future version they will be errors. (Contributed by Serhiy Storchaka in bpo-36048(12).) * Deprecated passing the following arguments as keyword arguments: - - `func' in *note functools.partialmethod(): 3c2, *note - weakref.finalize(): 3c3, *note profile.Profile.runcall(): 3c4, - ‘cProfile.Profile.runcall()’, *note bdb.Bdb.runcall(): 3c5, - *note trace.Trace.runfunc(): 3c6. and *note curses.wrapper(): - 3c7. + - `func' in *note functools.partialmethod(): 287, *note + weakref.finalize(): 288, *note profile.Profile.runcall(): 289, + ‘cProfile.Profile.runcall()’, *note bdb.Bdb.runcall(): 28a, + *note trace.Trace.runfunc(): 28b. and *note curses.wrapper(): + 28c. - - `function' in *note unittest.TestCase.addCleanup(): 3c8. + - `function' in *note unittest.TestCase.addCleanup(): 28d. - - `fn' in the *note submit(): 3c9. method of *note - concurrent.futures.ThreadPoolExecutor: 18c. and *note - concurrent.futures.ProcessPoolExecutor: 196. + - `fn' in the *note submit(): 28e. method of *note + concurrent.futures.ThreadPoolExecutor: 266. and *note + concurrent.futures.ProcessPoolExecutor: 28f. - - `callback' in *note contextlib.ExitStack.callback(): 3ca, + - `callback' in *note contextlib.ExitStack.callback(): 290, ‘contextlib.AsyncExitStack.callback()’ and *note - contextlib.AsyncExitStack.push_async_callback(): 3cb. + contextlib.AsyncExitStack.push_async_callback(): 291. - `c' and `typeid' in the ‘create()’ method of ‘multiprocessing.managers.Server’ and ‘multiprocessing.managers.SharedMemoryServer’. - - `obj' in *note weakref.finalize(): 3c3. + - `obj' in *note weakref.finalize(): 288. In future releases of Python, they will be *note positional-only: - 3cc. (Contributed by Serhiy Storchaka in bpo-36492(13).) + 292. (Contributed by Serhiy Storchaka in bpo-36492(13).) ---------- Footnotes ---------- @@ -12362,16 +9644,16 @@ File: python.info, Node: Deprecated<2>, Next: API and Feature Removals, Prev: (13) https://bugs.python.org/issue36492  -File: python.info, Node: API and Feature Removals, Next: Porting to Python 3 8, Prev: Deprecated<2>, Up: What’s New In Python 3 8 +File: python.info, Node: API and Feature Removals, Next: Porting to Python 3 8, Prev: Deprecated, Up: What’s New In Python 3 8 -1.2.9 API and Feature Removals +1.1.9 API and Feature Removals ------------------------------ The following features and APIs have been removed from Python 3.8: * Starting with Python 3.3, importing ABCs from *note collections: - 1d. was deprecated, and importing should be done from *note - collections.abc: 1e. Being able to import from collections was + 1e. was deprecated, and importing should be done from *note + collections.abc: 1f. Being able to import from collections was marked for removal in 3.8, but has been delayed to 3.9. (See bpo-36952(1).) @@ -12379,12 +9661,12 @@ The following features and APIs have been removed from Python 3.8: (Contributed by Victor Stinner in bpo-35471(2).) * The function ‘platform.popen()’ has been removed, after having been - deprecated since Python 3.3: use *note os.popen(): 3ce. instead. + deprecated since Python 3.3: use *note os.popen(): 294. instead. (Contributed by Victor Stinner in bpo-35345(3).) * The function ‘time.clock()’ has been removed, after having been - deprecated since Python 3.3: use *note time.perf_counter(): 3cf. or - *note time.process_time(): 3d0. instead, depending on your + deprecated since Python 3.3: use *note time.perf_counter(): 295. or + *note time.process_time(): 296. instead, depending on your requirements, to have well-defined behavior. (Contributed by Matthias Bussonnier in bpo-36895(4).) @@ -12394,30 +9676,30 @@ The following features and APIs have been removed from Python 3.8: bpo-25427(5).) * ‘parse_qs’, ‘parse_qsl’, and ‘escape’ are removed from the *note - cgi: 15. module. They are deprecated in Python 3.2 or older. They + cgi: 16. module. They are deprecated in Python 3.2 or older. They should be imported from the ‘urllib.parse’ and ‘html’ modules instead. - * ‘filemode’ function is removed from the *note tarfile: 101. module. + * ‘filemode’ function is removed from the *note tarfile: 102. module. It is not documented and deprecated since Python 3.3. - * The *note XMLParser: 37f. constructor no longer accepts the `html' + * The *note XMLParser: 23e. constructor no longer accepts the `html' argument. It never had an effect and was deprecated in Python 3.4. - All other parameters are now *note keyword-only: 3d1. (Contributed + All other parameters are now *note keyword-only: 297. (Contributed by Serhiy Storchaka in bpo-29209(6).) - * Removed the ‘doctype()’ method of *note XMLParser: 37f. + * Removed the ‘doctype()’ method of *note XMLParser: 23e. (Contributed by Serhiy Storchaka in bpo-29209(7).) * “unicode_internal” codec is removed. (Contributed by Inada Naoki in bpo-36297(8).) - * The ‘Cache’ and ‘Statement’ objects of the *note sqlite3: f2. + * The ‘Cache’ and ‘Statement’ objects of the *note sqlite3: f3. module are not exposed to the user. (Contributed by Aviv Palivoda in bpo-30262(9).) - * The ‘bufsize’ keyword argument of *note fileinput.input(): 3d2. and - *note fileinput.FileInput(): 3a8. which was ignored and deprecated + * The ‘bufsize’ keyword argument of *note fileinput.input(): 298. and + *note fileinput.FileInput(): 26a. which was ignored and deprecated since Python 3.6 has been removed. bpo-36952(10) (Contributed by Matthias Bussonnier.) @@ -12452,7 +9734,7 @@ The following features and APIs have been removed from Python 3.8:  File: python.info, Node: Porting to Python 3 8, Next: Notable changes in Python 3 8 1, Prev: API and Feature Removals, Up: What’s New In Python 3 8 -1.2.10 Porting to Python 3.8 +1.1.10 Porting to Python 3.8 ---------------------------- This section lists previously described changes and other bugfixes that @@ -12461,15 +9743,15 @@ may require changes to your code. * Menu: * Changes in Python behavior:: -* Changes in the Python API: Changes in the Python API<2>. -* Changes in the C API: Changes in the C API<2>. -* CPython bytecode changes: CPython bytecode changes<2>. +* Changes in the Python API:: +* Changes in the C API:: +* CPython bytecode changes:: * Demos and Tools::  -File: python.info, Node: Changes in Python behavior, Next: Changes in the Python API<2>, Up: Porting to Python 3 8 +File: python.info, Node: Changes in Python behavior, Next: Changes in the Python API, Up: Porting to Python 3 8 -1.2.10.1 Changes in Python behavior +1.1.10.1 Changes in Python behavior ................................... * Yield expressions (both ‘yield’ and ‘yield from’ clauses) are now @@ -12477,7 +9759,7 @@ File: python.info, Node: Changes in Python behavior, Next: Changes in the Pyth the iterable expression in the leftmost ‘for’ clause). (Contributed by Serhiy Storchaka in bpo-10544(1).) - * The compiler now produces a *note SyntaxWarning: 2cc. when identity + * The compiler now produces a *note SyntaxWarning: 17e. when identity checks (‘is’ and ‘is not’) are used with certain types of literals (e.g. strings, numbers). These can often work by accident in CPython, but are not guaranteed by the language spec. The warning @@ -12491,23 +9773,23 @@ File: python.info, Node: Changes in Python behavior, Next: Changes in the Pyth Storchaka in bpo-35459(3).) * Removed ‘__str__’ implementations from builtin types *note bool: - 2c0, *note int: 204, *note float: 1fd, *note complex: 2c4. and few + 170, *note int: 171, *note float: 174, *note complex: 176. and few classes from the standard library. They now inherit ‘__str__()’ - from *note object: 3d5. As result, defining the ‘__repr__()’ + from *note object: 29b. As result, defining the ‘__repr__()’ method in the subclass of these classes will affect their string representation. (Contributed by Serhiy Storchaka in bpo-36793(4).) - * On AIX, *note sys.platform: 3d6. doesn’t contain the major version + * On AIX, *note sys.platform: 29c. doesn’t contain the major version anymore. It is always ‘'aix'’, instead of ‘'aix3'’ .. ‘'aix7'’. Since older Python versions include the version number, so it is recommended to always use ‘sys.platform.startswith('aix')’. (Contributed by M. Felt in bpo-36588(5).) - * *note PyEval_AcquireLock(): 3d7. and *note PyEval_AcquireThread(): - 3d8. now terminate the current thread if called while the + * *note PyEval_AcquireLock(): 29d. and *note PyEval_AcquireThread(): + 29e. now terminate the current thread if called while the interpreter is finalizing, making them consistent with *note - PyEval_RestoreThread(): 3d9, *note Py_END_ALLOW_THREADS(): 3da, and - *note PyGILState_Ensure(): 3db. If this behavior is not desired, + PyEval_RestoreThread(): 29f, *note Py_END_ALLOW_THREADS(): 2a0, and + *note PyGILState_Ensure(): 2a1. If this behavior is not desired, guard the call by checking ‘_Py_IsFinalizing()’ or ‘sys.is_finalizing()’. (Contributed by Joannah Nanjekye in bpo-36475(6).) @@ -12527,27 +9809,27 @@ File: python.info, Node: Changes in Python behavior, Next: Changes in the Pyth (6) https://bugs.python.org/issue36475  -File: python.info, Node: Changes in the Python API<2>, Next: Changes in the C API<2>, Prev: Changes in Python behavior, Up: Porting to Python 3 8 +File: python.info, Node: Changes in the Python API, Next: Changes in the C API, Prev: Changes in Python behavior, Up: Porting to Python 3 8 -1.2.10.2 Changes in the Python API +1.1.10.2 Changes in the Python API .................................. - * The *note os.getcwdb(): 3dd. function now uses the UTF-8 encoding + * The *note os.getcwdb(): 2a3. function now uses the UTF-8 encoding on Windows, rather than the ANSI code page: see PEP 529(1) for the rationale. The function is no longer deprecated on Windows. (Contributed by Victor Stinner in bpo-37412(2).) - * *note subprocess.Popen: 3de. can now use *note os.posix_spawn(): - 384. in some cases for better performance. On Windows Subsystem + * *note subprocess.Popen: 2a4. can now use *note os.posix_spawn(): + 243. in some cases for better performance. On Windows Subsystem for Linux and QEMU User Emulation, the ‘Popen’ constructor using - *note os.posix_spawn(): 384. no longer raises an exception on + *note os.posix_spawn(): 243. no longer raises an exception on errors like “missing program”. Instead the child process fails with a non-zero ‘returncode’. (Contributed by Joannah Nanjekye and Victor Stinner in bpo-35537(3).) - * The `preexec_fn' argument of * *note subprocess.Popen: 3de. is no + * The `preexec_fn' argument of * *note subprocess.Popen: 2a4. is no longer compatible with subinterpreters. The use of the parameter - in a subinterpreter now raises *note RuntimeError: 3df. + in a subinterpreter now raises *note RuntimeError: 2a5. (Contributed by Eric Snow in bpo-34651(4), modified by Christian Heimes in bpo-37951(5).) @@ -12556,59 +9838,59 @@ File: python.info, Node: Changes in the Python API<2>, Next: Changes in the C bpo-36348(6).) * The function ‘platform.popen()’ has been removed, after having been - deprecated since Python 3.3: use *note os.popen(): 3ce. instead. + deprecated since Python 3.3: use *note os.popen(): 294. instead. (Contributed by Victor Stinner in bpo-35345(7).) - * The *note statistics.mode(): 3e0. function no longer raises an + * The *note statistics.mode(): 2a6. function no longer raises an exception when given multimodal data. Instead, it returns the first mode encountered in the input data. (Contributed by Raymond Hettinger in bpo-35892(8).) - * The *note selection(): 3e1. method of the *note - tkinter.ttk.Treeview: 3e2. class no longer takes arguments. Using + * The *note selection(): 2a7. method of the *note + tkinter.ttk.Treeview: 2a8. class no longer takes arguments. Using it with arguments for changing the selection was deprecated in Python 3.6. Use specialized methods like *note selection_set(): - 3e3. for changing the selection. (Contributed by Serhiy Storchaka + 2a9. for changing the selection. (Contributed by Serhiy Storchaka in bpo-31508(9).) * The ‘writexml()’, ‘toxml()’ and ‘toprettyxml()’ methods of *note - xml.dom.minidom: 13e, and the ‘write()’ method of ‘xml.etree’, now + xml.dom.minidom: 136, and the ‘write()’ method of ‘xml.etree’, now preserve the attribute order specified by the user. (Contributed by Diego Rojas and Raymond Hettinger in bpo-34160(10).) - * A *note dbm.dumb: 32. database opened with flags ‘'r'’ is now - read-only. *note dbm.dumb.open(): 3e4. with flags ‘'r'’ and ‘'w'’ + * A *note dbm.dumb: 33. database opened with flags ‘'r'’ is now + read-only. *note dbm.dumb.open(): 2aa. with flags ‘'r'’ and ‘'w'’ no longer creates a database if it does not exist. (Contributed by Serhiy Storchaka in bpo-32749(11).) * The ‘doctype()’ method defined in a subclass of *note XMLParser: - 37f. will no longer be called and will emit a *note RuntimeWarning: - 3e5. instead of a *note DeprecationWarning: 15a. Define the *note - doctype(): 3e6. method on a target for handling an XML doctype + 23e. will no longer be called and will emit a *note RuntimeWarning: + 2ab. instead of a *note DeprecationWarning: 264. Define the *note + doctype(): 2ac. method on a target for handling an XML doctype declaration. (Contributed by Serhiy Storchaka in bpo-29209(12).) - * A *note RuntimeError: 3df. is now raised when the custom metaclass + * A *note RuntimeError: 2a5. is now raised when the custom metaclass doesn’t provide the ‘__classcell__’ entry in the namespace passed - to ‘type.__new__’. A *note DeprecationWarning: 15a. was emitted in + to ‘type.__new__’. A *note DeprecationWarning: 264. was emitted in Python 3.6–3.7. (Contributed by Serhiy Storchaka in bpo-23722(13).) * The ‘cProfile.Profile’ class can now be used as a context manager. (Contributed by Scott Sanderson in bpo-29235(14).) - * *note shutil.copyfile(): 385, *note shutil.copy(): 386, *note - shutil.copy2(): 387, *note shutil.copytree(): 34a. and *note - shutil.move(): 388. use platform-specific “fast-copy” syscalls (see - *note Platform-dependent efficient copy operations: 38b. section). + * *note shutil.copyfile(): 244, *note shutil.copy(): 245, *note + shutil.copy2(): 246, *note shutil.copytree(): 206. and *note + shutil.move(): 247. use platform-specific “fast-copy” syscalls (see + *note Platform-dependent efficient copy operations: 24a. section). - * *note shutil.copyfile(): 385. default buffer size on Windows was + * *note shutil.copyfile(): 244. default buffer size on Windows was changed from 16 KiB to 1 MiB. * The ‘PyGC_Head’ struct has changed completely. All code that touched the struct member should be rewritten. (See bpo-33597(15).) - * The *note PyInterpreterState: 3e7. struct has been moved into the + * The *note PyInterpreterState: 2ad. struct has been moved into the “internal” header files (specifically Include/internal/pycore_pystate.h). An opaque ‘PyInterpreterState’ is still available as part of the public API (and stable ABI). The @@ -12619,62 +9901,61 @@ File: python.info, Node: Changes in the Python API<2>, Next: Changes in the C including adding accessor functions to the public API). (See bpo-35886(16).) - * The *note mmap.flush(): 3e8. method now returns ‘None’ on success + * The *note mmap.flush(): 2ae. method now returns ‘None’ on success and raises an exception on error under all platforms. Previously, its behavior was platform-dependent: a nonzero value was returned on success; zero was returned on error under Windows. A zero value was returned on success; an exception was raised on error under Unix. (Contributed by Berker Peksag in bpo-2122(17).) - * *note xml.dom.minidom: 13e. and *note xml.sax: 144. modules no + * *note xml.dom.minidom: 136. and *note xml.sax: 13c. modules no longer process external entities by default. (Contributed by Christian Heimes in bpo-17239(18).) - * Deleting a key from a read-only *note dbm: 31. database (*note - dbm.dumb: 32, *note dbm.gnu: 33. or *note dbm.ndbm: 34.) raises - ‘error’ (*note dbm.dumb.error: 3e9, *note dbm.gnu.error: 3ea. or - *note dbm.ndbm.error: 3eb.) instead of *note KeyError: 3ec. + * Deleting a key from a read-only *note dbm: 32. database (*note + dbm.dumb: 33, *note dbm.gnu: 34. or *note dbm.ndbm: 35.) raises + ‘error’ (*note dbm.dumb.error: 2af, *note dbm.gnu.error: 2b0. or + *note dbm.ndbm.error: 2b1.) instead of *note KeyError: 2b2. (Contributed by Xiang Zhang in bpo-33106(19).) * Simplified AST for literals. All constants will be represented as - *note ast.Constant: 3a9. instances. Instantiating old classes - ‘Num’, ‘Str’, ‘Bytes’, ‘NameConstant’ and ‘Ellipsis’ will return an - instance of ‘Constant’. (Contributed by Serhiy Storchaka in - bpo-32892(20).) + ‘ast.Constant’ instances. Instantiating old classes ‘Num’, ‘Str’, + ‘Bytes’, ‘NameConstant’ and ‘Ellipsis’ will return an instance of + ‘Constant’. (Contributed by Serhiy Storchaka in bpo-32892(20).) - * *note expanduser(): 32f. on Windows now prefers the ‘USERPROFILE’ + * *note expanduser(): 1ea. on Windows now prefers the ‘USERPROFILE’ environment variable and does not use ‘HOME’, which is not normally set for regular user accounts. (Contributed by Anthony Sottile in bpo-36264(21).) - * The exception *note asyncio.CancelledError: 2dd. now inherits from - *note BaseException: 2de. rather than *note Exception: 2df. and no - longer inherits from *note concurrent.futures.CancelledError: 2e0. + * The exception *note asyncio.CancelledError: 193. now inherits from + *note BaseException: 194. rather than *note Exception: 195. and no + longer inherits from *note concurrent.futures.CancelledError: 196. (Contributed by Yury Selivanov in bpo-32528(22).) - * The function *note asyncio.wait_for(): 191. now correctly waits for - cancellation when using an instance of *note asyncio.Task: 2e3. + * The function *note asyncio.wait_for(): 273. now correctly waits for + cancellation when using an instance of *note asyncio.Task: 199. Previously, upon reaching `timeout', it was cancelled and immediately returned. (Contributed by Elvis Pranskevichus in bpo-32751(23).) - * The function *note asyncio.BaseTransport.get_extra_info(): 3ed. now + * The function *note asyncio.BaseTransport.get_extra_info(): 2b3. now returns a safe to use socket object when ‘socket’ is passed to the `name' parameter. (Contributed by Yury Selivanov in bpo-37027(24).) - * *note asyncio.BufferedProtocol: 3ee. has graduated to the stable + * *note asyncio.BufferedProtocol: 2b4. has graduated to the stable API. * DLL dependencies for extension modules and DLLs loaded with *note - ctypes: 2a. on Windows are now resolved more securely. Only the + ctypes: 2b. on Windows are now resolved more securely. Only the system paths, the directory containing the DLL or PYD file, and - directories added with *note add_dll_directory(): 2f6. are searched + directories added with *note add_dll_directory(): 1ae. are searched for load-time dependencies. Specifically, ‘PATH’ and the current working directory are no longer used, and modifications to these will no longer have any effect on normal DLL resolution. If your application relies on these mechanisms, you should check for *note - add_dll_directory(): 2f6. and if it exists, use it to add your DLLs + add_dll_directory(): 1ae. and if it exists, use it to add your DLLs directory while loading your library. Note that Windows 7 users will need to ensure that Windows Update KB2533623 has been installed (this is also verified by the installer). (Contributed @@ -12684,12 +9965,12 @@ File: python.info, Node: Changes in the Python API<2>, Next: Changes in the C after its replacement by a pure Python implementation. (Contributed by Pablo Galindo in bpo-36623(26).) - * *note types.CodeType: 2d0. has a new parameter in the second + * *note types.CodeType: 185. has a new parameter in the second position of the constructor (`posonlyargcount') to support positional-only arguments defined in PEP 570(27). The first argument (`argcount') now represents the total number of positional arguments (including positional-only arguments). The new - ‘replace()’ method of *note types.CodeType: 2d0. can be used to + ‘replace()’ method of *note types.CodeType: 185. can be used to make the code future-proof. ---------- Footnotes ---------- @@ -12749,12 +10030,12 @@ File: python.info, Node: Changes in the Python API<2>, Next: Changes in the C (27) https://www.python.org/dev/peps/pep-0570  -File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode changes<2>, Prev: Changes in the Python API<2>, Up: Porting to Python 3 8 +File: python.info, Node: Changes in the C API, Next: CPython bytecode changes, Prev: Changes in the Python API, Up: Porting to Python 3 8 -1.2.10.3 Changes in the C API +1.1.10.3 Changes in the C API ............................. - * The *note PyCompilerFlags: 3f1. structure got a new + * The *note PyCompilerFlags: 2b7. structure got a new `cf_feature_version' field. It should be initialized to ‘PY_MINOR_VERSION’. The field is ignored by default, and is used if and only if ‘PyCF_ONLY_AST’ flag is set in `cf_flags'. @@ -12762,7 +10043,7 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang * The ‘PyEval_ReInitThreads()’ function has been removed from the C API. It should not be called explicitly: use *note - PyOS_AfterFork_Child(): 3f2. instead. (Contributed by Victor + PyOS_AfterFork_Child(): 2b8. instead. (Contributed by Victor Stinner in bpo-36728(2).) * On Unix, C extensions are no longer linked to libpython except on @@ -12775,18 +10056,18 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang bpo-21536(3).) * Use of ‘#’ variants of formats in parsing or building value (e.g. - *note PyArg_ParseTuple(): 396, *note Py_BuildValue(): 3f3, *note - PyObject_CallFunction(): 3f4, etc.) without ‘PY_SSIZE_T_CLEAN’ + *note PyArg_ParseTuple(): 256, *note Py_BuildValue(): 2b9, *note + PyObject_CallFunction(): 2ba, etc.) without ‘PY_SSIZE_T_CLEAN’ defined raises ‘DeprecationWarning’ now. It will be removed in 3.10 or 4.0. Read *note Parsing arguments and building values: - 3f5. for detail. (Contributed by Inada Naoki in bpo-36381(4).) + 2bb. for detail. (Contributed by Inada Naoki in bpo-36381(4).) * Instances of heap-allocated types (such as those created with *note - PyType_FromSpec(): 23a.) hold a reference to their type object. + PyType_FromSpec(): 2bc.) hold a reference to their type object. Increasing the reference count of these type objects has been moved - from *note PyType_GenericAlloc(): 39c. to the more low-level - functions, *note PyObject_Init(): 39b. and ‘PyObject_INIT()’. This - makes types created through *note PyType_FromSpec(): 23a. behave + from *note PyType_GenericAlloc(): 25c. to the more low-level + functions, *note PyObject_Init(): 25b. and ‘PyObject_INIT()’. This + makes types created through *note PyType_FromSpec(): 2bc. behave like other classes in managed code. Statically allocated types are not affected. @@ -12800,12 +10081,12 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang To correctly port these types into 3.8, please apply the following changes: - * Remove *note Py_INCREF: 391. on the type object after + * Remove *note Py_INCREF: 251. on the type object after allocating an instance - if any. This may happen after - calling *note PyObject_New(): 268, *note PyObject_NewVar(): - 269, *note PyObject_GC_New(): 3f6, *note PyObject_GC_NewVar(): - 3f7, or any other custom allocator that uses *note - PyObject_Init(): 39b. or ‘PyObject_INIT()’. + calling *note PyObject_New(): 2bd, *note PyObject_NewVar(): + 2be, *note PyObject_GC_New(): 2bf, *note PyObject_GC_NewVar(): + 2c0, or any other custom allocator that uses *note + PyObject_Init(): 25b. or ‘PyObject_INIT()’. Example: @@ -12838,8 +10119,8 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang (Contributed by Eddie Elizondo in bpo-35810(5).) - * The ‘Py_DEPRECATED()’ macro has been implemented for MSVC. The - macro now must be placed before the symbol name. + * The *note Py_DEPRECATED(): 2c1. macro has been implemented for + MSVC. The macro now must be placed before the symbol name. Example: @@ -12849,11 +10130,11 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang * The interpreter does not pretend to support binary compatibility of extension types across feature releases, anymore. A *note - PyTypeObject: 3f8. exported by a third-party extension module is + PyTypeObject: 2c2. exported by a third-party extension module is supposed to have all the slots expected in the current Python - version, including *note tp_finalize: 3f9. (*note - Py_TPFLAGS_HAVE_FINALIZE: 3fa. is not checked anymore before - reading *note tp_finalize: 3f9.). + version, including *note tp_finalize: 2c3. (*note + Py_TPFLAGS_HAVE_FINALIZE: 2c4. is not checked anymore before + reading *note tp_finalize: 2c3.). (Contributed by Antoine Pitrou in bpo-32388(7).) @@ -12872,7 +10153,7 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang The location of an installed ‘pythonXY.dll’ will depend on the installation options and the version and language of Windows. See - *note Using Python on Windows: 3fb. for more information. The + *note Using Python on Windows: 2c5. for more information. The resulting library should be placed in the same directory as ‘pythonXY.lib’, which is generally the ‘libs’ directory under your Python installation. @@ -12898,30 +10179,31 @@ File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode chang (8) https://bugs.python.org/issue37351  -File: python.info, Node: CPython bytecode changes<2>, Next: Demos and Tools, Prev: Changes in the C API<2>, Up: Porting to Python 3 8 +File: python.info, Node: CPython bytecode changes, Next: Demos and Tools, Prev: Changes in the C API, Up: Porting to Python 3 8 -1.2.10.4 CPython bytecode changes +1.1.10.4 CPython bytecode changes ................................. * The interpreter loop has been simplified by moving the logic of unrolling the stack of blocks into the compiler. The compiler emits now explicit instructions for adjusting the stack of values - and calling the cleaning-up code for *note break: 3fd, *note - continue: 2be. and *note return: 2cb. + and calling the cleaning-up code for *note break: 2c7, *note + continue: 16e. and *note return: 17d. Removed opcodes ‘BREAK_LOOP’, ‘CONTINUE_LOOP’, ‘SETUP_LOOP’ and - ‘SETUP_EXCEPT’. Added new opcodes *note ROT_FOUR: 3fe, - ‘BEGIN_FINALLY’, ‘CALL_FINALLY’ and ‘POP_FINALLY’. Changed the - behavior of ‘END_FINALLY’ and ‘WITH_CLEANUP_START’. + ‘SETUP_EXCEPT’. Added new opcodes *note ROT_FOUR: 2c8, *note + BEGIN_FINALLY: 2c9, *note CALL_FINALLY: 2ca. and *note POP_FINALLY: + 2cb. Changed the behavior of *note END_FINALLY: 2cc. and *note + WITH_CLEANUP_START: 2cd. (Contributed by Mark Shannon, Antoine Pitrou and Serhiy Storchaka in bpo-17611(1).) - * Added new opcode *note END_ASYNC_FOR: 3ff. for handling exceptions - raised when awaiting a next item in an *note async for: 400. loop. + * Added new opcode *note END_ASYNC_FOR: 2ce. for handling exceptions + raised when awaiting a next item in an *note async for: 2cf. loop. (Contributed by Serhiy Storchaka in bpo-33041(2).) - * The *note MAP_ADD: 401. now expects the value as the first element + * The *note MAP_ADD: 2d0. now expects the value as the first element in the stack and the key as the second element. This change was made so the key is always evaluated before the value in dictionary comprehensions, as proposed by PEP 572(3). (Contributed by Jörn @@ -12938,9 +10220,9 @@ File: python.info, Node: CPython bytecode changes<2>, Next: Demos and Tools, (4) https://bugs.python.org/issue35224  -File: python.info, Node: Demos and Tools, Prev: CPython bytecode changes<2>, Up: Porting to Python 3 8 +File: python.info, Node: Demos and Tools, Prev: CPython bytecode changes, Up: Porting to Python 3 8 -1.2.10.5 Demos and Tools +1.1.10.5 Demos and Tools ........................ Added a benchmark script for timing various ways to access variables: @@ -13006,13 +10288,13 @@ https://ark.intel.com/content/www/us/en/ark/products/76088/intel-core-i7-4960hq- (3) https://www.python.org/downloads/mac-osx/  -File: python.info, Node: Notable changes in Python 3 8 1, Next: Notable changes in Python 3 8 8, Prev: Porting to Python 3 8, Up: What’s New In Python 3 8 +File: python.info, Node: Notable changes in Python 3 8 1, Next: Notable changes in Python 3 8 2, Prev: Porting to Python 3 8, Up: What’s New In Python 3 8 -1.2.11 Notable changes in Python 3.8.1 +1.1.11 Notable changes in Python 3.8.1 -------------------------------------- Due to significant security concerns, the `reuse_address' parameter of -*note asyncio.loop.create_datagram_endpoint(): 189. is no longer +*note asyncio.loop.create_datagram_endpoint(): 2d3. is no longer supported. This is because of the behavior of the socket option ‘SO_REUSEADDR’ in UDP. For more details, see the documentation for ‘loop.create_datagram_endpoint()’. (Contributed by Kyle Stanley, @@ -13023,17 +10305,47 @@ Antoine Pitrou, and Yury Selivanov in bpo-37228(1).) (1) https://bugs.python.org/issue37228  -File: python.info, Node: Notable changes in Python 3 8 8, Prev: Notable changes in Python 3 8 1, Up: What’s New In Python 3 8 +File: python.info, Node: Notable changes in Python 3 8 2, Next: Notable changes in Python 3 8 3, Prev: Notable changes in Python 3 8 1, Up: What’s New In Python 3 8 -1.2.12 Notable changes in Python 3.8.8 +1.1.12 Notable changes in Python 3.8.2 +-------------------------------------- + +Fixed a regression with the ‘ignore’ callback of *note +shutil.copytree(): 206. The argument types are now str and List[str] +again. (Contributed by Manuel Barkhau and Giampaolo Rodola in +bpo-39390(1).) + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39390 + + +File: python.info, Node: Notable changes in Python 3 8 3, Next: Notable changes in Python 3 8 8, Prev: Notable changes in Python 3 8 2, Up: What’s New In Python 3 8 + +1.1.13 Notable changes in Python 3.8.3 +-------------------------------------- + +The constant values of future flags in the *note __future__: 0. module +are updated in order to prevent collision with compiler flags. +Previously ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ was clashing with +‘CO_FUTURE_DIVISION’. (Contributed by Batuhan Taskaya in bpo-39562(1)) + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39562 + + +File: python.info, Node: Notable changes in Python 3 8 8, Next: Notable changes in Python 3 8 9, Prev: Notable changes in Python 3 8 3, Up: What’s New In Python 3 8 + +1.1.14 Notable changes in Python 3.8.8 -------------------------------------- Earlier Python versions allowed using both ‘;’ and ‘&’ as query -parameter separators in *note urllib.parse.parse_qs(): 282. and *note -urllib.parse.parse_qsl(): 283. Due to security concerns, and to conform +parameter separators in *note urllib.parse.parse_qs(): 2d7. and *note +urllib.parse.parse_qsl(): 2d8. Due to security concerns, and to conform with newer W3C recommendations, this has been changed to allow only a single separator key, with ‘&’ as the default. This change also affects -*note cgi.parse(): 284. and *note cgi.parse_multipart(): 285. as they +*note cgi.parse(): 2d9. and *note cgi.parse_multipart(): 2da. as they use the affected functions internally. For more details, please see their respective documentation. (Contributed by Adam Goldschmidt, Senthil Kumaran and Ken Jin in bpo-42967(1).) @@ -13042,10 +10354,120 @@ Senthil Kumaran and Ken Jin in bpo-42967(1).) (1) https://bugs.python.org/issue42967 + +File: python.info, Node: Notable changes in Python 3 8 9, Next: Notable changes in Python 3 8 10, Prev: Notable changes in Python 3 8 8, Up: What’s New In Python 3 8 + +1.1.15 Notable changes in Python 3.8.9 +-------------------------------------- + +A security fix alters the *note ftplib.FTP: 2dc. behavior to not trust +the IPv4 address sent from the remote server when setting up a passive +data channel. We reuse the ftp server IP address instead. For unusual +code requiring the old behavior, set a ‘trust_server_pasv_ipv4_address’ +attribute on your FTP instance to ‘True’. (See bpo-43285(1)) + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue43285 + + +File: python.info, Node: Notable changes in Python 3 8 10, Next: Notable changes in Python 3 8 10<2>, Prev: Notable changes in Python 3 8 9, Up: What’s New In Python 3 8 + +1.1.16 Notable changes in Python 3.8.10 +--------------------------------------- + +* Menu: + +* macOS 11.0 (Big Sur) and Apple Silicon Mac support: macOS 11 0 Big Sur and Apple Silicon Mac support. + + +File: python.info, Node: macOS 11 0 Big Sur and Apple Silicon Mac support, Up: Notable changes in Python 3 8 10 + +1.1.16.1 macOS 11.0 (Big Sur) and Apple Silicon Mac support +........................................................... + +As of 3.8.10, Python now supports building and running on macOS 11 (Big +Sur) and on Apple Silicon Macs (based on the ‘ARM64’ architecture). A +new universal build variant, ‘universal2’, is now available to natively +support both ‘ARM64’ and ‘Intel 64’ in one set of executables. Note +that support for “weaklinking”, building binaries targeted for newer +versions of macOS that will also run correctly on older versions by +testing at runtime for missing features, is not included in this +backport from Python 3.9; to support a range of macOS versions, continue +to target for and build on the oldest version in the range. + +(Originally contributed by Ronald Oussoren and Lawrence D’Anna in +bpo-41100(1), with fixes by FX Coudert and Eli Rykoff, and backported to +3.8 by Maxime Bélanger and Ned Deily) + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue41100 + + +File: python.info, Node: Notable changes in Python 3 8 10<2>, Next: Notable changes in Python 3 8 12, Prev: Notable changes in Python 3 8 10, Up: What’s New In Python 3 8 + +1.1.17 Notable changes in Python 3.8.10 +--------------------------------------- + +* Menu: + +* urllib.parse: urllib parse. + + +File: python.info, Node: urllib parse, Up: Notable changes in Python 3 8 10<2> + +1.1.17.1 urllib.parse +..................... + +The presence of newline or tab characters in parts of a URL allows for +some forms of attacks. Following the WHATWG specification that updates +RFC 3986(1), ASCII newline ‘\n’, ‘\r’ and tab ‘\t’ characters are +stripped from the URL by the parser in *note urllib.parse: 120. +preventing such attacks. The removal characters are controlled by a new +module level variable ‘urllib.parse._UNSAFE_URL_BYTES_TO_REMOVE’. (See +bpo-43882(2)) + + ---------- Footnotes ---------- + + (1) https://tools.ietf.org/html/rfc3986.html + + (2) https://bugs.python.org/issue43882 + + +File: python.info, Node: Notable changes in Python 3 8 12, Prev: Notable changes in Python 3 8 10<2>, Up: What’s New In Python 3 8 + +1.1.18 Notable changes in Python 3.8.12 +--------------------------------------- + +* Menu: + +* Changes in the Python API: Changes in the Python API<2>. + + +File: python.info, Node: Changes in the Python API<2>, Up: Notable changes in Python 3 8 12 + +1.1.18.1 Changes in the Python API +.................................. + +Starting with Python 3.8.12 the *note ipaddress: a3. module no longer +accepts any leading zeros in IPv4 address strings. Leading zeros are +ambiguous and interpreted as octal notation by some libraries. For +example the legacy function *note socket.inet_aton(): 2e3. treats +leading zeros as octal notation. glibc implementation of modern *note +inet_pton(): 2e4. does not accept any leading zeros. + +(Originally contributed by Christian Heimes in bpo-36384(1), and +backported to 3.8 by Achraf Merzouki) + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue36384 +  File: python.info, Node: What’s New In Python 3 7, Next: What’s New In Python 3 6, Prev: What’s New In Python 3 8, Up: What’s New in Python -1.3 What’s New In Python 3.7 +1.2 What’s New In Python 3.7 ============================ @@ -13053,18 +10475,18 @@ Editor: Elvis Pranskevichus <> This article explains the new features in Python 3.7, compared to 3.6. Python 3.7 was released on June 27, 2018. For full details, see the -*note changelog: 156. +*note changelog: 14d. * Menu: * Summary – Release Highlights:: -* New Features: New Features<4>. -* Other Language Changes: Other Language Changes<3>. -* New Modules: New Modules<3>. -* Improved Modules: Improved Modules<3>. -* C API Changes: C API Changes<2>. -* Build Changes: Build Changes<2>. -* Optimizations: Optimizations<3>. +* New Features: New Features<2>. +* Other Language Changes: Other Language Changes<2>. +* New Modules: New Modules<2>. +* Improved Modules: Improved Modules<2>. +* C API Changes:: +* Build Changes:: +* Optimizations: Optimizations<2>. * Other CPython Implementation Changes:: * Deprecated Python Behavior:: * Deprecated Python modules, functions and methods: Deprecated Python modules functions and methods. @@ -13080,81 +10502,81 @@ Python 3.7 was released on June 27, 2018. For full details, see the * Notable changes in Python 3.7.10: Notable changes in Python 3 7 10.  -File: python.info, Node: Summary – Release Highlights, Next: New Features<4>, Up: What’s New In Python 3 7 +File: python.info, Node: Summary – Release Highlights, Next: New Features<2>, Up: What’s New In Python 3 7 -1.3.1 Summary – Release Highlights +1.2.1 Summary – Release Highlights ---------------------------------- New syntax features: - * *note PEP 563: 408, postponed evaluation of type annotations. + * *note PEP 563: 2e8, postponed evaluation of type annotations. Backwards incompatible syntax changes: - * *note async: 2da. and *note await: 2db. are now reserved keywords. + * *note async: 18e. and *note await: 18f. are now reserved keywords. New library modules: - * *note contextvars: 24.: *note PEP 567 – Context Variables: 409. + * *note contextvars: 25.: *note PEP 567 – Context Variables: 2e9. - * *note dataclasses: 2f.: *note PEP 557 – Data Classes: 40a. + * *note dataclasses: 30.: *note PEP 557 – Data Classes: 2ea. - * *note importlib.resources: 40b. + * *note importlib.resources: 2eb. New built-in features: - * *note PEP 553: 40c, the new *note breakpoint(): 40d. function. + * *note PEP 553: 2ec, the new *note breakpoint(): 2ed. function. Python data model improvements: - * *note PEP 562: 40e, customization of access to module attributes. + * *note PEP 562: 2ee, customization of access to module attributes. - * *note PEP 560: 40f, core support for typing module and generic + * *note PEP 560: 2ef, core support for typing module and generic types. - * the insertion-order preservation nature of *note dict: 410. objects + * the insertion-order preservation nature of *note dict: 2f0. objects has been declared(1) to be an official part of the Python language spec. Significant improvements in the standard library: - * The *note asyncio: 9. module has received new features, significant - *note usability and performance improvements: 411. + * The *note asyncio: a. module has received new features, significant + *note usability and performance improvements: 2f1. - * The *note time: 10c. module gained support for *note functions with - nanosecond resolution: 412. + * The *note time: 10b. module gained support for *note functions with + nanosecond resolution: 2f2. CPython implementation improvements: * Avoiding the use of ASCII as a default text encoding: - * *note PEP 538: 413, legacy C locale coercion + * *note PEP 538: 2f3, legacy C locale coercion - * *note PEP 540: 414, forced UTF-8 runtime mode + * *note PEP 540: 2f4, forced UTF-8 runtime mode - * *note PEP 552: 415, deterministic .pycs + * *note PEP 552: 2f5, deterministic .pycs - * *note New Python Development Mode: 416. + * *note the new development runtime mode: 2f6. - * *note PEP 565: 417, improved *note DeprecationWarning: 15a. + * *note PEP 565: 2f7, improved *note DeprecationWarning: 264. handling C API improvements: - * *note PEP 539: 418, new C API for thread-local storage + * *note PEP 539: 2f8, new C API for thread-local storage Documentation improvements: - * *note PEP 545: 419, Python documentation translations + * *note PEP 545: 2f9, Python documentation translations * New documentation translations: Japanese(2), French(3), and Korean(4). This release features notable performance improvements in many areas. -The *note Optimizations: 41a. section lists them in detail. +The *note Optimizations: 2fa. section lists them in detail. For a list of changes that may affect compatibility with previous Python -releases please refer to the *note Porting to Python 3.7: 41b. section. +releases please refer to the *note Porting to Python 3.7: 2fb. section. ---------- Footnotes ---------- @@ -13168,9 +10590,9 @@ https://mail.python.org/pipermail/python-dev/2017-December/151283.html (4) https://docs.python.org/ko/  -File: python.info, Node: New Features<4>, Next: Other Language Changes<3>, Prev: Summary – Release Highlights, Up: What’s New In Python 3 7 +File: python.info, Node: New Features<2>, Next: Other Language Changes<2>, Prev: Summary – Release Highlights, Up: What’s New In Python 3 7 -1.3.2 New Features +1.2.2 New Features ------------------ * Menu: @@ -13186,12 +10608,12 @@ File: python.info, Node: New Features<4>, Next: Other Language Changes<3>, Pr * PEP 560; Core Support for typing module and Generic Types: PEP 560 Core Support for typing module and Generic Types. * PEP 552; Hash-based .pyc Files: PEP 552 Hash-based pyc Files. * PEP 545; Python Documentation Translations: PEP 545 Python Documentation Translations. -* Python Development Mode (-X dev): Python Development Mode -X dev. +* Development Runtime Mode; -X dev: Development Runtime Mode -X dev.  -File: python.info, Node: PEP 563 Postponed Evaluation of Annotations, Next: PEP 538 Legacy C Locale Coercion, Up: New Features<4> +File: python.info, Node: PEP 563 Postponed Evaluation of Annotations, Next: PEP 538 Legacy C Locale Coercion, Up: New Features<2> -1.3.2.1 PEP 563: Postponed Evaluation of Annotations +1.2.2.1 PEP 563: Postponed Evaluation of Annotations .................................................... The advent of type hints in Python uncovered two glaring usability @@ -13210,7 +10632,7 @@ annotations. Instead of compiling code which executes expressions in annotations at their definition time, the compiler stores the annotation in a string form equivalent to the AST of the expression in question. If needed, annotations can be resolved at runtime using *note -typing.get_type_hints(): 1ef. In the common case where this is not +typing.get_type_hints(): 2fe. In the common case where this is not required, the annotations are cheaper to store (since short strings are interned by the interpreter) and make startup time faster. @@ -13252,9 +10674,9 @@ PEP 563(3) – Postponed evaluation of annotations (3) https://www.python.org/dev/peps/pep-0563  -File: python.info, Node: PEP 538 Legacy C Locale Coercion, Next: PEP 540 Forced UTF-8 Runtime Mode, Prev: PEP 563 Postponed Evaluation of Annotations, Up: New Features<4> +File: python.info, Node: PEP 538 Legacy C Locale Coercion, Next: PEP 540 Forced UTF-8 Runtime Mode, Prev: PEP 563 Postponed Evaluation of Annotations, Up: New Features<2> -1.3.2.2 PEP 538: Legacy C Locale Coercion +1.2.2.2 PEP 538: Legacy C Locale Coercion ......................................... An ongoing challenge within the Python 3 series has been determining a @@ -13265,24 +10687,24 @@ on non-Windows platforms. PEP 538(1) updates the default interpreter command line interface to automatically coerce that locale to an available UTF-8 based locale as described in the documentation of the new *note PYTHONCOERCECLOCALE: -41f. environment variable. Automatically setting ‘LC_CTYPE’ this way +300. environment variable. Automatically setting ‘LC_CTYPE’ this way means that both the core interpreter and locale-aware C extensions (such -as *note readline: de.) will assume the use of UTF-8 as the default text +as *note readline: df.) will assume the use of UTF-8 as the default text encoding, rather than ASCII. The platform support definition in PEP 11(2) has also been updated to limit full text handling support to suitably configured non-ASCII based locales. -As part of this change, the default error handler for *note stdin: 420. -and *note stdout: 421. is now ‘surrogateescape’ (rather than ‘strict’) +As part of this change, the default error handler for *note stdin: 301. +and *note stdout: 302. is now ‘surrogateescape’ (rather than ‘strict’) when using any of the defined coercion target locales (currently ‘C.UTF-8’, ‘C.utf8’, and ‘UTF-8’). The default error handler for *note -stderr: 1ea. continues to be ‘backslashreplace’, regardless of locale. +stderr: 303. continues to be ‘backslashreplace’, regardless of locale. Locale coercion is silent by default, but to assist in debugging potentially locale related integration problems, explicit warnings -(emitted directly on *note stderr: 1ea.) can be requested by setting +(emitted directly on *note stderr: 303.) can be requested by setting ‘PYTHONCOERCECLOCALE=warn’. This setting will also cause the Python runtime to emit a warning if the legacy C locale remains active when the core interpreter is initialized. @@ -13294,7 +10716,7 @@ Python), it has the downside of requiring that a suitable target locale be present on the running system. To better handle the case where no suitable target locale is available (as occurs on RHEL/CentOS 7, for example), Python 3.7 also implements *note PEP 540; Forced UTF-8 Runtime -Mode: 414. +Mode: 2f4. See also ........ @@ -13314,18 +10736,18 @@ PEP 538(4) – Coercing the legacy C locale to a UTF-8 based locale (4) https://www.python.org/dev/peps/pep-0538  -File: python.info, Node: PEP 540 Forced UTF-8 Runtime Mode, Next: PEP 553 Built-in breakpoint, Prev: PEP 538 Legacy C Locale Coercion, Up: New Features<4> +File: python.info, Node: PEP 540 Forced UTF-8 Runtime Mode, Next: PEP 553 Built-in breakpoint, Prev: PEP 538 Legacy C Locale Coercion, Up: New Features<2> -1.3.2.3 PEP 540: Forced UTF-8 Runtime Mode +1.2.2.3 PEP 540: Forced UTF-8 Runtime Mode .......................................... -The new *note -X: 293. ‘utf8’ command line option and *note PYTHONUTF8: -423. environment variable can be used to enable the CPython `UTF-8 +The new *note -X: 156. ‘utf8’ command line option and *note PYTHONUTF8: +305. environment variable can be used to enable the CPython `UTF-8 mode'. When in UTF-8 mode, CPython ignores the locale settings, and uses the -UTF-8 encoding by default. The error handlers for *note sys.stdin: 420. -and *note sys.stdout: 421. streams are set to ‘surrogateescape’. +UTF-8 encoding by default. The error handlers for *note sys.stdin: 301. +and *note sys.stdout: 302. streams are set to ‘surrogateescape’. The forced UTF-8 mode can be used to change the text handling behavior in an embedded Python interpreter without changing the locale settings @@ -13337,7 +10759,7 @@ of having no effect on extension modules (such as GNU ‘readline’), child processes running non-Python applications, and child processes running older versions of Python. To reduce the risk of corrupting text data when communicating with such components, Python 3.7 also implements -*note PEP 540; Forced UTF-8 Runtime Mode: 414.). +*note PEP 540; Forced UTF-8 Runtime Mode: 2f4.). The UTF-8 mode is enabled by default when the locale is ‘C’ or ‘POSIX’, and the PEP 538(2) locale coercion feature fails to change it to a UTF-8 @@ -13361,19 +10783,19 @@ PEP 540(3) – Add a new UTF-8 mode (3) https://www.python.org/dev/peps/pep-0540  -File: python.info, Node: PEP 553 Built-in breakpoint, Next: PEP 539 New C API for Thread-Local Storage, Prev: PEP 540 Forced UTF-8 Runtime Mode, Up: New Features<4> +File: python.info, Node: PEP 553 Built-in breakpoint, Next: PEP 539 New C API for Thread-Local Storage, Prev: PEP 540 Forced UTF-8 Runtime Mode, Up: New Features<2> -1.3.2.4 PEP 553: Built-in ‘breakpoint()’ +1.2.2.4 PEP 553: Built-in ‘breakpoint()’ ........................................ -Python 3.7 includes the new built-in *note breakpoint(): 40d. function +Python 3.7 includes the new built-in *note breakpoint(): 2ed. function as an easy and consistent way to enter the Python debugger. -Built-in ‘breakpoint()’ calls *note sys.breakpointhook(): 425. By -default, the latter imports *note pdb: c9. and then calls +Built-in ‘breakpoint()’ calls *note sys.breakpointhook(): 307. By +default, the latter imports *note pdb: ca. and then calls ‘pdb.set_trace()’, but by binding ‘sys.breakpointhook()’ to the function of your choosing, ‘breakpoint()’ can enter any debugger. Additionally, -the environment variable *note PYTHONBREAKPOINT: 426. can be set to the +the environment variable *note PYTHONBREAKPOINT: 308. can be set to the callable of your debugger of choice. Set ‘PYTHONBREAKPOINT=0’ to completely disable built-in ‘breakpoint()’. @@ -13389,30 +10811,30 @@ PEP 553(1) – Built-in breakpoint() (1) https://www.python.org/dev/peps/pep-0553  -File: python.info, Node: PEP 539 New C API for Thread-Local Storage, Next: PEP 562 Customization of Access to Module Attributes, Prev: PEP 553 Built-in breakpoint, Up: New Features<4> +File: python.info, Node: PEP 539 New C API for Thread-Local Storage, Next: PEP 562 Customization of Access to Module Attributes, Prev: PEP 553 Built-in breakpoint, Up: New Features<2> -1.3.2.5 PEP 539: New C API for Thread-Local Storage +1.2.2.5 PEP 539: New C API for Thread-Local Storage ................................................... While Python provides a C API for thread-local storage support; the -existing *note Thread Local Storage (TLS) API: 428. has used ‘int’ to +existing *note Thread Local Storage (TLS) API: 30a. has used int to represent TLS keys across all platforms. This has not generally been a problem for officially-support platforms, but that is neither POSIX-compliant, nor portable in any practical sense. PEP 539(1) changes this by providing a new *note Thread Specific Storage -(TSS) API: 429. to CPython which supersedes use of the existing TLS API +(TSS) API: 30b. to CPython which supersedes use of the existing TLS API within the CPython interpreter, while deprecating the existing API. The -TSS API uses a new type *note Py_tss_t: 42a. instead of ‘int’ to -represent TSS keys–an opaque type the definition of which may depend on -the underlying TLS implementation. Therefore, this will allow to build +TSS API uses a new type *note Py_tss_t: 30c. instead of int to represent +TSS keys–an opaque type the definition of which may depend on the +underlying TLS implementation. Therefore, this will allow to build CPython on platforms where the native TLS key is defined in a way that -cannot be safely cast to ‘int’. +cannot be safely cast to int. Note that on platforms where the native TLS key is defined in a way that -cannot be safely cast to ‘int’, all functions of the existing TLS API -will be no-op and immediately return failure. This indicates clearly -that the old API is not supported on platforms where it cannot be used +cannot be safely cast to int, all functions of the existing TLS API will +be no-op and immediately return failure. This indicates clearly that +the old API is not supported on platforms where it cannot be used reliably, and that no effort will be made to add such support. See also @@ -13429,14 +10851,14 @@ PEP 539(2) – A New C-API for Thread-Local Storage in CPython (2) https://www.python.org/dev/peps/pep-0539  -File: python.info, Node: PEP 562 Customization of Access to Module Attributes, Next: PEP 564 New Time Functions With Nanosecond Resolution, Prev: PEP 539 New C API for Thread-Local Storage, Up: New Features<4> +File: python.info, Node: PEP 562 Customization of Access to Module Attributes, Next: PEP 564 New Time Functions With Nanosecond Resolution, Prev: PEP 539 New C API for Thread-Local Storage, Up: New Features<2> -1.3.2.6 PEP 562: Customization of Access to Module Attributes +1.2.2.6 PEP 562: Customization of Access to Module Attributes ............................................................. -Python 3.7 allows defining *note __getattr__(): 42c. on modules and will -call it whenever a module attribute is otherwise not found. Defining -*note __dir__(): 42d. on modules is now also allowed. +Python 3.7 allows defining ‘__getattr__()’ on modules and will call it +whenever a module attribute is otherwise not found. Defining +‘__dir__()’ on modules is now also allowed. A typical example of where this may be useful is module attribute deprecation and lazy loading. @@ -13453,34 +10875,34 @@ PEP 562(1) – Module ‘__getattr__’ and ‘__dir__’ (1) https://www.python.org/dev/peps/pep-0562  -File: python.info, Node: PEP 564 New Time Functions With Nanosecond Resolution, Next: PEP 565 Show DeprecationWarning in __main__, Prev: PEP 562 Customization of Access to Module Attributes, Up: New Features<4> +File: python.info, Node: PEP 564 New Time Functions With Nanosecond Resolution, Next: PEP 565 Show DeprecationWarning in __main__, Prev: PEP 562 Customization of Access to Module Attributes, Up: New Features<2> -1.3.2.7 PEP 564: New Time Functions With Nanosecond Resolution +1.2.2.7 PEP 564: New Time Functions With Nanosecond Resolution .............................................................. The resolution of clocks in modern systems can exceed the limited precision of a floating point number returned by the *note time.time(): -42f. function and its variants. To avoid loss of precision, PEP 564(1) +30f. function and its variants. To avoid loss of precision, PEP 564(1) adds six new “nanosecond” variants of the existing timer functions to -the *note time: 10c. module: +the *note time: 10b. module: - * *note time.clock_gettime_ns(): 430. + * *note time.clock_gettime_ns(): 310. - * *note time.clock_settime_ns(): 431. + * *note time.clock_settime_ns(): 311. - * *note time.monotonic_ns(): 432. + * *note time.monotonic_ns(): 312. - * *note time.perf_counter_ns(): 433. + * *note time.perf_counter_ns(): 313. - * *note time.process_time_ns(): 434. + * *note time.process_time_ns(): 314. - * *note time.time_ns(): 435. + * *note time.time_ns(): 315. The new functions return the number of nanoseconds as an integer value. Measurements(2) show that on Linux and Windows the resolution of *note -time.time_ns(): 435. is approximately 3 times better than that of *note -time.time(): 42f. +time.time_ns(): 315. is approximately 3 times better than that of *note +time.time(): 30f. See also ........ @@ -13499,12 +10921,12 @@ https://www.python.org/dev/peps/pep-0564/#annex-clocks-resolution-in-python (3) https://www.python.org/dev/peps/pep-0564  -File: python.info, Node: PEP 565 Show DeprecationWarning in __main__, Next: PEP 560 Core Support for typing module and Generic Types, Prev: PEP 564 New Time Functions With Nanosecond Resolution, Up: New Features<4> +File: python.info, Node: PEP 565 Show DeprecationWarning in __main__, Next: PEP 560 Core Support for typing module and Generic Types, Prev: PEP 564 New Time Functions With Nanosecond Resolution, Up: New Features<2> -1.3.2.8 PEP 565: Show DeprecationWarning in ‘__main__’ +1.2.2.8 PEP 565: Show DeprecationWarning in ‘__main__’ ...................................................... -The default handling of *note DeprecationWarning: 15a. has been changed +The default handling of *note DeprecationWarning: 264. has been changed such that these warnings are once more shown by default, but only when the code triggering them is running directly in the *note __main__: 1. module. As a result, developers of single file scripts and those using @@ -13516,22 +10938,22 @@ default. As a result of this change, the standard library now allows developers to choose between three different deprecation warning behaviours: - * *note FutureWarning: 437.: always displayed by default, recommended + * *note FutureWarning: 317.: always displayed by default, recommended for warnings intended to be seen by application end users (e.g. for deprecated application configuration settings). - * *note DeprecationWarning: 15a.: displayed by default only in *note + * *note DeprecationWarning: 264.: displayed by default only in *note __main__: 1. and when running tests, recommended for warnings intended to be seen by other Python developers where a version upgrade may result in changed behaviour or an error. - * *note PendingDeprecationWarning: 15c.: displayed by default only + * *note PendingDeprecationWarning: 265.: displayed by default only when running tests, intended for cases where a future version upgrade will change the warning category to *note - DeprecationWarning: 15a. or *note FutureWarning: 437. + DeprecationWarning: 264. or *note FutureWarning: 317. -Previously both *note DeprecationWarning: 15a. and *note -PendingDeprecationWarning: 15c. were only visible when running tests, +Previously both *note DeprecationWarning: 264. and *note +PendingDeprecationWarning: 265. were only visible when running tests, which meant that developers primarily writing single file scripts or using Python interactively could be surprised by breaking changes in the APIs they used. @@ -13548,20 +10970,20 @@ PEP 565(1) – Show DeprecationWarning in ‘__main__’ (1) https://www.python.org/dev/peps/pep-0565  -File: python.info, Node: PEP 560 Core Support for typing module and Generic Types, Next: PEP 552 Hash-based pyc Files, Prev: PEP 565 Show DeprecationWarning in __main__, Up: New Features<4> +File: python.info, Node: PEP 560 Core Support for typing module and Generic Types, Next: PEP 552 Hash-based pyc Files, Prev: PEP 565 Show DeprecationWarning in __main__, Up: New Features<2> -1.3.2.9 PEP 560: Core Support for ‘typing’ module and Generic Types +1.2.2.9 PEP 560: Core Support for ‘typing’ module and Generic Types ................................................................... Initially PEP 484(1) was designed in such way that it would not introduce `any' changes to the core CPython interpreter. Now type hints -and the *note typing: 122. module are extensively used by the community, +and the *note typing: 11a. module are extensively used by the community, so this restriction is removed. The PEP introduces two special methods -*note __class_getitem__(): 439. and ‘__mro_entries__’, these methods are -now used by most classes and special constructs in *note typing: 122. -As a result, the speed of various operations with types increased up to -7 times, the generic types can be used without metaclass conflicts, and -several long standing bugs in *note typing: 122. module are fixed. +‘__class_getitem__()’ and ‘__mro_entries__’, these methods are now used +by most classes and special constructs in *note typing: 11a. As a +result, the speed of various operations with types increased up to 7 +times, the generic types can be used without metaclass conflicts, and +several long standing bugs in *note typing: 11a. module are fixed. See also ........ @@ -13577,9 +10999,9 @@ PEP 560(2) – Core support for typing module and generic types (2) https://www.python.org/dev/peps/pep-0560  -File: python.info, Node: PEP 552 Hash-based pyc Files, Next: PEP 545 Python Documentation Translations, Prev: PEP 560 Core Support for typing module and Generic Types, Up: New Features<4> +File: python.info, Node: PEP 552 Hash-based pyc Files, Next: PEP 545 Python Documentation Translations, Prev: PEP 560 Core Support for typing module and Generic Types, Up: New Features<2> -1.3.2.10 PEP 552: Hash-based .pyc Files +1.2.2.10 PEP 552: Hash-based .pyc Files ....................................... Python has traditionally checked the up-to-dateness of bytecode cache @@ -13596,7 +11018,7 @@ to be used for invalidation instead of the source timestamp. Such ‘.pyc’ files are called “hash-based”. By default, Python still uses timestamp-based invalidation and does not generate hash-based ‘.pyc’ files at runtime. Hash-based ‘.pyc’ files may be generated with *note -py_compile: d7. or *note compileall: 20. +py_compile: d8. or *note compileall: 21. Hash-based ‘.pyc’ files come in two variants: checked and unchecked. Python validates checked hash-based ‘.pyc’ files against the @@ -13606,7 +11028,7 @@ performance optimization for environments where a system external to Python (e.g., the build system) is responsible for keeping ‘.pyc’ files up-to-date. -See *note Cached bytecode invalidation: 43b. for more information. +See *note Cached bytecode invalidation: 31a. for more information. See also ........ @@ -13624,9 +11046,9 @@ PEP 552(3) – Deterministic pycs (3) https://www.python.org/dev/peps/pep-0552  -File: python.info, Node: PEP 545 Python Documentation Translations, Next: Python Development Mode -X dev, Prev: PEP 552 Hash-based pyc Files, Up: New Features<4> +File: python.info, Node: PEP 545 Python Documentation Translations, Next: Development Runtime Mode -X dev, Prev: PEP 552 Hash-based pyc Files, Up: New Features<2> -1.3.2.11 PEP 545: Python Documentation Translations +1.2.2.11 PEP 545: Python Documentation Translations ................................................... PEP 545(1) describes the process of creating and maintaining Python @@ -13655,43 +11077,43 @@ PEP 545(2) – Python Documentation Translations (2) https://www.python.org/dev/peps/pep-0545  -File: python.info, Node: Python Development Mode -X dev, Prev: PEP 545 Python Documentation Translations, Up: New Features<4> +File: python.info, Node: Development Runtime Mode -X dev, Prev: PEP 545 Python Documentation Translations, Up: New Features<2> -1.3.2.12 Python Development Mode (-X dev) +1.2.2.12 Development Runtime Mode: -X dev ......................................... -The new *note -X: 293. ‘dev’ command line option or the new *note -PYTHONDEVMODE: 43e. environment variable can be used to enable *note -Python Development Mode: 160. When in development mode, Python performs +The new *note -X: 156. ‘dev’ command line option or the new *note +PYTHONDEVMODE: 31d. environment variable can be used to enable CPython’s +`development mode'. When in development mode, CPython performs additional runtime checks that are too expensive to be enabled by -default. See *note Python Development Mode: 160. documentation for the -full description. +default. See *note -X: 156. ‘dev’ documentation for the full +description of the effects of this mode.  -File: python.info, Node: Other Language Changes<3>, Next: New Modules<3>, Prev: New Features<4>, Up: What’s New In Python 3 7 +File: python.info, Node: Other Language Changes<2>, Next: New Modules<2>, Prev: New Features<2>, Up: What’s New In Python 3 7 -1.3.3 Other Language Changes +1.2.3 Other Language Changes ---------------------------- - * An *note await: 2db. expression and comprehensions containing an - *note async for: 400. clause were illegal in the expressions in - *note formatted string literals: 299. due to a problem with the + * An *note await: 18f. expression and comprehensions containing an + *note async for: 2cf. clause were illegal in the expressions in + *note formatted string literals: 15d. due to a problem with the implementation. In Python 3.7 this restriction was lifted. * More than 255 arguments can now be passed to a function, and a function can now have more than 255 parameters. (Contributed by Serhiy Storchaka in bpo-12844(1) and bpo-18896(2).) - * *note bytes.fromhex(): 440. and *note bytearray.fromhex(): 441. now + * *note bytes.fromhex(): 31f. and *note bytearray.fromhex(): 320. now ignore all ASCII whitespace, not only spaces. (Contributed by Robert Xiao in bpo-28927(3).) - * *note str: 205, *note bytes: 172, and *note bytearray: 173. gained - support for the new *note isascii(): 442. method, which can be used + * *note str: 321, *note bytes: 322, and *note bytearray: 323. gained + support for the new *note isascii(): 324. method, which can be used to test if a string or bytes contain only the ASCII characters. (Contributed by INADA Naoki in bpo-32677(4).) - * *note ImportError: 16c. now displays module name and module + * *note ImportError: 325. now displays module name and module ‘__file__’ path when ‘from ... import ...’ fails. (Contributed by Matthias Bussonnier in bpo-29546(5).) @@ -13704,18 +11126,18 @@ File: python.info, Node: Other Language Changes<3>, Next: New Modules<3>, Pre bpo-28974(7).) * In order to better support dynamic creation of stack traces, *note - types.TracebackType: 443. can now be instantiated from Python code, - and the ‘tb_next’ attribute on *note tracebacks: 444. is now + types.TracebackType: 326. can now be instantiated from Python code, + and the ‘tb_next’ attribute on *note tracebacks: 327. is now writable. (Contributed by Nathaniel J. Smith in bpo-30579(8).) - * When using the *note -m: 445. switch, ‘sys.path[0]’ is now eagerly + * When using the *note -m: 328. switch, ‘sys.path[0]’ is now eagerly expanded to the full starting directory path, rather than being left as the empty directory (which allows imports from the `current' working directory at the time when an import occurs) (Contributed by Nick Coghlan in bpo-33053(9).) - * The new *note -X: 293. ‘importtime’ option or the *note - PYTHONPROFILEIMPORTTIME: 446. environment variable can be used to + * The new *note -X: 156. ‘importtime’ option or the *note + PYTHONPROFILEIMPORTTIME: 329. environment variable can be used to show the timing of each module import. (Contributed by Victor Stinner in bpo-31415(10).) @@ -13742,9 +11164,9 @@ File: python.info, Node: Other Language Changes<3>, Next: New Modules<3>, Pre (10) https://bugs.python.org/issue31415  -File: python.info, Node: New Modules<3>, Next: Improved Modules<3>, Prev: Other Language Changes<3>, Up: What’s New In Python 3 7 +File: python.info, Node: New Modules<2>, Next: Improved Modules<2>, Prev: Other Language Changes<2>, Up: What’s New In Python 3 7 -1.3.4 New Modules +1.2.4 New Modules ----------------- * Menu: @@ -13754,17 +11176,17 @@ File: python.info, Node: New Modules<3>, Next: Improved Modules<3>, Prev: Oth * importlib.resources: importlib resources.  -File: python.info, Node: contextvars, Next: dataclasses, Up: New Modules<3> +File: python.info, Node: contextvars, Next: dataclasses, Up: New Modules<2> -1.3.4.1 contextvars +1.2.4.1 contextvars ................... -The new *note contextvars: 24. module and a set of *note new C APIs: -449. introduce support for `context variables'. Context variables are +The new *note contextvars: 25. module and a set of *note new C APIs: +32c. introduce support for `context variables'. Context variables are conceptually similar to thread-local variables. Unlike TLS, context variables support asynchronous code correctly. -The *note asyncio: 9. and *note decimal: 35. modules have been updated +The *note asyncio: a. and *note decimal: 36. modules have been updated to use and support context variables out of the box. Particularly the active decimal context is now stored in a context variable, which allows decimal operations to work with the correct context in asynchronous @@ -13782,15 +11204,15 @@ PEP 567(1) – Context Variables (1) https://www.python.org/dev/peps/pep-0567  -File: python.info, Node: dataclasses, Next: importlib resources, Prev: contextvars, Up: New Modules<3> +File: python.info, Node: dataclasses, Next: importlib resources, Prev: contextvars, Up: New Modules<2> -1.3.4.2 dataclasses +1.2.4.2 dataclasses ................... -The new *note dataclass(): 44b. decorator provides a way to declare +The new *note dataclass(): 32e. decorator provides a way to declare `data classes'. A data class describes its attributes using class variable annotations. Its constructor and other magic methods, such as -*note __repr__(): 44c, *note __eq__(): 44d, and *note __hash__(): 44e. +*note __repr__(): 32f, *note __eq__(): 330, and *note __hash__(): 331. are generated automatically. Example: @@ -13816,17 +11238,17 @@ PEP 557(1) – Data Classes (1) https://www.python.org/dev/peps/pep-0557  -File: python.info, Node: importlib resources, Prev: dataclasses, Up: New Modules<3> +File: python.info, Node: importlib resources, Prev: dataclasses, Up: New Modules<2> -1.3.4.3 importlib.resources +1.2.4.3 importlib.resources ........................... -The new *note importlib.resources: 9e. module provides several new APIs +The new *note importlib.resources: 9f. module provides several new APIs and one new ABC for access to, opening, and reading `resources' inside packages. Resources are roughly similar to files inside packages, but they needn’t be actual files on the physical file system. Module loaders can provide a ‘get_resource_reader()’ function which returns a -*note importlib.abc.ResourceReader: 450. instance to support this new +*note importlib.abc.ResourceReader: 333. instance to support this new API. Built-in file path loaders and zip file loaders both support this. Contributed by Barry Warsaw and Brett Cannon in bpo-32248(1). @@ -13843,68 +11265,68 @@ importlib_resources(2) – a PyPI backport for earlier Python versions. (2) http://importlib-resources.readthedocs.io/en/latest/  -File: python.info, Node: Improved Modules<3>, Next: C API Changes<2>, Prev: New Modules<3>, Up: What’s New In Python 3 7 +File: python.info, Node: Improved Modules<2>, Next: C API Changes, Prev: New Modules<2>, Up: What’s New In Python 3 7 -1.3.5 Improved Modules +1.2.5 Improved Modules ---------------------- * Menu: * argparse:: -* asyncio: asyncio<3>. +* asyncio: asyncio<2>. * binascii:: * calendar:: * collections: collections<2>. -* compileall: compileall<2>. -* concurrent.futures: concurrent futures<2>. +* compileall:: +* concurrent.futures: concurrent futures. * contextlib:: * cProfile: cProfile<2>. * crypt:: -* datetime: datetime<3>. +* datetime: datetime<2>. * dbm:: * decimal:: * dis:: -* distutils: distutils<2>. +* distutils:: * enum:: * functools: functools<2>. -* gc: gc<3>. +* gc: gc<2>. * hmac:: * http.client: http client. * http.server: http server. * idlelib and IDLE:: -* importlib: importlib<2>. +* importlib:: * io: io<2>. -* ipaddress: ipaddress<2>. +* ipaddress:: * itertools: itertools<2>. * locale:: * logging: logging<2>. -* math: math<3>. +* math: math<2>. * mimetypes:: * msilib:: -* multiprocessing: multiprocessing<3>. -* os: os<3>. -* pathlib: pathlib<3>. -* pdb: pdb<2>. +* multiprocessing: multiprocessing<2>. +* os: os<2>. +* pathlib: pathlib<2>. +* pdb:: * py_compile: py_compile<2>. -* pydoc: pydoc<2>. +* pydoc:: * queue:: * re:: -* signal: signal<2>. -* socket: socket<3>. +* signal:: +* socket: socket<2>. * socketserver:: * sqlite3:: * ssl: ssl<2>. * string:: * subprocess:: -* sys: sys<3>. -* time: time<3>. +* sys: sys<2>. +* time: time<2>. * tkinter: tkinter<2>. -* tracemalloc: tracemalloc<2>. +* tracemalloc:: * types:: -* unicodedata: unicodedata<3>. +* unicodedata: unicodedata<2>. * unittest: unittest<2>. * unittest.mock: unittest mock. -* urllib.parse: urllib parse<3>. +* urllib.parse: urllib parse<2>. * uu:: * uuid:: * warnings:: @@ -13914,12 +11336,12 @@ File: python.info, Node: Improved Modules<3>, Next: C API Changes<2>, Prev: N * zipfile::  -File: python.info, Node: argparse, Next: asyncio<3>, Up: Improved Modules<3> +File: python.info, Node: argparse, Next: asyncio<2>, Up: Improved Modules<2> -1.3.5.1 argparse +1.2.5.1 argparse ................ -The new *note ArgumentParser.parse_intermixed_args(): 453. method allows +The new *note ArgumentParser.parse_intermixed_args(): 336. method allows intermixing options and positional arguments. (Contributed by paul.j3 in bpo-14191(1).) @@ -13928,83 +11350,83 @@ in bpo-14191(1).) (1) https://bugs.python.org/issue14191  -File: python.info, Node: asyncio<3>, Next: binascii, Prev: argparse, Up: Improved Modules<3> +File: python.info, Node: asyncio<2>, Next: binascii, Prev: argparse, Up: Improved Modules<2> -1.3.5.2 asyncio +1.2.5.2 asyncio ............... -The *note asyncio: 9. module has received many new features, usability -and *note performance improvements: 455. Notable changes include: +The *note asyncio: a. module has received many new features, usability +and *note performance improvements: 338. Notable changes include: - * The new *note provisional: 456. *note asyncio.run(): 18d. function + * The new *note provisional: 339. *note asyncio.run(): 191. function can be used to run a coroutine from synchronous code by automatically creating and destroying the event loop. (Contributed by Yury Selivanov in bpo-32314(1).) - * asyncio gained support for *note contextvars: 24. *note - loop.call_soon(): 457, *note loop.call_soon_threadsafe(): 458, - *note loop.call_later(): 459, *note loop.call_at(): 45a, and *note - Future.add_done_callback(): 45b. have a new optional keyword-only - `context' parameter. *note Tasks: 2e3. now track their context + * asyncio gained support for *note contextvars: 25. *note + loop.call_soon(): 33a, *note loop.call_soon_threadsafe(): 33b, + *note loop.call_later(): 33c, *note loop.call_at(): 33d, and *note + Future.add_done_callback(): 33e. have a new optional keyword-only + `context' parameter. *note Tasks: 199. now track their context automatically. See PEP 567(2) for more details. (Contributed by Yury Selivanov in bpo-32436(3).) - * The new *note asyncio.create_task(): 2e4. function has been added + * The new *note asyncio.create_task(): 19a. function has been added as a shortcut to ‘asyncio.get_event_loop().create_task()’. (Contributed by Andrew Svetlov in bpo-32311(4).) - * The new *note loop.start_tls(): 45c. method can be used to upgrade + * The new *note loop.start_tls(): 33f. method can be used to upgrade an existing connection to TLS. (Contributed by Yury Selivanov in bpo-23749(5).) - * The new *note loop.sock_recv_into(): 45d. method allows reading + * The new *note loop.sock_recv_into(): 340. method allows reading data from a socket directly into a provided buffer making it possible to reduce data copies. (Contributed by Antoine Pitrou in bpo-31819(6).) - * The new *note asyncio.current_task(): 228. function returns the - currently running *note Task: 2e3. instance, and the new *note - asyncio.all_tasks(): 229. function returns a set of all existing - ‘Task’ instances in a given loop. The ‘Task.current_task()’ and - ‘Task.all_tasks()’ methods have been deprecated. (Contributed by - Andrew Svetlov in bpo-32250(7).) + * The new *note asyncio.current_task(): 341. function returns the + currently running *note Task: 199. instance, and the new *note + asyncio.all_tasks(): 342. function returns a set of all existing + ‘Task’ instances in a given loop. The *note Task.current_task(): + 343. and *note Task.all_tasks(): 344. methods have been deprecated. + (Contributed by Andrew Svetlov in bpo-32250(7).) - * The new `provisional' *note BufferedProtocol: 3ee. class allows + * The new `provisional' *note BufferedProtocol: 2b4. class allows implementing streaming protocols with manual control over the receive buffer. (Contributed by Yury Selivanov in bpo-32251(8).) - * The new *note asyncio.get_running_loop(): 45e. function returns the - currently running loop, and raises a *note RuntimeError: 3df. if no + * The new *note asyncio.get_running_loop(): 345. function returns the + currently running loop, and raises a *note RuntimeError: 2a5. if no loop is running. This is in contrast with *note - asyncio.get_event_loop(): 45f, which will `create' a new event loop + asyncio.get_event_loop(): 346, which will `create' a new event loop if none is running. (Contributed by Yury Selivanov in bpo-32269(9).) - * The new *note StreamWriter.wait_closed(): 460. coroutine method + * The new *note StreamWriter.wait_closed(): 347. coroutine method allows waiting until the stream writer is closed. The new *note - StreamWriter.is_closing(): 461. method can be used to determine if + StreamWriter.is_closing(): 348. method can be used to determine if the writer is closing. (Contributed by Andrew Svetlov in bpo-32391(10).) - * The new *note loop.sock_sendfile(): 462. coroutine method allows - sending files using *note os.sendfile: 463. when possible. + * The new *note loop.sock_sendfile(): 349. coroutine method allows + sending files using *note os.sendfile: 34a. when possible. (Contributed by Andrew Svetlov in bpo-32410(11).) - * The new *note Future.get_loop(): 464. and ‘Task.get_loop()’ methods + * The new *note Future.get_loop(): 34b. and ‘Task.get_loop()’ methods return the instance of the loop on which a task or a future were - created. *note Server.get_loop(): 465. allows doing the same for - *note asyncio.Server: 466. objects. (Contributed by Yury Selivanov + created. *note Server.get_loop(): 34c. allows doing the same for + *note asyncio.Server: 34d. objects. (Contributed by Yury Selivanov in bpo-32415(12) and Srinivas Reddy Thatiparthy in bpo-32418(13).) * It is now possible to control how instances of *note - asyncio.Server: 466. begin serving. Previously, the server would + asyncio.Server: 34d. begin serving. Previously, the server would start serving immediately when created. The new `start_serving' - keyword argument to *note loop.create_server(): 467. and *note - loop.create_unix_server(): 468, as well as *note - Server.start_serving(): 469, and *note Server.serve_forever(): 46a. + keyword argument to *note loop.create_server(): 34e. and *note + loop.create_unix_server(): 34f, as well as *note + Server.start_serving(): 350, and *note Server.serve_forever(): 351. can be used to decouple server instantiation and serving. The new - *note Server.is_serving(): 46b. method returns ‘True’ if the server - is serving. *note Server: 466. objects are now asynchronous + *note Server.is_serving(): 352. method returns ‘True’ if the server + is serving. *note Server: 34d. objects are now asynchronous context managers: srv = await loop.create_server(...) @@ -14016,42 +11438,42 @@ and *note performance improvements: 455. Notable changes include: (Contributed by Yury Selivanov in bpo-32662(14).) - * Callback objects returned by *note loop.call_later(): 459. gained - the new *note when(): 46c. method which returns an absolute + * Callback objects returned by *note loop.call_later(): 33c. gained + the new *note when(): 353. method which returns an absolute scheduled callback timestamp. (Contributed by Andrew Svetlov in bpo-32741(15).) - * The *note loop.create_datagram_endpoint(): 189. method gained + * The *note loop.create_datagram_endpoint(): 2d3. method gained support for Unix sockets. (Contributed by Quentin Dawans in bpo-31245(16).) - * The *note asyncio.open_connection(): 46d, *note - asyncio.start_server(): 46e. functions, *note - loop.create_connection(): 2e8, *note loop.create_server(): 467, - *note loop.create_accepted_socket(): 46f. methods and their + * The *note asyncio.open_connection(): 354, *note + asyncio.start_server(): 355. functions, *note + loop.create_connection(): 19e, *note loop.create_server(): 34e, + *note loop.create_accepted_socket(): 356. methods and their corresponding UNIX socket variants now accept the `ssl_handshake_timeout' keyword argument. (Contributed by Neil Aspinall in bpo-29970(17).) - * The new *note Handle.cancelled(): 470. method returns ‘True’ if the + * The new *note Handle.cancelled(): 357. method returns ‘True’ if the callback was cancelled. (Contributed by Marat Sharafutdinov in bpo-31943(18).) * The asyncio source has been converted to use the *note async: - 2da./*note await: 2db. syntax. (Contributed by Andrew Svetlov in + 18e./*note await: 18f. syntax. (Contributed by Andrew Svetlov in bpo-32193(19).) - * The new *note ReadTransport.is_reading(): 471. method can be used + * The new *note ReadTransport.is_reading(): 358. method can be used to determine the reading state of the transport. Additionally, - calls to *note ReadTransport.resume_reading(): 472. and *note - ReadTransport.pause_reading(): 473. are now idempotent. + calls to *note ReadTransport.resume_reading(): 359. and *note + ReadTransport.pause_reading(): 35a. are now idempotent. (Contributed by Yury Selivanov in bpo-32356(20).) * Loop methods which accept socket paths now support passing *note - path-like objects: 474. (Contributed by Yury Selivanov in + path-like objects: 35b. (Contributed by Yury Selivanov in bpo-32066(21).) - * In *note asyncio: 9. TCP sockets on Linux are now created with + * In *note asyncio: a. TCP sockets on Linux are now created with ‘TCP_NODELAY’ flag set by default. (Contributed by Yury Selivanov and Victor Stinner in bpo-27456(22).) @@ -14062,7 +11484,7 @@ and *note performance improvements: 455. Notable changes include: ‘WindowsProactorEventLoopPolicy’ classes. (Contributed by Yury Selivanov in bpo-33792(24).) -Several ‘asyncio’ APIs have been *note deprecated: 475. +Several ‘asyncio’ APIs have been *note deprecated: 35c. ---------- Footnotes ---------- @@ -14115,12 +11537,12 @@ Several ‘asyncio’ APIs have been *note deprecated: 475. (24) https://bugs.python.org/issue33792  -File: python.info, Node: binascii, Next: calendar, Prev: asyncio<3>, Up: Improved Modules<3> +File: python.info, Node: binascii, Next: calendar, Prev: asyncio<2>, Up: Improved Modules<2> -1.3.5.3 binascii +1.2.5.3 binascii ................ -The *note b2a_uu(): 477. function now accepts an optional `backtick' +The *note b2a_uu(): 35e. function now accepts an optional `backtick' keyword argument. When it’s true, zeros are represented by ‘'`'’ instead of spaces. (Contributed by Xiang Zhang in bpo-30103(1).) @@ -14129,12 +11551,12 @@ instead of spaces. (Contributed by Xiang Zhang in bpo-30103(1).) (1) https://bugs.python.org/issue30103  -File: python.info, Node: calendar, Next: collections<2>, Prev: binascii, Up: Improved Modules<3> +File: python.info, Node: calendar, Next: collections<2>, Prev: binascii, Up: Improved Modules<2> -1.3.5.4 calendar +1.2.5.4 calendar ................ -The *note HTMLCalendar: 479. class has new class attributes which ease +The *note HTMLCalendar: 360. class has new class attributes which ease the customization of CSS classes in the produced HTML calendar. (Contributed by Oz Tiram in bpo-30095(1).) @@ -14143,9 +11565,9 @@ the customization of CSS classes in the produced HTML calendar. (1) https://bugs.python.org/issue30095  -File: python.info, Node: collections<2>, Next: compileall<2>, Prev: calendar, Up: Improved Modules<3> +File: python.info, Node: collections<2>, Next: compileall, Prev: calendar, Up: Improved Modules<2> -1.3.5.5 collections +1.2.5.5 collections ................... ‘collections.namedtuple()’ now supports default values. (Contributed by @@ -14156,14 +11578,14 @@ Raymond Hettinger in bpo-32320(1).) (1) https://bugs.python.org/issue32320  -File: python.info, Node: compileall<2>, Next: concurrent futures<2>, Prev: collections<2>, Up: Improved Modules<3> +File: python.info, Node: compileall, Next: concurrent futures, Prev: collections<2>, Up: Improved Modules<2> -1.3.5.6 compileall +1.2.5.6 compileall .................. -*note compileall.compile_dir(): 47c. learned the new `invalidation_mode' +*note compileall.compile_dir(): 363. learned the new `invalidation_mode' parameter, which can be used to enable *note hash-based .pyc -invalidation: 415. The invalidation mode can also be specified on the +invalidation: 2f5. The invalidation mode can also be specified on the command line using the new ‘--invalidation-mode’ argument. (Contributed by Benjamin Peterson in bpo-31650(1).) @@ -14172,16 +11594,16 @@ by Benjamin Peterson in bpo-31650(1).) (1) https://bugs.python.org/issue31650  -File: python.info, Node: concurrent futures<2>, Next: contextlib, Prev: compileall<2>, Up: Improved Modules<3> +File: python.info, Node: concurrent futures, Next: contextlib, Prev: compileall, Up: Improved Modules<2> -1.3.5.7 concurrent.futures +1.2.5.7 concurrent.futures .......................... -*note ProcessPoolExecutor: 196. and *note ThreadPoolExecutor: 18c. now +*note ProcessPoolExecutor: 28f. and *note ThreadPoolExecutor: 266. now support the new `initializer' and `initargs' constructor arguments. (Contributed by Antoine Pitrou in bpo-21423(1).) -The *note ProcessPoolExecutor: 196. can now take the multiprocessing +The *note ProcessPoolExecutor: 28f. can now take the multiprocessing context via the new `mp_context' argument. (Contributed by Thomas Moreau in bpo-31540(2).) @@ -14192,17 +11614,17 @@ Moreau in bpo-31540(2).) (2) https://bugs.python.org/issue31540  -File: python.info, Node: contextlib, Next: cProfile<2>, Prev: concurrent futures<2>, Up: Improved Modules<3> +File: python.info, Node: contextlib, Next: cProfile<2>, Prev: concurrent futures, Up: Improved Modules<2> -1.3.5.8 contextlib +1.2.5.8 contextlib .................. -The new *note nullcontext(): 47f. is a simpler and faster no-op context -manager than *note ExitStack: 480. (Contributed by Jesse-Bakker in +The new *note nullcontext(): 366. is a simpler and faster no-op context +manager than *note ExitStack: 367. (Contributed by Jesse-Bakker in bpo-10049(1).) -The new *note asynccontextmanager(): 481, *note -AbstractAsyncContextManager: 482, and *note AsyncExitStack: 483. have +The new *note asynccontextmanager(): 368, *note +AbstractAsyncContextManager: 369, and *note AsyncExitStack: 36a. have been added to complement their synchronous counterparts. (Contributed by Jelle Zijlstra in bpo-29679(2) and bpo-30241(3), and by Alexander Mohr and Ilya Kulakov in bpo-29302(4).) @@ -14218,12 +11640,12 @@ Mohr and Ilya Kulakov in bpo-29302(4).) (4) https://bugs.python.org/issue29302  -File: python.info, Node: cProfile<2>, Next: crypt, Prev: contextlib, Up: Improved Modules<3> +File: python.info, Node: cProfile<2>, Next: crypt, Prev: contextlib, Up: Improved Modules<2> -1.3.5.9 cProfile +1.2.5.9 cProfile ................ -The *note cProfile: 27. command line now accepts ‘-m module_name’ as an +The *note cProfile: 28. command line now accepts ‘-m module_name’ as an alternative to script path. (Contributed by Sanyam Khurana in bpo-21862(1).) @@ -14232,15 +11654,15 @@ bpo-21862(1).) (1) https://bugs.python.org/issue21862  -File: python.info, Node: crypt, Next: datetime<3>, Prev: cProfile<2>, Up: Improved Modules<3> +File: python.info, Node: crypt, Next: datetime<2>, Prev: cProfile<2>, Up: Improved Modules<2> -1.3.5.10 crypt +1.2.5.10 crypt .............. -The *note crypt: 28. module now supports the Blowfish hashing method. +The *note crypt: 29. module now supports the Blowfish hashing method. (Contributed by Serhiy Storchaka in bpo-31664(1).) -The *note mksalt(): 486. function now allows specifying the number of +The *note mksalt(): 36d. function now allows specifying the number of rounds for hashing. (Contributed by Serhiy Storchaka in bpo-31702(2).) ---------- Footnotes ---------- @@ -14250,17 +11672,17 @@ rounds for hashing. (Contributed by Serhiy Storchaka in bpo-31702(2).) (2) https://bugs.python.org/issue31702  -File: python.info, Node: datetime<3>, Next: dbm, Prev: crypt, Up: Improved Modules<3> +File: python.info, Node: datetime<2>, Next: dbm, Prev: crypt, Up: Improved Modules<2> -1.3.5.11 datetime +1.2.5.11 datetime ................. -The new *note datetime.fromisoformat(): 488. method constructs a *note -datetime: 1a0. object from a string in one of the formats output by -*note datetime.isoformat(): 489. (Contributed by Paul Ganssle in +The new *note datetime.fromisoformat(): 36f. method constructs a *note +datetime: 181. object from a string in one of the formats output by +*note datetime.isoformat(): 370. (Contributed by Paul Ganssle in bpo-15873(1).) -The *note tzinfo: 180. class now supports sub-minute offsets. +The *note tzinfo: 371. class now supports sub-minute offsets. (Contributed by Alexander Belopolsky in bpo-5288(2).) ---------- Footnotes ---------- @@ -14270,21 +11692,21 @@ The *note tzinfo: 180. class now supports sub-minute offsets. (2) https://bugs.python.org/issue5288  -File: python.info, Node: dbm, Next: decimal, Prev: datetime<3>, Up: Improved Modules<3> +File: python.info, Node: dbm, Next: decimal, Prev: datetime<2>, Up: Improved Modules<2> -1.3.5.12 dbm +1.2.5.12 dbm ............ -*note dbm.dumb: 32. now supports reading read-only files and no longer +*note dbm.dumb: 33. now supports reading read-only files and no longer writes the index file when it is not changed.  -File: python.info, Node: decimal, Next: dis, Prev: dbm, Up: Improved Modules<3> +File: python.info, Node: decimal, Next: dis, Prev: dbm, Up: Improved Modules<2> -1.3.5.13 decimal +1.2.5.13 decimal ................ -The *note decimal: 35. module now uses *note context variables: 409. to +The *note decimal: 36. module now uses *note context variables: 2e9. to store the decimal context. (Contributed by Yury Selivanov in bpo-32630(1).) @@ -14293,12 +11715,12 @@ bpo-32630(1).) (1) https://bugs.python.org/issue32630  -File: python.info, Node: dis, Next: distutils<2>, Prev: decimal, Up: Improved Modules<3> +File: python.info, Node: dis, Next: distutils, Prev: decimal, Up: Improved Modules<2> -1.3.5.14 dis +1.2.5.14 dis ............ -The *note dis(): 48d. function is now able to disassemble nested code +The *note dis(): 375. function is now able to disassemble nested code objects (the code of comprehensions, generator expressions and nested functions, and the code used for building nested classes). The maximum depth of disassembly recursion is controlled by the new `depth' @@ -14309,9 +11731,9 @@ parameter. (Contributed by Serhiy Storchaka in bpo-11822(1).) (1) https://bugs.python.org/issue11822  -File: python.info, Node: distutils<2>, Next: enum, Prev: dis, Up: Improved Modules<3> +File: python.info, Node: distutils, Next: enum, Prev: dis, Up: Improved Modules<2> -1.3.5.15 distutils +1.2.5.15 distutils .................. ‘README.rst’ is now included in the list of distutils standard READMEs @@ -14323,20 +11745,20 @@ Gonzalez in bpo-11913(1).) (1) https://bugs.python.org/issue11913  -File: python.info, Node: enum, Next: functools<2>, Prev: distutils<2>, Up: Improved Modules<3> +File: python.info, Node: enum, Next: functools<2>, Prev: distutils, Up: Improved Modules<2> -1.3.5.16 enum +1.2.5.16 enum ............. -The *note Enum: 490. learned the new ‘_ignore_’ class property, which +The *note Enum: 378. learned the new ‘_ignore_’ class property, which allows listing the names of properties which should not become enum members. (Contributed by Ethan Furman in bpo-31801(1).) In Python 3.8, attempting to check for non-Enum objects in ‘Enum’ -classes will raise a *note TypeError: 1fe. (e.g. ‘1 in Color’); +classes will raise a *note TypeError: 17f. (e.g. ‘1 in Color’); similarly, attempting to check for non-Flag objects in a ‘Flag’ member -will raise *note TypeError: 1fe. (e.g. ‘1 in Perm.RW’); currently, both -operations return *note False: 491. instead and are deprecated. +will raise *note TypeError: 17f. (e.g. ‘1 in Perm.RW’); currently, both +operations return *note False: 379. instead and are deprecated. (Contributed by Ethan Furman in bpo-33217(2).) ---------- Footnotes ---------- @@ -14346,12 +11768,12 @@ operations return *note False: 491. instead and are deprecated. (2) https://bugs.python.org/issue33217  -File: python.info, Node: functools<2>, Next: gc<3>, Prev: enum, Up: Improved Modules<3> +File: python.info, Node: functools<2>, Next: gc<2>, Prev: enum, Up: Improved Modules<2> -1.3.5.17 functools +1.2.5.17 functools .................. -*note functools.singledispatch(): 493. now supports registering +*note functools.singledispatch(): 37b. now supports registering implementations using type annotations. (Contributed by Łukasz Langa in bpo-32227(1).) @@ -14360,17 +11782,17 @@ bpo-32227(1).) (1) https://bugs.python.org/issue32227  -File: python.info, Node: gc<3>, Next: hmac, Prev: functools<2>, Up: Improved Modules<3> +File: python.info, Node: gc<2>, Next: hmac, Prev: functools<2>, Up: Improved Modules<2> -1.3.5.18 gc +1.2.5.18 gc ........... -The new *note gc.freeze(): 495. function allows freezing all objects +The new *note gc.freeze(): 37d. function allows freezing all objects tracked by the garbage collector and excluding them from future collections. This can be used before a POSIX ‘fork()’ call to make the GC copy-on-write friendly or to speed up collection. The new *note -gc.unfreeze(): 496. functions reverses this operation. Additionally, -*note gc.get_freeze_count(): 497. can be used to obtain the number of +gc.unfreeze(): 37e. functions reverses this operation. Additionally, +*note gc.get_freeze_count(): 37f. can be used to obtain the number of frozen objects. (Contributed by Li Zekun in bpo-31558(1).) ---------- Footnotes ---------- @@ -14378,13 +11800,13 @@ frozen objects. (Contributed by Li Zekun in bpo-31558(1).) (1) https://bugs.python.org/issue31558  -File: python.info, Node: hmac, Next: http client, Prev: gc<3>, Up: Improved Modules<3> +File: python.info, Node: hmac, Next: http client, Prev: gc<2>, Up: Improved Modules<2> -1.3.5.19 hmac +1.2.5.19 hmac ............. -The *note hmac: 8e. module now has an optimized one-shot *note digest(): -499. function, which is up to three times faster than ‘HMAC()’. +The *note hmac: 8f. module now has an optimized one-shot *note digest(): +381. function, which is up to three times faster than ‘HMAC()’. (Contributed by Christian Heimes in bpo-32433(1).) ---------- Footnotes ---------- @@ -14392,12 +11814,12 @@ The *note hmac: 8e. module now has an optimized one-shot *note digest(): (1) https://bugs.python.org/issue32433  -File: python.info, Node: http client, Next: http server, Prev: hmac, Up: Improved Modules<3> +File: python.info, Node: http client, Next: http server, Prev: hmac, Up: Improved Modules<2> -1.3.5.20 http.client +1.2.5.20 http.client .................... -*note HTTPConnection: 49b. and *note HTTPSConnection: 49c. now support +*note HTTPConnection: 383. and *note HTTPSConnection: 384. now support the new `blocksize' argument for improved upload throughput. (Contributed by Nir Soffer in bpo-31945(1).) @@ -14406,23 +11828,23 @@ the new `blocksize' argument for improved upload throughput. (1) https://bugs.python.org/issue31945  -File: python.info, Node: http server, Next: idlelib and IDLE, Prev: http client, Up: Improved Modules<3> +File: python.info, Node: http server, Next: idlelib and IDLE, Prev: http client, Up: Improved Modules<2> -1.3.5.21 http.server +1.2.5.21 http.server .................... -*note SimpleHTTPRequestHandler: 49e. now supports the HTTP +*note SimpleHTTPRequestHandler: 386. now supports the HTTP ‘If-Modified-Since’ header. The server returns the 304 response status if the target file was not modified after the time specified in the header. (Contributed by Pierre Quentel in bpo-29654(1).) -*note SimpleHTTPRequestHandler: 49e. accepts the new `directory' +*note SimpleHTTPRequestHandler: 386. accepts the new `directory' argument, in addition to the new ‘--directory’ command line argument. With this parameter, the server serves the specified directory, by default it uses the current working directory. (Contributed by Stéphane Wirtel and Julien Palard in bpo-28707(2).) -The new *note ThreadingHTTPServer: 49f. class uses threads to handle +The new *note ThreadingHTTPServer: 387. class uses threads to handle requests using ‘ThreadingMixin’. It is used when ‘http.server’ is run with ‘-m’. (Contributed by Julien Palard in bpo-31639(3).) @@ -14435,9 +11857,9 @@ with ‘-m’. (Contributed by Julien Palard in bpo-31639(3).) (3) https://bugs.python.org/issue31639  -File: python.info, Node: idlelib and IDLE, Next: importlib<2>, Prev: http server, Up: Improved Modules<3> +File: python.info, Node: idlelib and IDLE, Next: importlib, Prev: http server, Up: Improved Modules<2> -1.3.5.22 idlelib and IDLE +1.2.5.22 idlelib and IDLE ......................... Multiple fixes for autocompletion. (Contributed by Louie Lu in @@ -14532,27 +11954,27 @@ Heblikar in bpo-17535(13).) (13) https://bugs.python.org/issue17535  -File: python.info, Node: importlib<2>, Next: io<2>, Prev: idlelib and IDLE, Up: Improved Modules<3> +File: python.info, Node: importlib, Next: io<2>, Prev: idlelib and IDLE, Up: Improved Modules<2> -1.3.5.23 importlib +1.2.5.23 importlib .................. -The *note importlib.abc.ResourceReader: 450. ABC was introduced to +The *note importlib.abc.ResourceReader: 333. ABC was introduced to support the loading of resources from packages. See also *note -importlib.resources: 40b. (Contributed by Barry Warsaw, Brett Cannon in +importlib.resources: 2eb. (Contributed by Barry Warsaw, Brett Cannon in bpo-32248(1).) -*note importlib.reload(): 4a2. now raises *note ModuleNotFoundError: -4a3. if the module lacks a spec. (Contributed by Garvit Khatri in +*note importlib.reload(): 38a. now raises *note ModuleNotFoundError: +38b. if the module lacks a spec. (Contributed by Garvit Khatri in bpo-29851(2).) -‘importlib.find_spec()’ now raises *note ModuleNotFoundError: 4a3. -instead of *note AttributeError: 4a4. if the specified parent module is +‘importlib.find_spec()’ now raises *note ModuleNotFoundError: 38b. +instead of *note AttributeError: 38c. if the specified parent module is not a package (i.e. lacks a ‘__path__’ attribute). (Contributed by Milan Oberkirch in bpo-30436(3).) The new ‘importlib.source_hash()’ can be used to compute the hash of the -passed source. A *note hash-based .pyc file: 415. embeds the value +passed source. A *note hash-based .pyc file: 2f5. embeds the value returned by this function. ---------- Footnotes ---------- @@ -14564,12 +11986,12 @@ returned by this function. (3) https://bugs.python.org/issue30436  -File: python.info, Node: io<2>, Next: ipaddress<2>, Prev: importlib<2>, Up: Improved Modules<3> +File: python.info, Node: io<2>, Next: ipaddress, Prev: importlib, Up: Improved Modules<2> -1.3.5.24 io +1.2.5.24 io ........... -The new *note TextIOWrapper.reconfigure(): 4a6. method can be used to +The new *note TextIOWrapper.reconfigure(): 38e. method can be used to reconfigure the text stream with the new settings. (Contributed by Antoine Pitrou in bpo-30526(1) and INADA Naoki in bpo-15216(2).) @@ -14580,13 +12002,13 @@ Antoine Pitrou in bpo-30526(1) and INADA Naoki in bpo-15216(2).) (2) https://bugs.python.org/issue15216  -File: python.info, Node: ipaddress<2>, Next: itertools<2>, Prev: io<2>, Up: Improved Modules<3> +File: python.info, Node: ipaddress, Next: itertools<2>, Prev: io<2>, Up: Improved Modules<2> -1.3.5.25 ipaddress +1.2.5.25 ipaddress .................. The new ‘subnet_of()’ and ‘supernet_of()’ methods of *note -ipaddress.IPv6Network: 4a8. and *note ipaddress.IPv4Network: 4a9. can be +ipaddress.IPv6Network: 390. and *note ipaddress.IPv4Network: 391. can be used for network containment tests. (Contributed by Michel Albert and Cheryl Sabella in bpo-20825(1).) @@ -14595,13 +12017,13 @@ Cheryl Sabella in bpo-20825(1).) (1) https://bugs.python.org/issue20825  -File: python.info, Node: itertools<2>, Next: locale, Prev: ipaddress<2>, Up: Improved Modules<3> +File: python.info, Node: itertools<2>, Next: locale, Prev: ipaddress, Up: Improved Modules<2> -1.3.5.26 itertools +1.2.5.26 itertools .................. -*note itertools.islice(): 4ab. now accepts *note integer-like objects: -2c5. as start, stop, and slice arguments. (Contributed by Will Roberts +*note itertools.islice(): 393. now accepts *note integer-like objects: +177. as start, stop, and slice arguments. (Contributed by Will Roberts in bpo-30537(1).) ---------- Footnotes ---------- @@ -14609,38 +12031,38 @@ in bpo-30537(1).) (1) https://bugs.python.org/issue30537  -File: python.info, Node: locale, Next: logging<2>, Prev: itertools<2>, Up: Improved Modules<3> +File: python.info, Node: locale, Next: logging<2>, Prev: itertools<2>, Up: Improved Modules<2> -1.3.5.27 locale +1.2.5.27 locale ............... -The new `monetary' argument to *note locale.format_string(): 4ad. can be +The new `monetary' argument to *note locale.format_string(): 395. can be used to make the conversion use monetary thousands separators and grouping strings. (Contributed by Garvit in bpo-10379(1).) -The *note locale.getpreferredencoding(): 4ae. function now always +The *note locale.getpreferredencoding(): 396. function now always returns ‘'UTF-8'’ on Android or when in the *note forced UTF-8 mode: -414. +2f4. ---------- Footnotes ---------- (1) https://bugs.python.org/issue10379  -File: python.info, Node: logging<2>, Next: math<3>, Prev: locale, Up: Improved Modules<3> +File: python.info, Node: logging<2>, Next: math<2>, Prev: locale, Up: Improved Modules<2> -1.3.5.28 logging +1.2.5.28 logging ................ -*note Logger: 4b0. instances can now be pickled. (Contributed by Vinay +*note Logger: 398. instances can now be pickled. (Contributed by Vinay Sajip in bpo-30520(1).) -The new *note StreamHandler.setStream(): 4b1. method can be used to +The new *note StreamHandler.setStream(): 399. method can be used to replace the logger stream after handler creation. (Contributed by Vinay Sajip in bpo-30522(2).) It is now possible to specify keyword arguments to handler constructors -in configuration passed to *note logging.config.fileConfig(): 4b2. +in configuration passed to *note logging.config.fileConfig(): 39a. (Contributed by Preston Landers in bpo-31080(3).) ---------- Footnotes ---------- @@ -14652,12 +12074,12 @@ in configuration passed to *note logging.config.fileConfig(): 4b2. (3) https://bugs.python.org/issue31080  -File: python.info, Node: math<3>, Next: mimetypes, Prev: logging<2>, Up: Improved Modules<3> +File: python.info, Node: math<2>, Next: mimetypes, Prev: logging<2>, Up: Improved Modules<2> -1.3.5.29 math +1.2.5.29 math ............. -The new *note math.remainder(): 4b4. function implements the IEEE +The new *note math.remainder(): 39c. function implements the IEEE 754-style remainder operation. (Contributed by Mark Dickinson in bpo-29962(1).) @@ -14666,9 +12088,9 @@ bpo-29962(1).) (1) https://bugs.python.org/issue29962  -File: python.info, Node: mimetypes, Next: msilib, Prev: math<3>, Up: Improved Modules<3> +File: python.info, Node: mimetypes, Next: msilib, Prev: math<2>, Up: Improved Modules<2> -1.3.5.30 mimetypes +1.2.5.30 mimetypes .................. The MIME type of .bmp has been changed from ‘'image/x-ms-bmp'’ to @@ -14679,35 +12101,34 @@ The MIME type of .bmp has been changed from ‘'image/x-ms-bmp'’ to (1) https://bugs.python.org/issue22589  -File: python.info, Node: msilib, Next: multiprocessing<3>, Prev: mimetypes, Up: Improved Modules<3> +File: python.info, Node: msilib, Next: multiprocessing<2>, Prev: mimetypes, Up: Improved Modules<2> -1.3.5.31 msilib +1.2.5.31 msilib ............... -The new *note Database.Close(): 4b7. method can be used to close the MSI -(last-in, first-out) database. (Contributed by Berker Peksag in -bpo-20486(1).) +The new *note Database.Close(): 39f. method can be used to close the MSI +database. (Contributed by Berker Peksag in bpo-20486(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue20486  -File: python.info, Node: multiprocessing<3>, Next: os<3>, Prev: msilib, Up: Improved Modules<3> +File: python.info, Node: multiprocessing<2>, Next: os<2>, Prev: msilib, Up: Improved Modules<2> -1.3.5.32 multiprocessing +1.2.5.32 multiprocessing ........................ -The new *note Process.close(): 4b9. method explicitly closes the process +The new *note Process.close(): 3a1. method explicitly closes the process object and releases all resources associated with it. *note ValueError: -16d. is raised if the underlying process is still running. (Contributed +1e7. is raised if the underlying process is still running. (Contributed by Antoine Pitrou in bpo-30596(1).) -The new *note Process.kill(): 4ba. method can be used to terminate the +The new *note Process.kill(): 3a2. method can be used to terminate the process using the ‘SIGKILL’ signal on Unix. (Contributed by Vitor Pereira in bpo-30794(2).) -Non-daemonic threads created by *note Process: 4bb. are now joined on +Non-daemonic threads created by *note Process: 3a3. are now joined on process exit. (Contributed by Antoine Pitrou in bpo-18966(3).) ---------- Footnotes ---------- @@ -14719,37 +12140,37 @@ process exit. (Contributed by Antoine Pitrou in bpo-18966(3).) (3) https://bugs.python.org/issue18966  -File: python.info, Node: os<3>, Next: pathlib<3>, Prev: multiprocessing<3>, Up: Improved Modules<3> +File: python.info, Node: os<2>, Next: pathlib<2>, Prev: multiprocessing<2>, Up: Improved Modules<2> -1.3.5.33 os +1.2.5.33 os ........... -*note os.fwalk(): 4bd. now accepts the `path' argument as *note bytes: -172. (Contributed by Serhiy Storchaka in bpo-28682(1).) +*note os.fwalk(): 3a5. now accepts the `path' argument as *note bytes: +322. (Contributed by Serhiy Storchaka in bpo-28682(1).) -*note os.scandir(): 38c. gained support for *note file descriptors: 4be. +*note os.scandir(): 24b. gained support for *note file descriptors: 3a6. (Contributed by Serhiy Storchaka in bpo-25996(2).) -The new *note register_at_fork(): 4bf. function allows registering +The new *note register_at_fork(): 3a7. function allows registering Python callbacks to be executed at process fork. (Contributed by Antoine Pitrou in bpo-16500(3).) -Added *note os.preadv(): 4c0. (combine the functionality of *note -os.readv(): 4c1. and *note os.pread(): 4c2.) and *note os.pwritev(): -4c3. functions (combine the functionality of *note os.writev(): 4c4. and -*note os.pwrite(): 4c5.). (Contributed by Pablo Galindo in +Added *note os.preadv(): 3a8. (combine the functionality of *note +os.readv(): 3a9. and *note os.pread(): 3aa.) and *note os.pwritev(): +3ab. functions (combine the functionality of *note os.writev(): 3ac. and +*note os.pwrite(): 3ad.). (Contributed by Pablo Galindo in bpo-31368(4).) -The mode argument of *note os.makedirs(): 4c6. no longer affects the +The mode argument of *note os.makedirs(): 3ae. no longer affects the file permission bits of newly-created intermediate-level directories. (Contributed by Serhiy Storchaka in bpo-19930(5).) -*note os.dup2(): 4c7. now returns the new file descriptor. Previously, +*note os.dup2(): 3af. now returns the new file descriptor. Previously, ‘None’ was always returned. (Contributed by Benjamin Peterson in bpo-32441(6).) -The structure returned by *note os.stat(): 324. now contains the *note -st_fstype: 4c8. attribute on Solaris and its derivatives. (Contributed +The structure returned by *note os.stat(): 1dd. now contains the *note +st_fstype: 3b0. attribute on Solaris and its derivatives. (Contributed by Jesús Cea Avión in bpo-32659(7).) ---------- Footnotes ---------- @@ -14769,12 +12190,12 @@ by Jesús Cea Avión in bpo-32659(7).) (7) https://bugs.python.org/issue32659  -File: python.info, Node: pathlib<3>, Next: pdb<2>, Prev: os<3>, Up: Improved Modules<3> +File: python.info, Node: pathlib<2>, Next: pdb, Prev: os<2>, Up: Improved Modules<2> -1.3.5.34 pathlib +1.2.5.34 pathlib ................ -The new *note Path.is_mount(): 336. method is now available on POSIX +The new *note Path.is_mount(): 1f1. method is now available on POSIX systems and can be used to determine whether a path is a mount point. (Contributed by Cooper Ry Lees in bpo-30897(1).) @@ -14783,16 +12204,16 @@ systems and can be used to determine whether a path is a mount point. (1) https://bugs.python.org/issue30897  -File: python.info, Node: pdb<2>, Next: py_compile<2>, Prev: pathlib<3>, Up: Improved Modules<3> +File: python.info, Node: pdb, Next: py_compile<2>, Prev: pathlib<2>, Up: Improved Modules<2> -1.3.5.35 pdb +1.2.5.35 pdb ............ -*note pdb.set_trace(): 4cb. now takes an optional `header' keyword-only +*note pdb.set_trace(): 3b3. now takes an optional `header' keyword-only argument. If given, it is printed to the console just before debugging begins. (Contributed by Barry Warsaw in bpo-31389(1).) -*note pdb: c9. command line now accepts ‘-m module_name’ as an +*note pdb: ca. command line now accepts ‘-m module_name’ as an alternative to script file. (Contributed by Mario Corchero in bpo-32206(2).) @@ -14803,13 +12224,13 @@ bpo-32206(2).) (2) https://bugs.python.org/issue32206  -File: python.info, Node: py_compile<2>, Next: pydoc<2>, Prev: pdb<2>, Up: Improved Modules<3> +File: python.info, Node: py_compile<2>, Next: pydoc, Prev: pdb, Up: Improved Modules<2> -1.3.5.36 py_compile +1.2.5.36 py_compile ................... -*note py_compile.compile(): 346. – and by extension, *note compileall: -20. – now respects the ‘SOURCE_DATE_EPOCH’ environment variable by +*note py_compile.compile(): 201. – and by extension, *note compileall: +21. – now respects the ‘SOURCE_DATE_EPOCH’ environment variable by unconditionally creating ‘.pyc’ files for hash-based validation. This allows for guaranteeing reproducible builds(1) of ‘.pyc’ files when they are created eagerly. (Contributed by Bernhard M. Wiedemann in @@ -14822,9 +12243,9 @@ bpo-29708(2).) (2) https://bugs.python.org/issue29708  -File: python.info, Node: pydoc<2>, Next: queue, Prev: py_compile<2>, Up: Improved Modules<3> +File: python.info, Node: pydoc, Next: queue, Prev: py_compile<2>, Up: Improved Modules<2> -1.3.5.37 pydoc +1.2.5.37 pydoc .............. The pydoc server can now bind to an arbitrary hostname specified by the @@ -14836,44 +12257,44 @@ bpo-31128(1).) (1) https://bugs.python.org/issue31128  -File: python.info, Node: queue, Next: re, Prev: pydoc<2>, Up: Improved Modules<3> +File: python.info, Node: queue, Next: re, Prev: pydoc, Up: Improved Modules<2> -1.3.5.38 queue +1.2.5.38 queue .............. -The new *note SimpleQueue: 4cf. class is an unbounded FIFO (last-in, -first-out) queue. (Contributed by Antoine Pitrou in bpo-14976(1).) +The new *note SimpleQueue: 3b7. class is an unbounded FIFO queue. +(Contributed by Antoine Pitrou in bpo-14976(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue14976  -File: python.info, Node: re, Next: signal<2>, Prev: queue, Up: Improved Modules<3> +File: python.info, Node: re, Next: signal, Prev: queue, Up: Improved Modules<2> -1.3.5.39 re +1.2.5.39 re ........... -The flags *note re.ASCII: 4d1, *note re.LOCALE: 4d2. and ‘re.UNICODE’ +The flags *note re.ASCII: 3b9, *note re.LOCALE: 3ba. and ‘re.UNICODE’ can be set within the scope of a group. (Contributed by Serhiy Storchaka in bpo-31690(1).) -*note re.split(): 4d3. now supports splitting on a pattern like ‘r'\b'’, +*note re.split(): 3bb. now supports splitting on a pattern like ‘r'\b'’, ‘'^$'’ or ‘(?=-)’ that matches an empty string. (Contributed by Serhiy Storchaka in bpo-25054(2).) -Regular expressions compiled with the *note re.LOCALE: 4d2. flag no +Regular expressions compiled with the *note re.LOCALE: 3ba. flag no longer depend on the locale at compile time. Locale settings are applied only when the compiled regular expression is used. (Contributed by Serhiy Storchaka in bpo-30215(3).) -*note FutureWarning: 437. is now emitted if a regular expression +*note FutureWarning: 317. is now emitted if a regular expression contains character set constructs that will change semantically in the future, such as nested sets and set operations. (Contributed by Serhiy Storchaka in bpo-30349(4).) Compiled regular expression and match objects can now be copied using -*note copy.copy(): 4d4. and *note copy.deepcopy(): 4d5. (Contributed by +*note copy.copy(): 3bc. and *note copy.deepcopy(): 3bd. (Contributed by Serhiy Storchaka in bpo-10076(5).) ---------- Footnotes ---------- @@ -14889,13 +12310,13 @@ Serhiy Storchaka in bpo-10076(5).) (5) https://bugs.python.org/issue10076  -File: python.info, Node: signal<2>, Next: socket<3>, Prev: re, Up: Improved Modules<3> +File: python.info, Node: signal, Next: socket<2>, Prev: re, Up: Improved Modules<2> -1.3.5.40 signal +1.2.5.40 signal ............... The new `warn_on_full_buffer' argument to the *note -signal.set_wakeup_fd(): 4d7. function makes it possible to specify +signal.set_wakeup_fd(): 3bf. function makes it possible to specify whether Python prints a warning on stderr when the wakeup buffer overflows. (Contributed by Nathaniel J. Smith in bpo-30050(1).) @@ -14904,26 +12325,26 @@ overflows. (Contributed by Nathaniel J. Smith in bpo-30050(1).) (1) https://bugs.python.org/issue30050  -File: python.info, Node: socket<3>, Next: socketserver, Prev: signal<2>, Up: Improved Modules<3> +File: python.info, Node: socket<2>, Next: socketserver, Prev: signal, Up: Improved Modules<2> -1.3.5.41 socket +1.2.5.41 socket ............... -The new *note socket.getblocking(): 4d9. method returns ‘True’ if the +The new *note socket.getblocking(): 3c1. method returns ‘True’ if the socket is in blocking mode and ‘False’ otherwise. (Contributed by Yury Selivanov in bpo-32373(1).) -The new *note socket.close(): 4da. function closes the passed socket +The new *note socket.close(): 3c2. function closes the passed socket file descriptor. This function should be used instead of *note -os.close(): 4db. for better compatibility across platforms. +os.close(): 3c3. for better compatibility across platforms. (Contributed by Christian Heimes in bpo-32454(2).) -The *note socket: ef. module now exposes the ‘socket.TCP_CONGESTION’ +The *note socket: f0. module now exposes the ‘socket.TCP_CONGESTION’ (Linux 2.6.13), ‘socket.TCP_USER_TIMEOUT’ (Linux 2.6.37), and ‘socket.TCP_NOTSENT_LOWAT’ (Linux 3.12) constants. (Contributed by Omar Sandoval in bpo-26273(3) and Nathaniel J. Smith in bpo-29728(4).) -Support for *note socket.AF_VSOCK: 4dc. sockets has been added to allow +Support for *note socket.AF_VSOCK: 3c4. sockets has been added to allow communication between virtual machines and their hosts. (Contributed by Cathy Avery in bpo-27584(5).) @@ -14945,9 +12366,9 @@ by default. (Contributed by Christian Heimes in bpo-28134(6).) (6) https://bugs.python.org/issue28134  -File: python.info, Node: socketserver, Next: sqlite3, Prev: socket<3>, Up: Improved Modules<3> +File: python.info, Node: socketserver, Next: sqlite3, Prev: socket<2>, Up: Improved Modules<2> -1.3.5.42 socketserver +1.2.5.42 socketserver ..................... ‘socketserver.ThreadingMixIn.server_close()’ now waits until all @@ -14955,22 +12376,22 @@ non-daemon threads complete. ‘socketserver.ForkingMixIn.server_close()’ now waits until all child processes complete. Add a new ‘socketserver.ForkingMixIn.block_on_close’ class attribute to -*note socketserver.ForkingMixIn: 4de. and *note -socketserver.ThreadingMixIn: 4df. classes. Set the class attribute to +*note socketserver.ForkingMixIn: 3c6. and *note +socketserver.ThreadingMixIn: 3c7. classes. Set the class attribute to ‘False’ to get the pre-3.7 behaviour.  -File: python.info, Node: sqlite3, Next: ssl<2>, Prev: socketserver, Up: Improved Modules<3> +File: python.info, Node: sqlite3, Next: ssl<2>, Prev: socketserver, Up: Improved Modules<2> -1.3.5.43 sqlite3 +1.2.5.43 sqlite3 ................ -*note sqlite3.Connection: 4e1. now exposes the *note backup(): 4e2. +*note sqlite3.Connection: 3c9. now exposes the *note backup(): 3ca. method when the underlying SQLite library is at version 3.6.11 or higher. (Contributed by Lele Gaifax in bpo-27645(1).) -The `database' argument of *note sqlite3.connect(): 4e3. now accepts any -*note path-like object: 474, instead of just a string. (Contributed by +The `database' argument of *note sqlite3.connect(): 3cb. now accepts any +*note path-like object: 35b, instead of just a string. (Contributed by Anders Lorentsen in bpo-31843(2).) ---------- Footnotes ---------- @@ -14980,31 +12401,31 @@ Anders Lorentsen in bpo-31843(2).) (2) https://bugs.python.org/issue31843  -File: python.info, Node: ssl<2>, Next: string, Prev: sqlite3, Up: Improved Modules<3> +File: python.info, Node: ssl<2>, Next: string, Prev: sqlite3, Up: Improved Modules<2> -1.3.5.44 ssl +1.2.5.44 ssl ............ -The *note ssl: f3. module now uses OpenSSL’s builtin API instead of -*note match_hostname(): 4e5. to check a host name or an IP address. +The *note ssl: f4. module now uses OpenSSL’s builtin API instead of +*note match_hostname(): 3cd. to check a host name or an IP address. Values are validated during TLS handshake. Any certificate validation error including failing the host name check now raises *note -SSLCertVerificationError: 4e6. and aborts the handshake with a proper +SSLCertVerificationError: 3ce. and aborts the handshake with a proper TLS Alert message. The new exception contains additional information. Host name validation can be customized with *note -SSLContext.hostname_checks_common_name: 4e7. (Contributed by Christian +SSLContext.hostname_checks_common_name: 3cf. (Contributed by Christian Heimes in bpo-31399(1).) Note: The improved host name check requires a `libssl' implementation compatible with OpenSSL 1.0.2 or 1.1. Consequently, OpenSSL 0.9.8 and 1.0.1 are no longer supported (see *note Platform - Support Removals: 4e8. for more details). The ssl module is mostly + Support Removals: 3d0. for more details). The ssl module is mostly compatible with LibreSSL 2.7.2 and newer. The ‘ssl’ module no longer sends IP addresses in SNI TLS extension. (Contributed by Christian Heimes in bpo-32185(2).) -*note match_hostname(): 4e5. no longer supports partial wildcards like +*note match_hostname(): 3cd. no longer supports partial wildcards like ‘www*.example.org’. (Contributed by Mandeep Singh in bpo-23033(3) and Christian Heimes in bpo-31399(4).) @@ -15016,7 +12437,7 @@ Default cipher suite selection can be configured at compile time. Validation of server certificates containing internationalized domain names (IDNs) is now supported. As part of this change, the *note -SSLSocket.server_hostname: 4e9. attribute now stores the expected +SSLSocket.server_hostname: 3d1. attribute now stores the expected hostname in A-label form (‘"xn--pythn-mua.org"’), rather than the U-label form (‘"pythön.org"’). (Contributed by Nathaniel J. Smith and Christian Heimes in bpo-28414(6).) @@ -15025,20 +12446,20 @@ The ‘ssl’ module has preliminary and experimental support for TLS 1.3 and OpenSSL 1.1.1. At the time of Python 3.7.0 release, OpenSSL 1.1.1 is still under development and TLS 1.3 hasn’t been finalized yet. The TLS 1.3 handshake and protocol behaves slightly differently than TLS 1.2 -and earlier, see *note TLS 1.3: 4ea. (Contributed by Christian Heimes +and earlier, see *note TLS 1.3: 3d2. (Contributed by Christian Heimes in bpo-32947(7), bpo-20995(8), bpo-29136(9), bpo-30622(10) and bpo-33618(11)) -*note SSLSocket: 192. and *note SSLObject: 4eb. no longer have a public +*note SSLSocket: 3d3. and *note SSLObject: 3d4. no longer have a public constructor. Direct instantiation was never a documented and supported -feature. Instances must be created with *note SSLContext: 4ec. methods -*note wrap_socket(): 4ed. and *note wrap_bio(): 4ee. (Contributed by +feature. Instances must be created with *note SSLContext: 3d5. methods +*note wrap_socket(): 3d6. and *note wrap_bio(): 3d7. (Contributed by Christian Heimes in bpo-32951(12)) OpenSSL 1.1 APIs for setting the minimum and maximum TLS protocol -version are available as *note SSLContext.minimum_version: 4ef. and -*note SSLContext.maximum_version: 4f0. Supported protocols are -indicated by several new flags, such as *note HAS_TLSv1_1: 4f1. +version are available as *note SSLContext.minimum_version: 3d8. and +*note SSLContext.maximum_version: 3d9. Supported protocols are +indicated by several new flags, such as *note HAS_TLSv1_1: 3da. (Contributed by Christian Heimes in bpo-32609(13).) ---------- Footnotes ---------- @@ -15070,12 +12491,12 @@ indicated by several new flags, such as *note HAS_TLSv1_1: 4f1. (13) https://bugs.python.org/issue32609  -File: python.info, Node: string, Next: subprocess, Prev: ssl<2>, Up: Improved Modules<3> +File: python.info, Node: string, Next: subprocess, Prev: ssl<2>, Up: Improved Modules<2> -1.3.5.45 string +1.2.5.45 string ............... -*note string.Template: 4f3. now lets you to optionally modify the +*note string.Template: 3dc. now lets you to optionally modify the regular expression pattern for braced placeholders and non-braced placeholders separately. (Contributed by Barry Warsaw in bpo-1198569(1).) @@ -15085,31 +12506,31 @@ bpo-1198569(1).) (1) https://bugs.python.org/issue1198569  -File: python.info, Node: subprocess, Next: sys<3>, Prev: string, Up: Improved Modules<3> +File: python.info, Node: subprocess, Next: sys<2>, Prev: string, Up: Improved Modules<2> -1.3.5.46 subprocess +1.2.5.46 subprocess ................... -The *note subprocess.run(): 4f5. function accepts the new +The *note subprocess.run(): 3de. function accepts the new `capture_output' keyword argument. When true, stdout and stderr will be -captured. This is equivalent to passing *note subprocess.PIPE: 4f6. as +captured. This is equivalent to passing *note subprocess.PIPE: 3df. as `stdout' and `stderr' arguments. (Contributed by Bo Bayles in bpo-32102(1).) -The ‘subprocess.run’ function and the *note subprocess.Popen: 3de. +The ‘subprocess.run’ function and the *note subprocess.Popen: 2a4. constructor now accept the `text' keyword argument as an alias to `universal_newlines'. (Contributed by Andrew Clegg in bpo-31756(2).) On Windows the default for `close_fds' was changed from ‘False’ to ‘True’ when redirecting the standard handles. It’s now possible to set `close_fds' to true when redirecting the standard handles. See *note -subprocess.Popen: 3de. This means that `close_fds' now defaults to +subprocess.Popen: 2a4. This means that `close_fds' now defaults to ‘True’ on all supported platforms. (Contributed by Segev Finer in bpo-19764(3).) The subprocess module is now more graceful when handling *note -KeyboardInterrupt: 2cf. during *note subprocess.call(): 4f7, *note -subprocess.run(): 4f5, or in a *note Popen: 3de. context manager. It +KeyboardInterrupt: 184. during *note subprocess.call(): 3e0, *note +subprocess.run(): 3de, or in a *note Popen: 2a4. context manager. It now waits a short amount of time for the child to exit, before continuing the handling of the ‘KeyboardInterrupt’ exception. (Contributed by Gregory P. Smith in bpo-25942(4).) @@ -15125,22 +12546,22 @@ continuing the handling of the ‘KeyboardInterrupt’ exception. (4) https://bugs.python.org/issue25942  -File: python.info, Node: sys<3>, Next: time<3>, Prev: subprocess, Up: Improved Modules<3> +File: python.info, Node: sys<2>, Next: time<2>, Prev: subprocess, Up: Improved Modules<2> -1.3.5.47 sys +1.2.5.47 sys ............ -The new *note sys.breakpointhook(): 425. hook function is called by the -built-in *note breakpoint(): 40d. (Contributed by Barry Warsaw in +The new *note sys.breakpointhook(): 307. hook function is called by the +built-in *note breakpoint(): 2ed. (Contributed by Barry Warsaw in bpo-31353(1).) -On Android, the new *note sys.getandroidapilevel(): 4f9. returns the +On Android, the new *note sys.getandroidapilevel(): 3e2. returns the build-time Android API version. (Contributed by Victor Stinner in bpo-28740(2).) -The new *note sys.get_coroutine_origin_tracking_depth(): 4fa. function +The new *note sys.get_coroutine_origin_tracking_depth(): 3e3. function returns the current coroutine origin tracking depth, as set by the new -*note sys.set_coroutine_origin_tracking_depth(): 4fb. *note asyncio: 9. +*note sys.set_coroutine_origin_tracking_depth(): 3e4. *note asyncio: a. has been converted to use this new API instead of the deprecated ‘sys.set_coroutine_wrapper()’. (Contributed by Nathaniel J. Smith in bpo-32591(3).) @@ -15154,44 +12575,44 @@ bpo-32591(3).) (3) https://bugs.python.org/issue32591  -File: python.info, Node: time<3>, Next: tkinter<2>, Prev: sys<3>, Up: Improved Modules<3> +File: python.info, Node: time<2>, Next: tkinter<2>, Prev: sys<2>, Up: Improved Modules<2> -1.3.5.48 time +1.2.5.48 time ............. PEP 564(1) adds six new functions with nanosecond resolution to the -*note time: 10c. module: +*note time: 10b. module: - * *note time.clock_gettime_ns(): 430. + * *note time.clock_gettime_ns(): 310. - * *note time.clock_settime_ns(): 431. + * *note time.clock_settime_ns(): 311. - * *note time.monotonic_ns(): 432. + * *note time.monotonic_ns(): 312. - * *note time.perf_counter_ns(): 433. + * *note time.perf_counter_ns(): 313. - * *note time.process_time_ns(): 434. + * *note time.process_time_ns(): 314. - * *note time.time_ns(): 435. + * *note time.time_ns(): 315. New clock identifiers have been added: - * *note time.CLOCK_BOOTTIME: 4fd. (Linux): Identical to *note - time.CLOCK_MONOTONIC: 4fe, except it also includes any time that + * *note time.CLOCK_BOOTTIME: 3e6. (Linux): Identical to *note + time.CLOCK_MONOTONIC: 3e7, except it also includes any time that the system is suspended. - * *note time.CLOCK_PROF: 4ff. (FreeBSD, NetBSD and OpenBSD): + * *note time.CLOCK_PROF: 3e8. (FreeBSD, NetBSD and OpenBSD): High-resolution per-process CPU timer. - * *note time.CLOCK_UPTIME: 500. (FreeBSD, OpenBSD): Time whose + * *note time.CLOCK_UPTIME: 3e9. (FreeBSD, OpenBSD): Time whose absolute value is the time the system has been running and not suspended, providing accurate uptime measurement. -The new *note time.thread_time(): 1e7. and *note time.thread_time_ns(): -501. functions can be used to get per-thread CPU time measurements. +The new *note time.thread_time(): 3ea. and *note time.thread_time_ns(): +3eb. functions can be used to get per-thread CPU time measurements. (Contributed by Antoine Pitrou in bpo-32025(2).) -The new *note time.pthread_getcpuclockid(): 502. function returns the +The new *note time.pthread_getcpuclockid(): 3ec. function returns the clock ID of the thread-specific CPU-time clock. ---------- Footnotes ---------- @@ -15201,12 +12622,12 @@ clock ID of the thread-specific CPU-time clock. (2) https://bugs.python.org/issue32025  -File: python.info, Node: tkinter<2>, Next: tracemalloc<2>, Prev: time<3>, Up: Improved Modules<3> +File: python.info, Node: tkinter<2>, Next: tracemalloc, Prev: time<2>, Up: Improved Modules<2> -1.3.5.49 tkinter +1.2.5.49 tkinter ................ -The new *note tkinter.ttk.Spinbox: 504. class is now available. +The new *note tkinter.ttk.Spinbox: 3ee. class is now available. (Contributed by Alan Moore in bpo-32585(1).) ---------- Footnotes ---------- @@ -15214,14 +12635,14 @@ The new *note tkinter.ttk.Spinbox: 504. class is now available. (1) https://bugs.python.org/issue32585  -File: python.info, Node: tracemalloc<2>, Next: types, Prev: tkinter<2>, Up: Improved Modules<3> +File: python.info, Node: tracemalloc, Next: types, Prev: tkinter<2>, Up: Improved Modules<2> -1.3.5.50 tracemalloc +1.2.5.50 tracemalloc .................... -*note tracemalloc.Traceback: 506. behaves more like regular tracebacks, +*note tracemalloc.Traceback: 3f0. behaves more like regular tracebacks, sorting the frames from oldest to most recent. *note -Traceback.format(): 507. now accepts negative `limit', truncating the +Traceback.format(): 3f1. now accepts negative `limit', truncating the result to the ‘abs(limit)’ oldest frames. To get the old behaviour, use the new `most_recent_first' argument to ‘Traceback.format()’. (Contributed by Jesse Bakker in bpo-32121(1).) @@ -15231,17 +12652,17 @@ the new `most_recent_first' argument to ‘Traceback.format()’. (1) https://bugs.python.org/issue32121  -File: python.info, Node: types, Next: unicodedata<3>, Prev: tracemalloc<2>, Up: Improved Modules<3> +File: python.info, Node: types, Next: unicodedata<2>, Prev: tracemalloc, Up: Improved Modules<2> -1.3.5.51 types +1.2.5.51 types .............. -The new *note WrapperDescriptorType: 509, *note MethodWrapperType: 50a, -*note MethodDescriptorType: 50b, and *note ClassMethodDescriptorType: -50c. classes are now available. (Contributed by Manuel Krebber and +The new *note WrapperDescriptorType: 3f3, *note MethodWrapperType: 3f4, +*note MethodDescriptorType: 3f5, and *note ClassMethodDescriptorType: +3f6. classes are now available. (Contributed by Manuel Krebber and Guido van Rossum in bpo-29377(1), and Serhiy Storchaka in bpo-32265(2).) -The new *note types.resolve_bases(): 50d. function resolves MRO entries +The new *note types.resolve_bases(): 3f7. function resolves MRO entries dynamically as specified by PEP 560(3). (Contributed by Ivan Levkivskyi in bpo-32717(4).) @@ -15256,12 +12677,12 @@ in bpo-32717(4).) (4) https://bugs.python.org/issue32717  -File: python.info, Node: unicodedata<3>, Next: unittest<2>, Prev: types, Up: Improved Modules<3> +File: python.info, Node: unicodedata<2>, Next: unittest<2>, Prev: types, Up: Improved Modules<2> -1.3.5.52 unicodedata +1.2.5.52 unicodedata .................... -The internal *note unicodedata: 123. database has been upgraded to use +The internal *note unicodedata: 11b. database has been upgraded to use Unicode 11(1). (Contributed by Benjamin Peterson.) ---------- Footnotes ---------- @@ -15269,9 +12690,9 @@ Unicode 11(1). (Contributed by Benjamin Peterson.) (1) http://www.unicode.org/versions/Unicode11.0.0/  -File: python.info, Node: unittest<2>, Next: unittest mock, Prev: unicodedata<3>, Up: Improved Modules<3> +File: python.info, Node: unittest<2>, Next: unittest mock, Prev: unicodedata<2>, Up: Improved Modules<2> -1.3.5.53 unittest +1.2.5.53 unittest ................. The new ‘-k’ command-line option allows filtering tests by a name @@ -15286,16 +12707,16 @@ bpo-32071(1).) (1) https://bugs.python.org/issue32071  -File: python.info, Node: unittest mock, Next: urllib parse<3>, Prev: unittest<2>, Up: Improved Modules<3> +File: python.info, Node: unittest mock, Next: urllib parse<2>, Prev: unittest<2>, Up: Improved Modules<2> -1.3.5.54 unittest.mock +1.2.5.54 unittest.mock ...................... -The *note sentinel: 511. attributes now preserve their identity when -they are *note copied: 25. or *note pickled: ca. (Contributed by Serhiy +The *note sentinel: 3fb. attributes now preserve their identity when +they are *note copied: 26. or *note pickled: cb. (Contributed by Serhiy Storchaka in bpo-20804(1).) -The new *note seal(): 512. function allows sealing *note Mock: 376. +The new *note seal(): 3fc. function allows sealing *note Mock: 235. instances, which will disallow further creation of attribute mocks. The seal is applied recursively to all attributes that are themselves mocks. (Contributed by Mario Corchero in bpo-30541(2).) @@ -15307,12 +12728,12 @@ seal is applied recursively to all attributes that are themselves mocks. (2) https://bugs.python.org/issue30541  -File: python.info, Node: urllib parse<3>, Next: uu, Prev: unittest mock, Up: Improved Modules<3> +File: python.info, Node: urllib parse<2>, Next: uu, Prev: unittest mock, Up: Improved Modules<2> -1.3.5.55 urllib.parse +1.2.5.55 urllib.parse ..................... -*note urllib.parse.quote(): 514. has been updated from RFC 2396(1) to +*note urllib.parse.quote(): 3fe. has been updated from RFC 2396(1) to RFC 3986(2), adding ‘~’ to the set of characters that are never quoted by default. (Contributed by Christian Theune and Ratnadeep Debnath in bpo-16285(3).) @@ -15326,12 +12747,12 @@ bpo-16285(3).) (3) https://bugs.python.org/issue16285  -File: python.info, Node: uu, Next: uuid, Prev: urllib parse<3>, Up: Improved Modules<3> +File: python.info, Node: uu, Next: uuid, Prev: urllib parse<2>, Up: Improved Modules<2> -1.3.5.56 uu +1.2.5.56 uu ........... -The *note uu.encode(): 516. function now accepts an optional `backtick' +The *note uu.encode(): 400. function now accepts an optional `backtick' keyword argument. When it’s true, zeros are represented by ‘'`'’ instead of spaces. (Contributed by Xiang Zhang in bpo-30103(1).) @@ -15340,20 +12761,20 @@ instead of spaces. (Contributed by Xiang Zhang in bpo-30103(1).) (1) https://bugs.python.org/issue30103  -File: python.info, Node: uuid, Next: warnings, Prev: uu, Up: Improved Modules<3> +File: python.info, Node: uuid, Next: warnings, Prev: uu, Up: Improved Modules<2> -1.3.5.57 uuid +1.2.5.57 uuid ............. -The new *note UUID.is_safe: 518. attribute relays information from the +The new *note UUID.is_safe: 402. attribute relays information from the platform about whether generated UUIDs are generated with a multiprocessing-safe method. (Contributed by Barry Warsaw in bpo-22807(1).) -*note uuid.getnode(): 519. now prefers universally administered MAC +*note uuid.getnode(): 403. now prefers universally administered MAC addresses over locally administered MAC addresses. This makes a better guarantee for global uniqueness of UUIDs returned from *note -uuid.uuid1(): 51a. If only locally administered MAC addresses are +uuid.uuid1(): 404. If only locally administered MAC addresses are available, the first such one found is returned. (Contributed by Barry Warsaw in bpo-32107(2).) @@ -15364,27 +12785,27 @@ Warsaw in bpo-32107(2).) (2) https://bugs.python.org/issue32107  -File: python.info, Node: warnings, Next: xml etree, Prev: uuid, Up: Improved Modules<3> +File: python.info, Node: warnings, Next: xml etree, Prev: uuid, Up: Improved Modules<2> -1.3.5.58 warnings +1.2.5.58 warnings ................. The initialization of the default warnings filters has changed as follows: * warnings enabled via command line options (including those for - *note -b: 51c. and the new CPython-specific *note -X: 293. ‘dev’ + *note -b: 406. and the new CPython-specific *note -X: 156. ‘dev’ option) are always passed to the warnings machinery via the *note - sys.warnoptions: 51d. attribute. + sys.warnoptions: 407. attribute. * warnings filters enabled via the command line or the environment now have the following order of precedence: - * the ‘BytesWarning’ filter for *note -b: 51c. (or ‘-bb’) + * the ‘BytesWarning’ filter for *note -b: 406. (or ‘-bb’) - * any filters specified with the *note -W: 15b. option + * any filters specified with the *note -W: 408. option - * any filters specified with the *note PYTHONWARNINGS: 51e. + * any filters specified with the *note PYTHONWARNINGS: 409. environment variable * any other CPython specific filters (e.g. the ‘default’ @@ -15401,7 +12822,7 @@ bpo-32043(2), and bpo-32230(3).) Deprecation warnings are once again shown by default in single-file scripts and at the interactive prompt. See *note PEP 565; Show -DeprecationWarning in __main__: 417. for details. (Contributed by Nick +DeprecationWarning in __main__: 2f7. for details. (Contributed by Nick Coghlan in bpo-31975(4).) ---------- Footnotes ---------- @@ -15415,12 +12836,12 @@ Coghlan in bpo-31975(4).) (4) https://bugs.python.org/issue31975  -File: python.info, Node: xml etree, Next: xmlrpc server, Prev: warnings, Up: Improved Modules<3> +File: python.info, Node: xml etree, Next: xmlrpc server, Prev: warnings, Up: Improved Modules<2> -1.3.5.59 xml.etree +1.2.5.59 xml.etree .................. -*note ElementPath: 520. predicates in the ‘find()’ methods can now +*note ElementPath: 40b. predicates in the ‘find()’ methods can now compare text of the current node with ‘[. = "text"]’, not only text in children. Predicates also allow adding spaces for better readability. (Contributed by Stefan Behnel in bpo-31648(1).) @@ -15430,9 +12851,9 @@ children. Predicates also allow adding spaces for better readability. (1) https://bugs.python.org/issue31648  -File: python.info, Node: xmlrpc server, Next: zipapp, Prev: xml etree, Up: Improved Modules<3> +File: python.info, Node: xmlrpc server, Next: zipapp, Prev: xml etree, Up: Improved Modules<2> -1.3.5.60 xmlrpc.server +1.2.5.60 xmlrpc.server ...................... ‘SimpleXMLRPCDispatcher.register_function’ can now be used as a @@ -15443,16 +12864,16 @@ decorator. (Contributed by Xiang Zhang in bpo-7769(1).) (1) https://bugs.python.org/issue7769  -File: python.info, Node: zipapp, Next: zipfile, Prev: xmlrpc server, Up: Improved Modules<3> +File: python.info, Node: zipapp, Next: zipfile, Prev: xmlrpc server, Up: Improved Modules<2> -1.3.5.61 zipapp +1.2.5.61 zipapp ............... -Function *note create_archive(): 523. now accepts an optional `filter' +Function *note create_archive(): 40e. now accepts an optional `filter' argument to allow the user to select which files should be included in the archive. (Contributed by Irmen de Jong in bpo-31072(1).) -Function *note create_archive(): 523. now accepts an optional +Function *note create_archive(): 40e. now accepts an optional `compressed' argument to generate a compressed archive. A command line option ‘--compress’ has also been added to support compression. (Contributed by Zhiming Wang in bpo-31638(2).) @@ -15464,12 +12885,12 @@ option ‘--compress’ has also been added to support compression. (2) https://bugs.python.org/issue31638  -File: python.info, Node: zipfile, Prev: zipapp, Up: Improved Modules<3> +File: python.info, Node: zipfile, Prev: zipapp, Up: Improved Modules<2> -1.3.5.62 zipfile +1.2.5.62 zipfile ................ -*note ZipFile: 525. now accepts the new `compresslevel' parameter to +*note ZipFile: 410. now accepts the new `compresslevel' parameter to control the compression level. (Contributed by Bo Bayles in bpo-21417(1).) @@ -15484,58 +12905,58 @@ bpo-30693(2).) (2) https://bugs.python.org/issue30693  -File: python.info, Node: C API Changes<2>, Next: Build Changes<2>, Prev: Improved Modules<3>, Up: What’s New In Python 3 7 +File: python.info, Node: C API Changes, Next: Build Changes, Prev: Improved Modules<2>, Up: What’s New In Python 3 7 -1.3.6 C API Changes +1.2.6 C API Changes ------------------- A new API for thread-local storage has been implemented. See *note PEP -539; New C API for Thread-Local Storage: 418. for an overview and *note -Thread Specific Storage (TSS) API: 429. for a complete reference. +539; New C API for Thread-Local Storage: 2f8. for an overview and *note +Thread Specific Storage (TSS) API: 30b. for a complete reference. (Contributed by Masayuki Yamamoto in bpo-25658(1).) -The new *note context variables: 409. functionality exposes a number of -*note new C APIs: 449. +The new *note context variables: 2e9. functionality exposes a number of +*note new C APIs: 32c. -The new *note PyImport_GetModule(): 527. function returns the previously +The new *note PyImport_GetModule(): 412. function returns the previously imported module with the given name. (Contributed by Eric Snow in bpo-28411(2).) -The new *note Py_RETURN_RICHCOMPARE: 528. macro eases writing rich -comparison functions. (Contributed by Petr Victorin in bpo-23699(3).) +The new ‘Py_RETURN_RICHCOMPARE’ macro eases writing rich comparison +functions. (Contributed by Petr Victorin in bpo-23699(3).) -The new *note Py_UNREACHABLE: 529. macro can be used to mark unreachable +The new *note Py_UNREACHABLE: 413. macro can be used to mark unreachable code paths. (Contributed by Barry Warsaw in bpo-31338(4).) -The *note tracemalloc: 11d. now exposes a C API through the new *note -PyTraceMalloc_Track(): 52a. and *note PyTraceMalloc_Untrack(): 52b. +The *note tracemalloc: 115. now exposes a C API through the new *note +PyTraceMalloc_Track(): 414. and *note PyTraceMalloc_Untrack(): 415. functions. (Contributed by Victor Stinner in bpo-30054(5).) The new ‘import__find__load__start()’ and ‘import__find__load__done()’ static markers can be used to trace module imports. (Contributed by Christian Heimes in bpo-31574(6).) -The fields ‘name’ and ‘doc’ of structures *note PyMemberDef: 52c, *note -PyGetSetDef: 52d, *note PyStructSequence_Field: 52e, *note -PyStructSequence_Desc: 52f, and ‘wrapperbase’ are now of type ‘const +The fields ‘name’ and ‘doc’ of structures *note PyMemberDef: 416, *note +PyGetSetDef: 417, *note PyStructSequence_Field: 418, *note +PyStructSequence_Desc: 419, and ‘wrapperbase’ are now of type ‘const char *’ rather of ‘char *’. (Contributed by Serhiy Storchaka in bpo-28761(7).) -The result of *note PyUnicode_AsUTF8AndSize(): 530. and *note -PyUnicode_AsUTF8(): 531. is now of type ‘const char *’ rather of ‘char +The result of *note PyUnicode_AsUTF8AndSize(): 41a. and *note +PyUnicode_AsUTF8(): 41b. is now of type ‘const char *’ rather of ‘char *’. (Contributed by Serhiy Storchaka in bpo-28769(8).) -The result of *note PyMapping_Keys(): 532, *note PyMapping_Values(): -533. and *note PyMapping_Items(): 534. is now always a list, rather than +The result of *note PyMapping_Keys(): 41c, *note PyMapping_Values(): +41d. and *note PyMapping_Items(): 41e. is now always a list, rather than a list or a tuple. (Contributed by Oren Milman in bpo-28280(9).) -Added functions *note PySlice_Unpack(): 535. and *note -PySlice_AdjustIndices(): 536. (Contributed by Serhiy Storchaka in +Added functions *note PySlice_Unpack(): 41f. and *note +PySlice_AdjustIndices(): 420. (Contributed by Serhiy Storchaka in bpo-27867(10).) -*note PyOS_AfterFork(): 537. is deprecated in favour of the new -functions *note PyOS_BeforeFork(): 538, *note PyOS_AfterFork_Parent(): -539. and *note PyOS_AfterFork_Child(): 3f2. (Contributed by Antoine +*note PyOS_AfterFork(): 421. is deprecated in favour of the new +functions *note PyOS_BeforeFork(): 422, *note PyOS_AfterFork_Parent(): +423. and *note PyOS_AfterFork_Child(): 2b8. (Contributed by Antoine Pitrou in bpo-16500(11).) The ‘PyExc_RecursionErrorInst’ singleton that was part of the public API @@ -15544,40 +12965,40 @@ during finalization of the interpreter. Contributed by Xavier de Gaye in bpo-22898(12) and bpo-30697(13). Added C API support for timezones with timezone constructors *note -PyTimeZone_FromOffset(): 53a. and *note PyTimeZone_FromOffsetAndName(): -53b, and access to the UTC singleton with *note PyDateTime_TimeZone_UTC: -53c. Contributed by Paul Ganssle in bpo-10381(14). +PyTimeZone_FromOffset(): 424. and *note PyTimeZone_FromOffsetAndName(): +425, and access to the UTC singleton with *note PyDateTime_TimeZone_UTC: +426. Contributed by Paul Ganssle in bpo-10381(14). The type of results of ‘PyThread_start_new_thread()’ and ‘PyThread_get_thread_ident()’, and the `id' parameter of *note -PyThreadState_SetAsyncExc(): 53d. changed from ‘long’ to ‘unsigned -long’. (Contributed by Serhiy Storchaka in bpo-6532(15).) +PyThreadState_SetAsyncExc(): 427. changed from long to unsigned long. +(Contributed by Serhiy Storchaka in bpo-6532(15).) -*note PyUnicode_AsWideCharString(): 53e. now raises a *note ValueError: -16d. if the second argument is ‘NULL’ and the ‘wchar_t*’ string contains +*note PyUnicode_AsWideCharString(): 428. now raises a *note ValueError: +1e7. if the second argument is ‘NULL’ and the wchar_t* string contains null characters. (Contributed by Serhiy Storchaka in bpo-30708(16).) Changes to the startup sequence and the management of dynamic memory allocators mean that the long documented requirement to call *note -Py_Initialize(): 20f. before calling most C API functions is now relied +Py_Initialize(): 429. before calling most C API functions is now relied on more heavily, and failing to abide by it may lead to segfaults in -embedding applications. See the *note Porting to Python 3.7: 41b. +embedding applications. See the *note Porting to Python 3.7: 2fb. section in this document and the *note Before Python Initialization: -53f. section in the C API documentation for more details. +42a. section in the C API documentation for more details. -The new *note PyInterpreterState_GetID(): 540. returns the unique ID for +The new *note PyInterpreterState_GetID(): 42b. returns the unique ID for a given interpreter. (Contributed by Eric Snow in bpo-29102(17).) -*note Py_DecodeLocale(): 541, *note Py_EncodeLocale(): 542. now use the -UTF-8 encoding when the *note UTF-8 mode: 414. is enabled. (Contributed +*note Py_DecodeLocale(): 42c, *note Py_EncodeLocale(): 42d. now use the +UTF-8 encoding when the *note UTF-8 mode: 2f4. is enabled. (Contributed by Victor Stinner in bpo-29240(18).) -*note PyUnicode_DecodeLocaleAndSize(): 543. and *note -PyUnicode_EncodeLocale(): 544. now use the current locale encoding for +*note PyUnicode_DecodeLocaleAndSize(): 42e. and *note +PyUnicode_EncodeLocale(): 42f. now use the current locale encoding for ‘surrogateescape’ error handler. (Contributed by Victor Stinner in bpo-29240(19).) -The `start' and `end' parameters of *note PyUnicode_FindChar(): 545. are +The `start' and `end' parameters of *note PyUnicode_FindChar(): 430. are now adjusted to behave like string slices. (Contributed by Xiang Zhang in bpo-28822(20).) @@ -15624,17 +13045,17 @@ in bpo-28822(20).) (20) https://bugs.python.org/issue28822  -File: python.info, Node: Build Changes<2>, Next: Optimizations<3>, Prev: C API Changes<2>, Up: What’s New In Python 3 7 +File: python.info, Node: Build Changes, Next: Optimizations<2>, Prev: C API Changes, Up: What’s New In Python 3 7 -1.3.7 Build Changes +1.2.7 Build Changes ------------------- Support for building ‘--without-threads’ has been removed. The *note -threading: 10b. module is now always available. (Contributed by Antoine +threading: 10a. module is now always available. (Contributed by Antoine Pitrou in bpo-31370(1).). A full copy of libffi is no longer bundled for use when building the -*note _ctypes: 2a. module on non-OSX UNIX platforms. An installed copy +*note _ctypes: 2b. module on non-OSX UNIX platforms. An installed copy of libffi is now required when building ‘_ctypes’ on such platforms. (Contributed by Zachary Ware in bpo-27979(2).) @@ -15644,7 +13065,7 @@ GitHub instead. If Python 3.6 is not found on the system (via ‘py -3.6’), NuGet is used to download a copy of 32-bit Python for this purpose. (Contributed by Zachary Ware in bpo-30450(3).) -The *note ssl: f3. module requires OpenSSL 1.0.2 or 1.1 compatible +The *note ssl: f4. module requires OpenSSL 1.0.2 or 1.1 compatible libssl. OpenSSL 1.0.1 has reached end of lifetime on 2016-12-31 and is no longer supported. LibreSSL is temporarily not supported as well. LibreSSL releases up to version 2.6.4 are missing required OpenSSL 1.0.2 @@ -15659,9 +13080,9 @@ APIs. (3) https://bugs.python.org/issue30450  -File: python.info, Node: Optimizations<3>, Next: Other CPython Implementation Changes, Prev: Build Changes<2>, Up: What’s New In Python 3 7 +File: python.info, Node: Optimizations<2>, Next: Other CPython Implementation Changes, Prev: Build Changes, Up: What’s New In Python 3 7 -1.3.8 Optimizations +1.2.8 Optimizations ------------------- The overhead of calling many methods of various standard library classes @@ -15675,40 +13096,40 @@ bpo-29585(5), and Ivan Levkivskyi in bpo-31333(6).) Method calls are now up to 20% faster due to the bytecode changes which avoid creating bound method instances. (Contributed by Yury Selivanov -and INADA Naoki in bpo-26110(7).) The *note asyncio: 9. module received +and INADA Naoki in bpo-26110(7).) The *note asyncio: a. module received a number of notable optimizations for commonly used functions: - * The *note asyncio.get_event_loop(): 45f. function has been + * The *note asyncio.get_event_loop(): 346. function has been reimplemented in C to make it up to 15 times faster. (Contributed by Yury Selivanov in bpo-32296(8).) - * *note asyncio.Future: 548. callback management has been optimized. + * *note asyncio.Future: 433. callback management has been optimized. (Contributed by Yury Selivanov in bpo-32348(9).) - * *note asyncio.gather(): 3ae. is now up to 15% faster. (Contributed + * *note asyncio.gather(): 271. is now up to 15% faster. (Contributed by Yury Selivanov in bpo-32355(10).) - * *note asyncio.sleep(): 3ad. is now up to 2 times faster when the + * *note asyncio.sleep(): 270. is now up to 2 times faster when the `delay' argument is zero or negative. (Contributed by Andrew Svetlov in bpo-32351(11).) * The performance overhead of asyncio debug mode has been reduced. (Contributed by Antoine Pitrou in bpo-31970(12).) -As a result of *note PEP 560 work: 40f, the import time of *note typing: -122. has been reduced by a factor of 7, and many typing operations are +As a result of *note PEP 560 work: 2ef, the import time of *note typing: +11a. has been reduced by a factor of 7, and many typing operations are now faster. (Contributed by Ivan Levkivskyi in bpo-32226(13).) -*note sorted(): 549. and *note list.sort(): 54a. have been optimized for +*note sorted(): 434. and *note list.sort(): 435. have been optimized for common cases to be up to 40-75% faster. (Contributed by Elliot Gorokhovsky in bpo-28685(14).) -*note dict.copy(): 54b. is now up to 5.5 times faster. (Contributed by +*note dict.copy(): 436. is now up to 5.5 times faster. (Contributed by Yury Selivanov in bpo-31179(15).) -*note hasattr(): 54c. and *note getattr(): 54d. are now about 4 times +*note hasattr(): 437. and *note getattr(): 438. are now about 4 times faster when `name' is not found and `obj' does not override *note -object.__getattr__(): 42c. or *note object.__getattribute__(): 54e. +object.__getattr__(): 439. or *note object.__getattribute__(): 43a. (Contributed by INADA Naoki in bpo-32544(16).) Searching for certain Unicode characters (like Ukrainian capital “Є”) in @@ -15716,7 +13137,7 @@ a string was up to 25 times slower than searching for other characters. It is now only 3 times slower in the worst case. (Contributed by Serhiy Storchaka in bpo-24821(17).) -The *note collections.namedtuple(): 1a1. factory has been reimplemented +The *note collections.namedtuple(): 1a3. factory has been reimplemented to make the creation of named tuples 4 to 6 times faster. (Contributed by Jelle Zijlstra with further improvements by INADA Naoki, Serhiy Storchaka, and Raymond Hettinger in bpo-28638(18).) @@ -15724,26 +13145,26 @@ Storchaka, and Raymond Hettinger in bpo-28638(18).) ‘date.fromordinal()’ and ‘date.fromtimestamp()’ are now up to 30% faster in the common case. (Contributed by Paul Ganssle in bpo-32403(19).) -The *note os.fwalk(): 4bd. function is now up to 2 times faster thanks -to the use of *note os.scandir(): 38c. (Contributed by Serhiy Storchaka +The *note os.fwalk(): 3a5. function is now up to 2 times faster thanks +to the use of *note os.scandir(): 24b. (Contributed by Serhiy Storchaka in bpo-25996(20).) -The speed of the *note shutil.rmtree(): 34c. function has been improved -by 20–40% thanks to the use of the *note os.scandir(): 38c. function. +The speed of the *note shutil.rmtree(): 208. function has been improved +by 20–40% thanks to the use of the *note os.scandir(): 24b. function. (Contributed by Serhiy Storchaka in bpo-28564(21).) Optimized case-insensitive matching and searching of *note regular -expressions: dd. Searching some patterns can now be up to 20 times +expressions: de. Searching some patterns can now be up to 20 times faster. (Contributed by Serhiy Storchaka in bpo-30285(22).) -*note re.compile(): 54f. now converts ‘flags’ parameter to int object if +*note re.compile(): 43b. now converts ‘flags’ parameter to int object if it is ‘RegexFlag’. It is now as fast as Python 3.5, and faster than Python 3.6 by about 10% depending on the pattern. (Contributed by INADA Naoki in bpo-31671(23).) -The *note modify(): 550. methods of classes *note -selectors.EpollSelector: 551, *note selectors.PollSelector: 552. and -*note selectors.DevpollSelector: 553. may be around 10% faster under +The *note modify(): 43c. methods of classes *note +selectors.EpollSelector: 43d, *note selectors.PollSelector: 43e. and +*note selectors.DevpollSelector: 43f. may be around 10% faster under heavy loads. (Contributed by Giampaolo Rodola’ in bpo-30014(24)) Constant folding has been moved from the peephole optimizer to the new @@ -15751,23 +13172,23 @@ AST optimizer, which is able perform optimizations more consistently. (Contributed by Eugene Toder and INADA Naoki in bpo-29469(25) and bpo-11549(26).) -Most functions and methods in *note abc: 3. have been rewritten in C. +Most functions and methods in *note abc: 4. have been rewritten in C. This makes creation of abstract base classes, and calling *note -isinstance(): 554. and *note issubclass(): 555. on them 1.5x faster. +isinstance(): 440. and *note issubclass(): 441. on them 1.5x faster. This also reduces Python start-up time by up to 10%. (Contributed by Ivan Levkivskyi and INADA Naoki in bpo-31333(27)) Significant speed improvements to alternate constructors for *note -datetime.date: 19e. and *note datetime.datetime: 1a0. by using fast-path +datetime.date: 180. and *note datetime.datetime: 181. by using fast-path constructors when not constructing subclasses. (Contributed by Paul Ganssle in bpo-32403(28)) -The speed of comparison of *note array.array: 216. instances has been +The speed of comparison of *note array.array: 442. instances has been improved considerably in certain cases. It is now from 10x to 70x faster when comparing arrays holding values of the same integer type. (Contributed by Adrian Wielgosik in bpo-24700(29).) -The *note math.erf(): 556. and *note math.erfc(): 557. functions now use +The *note math.erf(): 443. and *note math.erfc(): 444. functions now use the (faster) C library implementation on most platforms. (Contributed by Serhiy Storchaka in bpo-26121(30).) @@ -15834,9 +13255,9 @@ by Serhiy Storchaka in bpo-26121(30).) (30) https://bugs.python.org/issue26121  -File: python.info, Node: Other CPython Implementation Changes, Next: Deprecated Python Behavior, Prev: Optimizations<3>, Up: What’s New In Python 3 7 +File: python.info, Node: Other CPython Implementation Changes, Next: Deprecated Python Behavior, Prev: Optimizations<2>, Up: What’s New In Python 3 7 -1.3.9 Other CPython Implementation Changes +1.2.9 Other CPython Implementation Changes ------------------------------------------ * Trace hooks may now opt out of receiving the ‘line’ and opt into @@ -15853,11 +13274,11 @@ File: python.info, Node: Other CPython Implementation Changes, Next: Deprecate ‘__spec__.loader’ is set to the same value as ‘__loader__’ (previously, the former was set to ‘None’). See bpo-32303(3). - * The *note locals(): 559. dictionary now displays in the lexical + * The *note locals(): 446. dictionary now displays in the lexical order that variables were defined. Previously, the order was undefined. (Contributed by Raymond Hettinger in bpo-32690(4).) - * The *note distutils: 38. ‘upload’ command no longer tries to change + * The *note distutils: 39. ‘upload’ command no longer tries to change CR end-of-line characters to CRLF. This fixes a corruption issue with sdists that ended with a byte equivalent to CR. (Contributed by Bo Bayles in bpo-32304(5).) @@ -15877,24 +13298,24 @@ File: python.info, Node: Other CPython Implementation Changes, Next: Deprecate  File: python.info, Node: Deprecated Python Behavior, Next: Deprecated Python modules functions and methods, Prev: Other CPython Implementation Changes, Up: What’s New In Python 3 7 -1.3.10 Deprecated Python Behavior +1.2.10 Deprecated Python Behavior --------------------------------- Yield expressions (both ‘yield’ and ‘yield from’ clauses) are now deprecated in comprehensions and generator expressions (aside from the iterable expression in the leftmost ‘for’ clause). This ensures that comprehensions always immediately return a container of the appropriate -type (rather than potentially returning a *note generator iterator: 55b. +type (rather than potentially returning a *note generator iterator: 448. object), while generator expressions won’t attempt to interleave their implicit output with the output from any explicit yield expressions. In -Python 3.7, such expressions emit *note DeprecationWarning: 15a. when -compiled, in Python 3.8 this will be a *note SyntaxError: 55c. +Python 3.7, such expressions emit *note DeprecationWarning: 264. when +compiled, in Python 3.8 this will be a *note SyntaxError: 449. (Contributed by Serhiy Storchaka in bpo-10544(1).) -Returning a subclass of *note complex: 2c4. from *note -object.__complex__(): 2c8. is deprecated and will be an error in future +Returning a subclass of *note complex: 176. from *note +object.__complex__(): 17a. is deprecated and will be an error in future Python versions. This makes ‘__complex__()’ consistent with *note -object.__int__(): 2c6. and *note object.__float__(): 2c7. (Contributed +object.__int__(): 178. and *note object.__float__(): 179. (Contributed by Serhiy Storchaka in bpo-28894(2).) ---------- Footnotes ---------- @@ -15906,35 +13327,35 @@ by Serhiy Storchaka in bpo-28894(2).)  File: python.info, Node: Deprecated Python modules functions and methods, Next: Deprecated functions and types of the C API, Prev: Deprecated Python Behavior, Up: What’s New In Python 3 7 -1.3.11 Deprecated Python modules, functions and methods +1.2.11 Deprecated Python modules, functions and methods ------------------------------------------------------- * Menu: * aifc:: -* asyncio: asyncio<4>. +* asyncio: asyncio<3>. * collections: collections<3>. * dbm: dbm<2>. * enum: enum<2>. * gettext: gettext<2>. -* importlib: importlib<3>. +* importlib: importlib<2>. * locale: locale<2>. * macpath:: * threading: threading<2>. -* socket: socket<4>. +* socket: socket<3>. * ssl: ssl<3>. * sunau:: -* sys: sys<4>. +* sys: sys<3>. * wave::  -File: python.info, Node: aifc, Next: asyncio<4>, Up: Deprecated Python modules functions and methods +File: python.info, Node: aifc, Next: asyncio<3>, Up: Deprecated Python modules functions and methods -1.3.11.1 aifc +1.2.11.1 aifc ............. ‘aifc.openfp()’ has been deprecated and will be removed in Python 3.9. -Use *note aifc.open(): 55f. instead. (Contributed by Brian Curtin in +Use *note aifc.open(): 44c. instead. (Contributed by Brian Curtin in bpo-31985(1).) ---------- Footnotes ---------- @@ -15942,19 +13363,20 @@ bpo-31985(1).) (1) https://bugs.python.org/issue31985  -File: python.info, Node: asyncio<4>, Next: collections<3>, Prev: aifc, Up: Deprecated Python modules functions and methods +File: python.info, Node: asyncio<3>, Next: collections<3>, Prev: aifc, Up: Deprecated Python modules functions and methods -1.3.11.2 asyncio +1.2.11.2 asyncio ................ -Support for directly ‘await’-ing instances of *note asyncio.Lock: 3b1. +Support for directly ‘await’-ing instances of *note asyncio.Lock: 276. and other asyncio synchronization primitives has been deprecated. An asynchronous context manager must be used in order to acquire and release the synchronization resource. (Contributed by Andrew Svetlov in bpo-32253(1).) -The ‘asyncio.Task.current_task()’ and ‘asyncio.Task.all_tasks()’ methods -have been deprecated. (Contributed by Andrew Svetlov in bpo-32250(2).) +The *note asyncio.Task.current_task(): 343. and *note +asyncio.Task.all_tasks(): 344. methods have been deprecated. +(Contributed by Andrew Svetlov in bpo-32250(2).) ---------- Footnotes ---------- @@ -15963,13 +13385,13 @@ have been deprecated. (Contributed by Andrew Svetlov in bpo-32250(2).) (2) https://bugs.python.org/issue32250  -File: python.info, Node: collections<3>, Next: dbm<2>, Prev: asyncio<4>, Up: Deprecated Python modules functions and methods +File: python.info, Node: collections<3>, Next: dbm<2>, Prev: asyncio<3>, Up: Deprecated Python modules functions and methods -1.3.11.3 collections +1.2.11.3 collections .................... -In Python 3.8, the abstract base classes in *note collections.abc: 1e. -will no longer be exposed in the regular *note collections: 1d. module. +In Python 3.8, the abstract base classes in *note collections.abc: 1f. +will no longer be exposed in the regular *note collections: 1e. module. This will help create a clearer distinction between the concrete classes and the abstract base classes. (Contributed by Serhiy Storchaka in bpo-25988(1).) @@ -15981,10 +13403,10 @@ bpo-25988(1).)  File: python.info, Node: dbm<2>, Next: enum<2>, Prev: collections<3>, Up: Deprecated Python modules functions and methods -1.3.11.4 dbm +1.2.11.4 dbm ............ -*note dbm.dumb: 32. now supports reading read-only files and no longer +*note dbm.dumb: 33. now supports reading read-only files and no longer writes the index file when it is not changed. A deprecation warning is now emitted if the index file is missing and recreated in the ‘'r'’ and ‘'w'’ modes (this will be an error in future Python releases). @@ -15997,14 +13419,14 @@ now emitted if the index file is missing and recreated in the ‘'r'’ and  File: python.info, Node: enum<2>, Next: gettext<2>, Prev: dbm<2>, Up: Deprecated Python modules functions and methods -1.3.11.5 enum +1.2.11.5 enum ............. In Python 3.8, attempting to check for non-Enum objects in ‘Enum’ -classes will raise a *note TypeError: 1fe. (e.g. ‘1 in Color’); +classes will raise a *note TypeError: 17f. (e.g. ‘1 in Color’); similarly, attempting to check for non-Flag objects in a ‘Flag’ member -will raise *note TypeError: 1fe. (e.g. ‘1 in Perm.RW’); currently, both -operations return *note False: 491. instead. (Contributed by Ethan +will raise *note TypeError: 17f. (e.g. ‘1 in Perm.RW’); currently, both +operations return *note False: 379. instead. (Contributed by Ethan Furman in bpo-33217(1).) ---------- Footnotes ---------- @@ -16012,13 +13434,13 @@ Furman in bpo-33217(1).) (1) https://bugs.python.org/issue33217  -File: python.info, Node: gettext<2>, Next: importlib<3>, Prev: enum<2>, Up: Deprecated Python modules functions and methods +File: python.info, Node: gettext<2>, Next: importlib<2>, Prev: enum<2>, Up: Deprecated Python modules functions and methods -1.3.11.6 gettext +1.2.11.6 gettext ................ Using non-integer value for selecting a plural form in *note gettext: -87. is now deprecated. It never correctly worked. (Contributed by +89. is now deprecated. It never correctly worked. (Contributed by Serhiy Storchaka in bpo-28692(1).) ---------- Footnotes ---------- @@ -16026,33 +13448,33 @@ Serhiy Storchaka in bpo-28692(1).) (1) https://bugs.python.org/issue28692  -File: python.info, Node: importlib<3>, Next: locale<2>, Prev: gettext<2>, Up: Deprecated Python modules functions and methods +File: python.info, Node: importlib<2>, Next: locale<2>, Prev: gettext<2>, Up: Deprecated Python modules functions and methods -1.3.11.7 importlib +1.2.11.7 importlib .................. -Methods *note MetaPathFinder.find_module(): 566. (replaced by *note -MetaPathFinder.find_spec(): 567.) and *note -PathEntryFinder.find_loader(): 568. (replaced by *note -PathEntryFinder.find_spec(): 569.) both deprecated in Python 3.4 now -emit *note DeprecationWarning: 15a. (Contributed by Matthias Bussonnier +Methods *note MetaPathFinder.find_module(): 453. (replaced by *note +MetaPathFinder.find_spec(): 454.) and *note +PathEntryFinder.find_loader(): 455. (replaced by *note +PathEntryFinder.find_spec(): 456.) both deprecated in Python 3.4 now +emit *note DeprecationWarning: 264. (Contributed by Matthias Bussonnier in bpo-29576(1)) -The *note importlib.abc.ResourceLoader: 56a. ABC has been deprecated in -favour of *note importlib.abc.ResourceReader: 450. +The *note importlib.abc.ResourceLoader: 457. ABC has been deprecated in +favour of *note importlib.abc.ResourceReader: 333. ---------- Footnotes ---------- (1) https://bugs.python.org/issue29576  -File: python.info, Node: locale<2>, Next: macpath, Prev: importlib<3>, Up: Deprecated Python modules functions and methods +File: python.info, Node: locale<2>, Next: macpath, Prev: importlib<2>, Up: Deprecated Python modules functions and methods -1.3.11.8 locale +1.2.11.8 locale ............... -*note locale.format(): 56c. has been deprecated, use *note -locale.format_string(): 4ad. instead. (Contributed by Garvit in +*note locale.format(): 459. has been deprecated, use *note +locale.format_string(): 395. instead. (Contributed by Garvit in bpo-10379(1).) ---------- Footnotes ---------- @@ -16062,7 +13484,7 @@ bpo-10379(1).)  File: python.info, Node: macpath, Next: threading<2>, Prev: locale<2>, Up: Deprecated Python modules functions and methods -1.3.11.9 macpath +1.2.11.9 macpath ................ The ‘macpath’ is now deprecated and will be removed in Python 3.8. @@ -16073,28 +13495,28 @@ The ‘macpath’ is now deprecated and will be removed in Python 3.8. (1) https://bugs.python.org/issue9850  -File: python.info, Node: threading<2>, Next: socket<4>, Prev: macpath, Up: Deprecated Python modules functions and methods +File: python.info, Node: threading<2>, Next: socket<3>, Prev: macpath, Up: Deprecated Python modules functions and methods -1.3.11.10 threading +1.2.11.10 threading ................... -‘dummy_threading’ and ‘_dummy_thread’ have been deprecated. It is no -longer possible to build Python with threading disabled. Use *note -threading: 10b. instead. (Contributed by Antoine Pitrou in -bpo-31370(1).) +*note dummy_threading: 68. and *note _dummy_thread: 2. have been +deprecated. It is no longer possible to build Python with threading +disabled. Use *note threading: 10a. instead. (Contributed by Antoine +Pitrou in bpo-31370(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue31370  -File: python.info, Node: socket<4>, Next: ssl<3>, Prev: threading<2>, Up: Deprecated Python modules functions and methods +File: python.info, Node: socket<3>, Next: ssl<3>, Prev: threading<2>, Up: Deprecated Python modules functions and methods -1.3.11.11 socket +1.2.11.11 socket ................ -The silent argument value truncation in *note socket.htons(): 570. and -*note socket.ntohs(): 571. has been deprecated. In future versions of +The silent argument value truncation in *note socket.htons(): 45d. and +*note socket.ntohs(): 45e. has been deprecated. In future versions of Python, if the passed argument is larger than 16 bits, an exception will be raised. (Contributed by Oren Milman in bpo-28332(1).) @@ -16103,13 +13525,13 @@ be raised. (Contributed by Oren Milman in bpo-28332(1).) (1) https://bugs.python.org/issue28332  -File: python.info, Node: ssl<3>, Next: sunau, Prev: socket<4>, Up: Deprecated Python modules functions and methods +File: python.info, Node: ssl<3>, Next: sunau, Prev: socket<3>, Up: Deprecated Python modules functions and methods -1.3.11.12 ssl +1.2.11.12 ssl ............. -*note ssl.wrap_socket(): 573. is deprecated. Use *note -ssl.SSLContext.wrap_socket(): 4ed. instead. (Contributed by Christian +*note ssl.wrap_socket(): 460. is deprecated. Use *note +ssl.SSLContext.wrap_socket(): 3d6. instead. (Contributed by Christian Heimes in bpo-28124(1).) ---------- Footnotes ---------- @@ -16117,23 +13539,23 @@ Heimes in bpo-28124(1).) (1) https://bugs.python.org/issue28124  -File: python.info, Node: sunau, Next: sys<4>, Prev: ssl<3>, Up: Deprecated Python modules functions and methods +File: python.info, Node: sunau, Next: sys<3>, Prev: ssl<3>, Up: Deprecated Python modules functions and methods -1.3.11.13 sunau +1.2.11.13 sunau ............... -‘sunau.openfp()’ has been deprecated and will be removed in Python 3.9. -Use *note sunau.open(): 575. instead. (Contributed by Brian Curtin in -bpo-31985(1).) +*note sunau.openfp(): 462. has been deprecated and will be removed in +Python 3.9. Use *note sunau.open(): 463. instead. (Contributed by +Brian Curtin in bpo-31985(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue31985  -File: python.info, Node: sys<4>, Next: wave, Prev: sunau, Up: Deprecated Python modules functions and methods +File: python.info, Node: sys<3>, Next: wave, Prev: sunau, Up: Deprecated Python modules functions and methods -1.3.11.14 sys +1.2.11.14 sys ............. Deprecated ‘sys.set_coroutine_wrapper()’ and @@ -16148,14 +13570,14 @@ in bpo-28799(1).) (1) https://bugs.python.org/issue28799  -File: python.info, Node: wave, Prev: sys<4>, Up: Deprecated Python modules functions and methods +File: python.info, Node: wave, Prev: sys<3>, Up: Deprecated Python modules functions and methods -1.3.11.15 wave +1.2.11.15 wave .............. -‘wave.openfp()’ has been deprecated and will be removed in Python 3.9. -Use *note wave.open(): 219. instead. (Contributed by Brian Curtin in -bpo-31985(1).) +*note wave.openfp(): 466. has been deprecated and will be removed in +Python 3.9. Use *note wave.open(): 467. instead. (Contributed by Brian +Curtin in bpo-31985(1).) ---------- Footnotes ---------- @@ -16164,18 +13586,18 @@ bpo-31985(1).)  File: python.info, Node: Deprecated functions and types of the C API, Next: Platform Support Removals, Prev: Deprecated Python modules functions and methods, Up: What’s New In Python 3 7 -1.3.12 Deprecated functions and types of the C API +1.2.12 Deprecated functions and types of the C API -------------------------------------------------- -Function *note PySlice_GetIndicesEx(): 579. is deprecated and replaced +Function *note PySlice_GetIndicesEx(): 469. is deprecated and replaced with a macro if ‘Py_LIMITED_API’ is not set or set to a value in the range between ‘0x03050400’ and ‘0x03060000’ (not inclusive), or is ‘0x03060100’ or higher. (Contributed by Serhiy Storchaka in bpo-27867(1).) -*note PyOS_AfterFork(): 537. has been deprecated. Use *note -PyOS_BeforeFork(): 538, *note PyOS_AfterFork_Parent(): 539. or *note -PyOS_AfterFork_Child(): 3f2. instead. (Contributed by Antoine Pitrou in +*note PyOS_AfterFork(): 421. has been deprecated. Use *note +PyOS_BeforeFork(): 422, *note PyOS_AfterFork_Parent(): 423. or *note +PyOS_AfterFork_Child(): 2b8. instead. (Contributed by Antoine Pitrou in bpo-16500(2).) ---------- Footnotes ---------- @@ -16187,7 +13609,7 @@ bpo-16500(2).)  File: python.info, Node: Platform Support Removals, Next: API and Feature Removals<2>, Prev: Deprecated functions and types of the C API, Up: What’s New In Python 3 7 -1.3.13 Platform Support Removals +1.2.13 Platform Support Removals -------------------------------- * FreeBSD 9 and older are no longer officially supported. @@ -16218,15 +13640,15 @@ File: python.info, Node: Platform Support Removals, Next: API and Feature Remo ---------- Footnotes ---------- - (1) https://github.com/python/cpython/tree/3.9/.travis.yml + (1) https://github.com/python/cpython/tree/3.8/.travis.yml (2) -https://github.com/python/cpython/tree/3.9/Tools/ssl/multissltests.py +https://github.com/python/cpython/tree/3.8/Tools/ssl/multissltests.py  File: python.info, Node: API and Feature Removals<2>, Next: Module Removals, Prev: Platform Support Removals, Up: What’s New In Python 3 7 -1.3.14 API and Feature Removals +1.2.14 API and Feature Removals ------------------------------- The following features and APIs have been removed from Python 3.7: @@ -16236,54 +13658,54 @@ The following features and APIs have been removed from Python 3.7: 2.2, and was deprecated since Python 3.1. * Unknown escapes consisting of ‘'\'’ and an ASCII letter in - replacement templates for *note re.sub(): 57c. were deprecated in + replacement templates for *note re.sub(): 46c. were deprecated in Python 3.5, and will now cause an error. * Removed support of the `exclude' argument in *note - tarfile.TarFile.add(): 57d. It was deprecated in Python 2.7 and + tarfile.TarFile.add(): 46d. It was deprecated in Python 2.7 and 3.2. Use the `filter' argument instead. * The ‘splitunc()’ function in the ‘ntpath’ module was deprecated in Python 3.1, and has now been removed. Use the *note splitdrive(): - 57e. function instead. + 46e. function instead. - * *note collections.namedtuple(): 1a1. no longer supports the + * *note collections.namedtuple(): 1a3. no longer supports the `verbose' parameter or ‘_source’ attribute which showed the generated source code for the named tuple class. This was part of an optimization designed to speed-up class creation. (Contributed by Jelle Zijlstra with further improvements by INADA Naoki, Serhiy Storchaka, and Raymond Hettinger in bpo-28638(1).) - * Functions *note bool(): 2c0, *note float(): 1fd, *note list(): 1f8. - and *note tuple(): 1a2. no longer take keyword arguments. The - first argument of *note int(): 204. can now be passed only as + * Functions *note bool(): 170, *note float(): 174, *note list(): 24e. + and *note tuple(): 46f. no longer take keyword arguments. The + first argument of *note int(): 171. can now be passed only as positional argument. * Removed previously deprecated in Python 2.4 classes ‘Plist’, ‘Dict’ - and ‘_InternalDict’ in the *note plistlib: cf. module. Dict values - in the result of functions ‘readPlist()’ and ‘readPlistFromBytes()’ - are now normal dicts. You no longer can use attribute access to - access items of these dictionaries. + and ‘_InternalDict’ in the *note plistlib: d0. module. Dict values + in the result of functions *note readPlist(): 470. and *note + readPlistFromBytes(): 471. are now normal dicts. You no longer can + use attribute access to access items of these dictionaries. * The ‘asyncio.windows_utils.socketpair()’ function has been removed. - Use the *note socket.socketpair(): 57f. function instead, it is + Use the *note socket.socketpair(): 472. function instead, it is available on all platforms since Python 3.5. ‘asyncio.windows_utils.socketpair’ was just an alias to ‘socket.socketpair’ on Python 3.5 and newer. - * *note asyncio: 9. no longer exports the *note selectors: e6. and + * *note asyncio: a. no longer exports the *note selectors: e7. and ‘_overlapped’ modules as ‘asyncio.selectors’ and ‘asyncio._overlapped’. Replace ‘from asyncio import selectors’ with ‘import selectors’. - * Direct instantiation of *note ssl.SSLSocket: 192. and *note - ssl.SSLObject: 4eb. objects is now prohibited. The constructors + * Direct instantiation of *note ssl.SSLSocket: 3d3. and *note + ssl.SSLObject: 3d4. objects is now prohibited. The constructors were never documented, tested, or designed as public constructors. - Users were supposed to use *note ssl.wrap_socket(): 573. or *note - ssl.SSLContext: 4ec. (Contributed by Christian Heimes in + Users were supposed to use *note ssl.wrap_socket(): 460. or *note + ssl.SSLContext: 3d5. (Contributed by Christian Heimes in bpo-32951(2).) - * The unused *note distutils: 38. ‘install_misc’ command has been + * The unused *note distutils: 39. ‘install_misc’ command has been removed. (Contributed by Eric N. Vander Weele in bpo-29218(3).) ---------- Footnotes ---------- @@ -16297,7 +13719,7 @@ The following features and APIs have been removed from Python 3.7:  File: python.info, Node: Module Removals, Next: Windows-only Changes, Prev: API and Feature Removals<2>, Up: What’s New In Python 3 7 -1.3.15 Module Removals +1.2.15 Module Removals ---------------------- The ‘fpectl’ module has been removed. It was never enabled by default, @@ -16312,7 +13734,7 @@ Nathaniel J. Smith in bpo-29137(1).)  File: python.info, Node: Windows-only Changes, Next: Porting to Python 3 7, Prev: Module Removals, Up: What’s New In Python 3 7 -1.3.16 Windows-only Changes +1.2.16 Windows-only Changes --------------------------- The python launcher, (py.exe), can accept 32 & 64 bit specifiers @@ -16338,7 +13760,7 @@ specifiers. (Contributed by Steve Barnes in bpo-30362(2).)  File: python.info, Node: Porting to Python 3 7, Next: Notable changes in Python 3 7 1, Prev: Windows-only Changes, Up: What’s New In Python 3 7 -1.3.17 Porting to Python 3.7 +1.2.17 Porting to Python 3.7 ---------------------------- This section lists previously described changes and other bugfixes that @@ -16348,29 +13770,29 @@ may require changes to your code. * Changes in Python Behavior:: * Changes in the Python API: Changes in the Python API<3>. -* Changes in the C API: Changes in the C API<3>. -* CPython bytecode changes: CPython bytecode changes<3>. +* Changes in the C API: Changes in the C API<2>. +* CPython bytecode changes: CPython bytecode changes<2>. * Windows-only Changes: Windows-only Changes<2>. * Other CPython implementation changes::  File: python.info, Node: Changes in Python Behavior, Next: Changes in the Python API<3>, Up: Porting to Python 3 7 -1.3.17.1 Changes in Python Behavior +1.2.17.1 Changes in Python Behavior ................................... - * *note async: 2da. and *note await: 2db. names are now reserved + * *note async: 18e. and *note await: 18f. names are now reserved keywords. Code using these names as identifiers will now raise a - *note SyntaxError: 55c. (Contributed by Jelle Zijlstra in + *note SyntaxError: 449. (Contributed by Jelle Zijlstra in bpo-30406(1).) * PEP 479(2) is enabled for all code in Python 3.7, meaning that - *note StopIteration: 584. exceptions raised directly or indirectly + *note StopIteration: 477. exceptions raised directly or indirectly in coroutines and generators are transformed into *note - RuntimeError: 3df. exceptions. (Contributed by Yury Selivanov in + RuntimeError: 2a5. exceptions. (Contributed by Yury Selivanov in bpo-32670(3).) - * *note object.__aiter__(): 585. methods can no longer be declared as + * *note object.__aiter__(): 478. methods can no longer be declared as asynchronous. (Contributed by Yury Selivanov in bpo-31709(4).) * Due to an oversight, earlier Python versions erroneously accepted @@ -16381,14 +13803,14 @@ File: python.info, Node: Changes in Python Behavior, Next: Changes in the Pyth class C(1 for x in [1]): pass - Python 3.7 now correctly raises a *note SyntaxError: 55c, as a + Python 3.7 now correctly raises a *note SyntaxError: 449, as a generator expression always needs to be directly inside a set of parentheses and cannot have a comma on either side, and the duplication of the parentheses can be omitted only on calls. (Contributed by Serhiy Storchaka in bpo-32012(5) and bpo-32023(6).) - * When using the *note -m: 445. switch, the initial working directory - is now added to *note sys.path: 260, rather than an empty string + * When using the *note -m: 328. switch, the initial working directory + is now added to *note sys.path: 479, rather than an empty string (which dynamically denoted the current working directory at the time of each import). Any programs that are checking for the empty string, or otherwise relying on the previous behaviour, will need @@ -16411,9 +13833,9 @@ File: python.info, Node: Changes in Python Behavior, Next: Changes in the Pyth (6) https://bugs.python.org/issue32023  -File: python.info, Node: Changes in the Python API<3>, Next: Changes in the C API<3>, Prev: Changes in Python Behavior, Up: Porting to Python 3 7 +File: python.info, Node: Changes in the Python API<3>, Next: Changes in the C API<2>, Prev: Changes in Python Behavior, Up: Porting to Python 3 7 -1.3.17.2 Changes in the Python API +1.2.17.2 Changes in the Python API .................................. * ‘socketserver.ThreadingMixIn.server_close()’ now waits until all @@ -16428,74 +13850,74 @@ File: python.info, Node: Changes in the Python API<3>, Next: Changes in the C ‘False’ to get the pre-3.7 behaviour. (Contributed by Victor Stinner in bpo-31151(3) and bpo-33540(4).) - * The *note locale.localeconv(): 587. function now temporarily sets + * The *note locale.localeconv(): 47b. function now temporarily sets the ‘LC_CTYPE’ locale to the value of ‘LC_NUMERIC’ in some cases. (Contributed by Victor Stinner in bpo-31900(5).) - * *note pkgutil.walk_packages(): 588. now raises a *note ValueError: - 16d. if `path' is a string. Previously an empty list was returned. + * *note pkgutil.walk_packages(): 47c. now raises a *note ValueError: + 1e7. if `path' is a string. Previously an empty list was returned. (Contributed by Sanyam Khurana in bpo-24744(6).) - * A format string argument for *note string.Formatter.format(): 589. - is now *note positional-only: 3cc. Passing it as a keyword + * A format string argument for *note string.Formatter.format(): 47d. + is now *note positional-only: 292. Passing it as a keyword argument was deprecated in Python 3.5. (Contributed by Serhiy Storchaka in bpo-29193(7).) - * Attributes *note key: 58a, *note value: 58b. and *note coded_value: - 58c. of class *note http.cookies.Morsel: 58d. are now read-only. + * Attributes *note key: 47e, *note value: 47f. and *note coded_value: + 480. of class *note http.cookies.Morsel: 481. are now read-only. Assigning to them was deprecated in Python 3.5. Use the *note - set(): 58e. method for setting them. (Contributed by Serhiy + set(): 482. method for setting them. (Contributed by Serhiy Storchaka in bpo-29192(8).) - * The `mode' argument of *note os.makedirs(): 4c6. no longer affects + * The `mode' argument of *note os.makedirs(): 3ae. no longer affects the file permission bits of newly-created intermediate-level directories. To set their file permission bits you can set the umask before invoking ‘makedirs()’. (Contributed by Serhiy Storchaka in bpo-19930(9).) - * The *note struct.Struct.format: 58f. type is now *note str: 205. - instead of *note bytes: 172. (Contributed by Victor Stinner in + * The *note struct.Struct.format: 483. type is now *note str: 321. + instead of *note bytes: 322. (Contributed by Victor Stinner in bpo-21071(10).) - * *note parse_multipart(): 285. now accepts the `encoding' and + * *note parse_multipart(): 2da. now accepts the `encoding' and `errors' arguments and returns the same results as ‘FieldStorage’: for non-file fields, the value associated to a key is a list of strings, not bytes. (Contributed by Pierre Quentel in bpo-29979(11).) - * Due to internal changes in *note socket: ef, calling *note - socket.fromshare(): 590. on a socket created by *note socket.share: - 591. in older Python versions is not supported. + * Due to internal changes in *note socket: f0, calling *note + socket.fromshare(): 484. on a socket created by *note socket.share: + 485. in older Python versions is not supported. - * ‘repr’ for *note BaseException: 2de. has changed to not include the + * ‘repr’ for *note BaseException: 194. has changed to not include the trailing comma. Most exceptions are affected by this change. (Contributed by Serhiy Storchaka in bpo-30399(12).) - * ‘repr’ for *note datetime.timedelta: 2cd. has changed to include + * ‘repr’ for *note datetime.timedelta: 182. has changed to include the keyword arguments in the output. (Contributed by Utkarsh Upadhyay in bpo-30302(13).) - * Because *note shutil.rmtree(): 34c. is now implemented using the - *note os.scandir(): 38c. function, the user specified handler + * Because *note shutil.rmtree(): 208. is now implemented using the + *note os.scandir(): 24b. function, the user specified handler `onerror' is now called with the first argument ‘os.scandir’ instead of ‘os.listdir’ when listing the directory is failed. * Support for nested sets and set operations in regular expressions as in Unicode Technical Standard #18(14) might be added in the future. This would change the syntax. To facilitate this future - change a *note FutureWarning: 437. will be raised in ambiguous + change a *note FutureWarning: 317. will be raised in ambiguous cases for the time being. That include sets starting with a literal ‘'['’ or containing literal character sequences ‘'--'’, ‘'&&'’, ‘'~~'’, and ‘'||'’. To avoid a warning, escape them with a backslash. (Contributed by Serhiy Storchaka in bpo-30349(15).) - * The result of splitting a string on a *note regular expression: dd. + * The result of splitting a string on a *note regular expression: de. that could match an empty string has been changed. For example splitting on ‘r'\s*'’ will now split not only on whitespaces as it did previously, but also on empty strings before all non-whitespace characters and just before the end of the string. The previous behavior can be restored by changing the pattern to ‘r'\s+'’. A - *note FutureWarning: 437. was emitted for such patterns since + *note FutureWarning: 317. was emitted for such patterns since Python 3.5. For patterns that match both empty and non-empty strings, the @@ -16506,7 +13928,7 @@ File: python.info, Node: Changes in the Python API<3>, Next: Changes in the C blank lines, the pattern should be rewritten as ‘r'(?m)^[^\S\n]*$'’. - *note re.sub(): 57c. now replaces empty matches adjacent to a + *note re.sub(): 46c. now replaces empty matches adjacent to a previous non-empty match. For example ‘re.sub('x*', '-', 'abxd')’ returns now ‘'-a-b--d-'’ instead of ‘'-a-b-d-'’ (the first minus between ‘b’ and ‘d’ replaces ‘x’, and the second minus replaces an @@ -16515,78 +13937,78 @@ File: python.info, Node: Changes in the Python API<3>, Next: Changes in the C (Contributed by Serhiy Storchaka in bpo-25054(16) and bpo-32308(17).) - * Change *note re.escape(): 592. to only escape regex special + * Change *note re.escape(): 486. to only escape regex special characters instead of escaping all characters other than ASCII letters, numbers, and ‘'_'’. (Contributed by Serhiy Storchaka in bpo-29995(18).) - * *note tracemalloc.Traceback: 506. frames are now sorted from oldest - to most recent to be more consistent with *note traceback: 11c. + * *note tracemalloc.Traceback: 3f0. frames are now sorted from oldest + to most recent to be more consistent with *note traceback: 114. (Contributed by Jesse Bakker in bpo-32121(19).) - * On OSes that support *note socket.SOCK_NONBLOCK: 593. or *note - socket.SOCK_CLOEXEC: 594. bit flags, the *note socket.type: 595. no + * On OSes that support *note socket.SOCK_NONBLOCK: 487. or *note + socket.SOCK_CLOEXEC: 488. bit flags, the *note socket.type: 489. no longer has them applied. Therefore, checks like ‘if sock.type == socket.SOCK_STREAM’ work as expected on all platforms. (Contributed by Yury Selivanov in bpo-32331(20).) * On Windows the default for the `close_fds' argument of *note - subprocess.Popen: 3de. was changed from *note False: 491. to *note - True: 596. when redirecting the standard handles. If you + subprocess.Popen: 2a4. was changed from *note False: 379. to *note + True: 48a. when redirecting the standard handles. If you previously depended on handles being inherited when using *note - subprocess.Popen: 3de. with standard io redirection, you will have + subprocess.Popen: 2a4. with standard io redirection, you will have to pass ‘close_fds=False’ to preserve the previous behaviour, or - use *note STARTUPINFO.lpAttributeList: 597. + use *note STARTUPINFO.lpAttributeList: 48b. - * *note importlib.machinery.PathFinder.invalidate_caches(): 598. – - which implicitly affects *note importlib.invalidate_caches(): 599. - – now deletes entries in *note sys.path_importer_cache: 59a. which + * *note importlib.machinery.PathFinder.invalidate_caches(): 48c. – + which implicitly affects *note importlib.invalidate_caches(): 48d. + – now deletes entries in *note sys.path_importer_cache: 48e. which are set to ‘None’. (Contributed by Brett Cannon in bpo-33169(21).) - * In *note asyncio: 9, *note loop.sock_recv(): 59b, *note - loop.sock_sendall(): 59c, *note loop.sock_accept(): 59d, *note - loop.getaddrinfo(): 59e, *note loop.getnameinfo(): 59f. have been + * In *note asyncio: a, *note loop.sock_recv(): 48f, *note + loop.sock_sendall(): 490, *note loop.sock_accept(): 491, *note + loop.getaddrinfo(): 492, *note loop.getnameinfo(): 493. have been changed to be proper coroutine methods to match their documentation. Previously, these methods returned *note - asyncio.Future: 548. instances. (Contributed by Yury Selivanov in + asyncio.Future: 433. instances. (Contributed by Yury Selivanov in bpo-32327(22).) - * *note asyncio.Server.sockets: 5a0. now returns a copy of the + * *note asyncio.Server.sockets: 494. now returns a copy of the internal list of server sockets, instead of returning it directly. (Contributed by Yury Selivanov in bpo-32662(23).) - * *note Struct.format: 58f. is now a *note str: 205. instance instead - of a *note bytes: 172. instance. (Contributed by Victor Stinner in + * *note Struct.format: 483. is now a *note str: 321. instance instead + of a *note bytes: 322. instance. (Contributed by Victor Stinner in bpo-21071(24).) - * *note argparse: 5. subparsers can now be made mandatory by passing - ‘required=True’ to *note ArgumentParser.add_subparsers(): 5a1. + * *note argparse: 6. subparsers can now be made mandatory by passing + ‘required=True’ to *note ArgumentParser.add_subparsers(): 495. (Contributed by Anthony Sottile in bpo-26510(25).) - * *note ast.literal_eval(): 5a2. is now stricter. Addition and + * *note ast.literal_eval(): 496. is now stricter. Addition and subtraction of arbitrary numbers are no longer allowed. (Contributed by Serhiy Storchaka in bpo-31778(26).) - * *note Calendar.itermonthdates: 5a3. will now consistently raise an + * *note Calendar.itermonthdates: 497. will now consistently raise an exception when a date falls outside of the ‘0001-01-01’ through ‘9999-12-31’ range. To support applications that cannot tolerate - such exceptions, the new *note Calendar.itermonthdays3: 5a4. and - *note Calendar.itermonthdays4: 5a5. can be used. The new methods + such exceptions, the new *note Calendar.itermonthdays3: 498. and + *note Calendar.itermonthdays4: 499. can be used. The new methods return tuples and are not restricted by the range supported by - *note datetime.date: 19e. (Contributed by Alexander Belopolsky in + *note datetime.date: 180. (Contributed by Alexander Belopolsky in bpo-28292(27).) - * *note collections.ChainMap: 5a6. now preserves the order of the + * *note collections.ChainMap: 49a. now preserves the order of the underlying mappings. (Contributed by Raymond Hettinger in bpo-32792(28).) * The ‘submit()’ method of *note - concurrent.futures.ThreadPoolExecutor: 18c. and *note - concurrent.futures.ProcessPoolExecutor: 196. now raises a *note - RuntimeError: 3df. if called during interpreter shutdown. + concurrent.futures.ThreadPoolExecutor: 266. and *note + concurrent.futures.ProcessPoolExecutor: 28f. now raises a *note + RuntimeError: 2a5. if called during interpreter shutdown. (Contributed by Mark Nemec in bpo-33097(29).) - * The *note configparser.ConfigParser: 5a7. constructor now uses + * The *note configparser.ConfigParser: 49b. constructor now uses ‘read_dict()’ to process the default values, making its behavior consistent with the rest of the parser. Non-string keys and values in the defaults dictionary are now being implicitly converted to @@ -16660,19 +14082,19 @@ File: python.info, Node: Changes in the Python API<3>, Next: Changes in the C (30) https://bugs.python.org/issue23835  -File: python.info, Node: Changes in the C API<3>, Next: CPython bytecode changes<3>, Prev: Changes in the Python API<3>, Up: Porting to Python 3 7 +File: python.info, Node: Changes in the C API<2>, Next: CPython bytecode changes<2>, Prev: Changes in the Python API<3>, Up: Porting to Python 3 7 -1.3.17.3 Changes in the C API +1.2.17.3 Changes in the C API ............................. -The function *note PySlice_GetIndicesEx(): 579. is considered unsafe for +The function *note PySlice_GetIndicesEx(): 469. is considered unsafe for resizable sequences. If the slice indices are not instances of *note -int: 204, but objects that implement the ‘__index__()’ method, the -sequence can be resized after passing its length to -‘PySlice_GetIndicesEx()’. This can lead to returning indices out of the -length of the sequence. For avoiding possible problems use new -functions *note PySlice_Unpack(): 535. and *note -PySlice_AdjustIndices(): 536. (Contributed by Serhiy Storchaka in +int: 171, but objects that implement the ‘__index__()’ method, the +sequence can be resized after passing its length to !*note +PySlice_GetIndicesEx: 469. This can lead to returning indices out of +the length of the sequence. For avoiding possible problems use new +functions *note PySlice_Unpack(): 41f. and *note +PySlice_AdjustIndices(): 420. (Contributed by Serhiy Storchaka in bpo-27867(1).) ---------- Footnotes ---------- @@ -16680,13 +14102,13 @@ bpo-27867(1).) (1) https://bugs.python.org/issue27867  -File: python.info, Node: CPython bytecode changes<3>, Next: Windows-only Changes<2>, Prev: Changes in the C API<3>, Up: Porting to Python 3 7 +File: python.info, Node: CPython bytecode changes<2>, Next: Windows-only Changes<2>, Prev: Changes in the C API<2>, Up: Porting to Python 3 7 -1.3.17.4 CPython bytecode changes +1.2.17.4 CPython bytecode changes ................................. -There are two new opcodes: *note LOAD_METHOD: 5aa. and *note -CALL_METHOD: 5ab. (Contributed by Yury Selivanov and INADA Naoki in +There are two new opcodes: *note LOAD_METHOD: 49e. and *note +CALL_METHOD: 49f. (Contributed by Yury Selivanov and INADA Naoki in bpo-26110(1).) The ‘STORE_ANNOTATION’ opcode has been removed. (Contributed by Mark @@ -16699,14 +14121,14 @@ Shannon in bpo-32550(2).) (2) https://bugs.python.org/issue32550  -File: python.info, Node: Windows-only Changes<2>, Next: Other CPython implementation changes, Prev: CPython bytecode changes<3>, Up: Porting to Python 3 7 +File: python.info, Node: Windows-only Changes<2>, Next: Other CPython implementation changes, Prev: CPython bytecode changes<2>, Up: Porting to Python 3 7 -1.3.17.5 Windows-only Changes +1.2.17.5 Windows-only Changes ............................. -The file used to override *note sys.path: 260. is now called +The file used to override *note sys.path: 479. is now called ‘._pth’ instead of ‘'sys.path'’. See *note Finding -modules: 5ad. for more information. (Contributed by Steve Dower in +modules: 4a1. for more information. (Contributed by Steve Dower in bpo-28137(1).) ---------- Footnotes ---------- @@ -16716,7 +14138,7 @@ bpo-28137(1).)  File: python.info, Node: Other CPython implementation changes, Prev: Windows-only Changes<2>, Up: Porting to Python 3 7 -1.3.17.6 Other CPython implementation changes +1.2.17.6 Other CPython implementation changes ............................................. In preparation for potential future changes to the public CPython @@ -16732,18 +14154,18 @@ contributed by Nick Coghlan and Eric Snow as part of bpo-22257(2), and further updated by Nick, Eric, and Victor Stinner in a number of other issues). Some known details affected: - * *note PySys_AddWarnOptionUnicode(): 5af. is not currently usable by + * *note PySys_AddWarnOptionUnicode(): 4a3. is not currently usable by embedding applications due to the requirement to create a Unicode object prior to calling ‘Py_Initialize’. Use *note - PySys_AddWarnOption(): 5b0. instead. + PySys_AddWarnOption(): 4a4. instead. * warnings filters added by an embedding application with *note - PySys_AddWarnOption(): 5b0. should now more consistently take + PySys_AddWarnOption(): 4a4. should now more consistently take precedence over the default filters set by the interpreter Due to changes in the way the default warnings filters are configured, -setting *note Py_BytesWarningFlag: 5b1. to a value greater than one is -no longer sufficient to both emit *note BytesWarning: 5b2. messages and +setting *note Py_BytesWarningFlag: 4a5. to a value greater than one is +no longer sufficient to both emit *note BytesWarning: 4a6. messages and have them converted to exceptions. Instead, the flag must be set (to cause the warnings to be emitted in the first place), and an explicit ‘error::BytesWarning’ warnings filter added to convert them to @@ -16770,21 +14192,21 @@ exiting a generator. (Contributed by Mark Shannon in bpo-25612(3).)  File: python.info, Node: Notable changes in Python 3 7 1, Next: Notable changes in Python 3 7 2, Prev: Porting to Python 3 7, Up: What’s New In Python 3 7 -1.3.18 Notable changes in Python 3.7.1 +1.2.18 Notable changes in Python 3.7.1 -------------------------------------- -Starting in 3.7.1, *note Py_Initialize(): 20f. now consistently reads +Starting in 3.7.1, *note Py_Initialize(): 429. now consistently reads and respects all of the same environment settings as *note Py_Main(): -5b4. (in earlier Python versions, it respected an ill-defined subset of +4a8. (in earlier Python versions, it respected an ill-defined subset of those environment variables, while in Python 3.7.0 it didn’t read any of them due to bpo-34247(1)). If this behavior is unwanted, set *note -Py_IgnoreEnvironmentFlag: 5b5. to 1 before calling *note -Py_Initialize(): 20f. +Py_IgnoreEnvironmentFlag: 4a9. to 1 before calling *note +Py_Initialize(): 429. -In 3.7.1 the C API for Context Variables *note was updated: 5b6. to use -*note PyObject: 5b7. pointers. See also bpo-34762(2). +In 3.7.1 the C API for Context Variables *note was updated: 4aa. to use +*note PyObject: 4ab. pointers. See also bpo-34762(2). -In 3.7.1 the *note tokenize: 11a. module now implicitly emits a +In 3.7.1 the *note tokenize: 112. module now implicitly emits a ‘NEWLINE’ token when provided with input that does not have a trailing new line. This behavior now matches what the C tokenizer does internally. (Contributed by Ammar Askar in bpo-33899(3).) @@ -16800,10 +14222,10 @@ internally. (Contributed by Ammar Askar in bpo-33899(3).)  File: python.info, Node: Notable changes in Python 3 7 2, Next: Notable changes in Python 3 7 6, Prev: Notable changes in Python 3 7 1, Up: What’s New In Python 3 7 -1.3.19 Notable changes in Python 3.7.2 +1.2.19 Notable changes in Python 3.7.2 -------------------------------------- -In 3.7.2, *note venv: 12e. on Windows no longer copies the original +In 3.7.2, *note venv: 126. on Windows no longer copies the original binaries, but creates redirector scripts named ‘python.exe’ and ‘pythonw.exe’ instead. This resolves a long standing issue where all virtual environments would have to be upgraded or recreated with each @@ -16813,11 +14235,11 @@ recreation of virtual environments in order to get the new scripts.  File: python.info, Node: Notable changes in Python 3 7 6, Next: Notable changes in Python 3 7 10, Prev: Notable changes in Python 3 7 2, Up: What’s New In Python 3 7 -1.3.20 Notable changes in Python 3.7.6 +1.2.20 Notable changes in Python 3.7.6 -------------------------------------- Due to significant security concerns, the `reuse_address' parameter of -*note asyncio.loop.create_datagram_endpoint(): 189. is no longer +*note asyncio.loop.create_datagram_endpoint(): 2d3. is no longer supported. This is because of the behavior of the socket option ‘SO_REUSEADDR’ in UDP. For more details, see the documentation for ‘loop.create_datagram_endpoint()’. (Contributed by Kyle Stanley, @@ -16830,15 +14252,15 @@ Antoine Pitrou, and Yury Selivanov in bpo-37228(1).)  File: python.info, Node: Notable changes in Python 3 7 10, Prev: Notable changes in Python 3 7 6, Up: What’s New In Python 3 7 -1.3.21 Notable changes in Python 3.7.10 +1.2.21 Notable changes in Python 3.7.10 --------------------------------------- Earlier Python versions allowed using both ‘;’ and ‘&’ as query -parameter separators in *note urllib.parse.parse_qs(): 282. and *note -urllib.parse.parse_qsl(): 283. Due to security concerns, and to conform +parameter separators in *note urllib.parse.parse_qs(): 2d7. and *note +urllib.parse.parse_qsl(): 2d8. Due to security concerns, and to conform with newer W3C recommendations, this has been changed to allow only a single separator key, with ‘&’ as the default. This change also affects -*note cgi.parse(): 284. and *note cgi.parse_multipart(): 285. as they +*note cgi.parse(): 2d9. and *note cgi.parse_multipart(): 2da. as they use the affected functions internally. For more details, please see their respective documentation. (Contributed by Adam Goldschmidt, Senthil Kumaran and Ken Jin in bpo-42967(1).) @@ -16850,7 +14272,7 @@ Senthil Kumaran and Ken Jin in bpo-42967(1).)  File: python.info, Node: What’s New In Python 3 6, Next: What’s New In Python 3 5, Prev: What’s New In Python 3 7, Up: What’s New in Python -1.4 What’s New In Python 3.6 +1.3 What’s New In Python 3.6 ============================ @@ -16868,16 +14290,16 @@ PEP 494(2) - Python 3.6 Release Schedule * Menu: -* Summary – Release highlights: Summary – Release highlights<3>. -* New Features: New Features<5>. -* Other Language Changes: Other Language Changes<4>. -* New Modules: New Modules<4>. -* Improved Modules: Improved Modules<4>. -* Optimizations: Optimizations<4>. +* Summary – Release highlights: Summary – Release highlights<2>. +* New Features: New Features<3>. +* Other Language Changes: Other Language Changes<3>. +* New Modules: New Modules<3>. +* Improved Modules: Improved Modules<3>. +* Optimizations: Optimizations<3>. * Build and C API Changes: Build and C API Changes<2>. * Other Improvements:: -* Deprecated: Deprecated<3>. -* Removed: Removed<3>. +* Deprecated: Deprecated<2>. +* Removed:: * Porting to Python 3.6: Porting to Python 3 6. * Notable changes in Python 3.6.2: Notable changes in Python 3 6 2. * Notable changes in Python 3.6.4: Notable changes in Python 3 6 4. @@ -16893,97 +14315,97 @@ PEP 494(2) - Python 3.6 Release Schedule (2) https://www.python.org/dev/peps/pep-0494  -File: python.info, Node: Summary – Release highlights<3>, Next: New Features<5>, Up: What’s New In Python 3 6 +File: python.info, Node: Summary – Release highlights<2>, Next: New Features<3>, Up: What’s New In Python 3 6 -1.4.1 Summary – Release highlights +1.3.1 Summary – Release highlights ---------------------------------- New syntax features: - * *note PEP 498: 5be, formatted string literals. + * *note PEP 498: 4b2, formatted string literals. - * *note PEP 515: 5bf, underscores in numeric literals. + * *note PEP 515: 4b3, underscores in numeric literals. - * *note PEP 526: 5c0, syntax for variable annotations. + * *note PEP 526: 4b4, syntax for variable annotations. - * *note PEP 525: 5c1, asynchronous generators. + * *note PEP 525: 4b5, asynchronous generators. - * *note PEP 530: 5c2.: asynchronous comprehensions. + * *note PEP 530: 4b6.: asynchronous comprehensions. New library modules: - * *note secrets: e4.: *note PEP 506 – Adding A Secrets Module To The - Standard Library: 5c3. + * *note secrets: e5.: *note PEP 506 – Adding A Secrets Module To The + Standard Library: 4b7. CPython implementation improvements: - * The *note dict: 410. type has been reimplemented to use a *note - more compact representation: 5c4. based on a proposal by Raymond + * The *note dict: 2f0. type has been reimplemented to use a *note + more compact representation: 4b8. based on a proposal by Raymond Hettinger(1) and similar to the PyPy dict implementation(2). This resulted in dictionaries using 20% to 25% less memory when compared to Python 3.5. * Customization of class creation has been simplified with the *note - new protocol: 5c5. + new protocol: 4b9. - * The class attribute definition order is *note now preserved: 5c6. + * The class attribute definition order is *note now preserved: 4ba. * The order of elements in ‘**kwargs’ now *note corresponds to the - order: 5c7. in which keyword arguments were passed to the function. + order: 4bb. in which keyword arguments were passed to the function. - * DTrace and SystemTap *note probing support: 5c8. has been added. + * DTrace and SystemTap *note probing support: 4bc. has been added. - * The new *note PYTHONMALLOC: 5c9. environment variable can now be + * The new *note PYTHONMALLOC: 4bd. environment variable can now be used to debug the interpreter memory allocation and access errors. Significant improvements in the standard library: - * The *note asyncio: 9. module has received new features, significant + * The *note asyncio: a. module has received new features, significant usability and performance improvements, and a fair amount of bug fixes. Starting with Python 3.6 the ‘asyncio’ module is no longer provisional and its API is considered stable. - * A new *note file system path protocol: 5ca. has been implemented to - support *note path-like objects: 474. All standard library + * A new *note file system path protocol: 4be. has been implemented to + support *note path-like objects: 35b. All standard library functions operating on paths have been updated to work with the new protocol. - * The *note datetime: 30. module has gained support for *note Local - Time Disambiguation: 5cb. + * The *note datetime: 31. module has gained support for *note Local + Time Disambiguation: 4bf. - * The *note typing: 122. module received a number of *note - improvements: 5cc. + * The *note typing: 11a. module received a number of *note + improvements: 4c0. - * The *note tracemalloc: 11d. module has been significantly reworked + * The *note tracemalloc: 115. module has been significantly reworked and is now used to provide better output for *note ResourceWarning: - 5cd. as well as provide better diagnostics for memory allocation - errors. See the *note PYTHONMALLOC section: 5c9. for more + 4c1. as well as provide better diagnostics for memory allocation + errors. See the *note PYTHONMALLOC section: 4bd. for more information. Security improvements: - * The new *note secrets: e4. module has been added to simplify the + * The new *note secrets: e5. module has been added to simplify the generation of cryptographically strong pseudo-random numbers suitable for managing secrets such as account authentication, tokens, and similar. - * On Linux, *note os.urandom(): 5ce. now blocks until the system + * On Linux, *note os.urandom(): 4c2. now blocks until the system urandom entropy pool is initialized to increase the security. See the PEP 524(3) for the rationale. - * The *note hashlib: 8c. and *note ssl: f3. modules now support + * The *note hashlib: 8d. and *note ssl: f4. modules now support OpenSSL 1.1.0. - * The default settings and feature set of the *note ssl: f3. module + * The default settings and feature set of the *note ssl: f4. module have been improved. - * The *note hashlib: 8c. module received support for the BLAKE2, - SHA-3 and SHAKE hash algorithms and the *note scrypt(): 5cf. key + * The *note hashlib: 8d. module received support for the BLAKE2, + SHA-3 and SHAKE hash algorithms and the *note scrypt(): 4c3. key derivation function. Windows improvements: - * *note PEP 528: 5d0. and *note PEP 529: 5d1, Windows filesystem and + * *note PEP 528: 4c4. and *note PEP 529: 4c5, Windows filesystem and console encoding changed to UTF-8. * The ‘py.exe’ launcher, when used interactively, no longer prefers @@ -16993,14 +14415,14 @@ Windows improvements: * ‘python.exe’ and ‘pythonw.exe’ have been marked as long-path aware, which means that the 260 character path limit may no longer apply. - See *note removing the MAX_PATH limitation: 5d2. for details. + See *note removing the MAX_PATH limitation: 4c6. for details. * A ‘._pth’ file can be added to force isolated mode and fully specify all search paths to avoid registry and environment lookup. - See *note the documentation: 5ad. for more information. + See *note the documentation: 4a1. for more information. * A ‘python36.zip’ file now works as a landmark to infer *note - PYTHONHOME: 5d3. See *note the documentation: 5ad. for more + PYTHONHOME: 4c7. See *note the documentation: 4a1. for more information. ---------- Footnotes ---------- @@ -17014,9 +14436,9 @@ https://morepypy.blogspot.com/2015/01/faster-more-memory-efficient-and-more.html (3) https://www.python.org/dev/peps/pep-0524  -File: python.info, Node: New Features<5>, Next: Other Language Changes<4>, Prev: Summary – Release highlights<3>, Up: What’s New In Python 3 6 +File: python.info, Node: New Features<3>, Next: Other Language Changes<3>, Prev: Summary – Release highlights<2>, Up: What’s New In Python 3 6 -1.4.2 New Features +1.3.2 New Features ------------------ * Menu: @@ -17040,19 +14462,19 @@ File: python.info, Node: New Features<5>, Next: Other Language Changes<4>, Pr * DTrace and SystemTap probing support::  -File: python.info, Node: PEP 498 Formatted string literals, Next: PEP 526 Syntax for variable annotations, Up: New Features<5> +File: python.info, Node: PEP 498 Formatted string literals, Next: PEP 526 Syntax for variable annotations, Up: New Features<3> -1.4.2.1 PEP 498: Formatted string literals +1.3.2.1 PEP 498: Formatted string literals .......................................... PEP 498(1) introduces a new kind of string literals: `f-strings', or -*note formatted string literals: 299. +*note formatted string literals: 15d. Formatted string literals are prefixed with ‘'f'’ and are similar to the -format strings accepted by *note str.format(): 5d7. They contain +format strings accepted by *note str.format(): 4cb. They contain replacement fields surrounded by curly braces. The replacement fields are expressions, which are evaluated at run time, and then formatted -using the *note format(): 5d8. protocol: +using the *note format(): 4cc. protocol: >>> name = "Fred" >>> f"He said his name is {name}." @@ -17070,7 +14492,7 @@ PEP 498(2) – Literal String Interpolation. PEP written and implemented by Eric V. Smith. -*note Feature documentation: 299. +*note Feature documentation: 15d. ---------- Footnotes ---------- @@ -17079,9 +14501,9 @@ PEP 498(2) – Literal String Interpolation. (2) https://www.python.org/dev/peps/pep-0498  -File: python.info, Node: PEP 526 Syntax for variable annotations, Next: PEP 515 Underscores in Numeric Literals, Prev: PEP 498 Formatted string literals, Up: New Features<5> +File: python.info, Node: PEP 526 Syntax for variable annotations, Next: PEP 515 Underscores in Numeric Literals, Prev: PEP 498 Formatted string literals, Up: New Features<3> -1.4.2.2 PEP 526: Syntax for variable annotations +1.3.2.2 PEP 526: Syntax for variable annotations ................................................ PEP 484(1) introduced the standard for type annotations of function @@ -17127,9 +14549,9 @@ etc. (4) https://github.com/google/pytype  -File: python.info, Node: PEP 515 Underscores in Numeric Literals, Next: PEP 525 Asynchronous Generators, Prev: PEP 526 Syntax for variable annotations, Up: New Features<5> +File: python.info, Node: PEP 515 Underscores in Numeric Literals, Next: PEP 525 Asynchronous Generators, Prev: PEP 526 Syntax for variable annotations, Up: New Features<3> -1.4.2.3 PEP 515: Underscores in Numeric Literals +1.3.2.3 PEP 515: Underscores in Numeric Literals ................................................ PEP 515(1) adds the ability to use underscores in numeric literals for @@ -17144,7 +14566,7 @@ Single underscores are allowed between digits and after any base specifier. Leading, trailing, or multiple underscores in a row are not allowed. -The *note string formatting: 5db. language also now has support for the +The *note string formatting: 4cf. language also now has support for the ‘'_'’ option to signal the use of an underscore for a thousands separator for floating point presentation types and for integer presentation type ‘'d'’. For integer presentation types ‘'b'’, ‘'o'’, @@ -17169,9 +14591,9 @@ PEP 515(2) – Underscores in Numeric Literals (2) https://www.python.org/dev/peps/pep-0515  -File: python.info, Node: PEP 525 Asynchronous Generators, Next: PEP 530 Asynchronous Comprehensions, Prev: PEP 515 Underscores in Numeric Literals, Up: New Features<5> +File: python.info, Node: PEP 525 Asynchronous Generators, Next: PEP 530 Asynchronous Comprehensions, Prev: PEP 515 Underscores in Numeric Literals, Up: New Features<3> -1.4.2.4 PEP 525: Asynchronous Generators +1.3.2.4 PEP 525: Asynchronous Generators ........................................ PEP 492(1) introduced support for native coroutines and ‘async’ / @@ -17202,9 +14624,9 @@ PEP 525(2) – Asynchronous Generators (2) https://www.python.org/dev/peps/pep-0525  -File: python.info, Node: PEP 530 Asynchronous Comprehensions, Next: PEP 487 Simpler customization of class creation, Prev: PEP 525 Asynchronous Generators, Up: New Features<5> +File: python.info, Node: PEP 530 Asynchronous Comprehensions, Next: PEP 487 Simpler customization of class creation, Prev: PEP 525 Asynchronous Generators, Up: New Features<3> -1.4.2.5 PEP 530: Asynchronous Comprehensions +1.3.2.5 PEP 530: Asynchronous Comprehensions ............................................ PEP 530(1) adds support for using ‘async for’ in list, set, dict @@ -17231,9 +14653,9 @@ PEP 530(2) – Asynchronous Comprehensions (2) https://www.python.org/dev/peps/pep-0530  -File: python.info, Node: PEP 487 Simpler customization of class creation, Next: PEP 487 Descriptor Protocol Enhancements, Prev: PEP 530 Asynchronous Comprehensions, Up: New Features<5> +File: python.info, Node: PEP 487 Simpler customization of class creation, Next: PEP 487 Descriptor Protocol Enhancements, Prev: PEP 530 Asynchronous Comprehensions, Up: New Features<3> -1.4.2.6 PEP 487: Simpler customization of class creation +1.3.2.6 PEP 487: Simpler customization of class creation ........................................................ It is now possible to customize subclass creation without using a @@ -17253,11 +14675,11 @@ the base class whenever a new subclass is created: class Plugin2(PluginBase): pass -In order to allow zero-argument *note super(): 5df. calls to work -correctly from *note __init_subclass__(): 5e0. implementations, custom +In order to allow zero-argument *note super(): 4d3. calls to work +correctly from *note __init_subclass__(): 4d4. implementations, custom metaclasses must ensure that the new ‘__classcell__’ namespace entry is propagated to ‘type.__new__’ (as described in *note Creating the class -object: 5e1.). +object: 4d5.). See also ........ @@ -17266,20 +14688,20 @@ PEP 487(1) – Simpler customization of class creation PEP written and implemented by Martin Teichmann. -*note Feature documentation: 5e2. +*note Feature documentation: 4d6. ---------- Footnotes ---------- (1) https://www.python.org/dev/peps/pep-0487  -File: python.info, Node: PEP 487 Descriptor Protocol Enhancements, Next: PEP 519 Adding a file system path protocol, Prev: PEP 487 Simpler customization of class creation, Up: New Features<5> +File: python.info, Node: PEP 487 Descriptor Protocol Enhancements, Next: PEP 519 Adding a file system path protocol, Prev: PEP 487 Simpler customization of class creation, Up: New Features<3> -1.4.2.7 PEP 487: Descriptor Protocol Enhancements +1.3.2.7 PEP 487: Descriptor Protocol Enhancements ................................................. PEP 487(1) extends the descriptor protocol to include the new optional -*note __set_name__(): 5e5. method. Whenever a new class is defined, the +*note __set_name__(): 4d9. method. Whenever a new class is defined, the new method will be called on all descriptors included in the definition, providing them with a reference to the class being defined and the name given to the descriptor within the class namespace. In other words, @@ -17309,7 +14731,7 @@ PEP 487(2) – Simpler customization of class creation PEP written and implemented by Martin Teichmann. -*note Feature documentation: 5e6. +*note Feature documentation: 4da. ---------- Footnotes ---------- @@ -17318,46 +14740,46 @@ PEP 487(2) – Simpler customization of class creation (2) https://www.python.org/dev/peps/pep-0487  -File: python.info, Node: PEP 519 Adding a file system path protocol, Next: PEP 495 Local Time Disambiguation, Prev: PEP 487 Descriptor Protocol Enhancements, Up: New Features<5> +File: python.info, Node: PEP 519 Adding a file system path protocol, Next: PEP 495 Local Time Disambiguation, Prev: PEP 487 Descriptor Protocol Enhancements, Up: New Features<3> -1.4.2.8 PEP 519: Adding a file system path protocol +1.3.2.8 PEP 519: Adding a file system path protocol ................................................... -File system paths have historically been represented as *note str: 205. -or *note bytes: 172. objects. This has led to people who write code +File system paths have historically been represented as *note str: 321. +or *note bytes: 322. objects. This has led to people who write code which operate on file system paths to assume that such objects are only -one of those two types (an *note int: 204. representing a file +one of those two types (an *note int: 171. representing a file descriptor does not count as that is not a file path). Unfortunately that assumption prevents alternative object representations of file -system paths like *note pathlib: c8. from working with pre-existing +system paths like *note pathlib: c9. from working with pre-existing code, including Python’s standard library. To fix this situation, a new interface represented by *note os.PathLike: -5e8. has been defined. By implementing the *note __fspath__(): 5e9. +4dc. has been defined. By implementing the *note __fspath__(): 4dd. method, an object signals that it represents a path. An object can then provide a low-level representation of a file system path as a *note str: -205. or *note bytes: 172. object. This means an object is considered -*note path-like: 474. if it implements *note os.PathLike: 5e8. or is a -*note str: 205. or *note bytes: 172. object which represents a file -system path. Code can use *note os.fspath(): 5ea, *note os.fsdecode(): -5eb, or *note os.fsencode(): 5ec. to explicitly get a *note str: 205. -and/or *note bytes: 172. representation of a path-like object. +321. or *note bytes: 322. object. This means an object is considered +*note path-like: 35b. if it implements *note os.PathLike: 4dc. or is a +*note str: 321. or *note bytes: 322. object which represents a file +system path. Code can use *note os.fspath(): 4de, *note os.fsdecode(): +4df, or *note os.fsencode(): 4e0. to explicitly get a *note str: 321. +and/or *note bytes: 322. representation of a path-like object. -The built-in *note open(): 16f. function has been updated to accept -*note os.PathLike: 5e8. objects, as have all relevant functions in the -*note os: c4. and *note os.path: c5. modules, and most other functions -and classes in the standard library. The *note os.DirEntry: 5ed. class -and relevant classes in *note pathlib: c8. have also been updated to -implement *note os.PathLike: 5e8. +The built-in *note open(): 4e1. function has been updated to accept +*note os.PathLike: 4dc. objects, as have all relevant functions in the +*note os: c5. and *note os.path: c6. modules, and most other functions +and classes in the standard library. The *note os.DirEntry: 4e2. class +and relevant classes in *note pathlib: c9. have also been updated to +implement *note os.PathLike: 4dc. The hope is that updating the fundamental functions for operating on file system paths will lead to third-party code to implicitly support -all *note path-like objects: 474. without any code changes, or at least -very minimal ones (e.g. calling *note os.fspath(): 5ea. at the +all *note path-like objects: 35b. without any code changes, or at least +very minimal ones (e.g. calling *note os.fspath(): 4de. at the beginning of code before operating on a path-like object). Here are some examples of how the new interface allows for *note -pathlib.Path: 332. to be used more easily and transparently with +pathlib.Path: 1ed. to be used more easily and transparently with pre-existing code: >>> import pathlib @@ -17388,9 +14810,9 @@ PEP 519(1) – Adding a file system path protocol (1) https://www.python.org/dev/peps/pep-0519  -File: python.info, Node: PEP 495 Local Time Disambiguation, Next: PEP 529 Change Windows filesystem encoding to UTF-8, Prev: PEP 519 Adding a file system path protocol, Up: New Features<5> +File: python.info, Node: PEP 495 Local Time Disambiguation, Next: PEP 529 Change Windows filesystem encoding to UTF-8, Prev: PEP 519 Adding a file system path protocol, Up: New Features<3> -1.4.2.9 PEP 495: Local Time Disambiguation +1.3.2.9 PEP 495: Local Time Disambiguation .......................................... In most world locations, there have been and will be times when local @@ -17401,7 +14823,7 @@ Python datetime instance) is insufficient to identify a particular moment in time. PEP 495(1) adds the new `fold' attribute to instances of *note -datetime.datetime: 1a0. and *note datetime.time: 5ef. classes to +datetime.datetime: 181. and *note datetime.time: 4e4. classes to differentiate between two moments in time for which local times are the same: @@ -17416,7 +14838,7 @@ same: 06:00:00 UTC = 01:00:00 EST 1 07:00:00 UTC = 02:00:00 EST 0 -The values of the *note fold: 5f0. attribute have the value ‘0’ for all +The values of the *note fold: 4e5. attribute have the value ‘0’ for all instances except those that represent the second (chronologically) moment in time in an ambiguous case. @@ -17435,9 +14857,9 @@ PEP 495(2) – Local Time Disambiguation (2) https://www.python.org/dev/peps/pep-0495  -File: python.info, Node: PEP 529 Change Windows filesystem encoding to UTF-8, Next: PEP 528 Change Windows console encoding to UTF-8, Prev: PEP 495 Local Time Disambiguation, Up: New Features<5> +File: python.info, Node: PEP 529 Change Windows filesystem encoding to UTF-8, Next: PEP 528 Change Windows console encoding to UTF-8, Prev: PEP 495 Local Time Disambiguation, Up: New Features<3> -1.4.2.10 PEP 529: Change Windows filesystem encoding to UTF-8 +1.3.2.10 PEP 529: Change Windows filesystem encoding to UTF-8 ............................................................. Representing filesystem paths is best performed with str (Unicode) @@ -17447,14 +14869,14 @@ is sufficient and correct. Prior to Python 3.6, data loss could result when using bytes paths on Windows. With this change, using bytes to represent paths is now supported on Windows, provided those bytes are encoded with the encoding -returned by *note sys.getfilesystemencoding(): 5f2, which now defaults +returned by *note sys.getfilesystemencoding(): 4e7, which now defaults to ‘'utf-8'’. Applications that do not use str to represent paths should use *note -os.fsencode(): 5ec. and *note os.fsdecode(): 5eb. to ensure their bytes +os.fsencode(): 4e0. and *note os.fsdecode(): 4df. to ensure their bytes are correctly encoded. To revert to the previous behaviour, set *note -PYTHONLEGACYWINDOWSFSENCODING: 5f3. or call *note -sys._enablelegacywindowsfsencoding(): 5f4. +PYTHONLEGACYWINDOWSFSENCODING: 4e8. or call *note +sys._enablelegacywindowsfsencoding(): 4e9. See PEP 529(1) for more information and discussion of code modifications that may be required. @@ -17464,9 +14886,9 @@ that may be required. (1) https://www.python.org/dev/peps/pep-0529  -File: python.info, Node: PEP 528 Change Windows console encoding to UTF-8, Next: PEP 520 Preserving Class Attribute Definition Order, Prev: PEP 529 Change Windows filesystem encoding to UTF-8, Up: New Features<5> +File: python.info, Node: PEP 528 Change Windows console encoding to UTF-8, Next: PEP 520 Preserving Class Attribute Definition Order, Prev: PEP 529 Change Windows filesystem encoding to UTF-8, Up: New Features<3> -1.4.2.11 PEP 528: Change Windows console encoding to UTF-8 +1.3.2.11 PEP 528: Change Windows console encoding to UTF-8 .......................................................... The default console on Windows will now accept all Unicode characters @@ -17475,7 +14897,7 @@ and provide correctly read str objects to Python code. ‘sys.stdin’, This change only applies when using an interactive console, and not when redirecting files or pipes. To revert to the previous behaviour for -interactive console use, set *note PYTHONLEGACYWINDOWSSTDIO: 5f6. +interactive console use, set *note PYTHONLEGACYWINDOWSSTDIO: 4eb. See also ........ @@ -17489,17 +14911,17 @@ PEP 528(1) – Change Windows console encoding to UTF-8 (1) https://www.python.org/dev/peps/pep-0528  -File: python.info, Node: PEP 520 Preserving Class Attribute Definition Order, Next: PEP 468 Preserving Keyword Argument Order, Prev: PEP 528 Change Windows console encoding to UTF-8, Up: New Features<5> +File: python.info, Node: PEP 520 Preserving Class Attribute Definition Order, Next: PEP 468 Preserving Keyword Argument Order, Prev: PEP 528 Change Windows console encoding to UTF-8, Up: New Features<3> -1.4.2.12 PEP 520: Preserving Class Attribute Definition Order +1.3.2.12 PEP 520: Preserving Class Attribute Definition Order ............................................................. Attributes in a class definition body have a natural ordering: the same order in which the names appear in the source. This order is now -preserved in the new class’s *note __dict__: 5f8. attribute. +preserved in the new class’s *note __dict__: 4ed. attribute. Also, the effective default class `execution' namespace (returned from -*note type.__prepare__(): 5f9.) is now an insertion-order-preserving +*note type.__prepare__(): 4ee.) is now an insertion-order-preserving mapping. See also @@ -17514,9 +14936,9 @@ PEP 520(1) – Preserving Class Attribute Definition Order (1) https://www.python.org/dev/peps/pep-0520  -File: python.info, Node: PEP 468 Preserving Keyword Argument Order, Next: New dict implementation, Prev: PEP 520 Preserving Class Attribute Definition Order, Up: New Features<5> +File: python.info, Node: PEP 468 Preserving Keyword Argument Order, Next: New dict implementation, Prev: PEP 520 Preserving Class Attribute Definition Order, Up: New Features<3> -1.4.2.13 PEP 468: Preserving Keyword Argument Order +1.3.2.13 PEP 468: Preserving Keyword Argument Order ................................................... ‘**kwargs’ in a function signature is now guaranteed to be an @@ -17534,14 +14956,14 @@ PEP 468(1) – Preserving Keyword Argument Order (1) https://www.python.org/dev/peps/pep-0468  -File: python.info, Node: New dict implementation, Next: PEP 523 Adding a frame evaluation API to CPython, Prev: PEP 468 Preserving Keyword Argument Order, Up: New Features<5> +File: python.info, Node: New dict implementation, Next: PEP 523 Adding a frame evaluation API to CPython, Prev: PEP 468 Preserving Keyword Argument Order, Up: New Features<3> -1.4.2.14 New dict implementation +1.3.2.14 New dict implementation ................................ -The *note dict: 410. type now uses a “compact” representation based on a +The *note dict: 2f0. type now uses a “compact” representation based on a proposal by Raymond Hettinger(1) which was first implemented by PyPy(2). -The memory usage of the new *note dict(): 164. is between 20% and 25% +The memory usage of the new *note dict(): 1a4. is between 20% and 25% smaller compared to Python 3.5. The order-preserving aspect of this new implementation is considered an @@ -17570,9 +14992,9 @@ https://morepypy.blogspot.com/2015/01/faster-more-memory-efficient-and-more.html https://mail.python.org/pipermail/python-dev/2012-December/123028.html  -File: python.info, Node: PEP 523 Adding a frame evaluation API to CPython, Next: PYTHONMALLOC environment variable, Prev: New dict implementation, Up: New Features<5> +File: python.info, Node: PEP 523 Adding a frame evaluation API to CPython, Next: PYTHONMALLOC environment variable, Prev: New dict implementation, Up: New Features<3> -1.4.2.15 PEP 523: Adding a frame evaluation API to CPython +1.3.2.15 PEP 523: Adding a frame evaluation API to CPython .......................................................... While Python provides extensive support to customize how code executes, @@ -17606,12 +15028,12 @@ PEP 523(2) – Adding a frame evaluation API to CPython (2) https://www.python.org/dev/peps/pep-0523  -File: python.info, Node: PYTHONMALLOC environment variable, Next: DTrace and SystemTap probing support, Prev: PEP 523 Adding a frame evaluation API to CPython, Up: New Features<5> +File: python.info, Node: PYTHONMALLOC environment variable, Next: DTrace and SystemTap probing support, Prev: PEP 523 Adding a frame evaluation API to CPython, Up: New Features<3> -1.4.2.16 PYTHONMALLOC environment variable +1.3.2.16 PYTHONMALLOC environment variable .......................................... -The new *note PYTHONMALLOC: 5ff. environment variable allows setting the +The new *note PYTHONMALLOC: 4f4. environment variable allows setting the Python memory allocators and installing debug hooks. It is now possible to install debug hooks on Python memory allocators on @@ -17623,21 +15045,21 @@ debug hooks: * Freed memory is filled with the byte ‘0xDB’ * Detect violations of the Python memory allocator API. For example, - *note PyObject_Free(): 600. called on a memory block allocated by - *note PyMem_Malloc(): 601. + *note PyObject_Free(): 4f5. called on a memory block allocated by + *note PyMem_Malloc(): 4f6. * Detect writes before the start of a buffer (buffer underflows) * Detect writes after the end of a buffer (buffer overflows) - * Check that the *note GIL: 602. is held when allocator functions of - *note PYMEM_DOMAIN_OBJ: 603. (ex: *note PyObject_Malloc(): 604.) - and *note PYMEM_DOMAIN_MEM: 605. (ex: *note PyMem_Malloc(): 601.) - domains are called. + * Check that the *note GIL: 4f7. is held when allocator functions of + ‘PYMEM_DOMAIN_OBJ’ (ex: *note PyObject_Malloc(): 4f8.) and + ‘PYMEM_DOMAIN_MEM’ (ex: *note PyMem_Malloc(): 4f6.) domains are + called. Checking if the GIL is held is also a new feature of Python 3.6. -See the *note PyMem_SetupDebugHooks(): 606. function for debug hooks on +See the *note PyMem_SetupDebugHooks(): 4f9. function for debug hooks on Python memory allocators. It is now also possible to force the usage of the ‘malloc()’ allocator @@ -17646,7 +15068,7 @@ of the C library for all Python memory allocations using debuggers like Valgrind on a Python compiled in release mode. On error, the debug hooks on Python memory allocators now use the *note -tracemalloc: 11d. module to get the traceback where a memory block was +tracemalloc: 115. module to get the traceback where a memory block was allocated. Example of fatal error on buffer overflow using ‘python3.6 -X @@ -17695,9 +15117,9 @@ tracemalloc=5’ (store 5 frames in traces): (2) https://bugs.python.org/issue26564  -File: python.info, Node: DTrace and SystemTap probing support, Prev: PYTHONMALLOC environment variable, Up: New Features<5> +File: python.info, Node: DTrace and SystemTap probing support, Prev: PYTHONMALLOC environment variable, Up: New Features<3> -1.4.2.17 DTrace and SystemTap probing support +1.3.2.17 DTrace and SystemTap probing support ............................................. Python can now be built ‘--with-dtrace’ which enables static markers for @@ -17714,7 +15136,7 @@ without the need to recompile specific debug builds or providing application-specific profiling/debugging code. More details in *note Instrumenting CPython with DTrace and SystemTap: -608. +4fb. The current implementation is tested on Linux and macOS. Additional markers may be added in the future. @@ -17727,30 +15149,30 @@ Cea Avión, David Malcolm, and Nikhil Benesch.) (1) https://bugs.python.org/issue21590  -File: python.info, Node: Other Language Changes<4>, Next: New Modules<4>, Prev: New Features<5>, Up: What’s New In Python 3 6 +File: python.info, Node: Other Language Changes<3>, Next: New Modules<3>, Prev: New Features<3>, Up: What’s New In Python 3 6 -1.4.3 Other Language Changes +1.3.3 Other Language Changes ---------------------------- Some smaller changes made to the core Python language are: * A ‘global’ or ‘nonlocal’ statement must now textually appear before the first use of the affected name in the same scope. Previously - this was a *note SyntaxWarning: 2cc. + this was a *note SyntaxWarning: 17e. - * It is now possible to set a *note special method: 60a. to ‘None’ to + * It is now possible to set a *note special method: 4fd. to ‘None’ to indicate that the corresponding operation is not available. For - example, if a class sets *note __iter__(): 60b. to ‘None’, the - class is not iterable. (Contributed by Andrew Barnert and Ivan - Levkivskyi in bpo-25958(1).) + example, if a class sets ‘__iter__()’ to ‘None’, the class is not + iterable. (Contributed by Andrew Barnert and Ivan Levkivskyi in + bpo-25958(1).) * Long sequences of repeated traceback lines are now abbreviated as ‘"[Previous line repeated {count} more times]"’ (see *note - traceback: 60c. for an example). (Contributed by Emanuel Barry in + traceback: 4fe. for an example). (Contributed by Emanuel Barry in bpo-26823(2).) - * Import now raises the new exception *note ModuleNotFoundError: 4a3. - (subclass of *note ImportError: 16c.) when it cannot find a module. + * Import now raises the new exception *note ModuleNotFoundError: 38b. + (subclass of *note ImportError: 325.) when it cannot find a module. Code that currently checks for ImportError (in try-except) will still work. (Contributed by Eric Snow in bpo-15767(3).) @@ -17769,9 +15191,9 @@ Some smaller changes made to the core Python language are: (4) https://bugs.python.org/issue23722  -File: python.info, Node: New Modules<4>, Next: Improved Modules<4>, Prev: Other Language Changes<4>, Up: What’s New In Python 3 6 +File: python.info, Node: New Modules<3>, Next: Improved Modules<3>, Prev: Other Language Changes<3>, Up: What’s New In Python 3 6 -1.4.4 New Modules +1.3.4 New Modules ----------------- * Menu: @@ -17779,19 +15201,19 @@ File: python.info, Node: New Modules<4>, Next: Improved Modules<4>, Prev: Oth * secrets::  -File: python.info, Node: secrets, Up: New Modules<4> +File: python.info, Node: secrets, Up: New Modules<3> -1.4.4.1 secrets +1.3.4.1 secrets ............... -The main purpose of the new *note secrets: e4. module is to provide an +The main purpose of the new *note secrets: e5. module is to provide an obvious way to reliably generate cryptographically strong pseudo-random values suitable for managing secrets, such as account authentication, tokens, and similar. Warning: Note that the pseudo-random generators in the *note - random: dc. module should `NOT' be used for security purposes. Use - *note secrets: e4. on Python 3.6+ and *note os.urandom(): 5ce. on + random: dd. module should `NOT' be used for security purposes. Use + *note secrets: e5. on Python 3.6+ and *note os.urandom(): 4c2. on Python 3.5 and earlier. See also @@ -17806,70 +15228,70 @@ PEP 506(1) – Adding A Secrets Module To The Standard Library (1) https://www.python.org/dev/peps/pep-0506  -File: python.info, Node: Improved Modules<4>, Next: Optimizations<4>, Prev: New Modules<4>, Up: What’s New In Python 3 6 +File: python.info, Node: Improved Modules<3>, Next: Optimizations<3>, Prev: New Modules<3>, Up: What’s New In Python 3 6 -1.4.5 Improved Modules +1.3.5 Improved Modules ---------------------- * Menu: * array:: -* ast: ast<3>. -* asyncio: asyncio<5>. +* ast: ast<2>. +* asyncio: asyncio<4>. * binascii: binascii<2>. * cmath:: * collections: collections<4>. -* concurrent.futures: concurrent futures<3>. +* concurrent.futures: concurrent futures<2>. * contextlib: contextlib<2>. -* datetime: datetime<4>. +* datetime: datetime<3>. * decimal: decimal<2>. -* distutils: distutils<3>. +* distutils: distutils<2>. * email:: * encodings:: * enum: enum<3>. * faulthandler:: * fileinput:: -* hashlib: hashlib<2>. +* hashlib:: * http.client: http client<2>. * idlelib and IDLE: idlelib and IDLE<2>. -* importlib: importlib<4>. -* inspect: inspect<3>. +* importlib: importlib<3>. +* inspect: inspect<2>. * json:: * logging: logging<3>. -* math: math<4>. -* multiprocessing: multiprocessing<4>. -* os: os<4>. -* pathlib: pathlib<4>. -* pdb: pdb<3>. +* math: math<3>. +* multiprocessing: multiprocessing<3>. +* os: os<3>. +* pathlib: pathlib<3>. +* pdb: pdb<2>. * pickle: pickle<2>. * pickletools:: -* pydoc: pydoc<3>. -* random: random<2>. +* pydoc: pydoc<2>. +* random:: * re: re<2>. * readline:: * rlcompleter:: * shlex: shlex<2>. * site:: * sqlite3: sqlite3<2>. -* socket: socket<5>. +* socket: socket<4>. * socketserver: socketserver<2>. * ssl: ssl<4>. * statistics: statistics<2>. * struct:: * subprocess: subprocess<2>. -* sys: sys<5>. +* sys: sys<4>. * telnetlib:: -* time: time<4>. +* time: time<3>. * timeit:: * tkinter: tkinter<3>. * traceback:: -* tracemalloc: tracemalloc<3>. -* typing: typing<4>. -* unicodedata: unicodedata<4>. +* tracemalloc: tracemalloc<2>. +* typing: typing<2>. +* unicodedata: unicodedata<3>. * unittest.mock: unittest mock<2>. * urllib.request: urllib request. * urllib.robotparser: urllib robotparser. -* venv: venv<3>. +* venv: venv<2>. * warnings: warnings<2>. * winreg:: * winsound:: @@ -17878,12 +15300,12 @@ File: python.info, Node: Improved Modules<4>, Next: Optimizations<4>, Prev: N * zlib::  -File: python.info, Node: array, Next: ast<3>, Up: Improved Modules<4> +File: python.info, Node: array, Next: ast<2>, Up: Improved Modules<3> -1.4.5.1 array +1.3.5.1 array ............. -Exhausted iterators of *note array.array: 216. will now stay exhausted +Exhausted iterators of *note array.array: 442. will now stay exhausted even if the iterated array is extended. This is consistent with the behavior of other mutable sequences. @@ -17894,13 +15316,13 @@ Contributed by Serhiy Storchaka in bpo-26492(1). (1) https://bugs.python.org/issue26492  -File: python.info, Node: ast<3>, Next: asyncio<5>, Prev: array, Up: Improved Modules<4> +File: python.info, Node: ast<2>, Next: asyncio<4>, Prev: array, Up: Improved Modules<3> -1.4.5.2 ast +1.3.5.2 ast ........... -The new *note ast.Constant: 3a9. AST node has been added. It can be -used by external AST optimizers for the purposes of constant folding. +The new ‘ast.Constant’ AST node has been added. It can be used by +external AST optimizers for the purposes of constant folding. Contributed by Victor Stinner in bpo-26146(1). @@ -17909,67 +15331,67 @@ Contributed by Victor Stinner in bpo-26146(1). (1) https://bugs.python.org/issue26146  -File: python.info, Node: asyncio<5>, Next: binascii<2>, Prev: ast<3>, Up: Improved Modules<4> +File: python.info, Node: asyncio<4>, Next: binascii<2>, Prev: ast<2>, Up: Improved Modules<3> -1.4.5.3 asyncio +1.3.5.3 asyncio ............... Starting with Python 3.6 the ‘asyncio’ module is no longer provisional and its API is considered stable. -Notable changes in the *note asyncio: 9. module since Python 3.5.0 (all +Notable changes in the *note asyncio: a. module since Python 3.5.0 (all backported to 3.5.x due to the provisional status): - * The *note get_event_loop(): 45f. function has been changed to + * The *note get_event_loop(): 346. function has been changed to always return the currently running loop when called from coroutines and callbacks. (Contributed by Yury Selivanov in bpo-28613(1).) - * The *note ensure_future(): 613. function and all functions that use - it, such as *note loop.run_until_complete(): 614, now accept all - kinds of *note awaitable objects: 615. (Contributed by Yury + * The *note ensure_future(): 505. function and all functions that use + it, such as *note loop.run_until_complete(): 506, now accept all + kinds of *note awaitable objects: 507. (Contributed by Yury Selivanov.) - * New *note run_coroutine_threadsafe(): 616. function to submit + * New *note run_coroutine_threadsafe(): 508. function to submit coroutines to event loops from other threads. (Contributed by Vincent Michel.) - * New *note Transport.is_closing(): 617. method to check if the + * New *note Transport.is_closing(): 509. method to check if the transport is closing or closed. (Contributed by Yury Selivanov.) - * The *note loop.create_server(): 467. method can now accept a list + * The *note loop.create_server(): 34e. method can now accept a list of hosts. (Contributed by Yann Sionneau.) - * New *note loop.create_future(): 618. method to create Future + * New *note loop.create_future(): 50a. method to create Future objects. This allows alternative event loop implementations, such - as uvloop(2), to provide a faster *note asyncio.Future: 548. + as uvloop(2), to provide a faster *note asyncio.Future: 433. implementation. (Contributed by Yury Selivanov in bpo-27041(3).) - * New *note loop.get_exception_handler(): 619. method to get the + * New *note loop.get_exception_handler(): 50b. method to get the current exception handler. (Contributed by Yury Selivanov in bpo-27040(4).) - * New *note StreamReader.readuntil(): 61a. method to read data from + * New *note StreamReader.readuntil(): 50c. method to read data from the stream until a separator bytes sequence appears. (Contributed by Mark Korenberg.) - * The performance of *note StreamReader.readexactly(): 61b. has been + * The performance of *note StreamReader.readexactly(): 50d. has been improved. (Contributed by Mark Korenberg in bpo-28370(5).) - * The *note loop.getaddrinfo(): 59e. method is optimized to avoid + * The *note loop.getaddrinfo(): 492. method is optimized to avoid calling the system ‘getaddrinfo’ function if the address is already resolved. (Contributed by A. Jesse Jiryu Davis.) - * The *note loop.stop(): 61c. method has been changed to stop the + * The *note loop.stop(): 50e. method has been changed to stop the loop immediately after the current iteration. Any new callbacks scheduled as a result of the last iteration will be discarded. (Contributed by Guido van Rossum in bpo-25593(6).) - * ‘Future.set_exception’ will now raise *note TypeError: 1fe. when - passed an instance of the *note StopIteration: 584. exception. + * ‘Future.set_exception’ will now raise *note TypeError: 17f. when + passed an instance of the *note StopIteration: 477. exception. (Contributed by Chris Angelico in bpo-26221(7).) - * New *note loop.connect_accepted_socket(): 46f. method to be used by + * New *note loop.connect_accepted_socket(): 356. method to be used by servers that accept connections outside of asyncio, but that use asyncio to handle them. (Contributed by Jim Fulton in bpo-27392(8).) @@ -17977,11 +15399,11 @@ backported to 3.5.x due to the provisional status): * ‘TCP_NODELAY’ flag is now set for all TCP transports by default. (Contributed by Yury Selivanov in bpo-27456(9).) - * New *note loop.shutdown_asyncgens(): 61d. to properly close pending + * New *note loop.shutdown_asyncgens(): 50f. to properly close pending asynchronous generators before closing the loop. (Contributed by Yury Selivanov in bpo-28003(10).) - * *note Future: 548. and *note Task: 2e3. classes now have an + * *note Future: 433. and *note Task: 199. classes now have an optimized C implementation which makes asyncio code up to 30% faster. (Contributed by Yury Selivanov and INADA Naoki in bpo-26081(11) and bpo-28544(12).) @@ -18013,12 +15435,12 @@ backported to 3.5.x due to the provisional status): (12) https://bugs.python.org/issue28544  -File: python.info, Node: binascii<2>, Next: cmath, Prev: asyncio<5>, Up: Improved Modules<4> +File: python.info, Node: binascii<2>, Next: cmath, Prev: asyncio<4>, Up: Improved Modules<3> -1.4.5.4 binascii +1.3.5.4 binascii ................ -The *note b2a_base64(): 61f. function now accepts an optional `newline' +The *note b2a_base64(): 511. function now accepts an optional `newline' keyword argument to control whether the newline character is appended to the return value. (Contributed by Victor Stinner in bpo-25357(1).) @@ -18027,17 +15449,17 @@ the return value. (Contributed by Victor Stinner in bpo-25357(1).) (1) https://bugs.python.org/issue25357  -File: python.info, Node: cmath, Next: collections<4>, Prev: binascii<2>, Up: Improved Modules<4> +File: python.info, Node: cmath, Next: collections<4>, Prev: binascii<2>, Up: Improved Modules<3> -1.4.5.5 cmath +1.3.5.5 cmath ............. -The new *note cmath.tau: 621. (`τ') constant has been added. +The new *note cmath.tau: 513. (`τ') constant has been added. (Contributed by Lisa Roach in bpo-12345(1), see PEP 628(2) for details.) -New constants: *note cmath.inf: 622. and *note cmath.nan: 623. to match -*note math.inf: 624. and *note math.nan: 625, and also *note cmath.infj: -626. and *note cmath.nanj: 627. to match the format used by complex +New constants: *note cmath.inf: 514. and *note cmath.nan: 515. to match +*note math.inf: 516. and *note math.nan: 517, and also *note cmath.infj: +518. and *note cmath.nanj: 519. to match the format used by complex repr. (Contributed by Mark Dickinson in bpo-23229(3).) ---------- Footnotes ---------- @@ -18049,32 +15471,32 @@ repr. (Contributed by Mark Dickinson in bpo-23229(3).) (3) https://bugs.python.org/issue23229  -File: python.info, Node: collections<4>, Next: concurrent futures<3>, Prev: cmath, Up: Improved Modules<4> +File: python.info, Node: collections<4>, Next: concurrent futures<2>, Prev: cmath, Up: Improved Modules<3> -1.4.5.6 collections +1.3.5.6 collections ................... -The new *note Collection: 629. abstract base class has been added to +The new *note Collection: 51b. abstract base class has been added to represent sized iterable container classes. (Contributed by Ivan Levkivskyi, docs by Neil Girdhar in bpo-27598(1).) -The new *note Reversible: 62a. abstract base class represents iterable -classes that also provide the *note __reversed__(): 62b. method. -(Contributed by Ivan Levkivskyi in bpo-25987(2).) +The new *note Reversible: 51c. abstract base class represents iterable +classes that also provide the ‘__reversed__()’ method. (Contributed by +Ivan Levkivskyi in bpo-25987(2).) -The new *note AsyncGenerator: 62c. abstract base class represents +The new *note AsyncGenerator: 51d. abstract base class represents asynchronous generators. (Contributed by Yury Selivanov in bpo-28720(3).) -The *note namedtuple(): 1a1. function now accepts an optional keyword +The *note namedtuple(): 1a3. function now accepts an optional keyword argument `module', which, when specified, is used for the ‘__module__’ attribute of the returned named tuple class. (Contributed by Raymond Hettinger in bpo-17941(4).) -The `verbose' and `rename' arguments for *note namedtuple(): 1a1. are +The `verbose' and `rename' arguments for *note namedtuple(): 1a3. are now keyword-only. (Contributed by Raymond Hettinger in bpo-25628(5).) -Recursive *note collections.deque: 62d. instances can now be pickled. +Recursive *note collections.deque: 51e. instances can now be pickled. (Contributed by Serhiy Storchaka in bpo-26482(6).) ---------- Footnotes ---------- @@ -18092,12 +15514,12 @@ Recursive *note collections.deque: 62d. instances can now be pickled. (6) https://bugs.python.org/issue26482  -File: python.info, Node: concurrent futures<3>, Next: contextlib<2>, Prev: collections<4>, Up: Improved Modules<4> +File: python.info, Node: concurrent futures<2>, Next: contextlib<2>, Prev: collections<4>, Up: Improved Modules<3> -1.4.5.7 concurrent.futures +1.3.5.7 concurrent.futures .......................... -The *note ThreadPoolExecutor: 18c. class constructor now accepts an +The *note ThreadPoolExecutor: 266. class constructor now accepts an optional `thread_name_prefix' argument to make it possible to customize the names of the threads created by the pool. (Contributed by Gregory P. Smith in bpo-27664(1).) @@ -18107,45 +15529,45 @@ P. Smith in bpo-27664(1).) (1) https://bugs.python.org/issue27664  -File: python.info, Node: contextlib<2>, Next: datetime<4>, Prev: concurrent futures<3>, Up: Improved Modules<4> +File: python.info, Node: contextlib<2>, Next: datetime<3>, Prev: concurrent futures<2>, Up: Improved Modules<3> -1.4.5.8 contextlib +1.3.5.8 contextlib .................. -The *note contextlib.AbstractContextManager: 630. class has been added +The *note contextlib.AbstractContextManager: 521. class has been added to provide an abstract base class for context managers. It provides a sensible default implementation for ‘__enter__()’ which returns ‘self’ and leaves ‘__exit__()’ an abstract method. A matching class has been -added to the *note typing: 122. module as *note typing.ContextManager: -631. (Contributed by Brett Cannon in bpo-25609(1).) +added to the *note typing: 11a. module as *note typing.ContextManager: +522. (Contributed by Brett Cannon in bpo-25609(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue25609  -File: python.info, Node: datetime<4>, Next: decimal<2>, Prev: contextlib<2>, Up: Improved Modules<4> +File: python.info, Node: datetime<3>, Next: decimal<2>, Prev: contextlib<2>, Up: Improved Modules<3> -1.4.5.9 datetime +1.3.5.9 datetime ................ -The *note datetime: 1a0. and *note time: 5ef. classes have the new +The *note datetime: 181. and *note time: 4e4. classes have the new ‘fold’ attribute used to disambiguate local time when necessary. Many -functions in the *note datetime: 30. have been updated to support local -time disambiguation. See *note Local Time Disambiguation: 5cb. section +functions in the *note datetime: 31. have been updated to support local +time disambiguation. See *note Local Time Disambiguation: 4bf. section for more information. (Contributed by Alexander Belopolsky in bpo-24773(1).) -The *note datetime.strftime(): 633. and *note date.strftime(): 634. +The *note datetime.strftime(): 524. and *note date.strftime(): 525. methods now support ISO 8601 date directives ‘%G’, ‘%u’ and ‘%V’. (Contributed by Ashley Anderson in bpo-12006(2).) -The *note datetime.isoformat(): 489. function now accepts an optional +The *note datetime.isoformat(): 370. function now accepts an optional `timespec' argument that specifies the number of additional components of the time value to include. (Contributed by Alessandro Cucci and Alexander Belopolsky in bpo-19475(3).) -The *note datetime.combine(): 635. now accepts an optional `tzinfo' +The *note datetime.combine(): 526. now accepts an optional `tzinfo' argument. (Contributed by Alexander Belopolsky in bpo-27661(4).) ---------- Footnotes ---------- @@ -18159,13 +15581,13 @@ argument. (Contributed by Alexander Belopolsky in bpo-27661(4).) (4) https://bugs.python.org/issue27661  -File: python.info, Node: decimal<2>, Next: distutils<3>, Prev: datetime<4>, Up: Improved Modules<4> +File: python.info, Node: decimal<2>, Next: distutils<2>, Prev: datetime<3>, Up: Improved Modules<3> -1.4.5.10 decimal +1.3.5.10 decimal ................ -New *note Decimal.as_integer_ratio(): 637. method that returns a pair -‘(n, d)’ of integers that represent the given *note Decimal: 2c3. +New *note Decimal.as_integer_ratio(): 528. method that returns a pair +‘(n, d)’ of integers that represent the given *note Decimal: 175. instance as a fraction, in lowest terms and with a positive denominator: >>> Decimal('-3.14').as_integer_ratio() @@ -18178,9 +15600,9 @@ instance as a fraction, in lowest terms and with a positive denominator: (1) https://bugs.python.org/issue25928  -File: python.info, Node: distutils<3>, Next: email, Prev: decimal<2>, Up: Improved Modules<4> +File: python.info, Node: distutils<2>, Next: email, Prev: decimal<2>, Up: Improved Modules<3> -1.4.5.11 distutils +1.3.5.11 distutils .................. The ‘default_format’ attribute has been removed from @@ -18194,27 +15616,27 @@ details. (1) https://bugs.python.org/issue27819  -File: python.info, Node: email, Next: encodings, Prev: distutils<3>, Up: Improved Modules<4> +File: python.info, Node: email, Next: encodings, Prev: distutils<2>, Up: Improved Modules<3> -1.4.5.12 email +1.3.5.12 email .............. The new email API, enabled via the `policy' keyword to various -constructors, is no longer provisional. The *note email: 67. +constructors, is no longer provisional. The *note email: 69. documentation has been reorganized and rewritten to focus on the new API, while retaining the old documentation for the legacy API. (Contributed by R. David Murray in bpo-24277(1).) -The *note email.mime: 71. classes now all accept an optional `policy' +The *note email.mime: 73. classes now all accept an optional `policy' keyword. (Contributed by Berker Peksag in bpo-27331(2).) -The *note DecodedGenerator: 63a. now supports the `policy' keyword. +The *note DecodedGenerator: 52b. now supports the `policy' keyword. -There is a new *note policy: 73. attribute, *note message_factory: 63b, +There is a new *note policy: 75. attribute, *note message_factory: 52c, that controls what class is used by default when the parser creates new -message objects. For the *note email.policy.compat32: 63c. policy this -is *note Message: 63d, for the new policies it is *note EmailMessage: -63e. (Contributed by R. David Murray in bpo-20476(3).) +message objects. For the *note email.policy.compat32: 52d. policy this +is *note Message: 52e, for the new policies it is *note EmailMessage: +52f. (Contributed by R. David Murray in bpo-20476(3).) ---------- Footnotes ---------- @@ -18225,9 +15647,9 @@ is *note Message: 63d, for the new policies it is *note EmailMessage: (3) https://bugs.python.org/issue20476  -File: python.info, Node: encodings, Next: enum<3>, Prev: email, Up: Improved Modules<4> +File: python.info, Node: encodings, Next: enum<3>, Prev: email, Up: Improved Modules<3> -1.4.5.13 encodings +1.3.5.13 encodings .................. On Windows, added the ‘'oem'’ encoding to use ‘CP_OEMCP’, and the @@ -18239,20 +15661,20 @@ On Windows, added the ‘'oem'’ encoding to use ‘CP_OEMCP’, and the (1) https://bugs.python.org/issue27959  -File: python.info, Node: enum<3>, Next: faulthandler, Prev: encodings, Up: Improved Modules<4> +File: python.info, Node: enum<3>, Next: faulthandler, Prev: encodings, Up: Improved Modules<3> -1.4.5.14 enum +1.3.5.14 enum ............. -Two new enumeration base classes have been added to the *note enum: 79. -module: *note Flag: 641. and ‘IntFlags’. Both are used to define +Two new enumeration base classes have been added to the *note enum: 7b. +module: *note Flag: 532. and ‘IntFlags’. Both are used to define constants that can be combined using the bitwise operators. (Contributed by Ethan Furman in bpo-23591(1).) Many standard library modules have been updated to use the ‘IntFlags’ class for their constants. -The new *note enum.auto: 642. value can be used to assign values to enum +The new *note enum.auto: 533. value can be used to assign values to enum members automatically: >>> from enum import Enum, auto @@ -18269,13 +15691,13 @@ members automatically: (1) https://bugs.python.org/issue23591  -File: python.info, Node: faulthandler, Next: fileinput, Prev: enum<3>, Up: Improved Modules<4> +File: python.info, Node: faulthandler, Next: fileinput, Prev: enum<3>, Up: Improved Modules<3> -1.4.5.15 faulthandler +1.3.5.15 faulthandler ..................... -On Windows, the *note faulthandler: 7b. module now installs a handler -for Windows exceptions: see *note faulthandler.enable(): 644. +On Windows, the *note faulthandler: 7d. module now installs a handler +for Windows exceptions: see *note faulthandler.enable(): 535. (Contributed by Victor Stinner in bpo-23848(1).) ---------- Footnotes ---------- @@ -18283,12 +15705,12 @@ for Windows exceptions: see *note faulthandler.enable(): 644. (1) https://bugs.python.org/issue23848  -File: python.info, Node: fileinput, Next: hashlib<2>, Prev: faulthandler, Up: Improved Modules<4> +File: python.info, Node: fileinput, Next: hashlib, Prev: faulthandler, Up: Improved Modules<3> -1.4.5.16 fileinput +1.3.5.16 fileinput .................. -*note hook_encoded(): 646. now supports the `errors' argument. +*note hook_encoded(): 537. now supports the `errors' argument. (Contributed by Joseph Hackman in bpo-25788(1).) ---------- Footnotes ---------- @@ -18296,16 +15718,16 @@ File: python.info, Node: fileinput, Next: hashlib<2>, Prev: faulthandler, Up (1) https://bugs.python.org/issue25788  -File: python.info, Node: hashlib<2>, Next: http client<2>, Prev: fileinput, Up: Improved Modules<4> +File: python.info, Node: hashlib, Next: http client<2>, Prev: fileinput, Up: Improved Modules<3> -1.4.5.17 hashlib +1.3.5.17 hashlib ................ -*note hashlib: 8c. supports OpenSSL 1.1.0. The minimum recommend +*note hashlib: 8d. supports OpenSSL 1.1.0. The minimum recommend version is 1.0.2. (Contributed by Christian Heimes in bpo-26470(1).) -BLAKE2 hash functions were added to the module. *note blake2b(): 648. -and *note blake2s(): 649. are always available and support the full +BLAKE2 hash functions were added to the module. *note blake2b(): 539. +and *note blake2s(): 53a. are always available and support the full feature set of BLAKE2. (Contributed by Christian Heimes in bpo-26798(2) based on code by Dmitry Chestnykh and Samuel Neves. Documentation written by Dmitry Chestnykh.) @@ -18316,7 +15738,7 @@ were added. (Contributed by Christian Heimes in bpo-16113(3). Keccak Code Package by Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche, and Ronny Van Keer.) -The password-based key derivation function *note scrypt(): 5cf. is now +The password-based key derivation function *note scrypt(): 4c3. is now available with OpenSSL 1.1.0 and newer. (Contributed by Christian Heimes in bpo-27928(4).) @@ -18331,12 +15753,12 @@ Heimes in bpo-27928(4).) (4) https://bugs.python.org/issue27928  -File: python.info, Node: http client<2>, Next: idlelib and IDLE<2>, Prev: hashlib<2>, Up: Improved Modules<4> +File: python.info, Node: http client<2>, Next: idlelib and IDLE<2>, Prev: hashlib, Up: Improved Modules<3> -1.4.5.18 http.client +1.3.5.18 http.client .................... -*note HTTPConnection.request(): 64b. and *note endheaders(): 64c. both +*note HTTPConnection.request(): 53c. and *note endheaders(): 53d. both now support chunked encoding request bodies. (Contributed by Demian Brecht and Rolf Krahl in bpo-12319(1).) @@ -18345,9 +15767,9 @@ Brecht and Rolf Krahl in bpo-12319(1).) (1) https://bugs.python.org/issue12319  -File: python.info, Node: idlelib and IDLE<2>, Next: importlib<4>, Prev: http client<2>, Up: Improved Modules<4> +File: python.info, Node: idlelib and IDLE<2>, Next: importlib<3>, Prev: http client<2>, Up: Improved Modules<3> -1.4.5.19 idlelib and IDLE +1.3.5.19 idlelib and IDLE ......................... The idlelib package is being modernized and refactored to make IDLE look @@ -18448,47 +15870,47 @@ bpo-1529353(11).) (11) https://bugs.python.org/issue1529353  -File: python.info, Node: importlib<4>, Next: inspect<3>, Prev: idlelib and IDLE<2>, Up: Improved Modules<4> +File: python.info, Node: importlib<3>, Next: inspect<2>, Prev: idlelib and IDLE<2>, Up: Improved Modules<3> -1.4.5.20 importlib +1.3.5.20 importlib .................. -Import now raises the new exception *note ModuleNotFoundError: 4a3. -(subclass of *note ImportError: 16c.) when it cannot find a module. +Import now raises the new exception *note ModuleNotFoundError: 38b. +(subclass of *note ImportError: 325.) when it cannot find a module. Code that current checks for ‘ImportError’ (in try-except) will still work. (Contributed by Eric Snow in bpo-15767(1).) -*note importlib.util.LazyLoader: 64f. now calls *note create_module(): -650. on the wrapped loader, removing the restriction that *note -importlib.machinery.BuiltinImporter: 651. and *note -importlib.machinery.ExtensionFileLoader: 652. couldn’t be used with -*note importlib.util.LazyLoader: 64f. +*note importlib.util.LazyLoader: 540. now calls *note create_module(): +541. on the wrapped loader, removing the restriction that *note +importlib.machinery.BuiltinImporter: 542. and *note +importlib.machinery.ExtensionFileLoader: 543. couldn’t be used with +*note importlib.util.LazyLoader: 540. -*note importlib.util.cache_from_source(): 653, *note -importlib.util.source_from_cache(): 654, and *note -importlib.util.spec_from_file_location(): 655. now accept a *note -path-like object: 474. +*note importlib.util.cache_from_source(): 544, *note +importlib.util.source_from_cache(): 545, and *note +importlib.util.spec_from_file_location(): 546. now accept a *note +path-like object: 35b. ---------- Footnotes ---------- (1) https://bugs.python.org/issue15767  -File: python.info, Node: inspect<3>, Next: json, Prev: importlib<4>, Up: Improved Modules<4> +File: python.info, Node: inspect<2>, Next: json, Prev: importlib<3>, Up: Improved Modules<3> -1.4.5.21 inspect +1.3.5.21 inspect ................ -The *note inspect.signature(): 657. function now reports the implicit +The *note inspect.signature(): 548. function now reports the implicit ‘.0’ parameters generated by the compiler for comprehension and generator expression scopes as if they were positional-only parameters called ‘implicit0’. (Contributed by Jelle Zijlstra in bpo-19611(1).) To reduce code churn when upgrading from Python 2.7 and the legacy *note -inspect.getargspec(): 658. API, the previously documented deprecation of -*note inspect.getfullargspec(): 659. has been reversed. While this +inspect.getargspec(): 549. API, the previously documented deprecation of +*note inspect.getfullargspec(): 54a. has been reversed. While this function is convenient for single/source Python 2/3 code bases, the -richer *note inspect.signature(): 657. interface remains the recommended +richer *note inspect.signature(): 548. interface remains the recommended approach for new code. (Contributed by Nick Coghlan in bpo-27172(2)) ---------- Footnotes ---------- @@ -18498,12 +15920,12 @@ approach for new code. (Contributed by Nick Coghlan in bpo-27172(2)) (2) https://bugs.python.org/issue27172  -File: python.info, Node: json, Next: logging<3>, Prev: inspect<3>, Up: Improved Modules<4> +File: python.info, Node: json, Next: logging<3>, Prev: inspect<2>, Up: Improved Modules<3> -1.4.5.22 json +1.3.5.22 json ............. -*note json.load(): 65b. and *note json.loads(): 225. now support binary +*note json.load(): 54c. and *note json.loads(): 54d. now support binary input. Encoded JSON should be represented using either UTF-8, UTF-16, or UTF-32. (Contributed by Serhiy Storchaka in bpo-17909(1).) @@ -18512,12 +15934,12 @@ or UTF-32. (Contributed by Serhiy Storchaka in bpo-17909(1).) (1) https://bugs.python.org/issue17909  -File: python.info, Node: logging<3>, Next: math<4>, Prev: json, Up: Improved Modules<4> +File: python.info, Node: logging<3>, Next: math<3>, Prev: json, Up: Improved Modules<3> -1.4.5.23 logging +1.3.5.23 logging ................ -The new *note WatchedFileHandler.reopenIfNeeded(): 65d. method has been +The new *note WatchedFileHandler.reopenIfNeeded(): 54f. method has been added to add the ability to check if the log file needs to be reopened. (Contributed by Marian Horban in bpo-24884(1).) @@ -18526,13 +15948,13 @@ added to add the ability to check if the log file needs to be reopened. (1) https://bugs.python.org/issue24884  -File: python.info, Node: math<4>, Next: multiprocessing<4>, Prev: logging<3>, Up: Improved Modules<4> +File: python.info, Node: math<3>, Next: multiprocessing<3>, Prev: logging<3>, Up: Improved Modules<3> -1.4.5.24 math +1.3.5.24 math ............. -The tau (`τ') constant has been added to the *note math: b1. and *note -cmath: 18. modules. (Contributed by Lisa Roach in bpo-12345(1), see PEP +The tau (`τ') constant has been added to the *note math: b2. and *note +cmath: 19. modules. (Contributed by Lisa Roach in bpo-12345(1), see PEP 628(2) for details.) ---------- Footnotes ---------- @@ -18542,12 +15964,12 @@ cmath: 18. modules. (Contributed by Lisa Roach in bpo-12345(1), see PEP (2) https://www.python.org/dev/peps/pep-0628  -File: python.info, Node: multiprocessing<4>, Next: os<4>, Prev: math<4>, Up: Improved Modules<4> +File: python.info, Node: multiprocessing<3>, Next: os<3>, Prev: math<3>, Up: Improved Modules<3> -1.4.5.25 multiprocessing +1.3.5.25 multiprocessing ........................ -*note Proxy Objects: 660. returned by ‘multiprocessing.Manager()’ can +*note Proxy Objects: 552. returned by ‘multiprocessing.Manager()’ can now be nested. (Contributed by Davin Potts in bpo-6766(1).) ---------- Footnotes ---------- @@ -18555,30 +15977,30 @@ now be nested. (Contributed by Davin Potts in bpo-6766(1).) (1) https://bugs.python.org/issue6766  -File: python.info, Node: os<4>, Next: pathlib<4>, Prev: multiprocessing<4>, Up: Improved Modules<4> +File: python.info, Node: os<3>, Next: pathlib<3>, Prev: multiprocessing<3>, Up: Improved Modules<3> -1.4.5.26 os +1.3.5.26 os ........... -See the summary of *note PEP 519: 5ca. for details on how the *note os: -c4. and *note os.path: c5. modules now support *note path-like objects: -474. +See the summary of *note PEP 519: 4be. for details on how the *note os: +c5. and *note os.path: c6. modules now support *note path-like objects: +35b. -*note scandir(): 38c. now supports *note bytes: 172. paths on Windows. +*note scandir(): 24b. now supports *note bytes: 322. paths on Windows. -A new *note close(): 662. method allows explicitly closing a *note -scandir(): 38c. iterator. The *note scandir(): 38c. iterator now -supports the *note context manager: 663. protocol. If a ‘scandir()’ +A new *note close(): 554. method allows explicitly closing a *note +scandir(): 24b. iterator. The *note scandir(): 24b. iterator now +supports the *note context manager: 555. protocol. If a ‘scandir()’ iterator is neither exhausted nor explicitly closed a *note -ResourceWarning: 5cd. will be emitted in its destructor. (Contributed +ResourceWarning: 4c1. will be emitted in its destructor. (Contributed by Serhiy Storchaka in bpo-25994(1).) -On Linux, *note os.urandom(): 5ce. now blocks until the system urandom +On Linux, *note os.urandom(): 4c2. now blocks until the system urandom entropy pool is initialized to increase the security. See the PEP 524(2) for the rationale. The Linux ‘getrandom()’ syscall (get random bytes) is now exposed as the -new *note os.getrandom(): 664. function. (Contributed by Victor +new *note os.getrandom(): 556. function. (Contributed by Victor Stinner, part of the PEP 524(3)) ---------- Footnotes ---------- @@ -18590,37 +16012,37 @@ Stinner, part of the PEP 524(3)) (3) https://www.python.org/dev/peps/pep-0524  -File: python.info, Node: pathlib<4>, Next: pdb<3>, Prev: os<4>, Up: Improved Modules<4> +File: python.info, Node: pathlib<3>, Next: pdb<2>, Prev: os<3>, Up: Improved Modules<3> -1.4.5.27 pathlib +1.3.5.27 pathlib ................ -*note pathlib: c8. now supports *note path-like objects: 474. +*note pathlib: c9. now supports *note path-like objects: 35b. (Contributed by Brett Cannon in bpo-27186(1).) -See the summary of *note PEP 519: 5ca. for details. +See the summary of *note PEP 519: 4be. for details. ---------- Footnotes ---------- (1) https://bugs.python.org/issue27186  -File: python.info, Node: pdb<3>, Next: pickle<2>, Prev: pathlib<4>, Up: Improved Modules<4> +File: python.info, Node: pdb<2>, Next: pickle<2>, Prev: pathlib<3>, Up: Improved Modules<3> -1.4.5.28 pdb +1.3.5.28 pdb ............ -The *note Pdb: 1d3. class constructor has a new optional `readrc' +The *note Pdb: 559. class constructor has a new optional `readrc' argument to control whether ‘.pdbrc’ files should be read.  -File: python.info, Node: pickle<2>, Next: pickletools, Prev: pdb<3>, Up: Improved Modules<4> +File: python.info, Node: pickle<2>, Next: pickletools, Prev: pdb<2>, Up: Improved Modules<3> -1.4.5.29 pickle +1.3.5.29 pickle ............... Objects that need ‘__new__’ called with keyword arguments can now be -pickled using *note pickle protocols: 668. older than protocol version +pickled using *note pickle protocols: 55b. older than protocol version 4. Protocol version 4 already supports this case. (Contributed by Serhiy Storchaka in bpo-24164(1).) @@ -18629,12 +16051,12 @@ Serhiy Storchaka in bpo-24164(1).) (1) https://bugs.python.org/issue24164  -File: python.info, Node: pickletools, Next: pydoc<3>, Prev: pickle<2>, Up: Improved Modules<4> +File: python.info, Node: pickletools, Next: pydoc<2>, Prev: pickle<2>, Up: Improved Modules<3> -1.4.5.30 pickletools +1.3.5.30 pickletools .................... -*note pickletools.dis(): 66a. now outputs the implicit memo index for +*note pickletools.dis(): 55d. now outputs the implicit memo index for the ‘MEMOIZE’ opcode. (Contributed by Serhiy Storchaka in bpo-25382(1).) @@ -18643,15 +16065,15 @@ bpo-25382(1).) (1) https://bugs.python.org/issue25382  -File: python.info, Node: pydoc<3>, Next: random<2>, Prev: pickletools, Up: Improved Modules<4> +File: python.info, Node: pydoc<2>, Next: random, Prev: pickletools, Up: Improved Modules<3> -1.4.5.31 pydoc +1.3.5.31 pydoc .............. -The *note pydoc: d9. module has learned to respect the ‘MANPAGER’ +The *note pydoc: da. module has learned to respect the ‘MANPAGER’ environment variable. (Contributed by Matthias Klose in bpo-8637(1).) -*note help(): 175. and *note pydoc: d9. can now list named tuple fields +*note help(): 55f. and *note pydoc: da. can now list named tuple fields in the order they were defined rather than alphabetically. (Contributed by Raymond Hettinger in bpo-24879(2).) @@ -18662,12 +16084,12 @@ by Raymond Hettinger in bpo-24879(2).) (2) https://bugs.python.org/issue24879  -File: python.info, Node: random<2>, Next: re<2>, Prev: pydoc<3>, Up: Improved Modules<4> +File: python.info, Node: random, Next: re<2>, Prev: pydoc<2>, Up: Improved Modules<3> -1.4.5.32 random +1.3.5.32 random ............... -The new *note choices(): 66d. function returns a list of elements of +The new *note choices(): 561. function returns a list of elements of specified size from the given population with optional weights. (Contributed by Raymond Hettinger in bpo-18844(1).) @@ -18676,9 +16098,9 @@ specified size from the given population with optional weights. (1) https://bugs.python.org/issue18844  -File: python.info, Node: re<2>, Next: readline, Prev: random<2>, Up: Improved Modules<4> +File: python.info, Node: re<2>, Next: readline, Prev: random, Up: Improved Modules<3> -1.4.5.33 re +1.3.5.33 re ........... Added support of modifier spans in regular expressions. Examples: @@ -18690,7 +16112,7 @@ Match object groups can be accessed by ‘__getitem__’, which is equivalent to ‘group()’. So ‘mo['name']’ is now equivalent to ‘mo.group('name')’. (Contributed by Eric Smith in bpo-24454(2).) -‘Match’ objects now support *note index-like objects: 2c5. as group +‘Match’ objects now support *note index-like objects: 177. as group indices. (Contributed by Jeroen Demeyer and Xiang Zhang in bpo-27177(3).) @@ -18703,12 +16125,12 @@ bpo-27177(3).) (3) https://bugs.python.org/issue27177  -File: python.info, Node: readline, Next: rlcompleter, Prev: re<2>, Up: Improved Modules<4> +File: python.info, Node: readline, Next: rlcompleter, Prev: re<2>, Up: Improved Modules<3> -1.4.5.34 readline +1.3.5.34 readline ................. -Added *note set_auto_history(): 670. to enable or disable automatic +Added *note set_auto_history(): 564. to enable or disable automatic addition of input to the history list. (Contributed by Tyler Crompton in bpo-26870(1).) @@ -18717,9 +16139,9 @@ in bpo-26870(1).) (1) https://bugs.python.org/issue26870  -File: python.info, Node: rlcompleter, Next: shlex<2>, Prev: readline, Up: Improved Modules<4> +File: python.info, Node: rlcompleter, Next: shlex<2>, Prev: readline, Up: Improved Modules<3> -1.4.5.35 rlcompleter +1.3.5.35 rlcompleter .................... Private and special attribute names now are omitted unless the prefix @@ -18734,12 +16156,12 @@ and bpo-25209(2).) (2) https://bugs.python.org/issue25209  -File: python.info, Node: shlex<2>, Next: site, Prev: rlcompleter, Up: Improved Modules<4> +File: python.info, Node: shlex<2>, Next: site, Prev: rlcompleter, Up: Improved Modules<3> -1.4.5.36 shlex +1.3.5.36 shlex .............. -The *note shlex: 673. has much *note improved shell compatibility: 674. +The *note shlex: 567. has much *note improved shell compatibility: 568. through the new `punctuation_chars' argument to control which characters are treated as punctuation. (Contributed by Vinay Sajip in bpo-1521950(1).) @@ -18749,12 +16171,12 @@ bpo-1521950(1).) (1) https://bugs.python.org/issue1521950  -File: python.info, Node: site, Next: sqlite3<2>, Prev: shlex<2>, Up: Improved Modules<4> +File: python.info, Node: site, Next: sqlite3<2>, Prev: shlex<2>, Up: Improved Modules<3> -1.4.5.37 site +1.3.5.37 site ............. -When specifying paths to add to *note sys.path: 260. in a ‘.pth’ file, +When specifying paths to add to *note sys.path: 479. in a ‘.pth’ file, you may now specify file paths on top of directories (e.g. zip files). (Contributed by Wolfgang Langner in bpo-26587(1)). @@ -18763,12 +16185,12 @@ you may now specify file paths on top of directories (e.g. zip files). (1) https://bugs.python.org/issue26587  -File: python.info, Node: sqlite3<2>, Next: socket<5>, Prev: site, Up: Improved Modules<4> +File: python.info, Node: sqlite3<2>, Next: socket<4>, Prev: site, Up: Improved Modules<3> -1.4.5.38 sqlite3 +1.3.5.38 sqlite3 ................ -*note sqlite3.Cursor.lastrowid: 677. now supports the ‘REPLACE’ +*note sqlite3.Cursor.lastrowid: 56b. now supports the ‘REPLACE’ statement. (Contributed by Alex LordThorsen in bpo-16864(1).) ---------- Footnotes ---------- @@ -18776,26 +16198,26 @@ statement. (Contributed by Alex LordThorsen in bpo-16864(1).) (1) https://bugs.python.org/issue16864  -File: python.info, Node: socket<5>, Next: socketserver<2>, Prev: sqlite3<2>, Up: Improved Modules<4> +File: python.info, Node: socket<4>, Next: socketserver<2>, Prev: sqlite3<2>, Up: Improved Modules<3> -1.4.5.39 socket +1.3.5.39 socket ............... -The *note ioctl(): 679. function now supports the *note -SIO_LOOPBACK_FAST_PATH: 67a. control code. (Contributed by Daniel +The *note ioctl(): 56d. function now supports the *note +SIO_LOOPBACK_FAST_PATH: 56e. control code. (Contributed by Daniel Stokes in bpo-26536(1).) -The *note getsockopt(): 67b. constants ‘SO_DOMAIN’, ‘SO_PROTOCOL’, +The *note getsockopt(): 56f. constants ‘SO_DOMAIN’, ‘SO_PROTOCOL’, ‘SO_PEERSEC’, and ‘SO_PASSSEC’ are now supported. (Contributed by Christian Heimes in bpo-26907(2).) -The *note setsockopt(): 67c. now supports the ‘setsockopt(level, +The *note setsockopt(): 570. now supports the ‘setsockopt(level, optname, None, optlen: int)’ form. (Contributed by Christian Heimes in bpo-27744(3).) -The socket module now supports the address family *note AF_ALG: 67d. to +The socket module now supports the address family *note AF_ALG: 571. to interface with Linux Kernel crypto API. ‘ALG_*’, ‘SOL_ALG’ and *note -sendmsg_afalg(): 67e. were added. (Contributed by Christian Heimes in +sendmsg_afalg(): 572. were added. (Contributed by Christian Heimes in bpo-27744(4) with support from Victor Stinner.) New Linux constants ‘TCP_USER_TIMEOUT’ and ‘TCP_CONGESTION’ were added. @@ -18812,19 +16234,19 @@ New Linux constants ‘TCP_USER_TIMEOUT’ and ‘TCP_CONGESTION’ were added. (4) https://bugs.python.org/issue27744  -File: python.info, Node: socketserver<2>, Next: ssl<4>, Prev: socket<5>, Up: Improved Modules<4> +File: python.info, Node: socketserver<2>, Next: ssl<4>, Prev: socket<4>, Up: Improved Modules<3> -1.4.5.40 socketserver +1.3.5.40 socketserver ..................... -Servers based on the *note socketserver: f0. module, including those -defined in *note http.server: 96, *note xmlrpc.server: 149. and *note -wsgiref.simple_server: 138, now support the *note context manager: 663. +Servers based on the *note socketserver: f1. module, including those +defined in *note http.server: 97, *note xmlrpc.server: 141. and *note +wsgiref.simple_server: 130, now support the *note context manager: 555. protocol. (Contributed by Aviv Palivoda in bpo-26404(1).) -The ‘wfile’ attribute of *note StreamRequestHandler: 680. classes now -implements the *note io.BufferedIOBase: 681. writable interface. In -particular, calling *note write(): 682. is now guaranteed to send the +The ‘wfile’ attribute of *note StreamRequestHandler: 574. classes now +implements the *note io.BufferedIOBase: 575. writable interface. In +particular, calling *note write(): 576. is now guaranteed to send the data in full. (Contributed by Martin Panter in bpo-26721(2).) ---------- Footnotes ---------- @@ -18834,34 +16256,34 @@ data in full. (Contributed by Martin Panter in bpo-26721(2).) (2) https://bugs.python.org/issue26721  -File: python.info, Node: ssl<4>, Next: statistics<2>, Prev: socketserver<2>, Up: Improved Modules<4> +File: python.info, Node: ssl<4>, Next: statistics<2>, Prev: socketserver<2>, Up: Improved Modules<3> -1.4.5.41 ssl +1.3.5.41 ssl ............ -*note ssl: f3. supports OpenSSL 1.1.0. The minimum recommend version is +*note ssl: f4. supports OpenSSL 1.1.0. The minimum recommend version is 1.0.2. (Contributed by Christian Heimes in bpo-26470(1).) 3DES has been removed from the default cipher suites and ChaCha20 Poly1305 cipher suites have been added. (Contributed by Christian Heimes in bpo-27850(2) and bpo-27766(3).) -*note SSLContext: 4ec. has better default configuration for options and +*note SSLContext: 3d5. has better default configuration for options and ciphers. (Contributed by Christian Heimes in bpo-28043(4).) SSL session can be copied from one client-side connection to another -with the new *note SSLSession: 684. class. TLS session resumption can +with the new *note SSLSession: 578. class. TLS session resumption can speed up the initial handshake, reduce latency and improve performance (Contributed by Christian Heimes in bpo-19500(5) based on a draft by Alex Warhawk.) -The new *note get_ciphers(): 685. method can be used to get a list of +The new *note get_ciphers(): 579. method can be used to get a list of enabled ciphers in order of cipher priority. -All constants and flags have been converted to *note IntEnum: 686. and +All constants and flags have been converted to *note IntEnum: 57a. and ‘IntFlags’. (Contributed by Christian Heimes in bpo-28025(6).) -Server and client-side specific TLS protocols for *note SSLContext: 4ec. +Server and client-side specific TLS protocols for *note SSLContext: 3d5. were added. (Contributed by Christian Heimes in bpo-28085(7).) ---------- Footnotes ---------- @@ -18881,12 +16303,12 @@ were added. (Contributed by Christian Heimes in bpo-28085(7).) (7) https://bugs.python.org/issue28085  -File: python.info, Node: statistics<2>, Next: struct, Prev: ssl<4>, Up: Improved Modules<4> +File: python.info, Node: statistics<2>, Next: struct, Prev: ssl<4>, Up: Improved Modules<3> -1.4.5.42 statistics +1.3.5.42 statistics ................... -A new *note harmonic_mean(): 688. function has been added. (Contributed +A new *note harmonic_mean(): 57c. function has been added. (Contributed by Steven D’Aprano in bpo-27181(1).) ---------- Footnotes ---------- @@ -18894,12 +16316,12 @@ by Steven D’Aprano in bpo-27181(1).) (1) https://bugs.python.org/issue27181  -File: python.info, Node: struct, Next: subprocess<2>, Prev: statistics<2>, Up: Improved Modules<4> +File: python.info, Node: struct, Next: subprocess<2>, Prev: statistics<2>, Up: Improved Modules<3> -1.4.5.43 struct +1.3.5.43 struct ............... -*note struct: f8. now supports IEEE 754 half-precision floats via the +*note struct: f9. now supports IEEE 754 half-precision floats via the ‘'e'’ format specifier. (Contributed by Eli Stevens, Mark Dickinson in bpo-11734(1).) @@ -18908,18 +16330,18 @@ bpo-11734(1).) (1) https://bugs.python.org/issue11734  -File: python.info, Node: subprocess<2>, Next: sys<5>, Prev: struct, Up: Improved Modules<4> +File: python.info, Node: subprocess<2>, Next: sys<4>, Prev: struct, Up: Improved Modules<3> -1.4.5.44 subprocess +1.3.5.44 subprocess ................... -*note subprocess.Popen: 3de. destructor now emits a *note -ResourceWarning: 5cd. warning if the child process is still running. +*note subprocess.Popen: 2a4. destructor now emits a *note +ResourceWarning: 4c1. warning if the child process is still running. Use the context manager protocol (‘with proc: ...’) or explicitly call -the *note wait(): 68b. method to read the exit status of the child +the *note wait(): 57f. method to read the exit status of the child process. (Contributed by Victor Stinner in bpo-26741(1).) -The *note subprocess.Popen: 3de. constructor and all functions that pass +The *note subprocess.Popen: 2a4. constructor and all functions that pass arguments through to it now accept `encoding' and `errors' arguments. Specifying either of these will enable text mode for the `stdin', `stdout' and `stderr' streams. (Contributed by Steve Dower in @@ -18932,16 +16354,16 @@ bpo-6135(2).) (2) https://bugs.python.org/issue6135  -File: python.info, Node: sys<5>, Next: telnetlib, Prev: subprocess<2>, Up: Improved Modules<4> +File: python.info, Node: sys<4>, Next: telnetlib, Prev: subprocess<2>, Up: Improved Modules<3> -1.4.5.45 sys +1.3.5.45 sys ............ -The new *note getfilesystemencodeerrors(): 68d. function returns the +The new *note getfilesystemencodeerrors(): 581. function returns the name of the error mode used to convert between Unicode filenames and bytes filenames. (Contributed by Steve Dower in bpo-27781(1).) -On Windows the return value of the *note getwindowsversion(): 68e. +On Windows the return value of the *note getwindowsversion(): 582. function now includes the `platform_version' field which contains the accurate major version, minor version and build number of the current operating system, rather than the version that is being emulated for the @@ -18954,12 +16376,12 @@ process (Contributed by Steve Dower in bpo-27932(2).) (2) https://bugs.python.org/issue27932  -File: python.info, Node: telnetlib, Next: time<4>, Prev: sys<5>, Up: Improved Modules<4> +File: python.info, Node: telnetlib, Next: time<3>, Prev: sys<4>, Up: Improved Modules<3> -1.4.5.46 telnetlib +1.3.5.46 telnetlib .................. -*note Telnet: 690. is now a context manager (contributed by Stéphane +*note Telnet: 584. is now a context manager (contributed by Stéphane Wirtel in bpo-25485(1)). ---------- Footnotes ---------- @@ -18967,26 +16389,26 @@ Wirtel in bpo-25485(1)). (1) https://bugs.python.org/issue25485  -File: python.info, Node: time<4>, Next: timeit, Prev: telnetlib, Up: Improved Modules<4> +File: python.info, Node: time<3>, Next: timeit, Prev: telnetlib, Up: Improved Modules<3> -1.4.5.47 time +1.3.5.47 time ............. -The *note struct_time: 692. attributes ‘tm_gmtoff’ and ‘tm_zone’ are now +The *note struct_time: 586. attributes ‘tm_gmtoff’ and ‘tm_zone’ are now available on all platforms.  -File: python.info, Node: timeit, Next: tkinter<3>, Prev: time<4>, Up: Improved Modules<4> +File: python.info, Node: timeit, Next: tkinter<3>, Prev: time<3>, Up: Improved Modules<3> -1.4.5.48 timeit +1.3.5.48 timeit ............... -The new *note Timer.autorange(): 694. convenience method has been added -to call *note Timer.timeit(): 695. repeatedly so that the total run time +The new *note Timer.autorange(): 588. convenience method has been added +to call *note Timer.timeit(): 589. repeatedly so that the total run time is greater or equal to 200 milliseconds. (Contributed by Steven D’Aprano in bpo-6422(1).) -*note timeit: 10d. now warns when there is substantial (4x) variance +*note timeit: 10c. now warns when there is substantial (4x) variance between best and worst times. (Contributed by Serhiy Storchaka in bpo-23552(2).) @@ -18997,9 +16419,9 @@ bpo-23552(2).) (2) https://bugs.python.org/issue23552  -File: python.info, Node: tkinter<3>, Next: traceback, Prev: timeit, Up: Improved Modules<4> +File: python.info, Node: tkinter<3>, Next: traceback, Prev: timeit, Up: Improved Modules<3> -1.4.5.49 tkinter +1.3.5.49 tkinter ................ Added methods ‘trace_add()’, ‘trace_remove()’ and ‘trace_info()’ in the @@ -19013,9 +16435,9 @@ Serhiy Storchaka in bpo-22115(1)). (1) https://bugs.python.org/issue22115  -File: python.info, Node: traceback, Next: tracemalloc<3>, Prev: tkinter<3>, Up: Improved Modules<4> +File: python.info, Node: traceback, Next: tracemalloc<2>, Prev: tkinter<3>, Up: Improved Modules<3> -1.4.5.50 traceback +1.3.5.50 traceback .................. Both the traceback module and the interpreter’s builtin exception @@ -19040,15 +16462,15 @@ shown in the following example: (1) https://bugs.python.org/issue26823  -File: python.info, Node: tracemalloc<3>, Next: typing<4>, Prev: traceback, Up: Improved Modules<4> +File: python.info, Node: tracemalloc<2>, Next: typing<2>, Prev: traceback, Up: Improved Modules<3> -1.4.5.51 tracemalloc +1.3.5.51 tracemalloc .................... -The *note tracemalloc: 11d. module now supports tracing memory +The *note tracemalloc: 115. module now supports tracing memory allocations in multiple different address spaces. -The new *note DomainFilter: 699. filter class has been added to filter +The new *note DomainFilter: 58d. filter class has been added to filter block traces by their address space (domain). (Contributed by Victor Stinner in bpo-26588(1).) @@ -19058,38 +16480,38 @@ block traces by their address space (domain). (1) https://bugs.python.org/issue26588  -File: python.info, Node: typing<4>, Next: unicodedata<4>, Prev: tracemalloc<3>, Up: Improved Modules<4> +File: python.info, Node: typing<2>, Next: unicodedata<3>, Prev: tracemalloc<2>, Up: Improved Modules<3> -1.4.5.52 typing +1.3.5.52 typing ............... -Since the *note typing: 122. module is *note provisional: 456, all +Since the *note typing: 11a. module is *note provisional: 339, all changes introduced in Python 3.6 have also been backported to Python 3.5.x. -The *note typing: 122. module has a much improved support for generic +The *note typing: 11a. module has a much improved support for generic type aliases. For example ‘Dict[str, Tuple[S, T]]’ is now a valid type annotation. (Contributed by Guido van Rossum in Github #195(1).) -The *note typing.ContextManager: 631. class has been added for -representing *note contextlib.AbstractContextManager: 630. (Contributed +The *note typing.ContextManager: 522. class has been added for +representing *note contextlib.AbstractContextManager: 521. (Contributed by Brett Cannon in bpo-25609(2).) -The *note typing.Collection: 69b. class has been added for representing -*note collections.abc.Collection: 629. (Contributed by Ivan Levkivskyi +The *note typing.Collection: 58f. class has been added for representing +*note collections.abc.Collection: 51b. (Contributed by Ivan Levkivskyi in bpo-27598(3).) -The *note typing.ClassVar: 69c. type construct has been added to mark +The *note typing.ClassVar: 590. type construct has been added to mark class variables. As introduced in PEP 526(4), a variable annotation wrapped in ClassVar indicates that a given attribute is intended to be used as a class variable and should not be set on instances of that class. (Contributed by Ivan Levkivskyi in Github #280(5).) -A new *note TYPE_CHECKING: 69d. constant that is assumed to be ‘True’ by +A new *note TYPE_CHECKING: 591. constant that is assumed to be ‘True’ by the static type checkers, but is ‘False’ at runtime. (Contributed by Guido van Rossum in Github #230(6).) -A new *note NewType(): 69e. helper function has been added to create +A new *note NewType(): 592. helper function has been added to create lightweight distinct types for annotations: from typing import NewType @@ -19118,12 +16540,12 @@ of the original type. (Contributed by Ivan Levkivskyi in Github (7) https://github.com/python/typing/issues/189  -File: python.info, Node: unicodedata<4>, Next: unittest mock<2>, Prev: typing<4>, Up: Improved Modules<4> +File: python.info, Node: unicodedata<3>, Next: unittest mock<2>, Prev: typing<2>, Up: Improved Modules<3> -1.4.5.53 unicodedata +1.3.5.53 unicodedata .................... -The *note unicodedata: 123. module now uses data from Unicode 9.0.0(1). +The *note unicodedata: 11b. module now uses data from Unicode 9.0.0(1). (Contributed by Benjamin Peterson.) ---------- Footnotes ---------- @@ -19131,18 +16553,18 @@ The *note unicodedata: 123. module now uses data from Unicode 9.0.0(1). (1) http://unicode.org/versions/Unicode9.0.0/  -File: python.info, Node: unittest mock<2>, Next: urllib request, Prev: unicodedata<4>, Up: Improved Modules<4> +File: python.info, Node: unittest mock<2>, Next: urllib request, Prev: unicodedata<3>, Up: Improved Modules<3> -1.4.5.54 unittest.mock +1.3.5.54 unittest.mock ...................... -The *note Mock: 376. class has the following improvements: +The *note Mock: 235. class has the following improvements: - * Two new methods, *note Mock.assert_called(): 6a1. and *note - Mock.assert_called_once(): 6a2. to check if the mock object was + * Two new methods, *note Mock.assert_called(): 595. and *note + Mock.assert_called_once(): 596. to check if the mock object was called. (Contributed by Amit Saha in bpo-26323(1).) - * The *note Mock.reset_mock(): 6a3. method now has two optional + * The *note Mock.reset_mock(): 597. method now has two optional keyword only arguments: `return_value' and `side_effect'. (Contributed by Kushal Das in bpo-21271(2).) @@ -19153,9 +16575,9 @@ The *note Mock: 376. class has the following improvements: (2) https://bugs.python.org/issue21271  -File: python.info, Node: urllib request, Next: urllib robotparser, Prev: unittest mock<2>, Up: Improved Modules<4> +File: python.info, Node: urllib request, Next: urllib robotparser, Prev: unittest mock<2>, Up: Improved Modules<3> -1.4.5.55 urllib.request +1.3.5.55 urllib.request ....................... If a HTTP request has a file or iterable body (other than a bytes @@ -19168,12 +16590,12 @@ object) but no ‘Content-Length’ header, rather than throwing an error, (1) https://bugs.python.org/issue12319  -File: python.info, Node: urllib robotparser, Next: venv<3>, Prev: urllib request, Up: Improved Modules<4> +File: python.info, Node: urllib robotparser, Next: venv<2>, Prev: urllib request, Up: Improved Modules<3> -1.4.5.56 urllib.robotparser +1.3.5.56 urllib.robotparser ........................... -*note RobotFileParser: 6a6. now supports the ‘Crawl-delay’ and +*note RobotFileParser: 59a. now supports the ‘Crawl-delay’ and ‘Request-rate’ extensions. (Contributed by Nikolay Bogoychev in bpo-16099(1).) @@ -19182,12 +16604,12 @@ bpo-16099(1).) (1) https://bugs.python.org/issue16099  -File: python.info, Node: venv<3>, Next: warnings<2>, Prev: urllib robotparser, Up: Improved Modules<4> +File: python.info, Node: venv<2>, Next: warnings<2>, Prev: urllib robotparser, Up: Improved Modules<3> -1.4.5.57 venv +1.3.5.57 venv ............. -*note venv: 12e. accepts a new parameter ‘--prompt’. This parameter +*note venv: 126. accepts a new parameter ‘--prompt’. This parameter provides an alternative prefix for the virtual environment. (Proposed by Łukasz Balcerzak and ported to 3.6 by Stéphane Wirtel in bpo-22829(1).) @@ -19197,19 +16619,19 @@ bpo-22829(1).) (1) https://bugs.python.org/issue22829  -File: python.info, Node: warnings<2>, Next: winreg, Prev: venv<3>, Up: Improved Modules<4> +File: python.info, Node: warnings<2>, Next: winreg, Prev: venv<2>, Up: Improved Modules<3> -1.4.5.58 warnings +1.3.5.58 warnings ................. A new optional `source' parameter has been added to the *note -warnings.warn_explicit(): 6a9. function: the destroyed object which -emitted a *note ResourceWarning: 5cd. A `source' attribute has also +warnings.warn_explicit(): 59d. function: the destroyed object which +emitted a *note ResourceWarning: 4c1. A `source' attribute has also been added to ‘warnings.WarningMessage’ (contributed by Victor Stinner in bpo-26568(1) and bpo-26567(2)). -When a *note ResourceWarning: 5cd. warning is logged, the *note -tracemalloc: 11d. module is now used to try to retrieve the traceback +When a *note ResourceWarning: 4c1. warning is logged, the *note +tracemalloc: 115. module is now used to try to retrieve the traceback where the destroyed object was allocated. Example with the script ‘example.py’: @@ -19233,8 +16655,8 @@ Output of the command ‘python3.6 -Wd -X tracemalloc=5 example.py’: f = func() The “Object allocated at” traceback is new and is only displayed if -*note tracemalloc: 11d. is tracing Python memory allocations and if the -*note warnings: 12f. module was already imported. +*note tracemalloc: 115. is tracing Python memory allocations and if the +*note warnings: 127. module was already imported. ---------- Footnotes ---------- @@ -19243,12 +16665,12 @@ The “Object allocated at” traceback is new and is only displayed if (2) https://bugs.python.org/issue26567  -File: python.info, Node: winreg, Next: winsound, Prev: warnings<2>, Up: Improved Modules<4> +File: python.info, Node: winreg, Next: winsound, Prev: warnings<2>, Up: Improved Modules<3> -1.4.5.59 winreg +1.3.5.59 winreg ............... -Added the 64-bit integer type *note REG_QWORD: 6ab. (Contributed by +Added the 64-bit integer type *note REG_QWORD: 59f. (Contributed by Clement Rouault in bpo-23026(1).) ---------- Footnotes ---------- @@ -19256,25 +16678,25 @@ Clement Rouault in bpo-23026(1).) (1) https://bugs.python.org/issue23026  -File: python.info, Node: winsound, Next: xmlrpc client, Prev: winreg, Up: Improved Modules<4> +File: python.info, Node: winsound, Next: xmlrpc client, Prev: winreg, Up: Improved Modules<3> -1.4.5.60 winsound +1.3.5.60 winsound ................. -Allowed keyword arguments to be passed to *note Beep: 6ad, *note -MessageBeep: 6ae, and *note PlaySound: 6af. (bpo-27982(1)). +Allowed keyword arguments to be passed to *note Beep: 5a1, *note +MessageBeep: 5a2, and *note PlaySound: 5a3. (bpo-27982(1)). ---------- Footnotes ---------- (1) https://bugs.python.org/issue27982  -File: python.info, Node: xmlrpc client, Next: zipfile<2>, Prev: winsound, Up: Improved Modules<4> +File: python.info, Node: xmlrpc client, Next: zipfile<2>, Prev: winsound, Up: Improved Modules<3> -1.4.5.61 xmlrpc.client +1.3.5.61 xmlrpc.client ...................... -The *note xmlrpc.client: 148. module now supports unmarshalling +The *note xmlrpc.client: 140. module now supports unmarshalling additional data types used by the Apache XML-RPC implementation for numerics and ‘None’. (Contributed by Serhiy Storchaka in bpo-26885(1).) @@ -19283,18 +16705,18 @@ numerics and ‘None’. (Contributed by Serhiy Storchaka in bpo-26885(1).) (1) https://bugs.python.org/issue26885  -File: python.info, Node: zipfile<2>, Next: zlib, Prev: xmlrpc client, Up: Improved Modules<4> +File: python.info, Node: zipfile<2>, Next: zlib, Prev: xmlrpc client, Up: Improved Modules<3> -1.4.5.62 zipfile +1.3.5.62 zipfile ................ -A new *note ZipInfo.from_file(): 6b2. class method allows making a *note -ZipInfo: 6b3. instance from a filesystem file. A new *note -ZipInfo.is_dir(): 6b4. method can be used to check if the *note ZipInfo: -6b3. instance represents a directory. (Contributed by Thomas Kluyver in +A new *note ZipInfo.from_file(): 5a6. class method allows making a *note +ZipInfo: 5a7. instance from a filesystem file. A new *note +ZipInfo.is_dir(): 5a8. method can be used to check if the *note ZipInfo: +5a7. instance represents a directory. (Contributed by Thomas Kluyver in bpo-26039(1).) -The *note ZipFile.open(): 6b5. method can now be used to write data into +The *note ZipFile.open(): 5a9. method can now be used to write data into a ZIP file, as well as for extracting data. (Contributed by Thomas Kluyver in bpo-26039(2).) @@ -19305,12 +16727,12 @@ Kluyver in bpo-26039(2).) (2) https://bugs.python.org/issue26039  -File: python.info, Node: zlib, Prev: zipfile<2>, Up: Improved Modules<4> +File: python.info, Node: zlib, Prev: zipfile<2>, Up: Improved Modules<3> -1.4.5.63 zlib +1.3.5.63 zlib ............. -The *note compress(): 6b7. and *note decompress(): 6b8. functions now +The *note compress(): 5ab. and *note decompress(): 5ac. functions now accept keyword arguments. (Contributed by Aviv Palivoda in bpo-26243(1) and Xiang Zhang in bpo-16764(2) respectively.) @@ -19321,9 +16743,9 @@ and Xiang Zhang in bpo-16764(2) respectively.) (2) https://bugs.python.org/issue16764  -File: python.info, Node: Optimizations<4>, Next: Build and C API Changes<2>, Prev: Improved Modules<4>, Up: What’s New In Python 3 6 +File: python.info, Node: Optimizations<3>, Next: Build and C API Changes<2>, Prev: Improved Modules<3>, Up: What’s New In Python 3 6 -1.4.6 Optimizations +1.3.6 Optimizations ------------------- * The Python interpreter now uses a 16-bit wordcode instead of @@ -19331,14 +16753,14 @@ File: python.info, Node: Optimizations<4>, Next: Build and C API Changes<2>, (Contributed by Demur Rumed with input and reviews from Serhiy Storchaka and Victor Stinner in bpo-26647(1) and bpo-28050(2).) - * The *note asyncio.Future: 548. class now has an optimized C + * The *note asyncio.Future: 433. class now has an optimized C implementation. (Contributed by Yury Selivanov and INADA Naoki in bpo-26081(3).) - * The *note asyncio.Task: 2e3. class now has an optimized C + * The *note asyncio.Task: 199. class now has an optimized C implementation. (Contributed by Yury Selivanov in bpo-28544(4).) - * Various implementation improvements in the *note typing: 122. + * Various implementation improvements in the *note typing: 11a. module (such as caching of generic types) allow up to 30 times performance improvements and reduced memory footprint. @@ -19364,45 +16786,45 @@ File: python.info, Node: Optimizations<4>, Next: Build and C API Changes<2>, * ‘bytearray % args’ is now between 2.5 and 5 times faster. (Contributed by Victor Stinner in bpo-25399(10)). - * Optimize *note bytes.fromhex(): 440. and *note bytearray.fromhex(): - 441.: they are now between 2x and 3.5x faster. (Contributed by + * Optimize *note bytes.fromhex(): 31f. and *note bytearray.fromhex(): + 320.: they are now between 2x and 3.5x faster. (Contributed by Victor Stinner in bpo-25401(11)). * Optimize ‘bytes.replace(b'', b'.')’ and ‘bytearray.replace(b'', b'.')’: up to 80% faster. (Contributed by Josh Snider in bpo-26574(12)). - * Allocator functions of the *note PyMem_Malloc(): 601. domain (*note - PYMEM_DOMAIN_MEM: 605.) now use the *note pymalloc memory - allocator: 6ba. instead of ‘malloc()’ function of the C library. - The pymalloc allocator is optimized for objects smaller or equal to - 512 bytes with a short lifetime, and use ‘malloc()’ for larger - memory blocks. (Contributed by Victor Stinner in bpo-26249(13)). + * Allocator functions of the *note PyMem_Malloc(): 4f6. domain + (‘PYMEM_DOMAIN_MEM’) now use the *note pymalloc memory allocator: + 5ae. instead of ‘malloc()’ function of the C library. The pymalloc + allocator is optimized for objects smaller or equal to 512 bytes + with a short lifetime, and use ‘malloc()’ for larger memory blocks. + (Contributed by Victor Stinner in bpo-26249(13)). - * *note pickle.load(): 6bb. and *note pickle.loads(): 6bc. are now up + * *note pickle.load(): 5af. and *note pickle.loads(): 5b0. are now up to 10% faster when deserializing many small objects (Contributed by Victor Stinner in bpo-27056(14)). - * Passing *note keyword arguments: 6bd. to a function has an overhead - in comparison with passing *note positional arguments: 6be. Now in + * Passing *note keyword arguments: 5b1. to a function has an overhead + in comparison with passing *note positional arguments: 5b2. Now in extension functions implemented with using Argument Clinic this overhead is significantly decreased. (Contributed by Serhiy Storchaka in bpo-27574(15)). - * Optimized *note glob(): 6bf. and *note iglob(): 6c0. functions in - the *note glob: 88. module; they are now about 3–6 times faster. + * Optimized *note glob(): 5b3. and *note iglob(): 5b4. functions in + the *note glob: 8a. module; they are now about 3–6 times faster. (Contributed by Serhiy Storchaka in bpo-25596(16)). - * Optimized globbing in *note pathlib: c8. by using *note - os.scandir(): 38c.; it is now about 1.5–4 times faster. + * Optimized globbing in *note pathlib: c9. by using *note + os.scandir(): 24b.; it is now about 1.5–4 times faster. (Contributed by Serhiy Storchaka in bpo-26032(17)). - * *note xml.etree.ElementTree: 140. parsing, iteration and deepcopy + * *note xml.etree.ElementTree: 138. parsing, iteration and deepcopy performance has been significantly improved. (Contributed by Serhiy Storchaka in bpo-25638(18), bpo-25873(19), and bpo-25869(20).) - * Creation of *note fractions.Fraction: 2c1. instances from floats + * Creation of *note fractions.Fraction: 172. instances from floats and decimals is now 2 to 3 times faster. (Contributed by Serhiy Storchaka in bpo-25971(21).) @@ -19451,9 +16873,9 @@ File: python.info, Node: Optimizations<4>, Next: Build and C API Changes<2>, (21) https://bugs.python.org/issue25971  -File: python.info, Node: Build and C API Changes<2>, Next: Other Improvements, Prev: Optimizations<4>, Up: What’s New In Python 3 6 +File: python.info, Node: Build and C API Changes<2>, Next: Other Improvements, Prev: Optimizations<3>, Up: What’s New In Python 3 6 -1.4.7 Build and C API Changes +1.3.7 Build and C API Changes ----------------------------- * Python now requires some C99 support in the toolchain to build. @@ -19471,17 +16893,17 @@ File: python.info, Node: Build and C API Changes<2>, Next: Other Improvements, Turning it on will activate expensive optimizations like PGO. (Original patch by Alecsandru Patrascu of Intel in bpo-26359(4).) - * The *note GIL: 602. must now be held when allocator functions of - *note PYMEM_DOMAIN_OBJ: 603. (ex: *note PyObject_Malloc(): 604.) - and *note PYMEM_DOMAIN_MEM: 605. (ex: *note PyMem_Malloc(): 601.) - domains are called. + * The *note GIL: 4f7. must now be held when allocator functions of + ‘PYMEM_DOMAIN_OBJ’ (ex: *note PyObject_Malloc(): 4f8.) and + ‘PYMEM_DOMAIN_MEM’ (ex: *note PyMem_Malloc(): 4f6.) domains are + called. - * New *note Py_FinalizeEx(): 6c2. API which indicates if flushing + * New *note Py_FinalizeEx(): 5b6. API which indicates if flushing buffered data failed. (Contributed by Martin Panter in bpo-5319(5).) - * *note PyArg_ParseTupleAndKeywords(): 6c3. now supports *note - positional-only parameters: 3cc. Positional-only parameters are + * *note PyArg_ParseTupleAndKeywords(): 5b7. now supports *note + positional-only parameters: 292. Positional-only parameters are defined by empty names. (Contributed by Serhiy Storchaka in bpo-26282(6)). @@ -19489,22 +16911,22 @@ File: python.info, Node: Build and C API Changes<2>, Next: Other Improvements, repeated lines as ‘"[Previous line repeated {count} more times]"’. (Contributed by Emanuel Barry in bpo-26823(7).) - * The new *note PyErr_SetImportErrorSubclass(): 6c4. function allows - for specifying a subclass of *note ImportError: 16c. to raise. + * The new *note PyErr_SetImportErrorSubclass(): 5b8. function allows + for specifying a subclass of *note ImportError: 325. to raise. (Contributed by Eric Snow in bpo-15767(8).) - * The new *note PyErr_ResourceWarning(): 6c5. function can be used to - generate a *note ResourceWarning: 5cd. providing the source of the + * The new *note PyErr_ResourceWarning(): 5b9. function can be used to + generate a *note ResourceWarning: 4c1. providing the source of the resource allocation. (Contributed by Victor Stinner in bpo-26567(9).) - * The new *note PyOS_FSPath(): 6c6. function returns the file system - representation of a *note path-like object: 474. (Contributed by + * The new *note PyOS_FSPath(): 5ba. function returns the file system + representation of a *note path-like object: 35b. (Contributed by Brett Cannon in bpo-27186(10).) - * The *note PyUnicode_FSConverter(): 6c7. and *note - PyUnicode_FSDecoder(): 6c8. functions will now accept *note - path-like objects: 474. + * The *note PyUnicode_FSConverter(): 5bb. and *note + PyUnicode_FSDecoder(): 5bc. functions will now accept *note + path-like objects: 35b. ---------- Footnotes ---------- @@ -19529,13 +16951,13 @@ File: python.info, Node: Build and C API Changes<2>, Next: Other Improvements, (10) https://bugs.python.org/issue27186  -File: python.info, Node: Other Improvements, Next: Deprecated<3>, Prev: Build and C API Changes<2>, Up: What’s New In Python 3 6 +File: python.info, Node: Other Improvements, Next: Deprecated<2>, Prev: Build and C API Changes<2>, Up: What’s New In Python 3 6 -1.4.8 Other Improvements +1.3.8 Other Improvements ------------------------ - * When *note –version: 6ca. (short form: *note -V: 6cb.) is supplied - twice, Python prints *note sys.version: 6cc. for detailed + * When *note –version: 5be. (short form: *note -V: 5bf.) is supplied + twice, Python prints *note sys.version: 5c0. for detailed information. $ ./python -VV @@ -19543,9 +16965,9 @@ File: python.info, Node: Other Improvements, Next: Deprecated<3>, Prev: Build [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)]  -File: python.info, Node: Deprecated<3>, Next: Removed<3>, Prev: Other Improvements, Up: What’s New In Python 3 6 +File: python.info, Node: Deprecated<2>, Next: Removed, Prev: Other Improvements, Up: What’s New In Python 3 6 -1.4.9 Deprecated +1.3.9 Deprecated ---------------- * Menu: @@ -19557,46 +16979,46 @@ File: python.info, Node: Deprecated<3>, Next: Removed<3>, Prev: Other Improve * Deprecated Build Options::  -File: python.info, Node: New Keywords, Next: Deprecated Python behavior, Up: Deprecated<3> +File: python.info, Node: New Keywords, Next: Deprecated Python behavior, Up: Deprecated<2> -1.4.9.1 New Keywords +1.3.9.1 New Keywords .................... ‘async’ and ‘await’ are not recommended to be used as variable, class, function or module names. Introduced by PEP 492(1) in Python 3.5, they will become proper keywords in Python 3.7. Starting in Python 3.6, the use of ‘async’ or ‘await’ as names will generate a *note -DeprecationWarning: 15a. +DeprecationWarning: 264. ---------- Footnotes ---------- (1) https://www.python.org/dev/peps/pep-0492  -File: python.info, Node: Deprecated Python behavior, Next: Deprecated Python modules functions and methods<2>, Prev: New Keywords, Up: Deprecated<3> +File: python.info, Node: Deprecated Python behavior, Next: Deprecated Python modules functions and methods<2>, Prev: New Keywords, Up: Deprecated<2> -1.4.9.2 Deprecated Python behavior +1.3.9.2 Deprecated Python behavior .................................. -Raising the *note StopIteration: 584. exception inside a generator will -now generate a *note DeprecationWarning: 15a, and will trigger a *note -RuntimeError: 3df. in Python 3.7. See *note PEP 479; Change -StopIteration handling inside generators: 6d0. for details. +Raising the *note StopIteration: 477. exception inside a generator will +now generate a *note DeprecationWarning: 264, and will trigger a *note +RuntimeError: 2a5. in Python 3.7. See *note PEP 479; Change +StopIteration handling inside generators: 5c4. for details. -The *note __aiter__(): 585. method is now expected to return an -asynchronous iterator directly instead of returning an awaitable as -previously. Doing the former will trigger a *note DeprecationWarning: -15a. Backward compatibility will be removed in Python 3.7. -(Contributed by Yury Selivanov in bpo-27243(1).) +The ‘__aiter__()’ method is now expected to return an asynchronous +iterator directly instead of returning an awaitable as previously. +Doing the former will trigger a *note DeprecationWarning: 264. Backward +compatibility will be removed in Python 3.7. (Contributed by Yury +Selivanov in bpo-27243(1).) A backslash-character pair that is not a valid escape sequence now -generates a *note DeprecationWarning: 15a. Although this will -eventually become a *note SyntaxError: 55c, that will not be for several +generates a *note DeprecationWarning: 264. Although this will +eventually become a *note SyntaxError: 449, that will not be for several Python releases. (Contributed by Emanuel Barry in bpo-27364(2).) When performing a relative import, falling back on ‘__name__’ and ‘__path__’ from the calling module when ‘__spec__’ or ‘__package__’ are -not defined now raises an *note ImportWarning: 6d1. (Contributed by +not defined now raises an *note ImportWarning: 5c5. (Contributed by Rose Ames in bpo-25791(3).) ---------- Footnotes ---------- @@ -19608,9 +17030,9 @@ Rose Ames in bpo-25791(3).) (3) https://bugs.python.org/issue25791  -File: python.info, Node: Deprecated Python modules functions and methods<2>, Next: Deprecated functions and types of the C API<2>, Prev: Deprecated Python behavior, Up: Deprecated<3> +File: python.info, Node: Deprecated Python modules functions and methods<2>, Next: Deprecated functions and types of the C API<2>, Prev: Deprecated Python behavior, Up: Deprecated<2> -1.4.9.3 Deprecated Python modules, functions and methods +1.3.9.3 Deprecated Python modules, functions and methods ........................................................ * Menu: @@ -19618,22 +17040,22 @@ File: python.info, Node: Deprecated Python modules functions and methods<2>, N * asynchat:: * asyncore:: * dbm: dbm<3>. -* distutils: distutils<4>. +* distutils: distutils<3>. * grp:: -* importlib: importlib<5>. -* os: os<5>. +* importlib: importlib<4>. +* os: os<4>. * re: re<3>. * ssl: ssl<5>. * tkinter: tkinter<4>. -* venv: venv<4>. +* venv: venv<3>.  File: python.info, Node: asynchat, Next: asyncore, Up: Deprecated Python modules functions and methods<2> -1.4.9.4 asynchat +1.3.9.4 asynchat ................ -The *note asynchat: 8. has been deprecated in favor of *note asyncio: 9. +The *note asynchat: 9. has been deprecated in favor of *note asyncio: a. (Contributed by Mariatta in bpo-25002(1).) ---------- Footnotes ---------- @@ -19643,10 +17065,10 @@ The *note asynchat: 8. has been deprecated in favor of *note asyncio: 9.  File: python.info, Node: asyncore, Next: dbm<3>, Prev: asynchat, Up: Deprecated Python modules functions and methods<2> -1.4.9.5 asyncore +1.3.9.5 asyncore ................ -The *note asyncore: a. has been deprecated in favor of *note asyncio: 9. +The *note asyncore: b. has been deprecated in favor of *note asyncio: a. (Contributed by Mariatta in bpo-25002(1).) ---------- Footnotes ---------- @@ -19654,12 +17076,12 @@ The *note asyncore: a. has been deprecated in favor of *note asyncio: 9. (1) https://bugs.python.org/issue25002  -File: python.info, Node: dbm<3>, Next: distutils<4>, Prev: asyncore, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: dbm<3>, Next: distutils<3>, Prev: asyncore, Up: Deprecated Python modules functions and methods<2> -1.4.9.6 dbm +1.3.9.6 dbm ........... -Unlike other *note dbm: 31. implementations, the *note dbm.dumb: 32. +Unlike other *note dbm: 32. implementations, the *note dbm.dumb: 33. module creates databases with the ‘'rw'’ mode and allows modifying the database opened with the ‘'r'’ mode. This behavior is now deprecated and will be removed in 3.8. (Contributed by Serhiy Storchaka in @@ -19670,9 +17092,9 @@ bpo-21708(1).) (1) https://bugs.python.org/issue21708  -File: python.info, Node: distutils<4>, Next: grp, Prev: dbm<3>, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: distutils<3>, Next: grp, Prev: dbm<3>, Up: Deprecated Python modules functions and methods<2> -1.4.9.7 distutils +1.3.9.7 distutils ................. The undocumented ‘extra_path’ argument to the ‘Distribution’ constructor @@ -19685,12 +17107,12 @@ bpo-27919(1) for details. (1) https://bugs.python.org/issue27919  -File: python.info, Node: grp, Next: importlib<5>, Prev: distutils<4>, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: grp, Next: importlib<4>, Prev: distutils<3>, Up: Deprecated Python modules functions and methods<2> -1.4.9.8 grp +1.3.9.8 grp ........... -The support of non-integer arguments in *note getgrgid(): 6d8. has been +The support of non-integer arguments in *note getgrgid(): 5cc. has been deprecated. (Contributed by Serhiy Storchaka in bpo-26129(1).) ---------- Footnotes ---------- @@ -19698,30 +17120,30 @@ deprecated. (Contributed by Serhiy Storchaka in bpo-26129(1).) (1) https://bugs.python.org/issue26129  -File: python.info, Node: importlib<5>, Next: os<5>, Prev: grp, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: importlib<4>, Next: os<4>, Prev: grp, Up: Deprecated Python modules functions and methods<2> -1.4.9.9 importlib +1.3.9.9 importlib ................. -The *note importlib.machinery.SourceFileLoader.load_module(): 6da. and -*note importlib.machinery.SourcelessFileLoader.load_module(): 6db. +The *note importlib.machinery.SourceFileLoader.load_module(): 5ce. and +*note importlib.machinery.SourcelessFileLoader.load_module(): 5cf. methods are now deprecated. They were the only remaining -implementations of *note importlib.abc.Loader.load_module(): 6dc. in -*note importlib: 9a. that had not been deprecated in previous versions -of Python in favour of *note importlib.abc.Loader.exec_module(): 6dd. +implementations of *note importlib.abc.Loader.load_module(): 5d0. in +*note importlib: 9b. that had not been deprecated in previous versions +of Python in favour of *note importlib.abc.Loader.exec_module(): 5d1. -The *note importlib.machinery.WindowsRegistryFinder: 6de. class is now -deprecated. As of 3.6.0, it is still added to *note sys.meta_path: 6df. +The *note importlib.machinery.WindowsRegistryFinder: 5d2. class is now +deprecated. As of 3.6.0, it is still added to *note sys.meta_path: 5d3. by default (on Windows), but this may change in future releases.  -File: python.info, Node: os<5>, Next: re<3>, Prev: importlib<5>, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: os<4>, Next: re<3>, Prev: importlib<4>, Up: Deprecated Python modules functions and methods<2> -1.4.9.10 os +1.3.9.10 os ........... -Undocumented support of general *note bytes-like objects: 6e1. as paths -in *note os: c4. functions, *note compile(): 2ea. and similar functions +Undocumented support of general *note bytes-like objects: 5d5. as paths +in *note os: c5. functions, *note compile(): 1a0. and similar functions is now deprecated. (Contributed by Serhiy Storchaka in bpo-25791(1) and bpo-26754(2).) @@ -19732,9 +17154,9 @@ bpo-26754(2).) (2) https://bugs.python.org/issue26754  -File: python.info, Node: re<3>, Next: ssl<5>, Prev: os<5>, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: re<3>, Next: ssl<5>, Prev: os<4>, Up: Deprecated Python modules functions and methods<2> -1.4.9.11 re +1.3.9.11 re ........... Support for inline flags ‘(?letters)’ in the middle of the regular @@ -19749,19 +17171,19 @@ version. Flags at the start of a regular expression are still allowed.  File: python.info, Node: ssl<5>, Next: tkinter<4>, Prev: re<3>, Up: Deprecated Python modules functions and methods<2> -1.4.9.12 ssl +1.3.9.12 ssl ............ OpenSSL 0.9.8, 1.0.0 and 1.0.1 are deprecated and no longer supported. -In the future the *note ssl: f3. module will require at least OpenSSL +In the future the *note ssl: f4. module will require at least OpenSSL 1.0.2 or 1.1.0. SSL-related arguments like ‘certfile’, ‘keyfile’ and ‘check_hostname’ in -*note ftplib: 82, *note http.client: 93, *note imaplib: 97, *note -poplib: d0, and *note smtplib: ed. have been deprecated in favor of +*note ftplib: 84, *note http.client: 94, *note imaplib: 98, *note +poplib: d1, and *note smtplib: ee. have been deprecated in favor of ‘context’. (Contributed by Christian Heimes in bpo-28022(1).) -A couple of protocols and functions of the *note ssl: f3. module are now +A couple of protocols and functions of the *note ssl: f4. module are now deprecated. Some features will no longer be available in future versions of OpenSSL. Other features are deprecated in favor of a different API. (Contributed by Christian Heimes in bpo-28022(2) and @@ -19776,18 +17198,18 @@ bpo-26470(3).) (3) https://bugs.python.org/issue26470  -File: python.info, Node: tkinter<4>, Next: venv<4>, Prev: ssl<5>, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: tkinter<4>, Next: venv<3>, Prev: ssl<5>, Up: Deprecated Python modules functions and methods<2> -1.4.9.13 tkinter +1.3.9.13 tkinter ................ -The *note tkinter.tix: 117. module is now deprecated. *note tkinter: -10e. users should use *note tkinter.ttk: 118. instead. +The *note tkinter.tix: 10f. module is now deprecated. *note tkinter: +10d. users should use *note tkinter.ttk: 110. instead.  -File: python.info, Node: venv<4>, Prev: tkinter<4>, Up: Deprecated Python modules functions and methods<2> +File: python.info, Node: venv<3>, Prev: tkinter<4>, Up: Deprecated Python modules functions and methods<2> -1.4.9.14 venv +1.3.9.14 venv ............. The ‘pyvenv’ script has been deprecated in favour of ‘python3 -m venv’. @@ -19800,20 +17222,20 @@ virtual environment. (Contributed by Brett Cannon in bpo-25154(1).) (1) https://bugs.python.org/issue25154  -File: python.info, Node: Deprecated functions and types of the C API<2>, Next: Deprecated Build Options, Prev: Deprecated Python modules functions and methods<2>, Up: Deprecated<3> +File: python.info, Node: Deprecated functions and types of the C API<2>, Next: Deprecated Build Options, Prev: Deprecated Python modules functions and methods<2>, Up: Deprecated<2> -1.4.9.15 Deprecated functions and types of the C API +1.3.9.15 Deprecated functions and types of the C API .................................................... Undocumented functions ‘PyUnicode_AsEncodedObject()’, ‘PyUnicode_AsDecodedObject()’, ‘PyUnicode_AsEncodedUnicode()’ and ‘PyUnicode_AsDecodedUnicode()’ are deprecated now. Use the *note -generic codec based API: 6e7. instead. +generic codec based API: 5db. instead.  -File: python.info, Node: Deprecated Build Options, Prev: Deprecated functions and types of the C API<2>, Up: Deprecated<3> +File: python.info, Node: Deprecated Build Options, Prev: Deprecated functions and types of the C API<2>, Up: Deprecated<2> -1.4.9.16 Deprecated Build Options +1.3.9.16 Deprecated Build Options ................................. The ‘--with-system-ffi’ configure flag is now on by default on non-macOS @@ -19824,9 +17246,9 @@ already use the ‘--with-system-ffi’ flag when building their system Python.  -File: python.info, Node: Removed<3>, Next: Porting to Python 3 6, Prev: Deprecated<3>, Up: What’s New In Python 3 6 +File: python.info, Node: Removed, Next: Porting to Python 3 6, Prev: Deprecated<2>, Up: What’s New In Python 3 6 -1.4.10 Removed +1.3.10 Removed -------------- * Menu: @@ -19834,19 +17256,19 @@ File: python.info, Node: Removed<3>, Next: Porting to Python 3 6, Prev: Depre * API and Feature Removals: API and Feature Removals<3>.  -File: python.info, Node: API and Feature Removals<3>, Up: Removed<3> +File: python.info, Node: API and Feature Removals<3>, Up: Removed -1.4.10.1 API and Feature Removals +1.3.10.1 API and Feature Removals ................................. * Unknown escapes consisting of ‘'\'’ and an ASCII letter in regular expressions will now cause an error. In replacement templates for - *note re.sub(): 57c. they are still allowed, but deprecated. The - *note re.LOCALE: 4d2. flag can now only be used with binary + *note re.sub(): 46c. they are still allowed, but deprecated. The + *note re.LOCALE: 3ba. flag can now only be used with binary patterns. * ‘inspect.getmoduleinfo()’ was removed (was deprecated since CPython - 3.3). *note inspect.getmodulename(): 6eb. should be used for + 3.3). *note inspect.getmodulename(): 5df. should be used for obtaining the module name for a given path. (Contributed by Yury Selivanov in bpo-13248(1).) @@ -19854,18 +17276,18 @@ File: python.info, Node: API and Feature Removals<3>, Up: Removed<3> ‘traceback.modname’, ‘traceback.fullmodname’, ‘traceback.find_lines_from_code’, ‘traceback.find_lines’, ‘traceback.find_strings’, ‘traceback.find_executable_lines’ methods - were removed from the *note traceback: 11c. module. They were + were removed from the *note traceback: 114. module. They were undocumented methods deprecated since Python 3.2 and equivalent functionality is available from private methods. * The ‘tk_menuBar()’ and ‘tk_bindForTraversal()’ dummy methods in - *note tkinter: 10e. widget classes were removed (corresponding Tk + *note tkinter: 10d. widget classes were removed (corresponding Tk commands were obsolete since Tk 4.0). - * The *note open(): 6b5. method of the *note zipfile.ZipFile: 525. + * The *note open(): 5a9. method of the *note zipfile.ZipFile: 410. class no longer supports the ‘'U'’ mode (was deprecated since - Python 3.4). Use *note io.TextIOWrapper: 6ec. for reading - compressed text files in *note universal newlines: 6ed. mode. + Python 3.4). Use *note io.TextIOWrapper: 5e0. for reading + compressed text files in *note universal newlines: 5e1. mode. * The undocumented ‘IN’, ‘CDROM’, ‘DLFCN’, ‘TYPES’, ‘CDIO’, and ‘STROPTS’ modules have been removed. They had been available in @@ -19880,12 +17302,12 @@ File: python.info, Node: API and Feature Removals<3>, Up: Removed<3> (1) https://bugs.python.org/issue13248 - (2) https://github.com/python/cpython/tree/3.9/Tools/scripts/h2py.py + (2) https://github.com/python/cpython/tree/3.8/Tools/scripts/h2py.py  -File: python.info, Node: Porting to Python 3 6, Next: Notable changes in Python 3 6 2, Prev: Removed<3>, Up: What’s New In Python 3 6 +File: python.info, Node: Porting to Python 3 6, Next: Notable changes in Python 3 6 2, Prev: Removed, Up: What’s New In Python 3 6 -1.4.11 Porting to Python 3.6 +1.3.11 Porting to Python 3.6 ---------------------------- This section lists previously described changes and other bugfixes that @@ -19895,13 +17317,13 @@ may require changes to your code. * Changes in ‘python’ Command Behavior:: * Changes in the Python API: Changes in the Python API<4>. -* Changes in the C API: Changes in the C API<4>. -* CPython bytecode changes: CPython bytecode changes<4>. +* Changes in the C API: Changes in the C API<3>. +* CPython bytecode changes: CPython bytecode changes<3>.  File: python.info, Node: Changes in ‘python’ Command Behavior, Next: Changes in the Python API<4>, Up: Porting to Python 3 6 -1.4.11.1 Changes in ‘python’ Command Behavior +1.3.11.1 Changes in ‘python’ Command Behavior ............................................. * The output of a special Python build with defined ‘COUNT_ALLOCS’, @@ -19915,26 +17337,26 @@ File: python.info, Node: Changes in ‘python’ Command Behavior, Next: Chang (1) https://bugs.python.org/issue23034  -File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C API<4>, Prev: Changes in ‘python’ Command Behavior, Up: Porting to Python 3 6 +File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C API<3>, Prev: Changes in ‘python’ Command Behavior, Up: Porting to Python 3 6 -1.4.11.2 Changes in the Python API +1.3.11.2 Changes in the Python API .................................. - * *note open(): 16f. will no longer allow combining the ‘'U'’ mode + * *note open(): 4e1. will no longer allow combining the ‘'U'’ mode flag with ‘'+'’. (Contributed by Jeff Balogh and John O’Connor in bpo-2091(1).) - * *note sqlite3: f2. no longer implicitly commits an open transaction + * *note sqlite3: f3. no longer implicitly commits an open transaction before DDL statements. - * On Linux, *note os.urandom(): 5ce. now blocks until the system + * On Linux, *note os.urandom(): 4c2. now blocks until the system urandom entropy pool is initialized to increase the security. - * When *note importlib.abc.Loader.exec_module(): 6dd. is defined, - *note importlib.abc.Loader.create_module(): 650. must also be + * When *note importlib.abc.Loader.exec_module(): 5d1. is defined, + *note importlib.abc.Loader.create_module(): 541. must also be defined. - * *note PyErr_SetImportError(): 6f1. now sets *note TypeError: 1fe. + * *note PyErr_SetImportError(): 5e5. now sets *note TypeError: 17f. when its `msg' argument is not set. Previously only ‘NULL’ was returned. @@ -19949,84 +17371,84 @@ File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C ‘co_lnotab’ format and how to decode it, and see the PEP 511(2) for the rationale. - * The functions in the *note compileall: 20. module now return + * The functions in the *note compileall: 21. module now return booleans instead of ‘1’ or ‘0’ to represent success or failure, respectively. Thanks to booleans being a subclass of integers, this should only be an issue if you were doing identity checks for ‘1’ or ‘0’. See bpo-25768(3). - * Reading the ‘port’ attribute of *note urllib.parse.urlsplit(): 6f2. - and *note urlparse(): 6f3. results now raises *note ValueError: - 16d. for out-of-range values, rather than returning *note None: - 203. See bpo-20059(4). + * Reading the ‘port’ attribute of *note urllib.parse.urlsplit(): 5e6. + and *note urlparse(): 5e7. results now raises *note ValueError: + 1e7. for out-of-range values, rather than returning *note None: + 158. See bpo-20059(4). - * The *note imp: 99. module now raises a *note DeprecationWarning: - 15a. instead of *note PendingDeprecationWarning: 15c. + * The *note imp: 9a. module now raises a *note DeprecationWarning: + 264. instead of *note PendingDeprecationWarning: 265. * The following modules have had missing APIs added to their ‘__all__’ attributes to match the documented APIs: *note calendar: - 14, *note cgi: 15, *note csv: 29, *note ElementTree: 140, *note - enum: 79, *note fileinput: 7e, *note ftplib: 82, *note logging: aa, - *note mailbox: ae, *note mimetypes: b2, *note optparse: c3, *note - plistlib: cf, *note smtpd: ec, *note subprocess: f9, *note tarfile: - 101, *note threading: 10b. and *note wave: 130. This means they + 15, *note cgi: 16, *note csv: 2a, *note ElementTree: 138, *note + enum: 7b, *note fileinput: 80, *note ftplib: 84, *note logging: ab, + *note mailbox: af, *note mimetypes: b3, *note optparse: c4, *note + plistlib: d0, *note smtpd: ed, *note subprocess: fa, *note tarfile: + 102, *note threading: 10a. and *note wave: 128. This means they will export new symbols when ‘import *’ is used. (Contributed by Joel Taddei and Jacek Kołodziej in bpo-23883(5).) * When performing a relative import, if ‘__package__’ does not - compare equal to ‘__spec__.parent’ then *note ImportWarning: 6d1. + compare equal to ‘__spec__.parent’ then *note ImportWarning: 5c5. is raised. (Contributed by Brett Cannon in bpo-25791(6).) * When a relative import is performed and no parent package is known, - then *note ImportError: 16c. will be raised. Previously, *note - SystemError: 6f4. could be raised. (Contributed by Brett Cannon in + then *note ImportError: 325. will be raised. Previously, *note + SystemError: 5e8. could be raised. (Contributed by Brett Cannon in bpo-18018(7).) - * Servers based on the *note socketserver: f0. module, including - those defined in *note http.server: 96, *note xmlrpc.server: 149. - and *note wsgiref.simple_server: 138, now only catch exceptions - derived from *note Exception: 2df. Therefore if a request handler - raises an exception like *note SystemExit: 6f5. or *note - KeyboardInterrupt: 2cf, *note handle_error(): 6f6. is no longer + * Servers based on the *note socketserver: f1. module, including + those defined in *note http.server: 97, *note xmlrpc.server: 141. + and *note wsgiref.simple_server: 130, now only catch exceptions + derived from *note Exception: 195. Therefore if a request handler + raises an exception like *note SystemExit: 5e9. or *note + KeyboardInterrupt: 184, *note handle_error(): 5ea. is no longer called, and the exception will stop a single-threaded server. (Contributed by Martin Panter in bpo-23430(8).) - * *note spwd.getspnam(): 6f7. now raises a *note PermissionError: - 6f8. instead of *note KeyError: 3ec. if the user doesn’t have + * *note spwd.getspnam(): 5eb. now raises a *note PermissionError: + 5ec. instead of *note KeyError: 2b2. if the user doesn’t have privileges. - * The *note socket.socket.close(): 6f9. method now raises an + * The *note socket.socket.close(): 5ed. method now raises an exception if an error (e.g. ‘EBADF’) was reported by the underlying system call. (Contributed by Martin Panter in bpo-26685(9).) - * The `decode_data' argument for the *note smtpd.SMTPChannel: 6fa. - and *note smtpd.SMTPServer: 6fb. constructors is now ‘False’ by + * The `decode_data' argument for the *note smtpd.SMTPChannel: 5ee. + and *note smtpd.SMTPServer: 5ef. constructors is now ‘False’ by default. This means that the argument passed to *note - process_message(): 6fc. is now a bytes object by default, and + process_message(): 5f0. is now a bytes object by default, and ‘process_message()’ will be passed keyword arguments. Code that has already been updated in accordance with the deprecation warning generated by 3.5 will not be affected. - * All optional arguments of the *note dump(): 6fd, *note dumps(): - 6fe, *note load(): 65b. and *note loads(): 225. functions and *note - JSONEncoder: 6ff. and *note JSONDecoder: 700. class constructors in - the *note json: a4. module are now *note keyword-only: 3d1. + * All optional arguments of the *note dump(): 5f1, *note dumps(): + 5f2, *note load(): 54c. and *note loads(): 54d. functions and *note + JSONEncoder: 5f3. and *note JSONDecoder: 5f4. class constructors in + the *note json: a5. module are now *note keyword-only: 297. (Contributed by Serhiy Storchaka in bpo-18726(10).) - * Subclasses of *note type: 701. which don’t override ‘type.__new__’ + * Subclasses of *note type: 5f5. which don’t override ‘type.__new__’ may no longer use the one-argument form to get the type of an object. * As part of PEP 487(11), the handling of keyword arguments passed to - *note type: 701. (other than the metaclass hint, ‘metaclass’) is + *note type: 5f5. (other than the metaclass hint, ‘metaclass’) is now consistently delegated to *note object.__init_subclass__(): - 5e0. This means that ‘type.__new__()’ and ‘type.__init__()’ both + 4d4. This means that ‘type.__new__()’ and ‘type.__init__()’ both now accept arbitrary keyword arguments, but *note - object.__init_subclass__(): 5e0. (which is called from + object.__init_subclass__(): 4d4. (which is called from ‘type.__new__()’) will reject them by default. Custom metaclasses accepting additional keyword arguments will need to adjust their - calls to ‘type.__new__()’ (whether direct or via *note super: 5df.) + calls to ‘type.__new__()’ (whether direct or via *note super: 4d3.) accordingly. * In ‘distutils.command.sdist.sdist’, the ‘default_format’ attribute @@ -20043,8 +17465,8 @@ File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C This behavior has also been backported to earlier Python versions by Setuptools 26.0.0. - * In the *note urllib.request: 129. module and the *note - http.client.HTTPConnection.request(): 64b. method, if no + * In the *note urllib.request: 121. module and the *note + http.client.HTTPConnection.request(): 53c. method, if no Content-Length header field has been specified and the request body is a file object, it is now sent with HTTP 1.1 chunked encoding. If a file object has to be sent to a HTTP 1.0 server, the @@ -20052,22 +17474,22 @@ File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C (Contributed by Demian Brecht and Rolf Krahl with tweaks from Martin Panter in bpo-12319(12).) - * The *note DictReader: 2f1. now returns rows of type *note - OrderedDict: 2ed. (Contributed by Steve Holden in bpo-27842(13).) + * The *note DictReader: 1a9. now returns rows of type *note + OrderedDict: 1a5. (Contributed by Steve Holden in bpo-27842(13).) - * The *note crypt.METHOD_CRYPT: 702. will no longer be added to + * The *note crypt.METHOD_CRYPT: 5f6. will no longer be added to ‘crypt.methods’ if unsupported by the platform. (Contributed by Victor Stinner in bpo-25287(14).) - * The `verbose' and `rename' arguments for *note namedtuple(): 1a1. + * The `verbose' and `rename' arguments for *note namedtuple(): 1a3. are now keyword-only. (Contributed by Raymond Hettinger in bpo-25628(15).) - * On Linux, *note ctypes.util.find_library(): 703. now looks in + * On Linux, *note ctypes.util.find_library(): 5f7. now looks in ‘LD_LIBRARY_PATH’ for shared libraries. (Contributed by Vinay Sajip in bpo-9998(16).) - * The *note imaplib.IMAP4: 1af. class now handles flags containing + * The *note imaplib.IMAP4: 5f8. class now handles flags containing the ‘']'’ character in messages sent from the server to improve real-world compatibility. (Contributed by Lita Cho in bpo-21815(17).) @@ -20076,41 +17498,41 @@ File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C like other write methods. (Contributed by Jakub Stasiak in bpo-26335(18).) - * The *note pkgutil.iter_modules(): 704. and *note - pkgutil.walk_packages(): 588. functions now return *note - ModuleInfo: 705. named tuples. (Contributed by Ramchandra Apte in + * The *note pkgutil.iter_modules(): 5f9. and *note + pkgutil.walk_packages(): 47c. functions now return *note + ModuleInfo: 5fa. named tuples. (Contributed by Ramchandra Apte in bpo-17211(19).) - * *note re.sub(): 57c. now raises an error for invalid numerical + * *note re.sub(): 46c. now raises an error for invalid numerical group references in replacement templates even if the pattern is not found in the string. The error message for invalid group references now includes the group index and the position of the reference. (Contributed by SilentGhost, Serhiy Storchaka in bpo-25953(20).) - * *note zipfile.ZipFile: 525. will now raise *note - NotImplementedError: 706. for unrecognized compression values. - Previously a plain *note RuntimeError: 3df. was raised. - Additionally, calling *note ZipFile: 525. methods on a closed - ZipFile or calling the *note write(): 707. method on a ZipFile - created with mode ‘'r'’ will raise a *note ValueError: 16d. - Previously, a *note RuntimeError: 3df. was raised in those + * *note zipfile.ZipFile: 410. will now raise *note + NotImplementedError: 5fb. for unrecognized compression values. + Previously a plain *note RuntimeError: 2a5. was raised. + Additionally, calling *note ZipFile: 410. methods on a closed + ZipFile or calling the *note write(): 5fc. method on a ZipFile + created with mode ‘'r'’ will raise a *note ValueError: 1e7. + Previously, a *note RuntimeError: 2a5. was raised in those scenarios. * when custom metaclasses are combined with zero-argument *note - super(): 5df. or direct references from methods to the implicit + super(): 4d3. or direct references from methods to the implicit ‘__class__’ closure variable, the implicit ‘__classcell__’ namespace entry must now be passed up to ‘type.__new__’ for initialisation. Failing to do so will result in a *note - DeprecationWarning: 15a. in Python 3.6 and a *note RuntimeError: - 3df. in Python 3.8. + DeprecationWarning: 264. in Python 3.6 and a *note RuntimeError: + 2a5. in Python 3.8. - * With the introduction of *note ModuleNotFoundError: 4a3, import + * With the introduction of *note ModuleNotFoundError: 38b, import system consumers may start expecting import system replacements to raise that more specific exception when appropriate, rather than - the less-specific *note ImportError: 16c. To provide future + the less-specific *note ImportError: 325. To provide future compatibility with such consumers, implementors of alternative - import systems that completely replace *note __import__(): 16b. + import systems that completely replace *note __import__(): 5fd. will need to update their implementations to raise the new subclass when a module can’t be found at all. Implementors of compliant plugins to the default import system shouldn’t need to make any @@ -20160,19 +17582,19 @@ File: python.info, Node: Changes in the Python API<4>, Next: Changes in the C (20) https://bugs.python.org/issue25953  -File: python.info, Node: Changes in the C API<4>, Next: CPython bytecode changes<4>, Prev: Changes in the Python API<4>, Up: Porting to Python 3 6 +File: python.info, Node: Changes in the C API<3>, Next: CPython bytecode changes<3>, Prev: Changes in the Python API<4>, Up: Porting to Python 3 6 -1.4.11.3 Changes in the C API +1.3.11.3 Changes in the C API ............................. - * The *note PyMem_Malloc(): 601. allocator family now uses the *note - pymalloc allocator: 6ba. rather than the system ‘malloc()’. - Applications calling *note PyMem_Malloc(): 601. without holding the - GIL can now crash. Set the *note PYTHONMALLOC: 5ff. environment + * The *note PyMem_Malloc(): 4f6. allocator family now uses the *note + pymalloc allocator: 5ae. rather than the system ‘malloc()’. + Applications calling *note PyMem_Malloc(): 4f6. without holding the + GIL can now crash. Set the *note PYTHONMALLOC: 4f4. environment variable to ‘debug’ to validate the usage of memory allocators in your application. See bpo-26249(1). - * *note Py_Exit(): 709. (and the main interpreter) now override the + * *note Py_Exit(): 5ff. (and the main interpreter) now override the exit status with 120 if flushing buffered data failed. See bpo-5319(2). @@ -20183,12 +17605,12 @@ File: python.info, Node: Changes in the C API<4>, Next: CPython bytecode chang (2) https://bugs.python.org/issue5319  -File: python.info, Node: CPython bytecode changes<4>, Prev: Changes in the C API<4>, Up: Porting to Python 3 6 +File: python.info, Node: CPython bytecode changes<3>, Prev: Changes in the C API<3>, Up: Porting to Python 3 6 -1.4.11.4 CPython bytecode changes +1.3.11.4 CPython bytecode changes ................................. -There have been several major changes to the *note bytecode: 70b. in +There have been several major changes to the *note bytecode: 601. in Python 3.6. * The Python interpreter now uses a 16-bit wordcode instead of @@ -20196,28 +17618,28 @@ Python 3.6. Serhiy Storchaka and Victor Stinner in bpo-26647(1) and bpo-28050(2).) - * The new *note FORMAT_VALUE: 70c. and *note BUILD_STRING: 70d. - opcodes as part of the *note formatted string literal: 5be. + * The new *note FORMAT_VALUE: 602. and *note BUILD_STRING: 603. + opcodes as part of the *note formatted string literal: 4b2. implementation. (Contributed by Eric Smith in bpo-25483(3) and Serhiy Storchaka in bpo-27078(4).) - * The new *note BUILD_CONST_KEY_MAP: 70e. opcode to optimize the + * The new *note BUILD_CONST_KEY_MAP: 604. opcode to optimize the creation of dictionaries with constant keys. (Contributed by Serhiy Storchaka in bpo-27140(5).) * The function call opcodes have been heavily reworked for better performance and simpler implementation. The *note MAKE_FUNCTION: - 70f, *note CALL_FUNCTION: 710, *note CALL_FUNCTION_KW: 711. and - ‘BUILD_MAP_UNPACK_WITH_CALL’ opcodes have been modified, the new - *note CALL_FUNCTION_EX: 712. and ‘BUILD_TUPLE_UNPACK_WITH_CALL’ - have been added, and ‘CALL_FUNCTION_VAR’, ‘CALL_FUNCTION_VAR_KW’ - and ‘MAKE_CLOSURE’ opcodes have been removed. (Contributed by - Demur Rumed in bpo-27095(6), and Serhiy Storchaka in bpo-27213(7), - bpo-28257(8).) + 605, *note CALL_FUNCTION: 606, *note CALL_FUNCTION_KW: 607. and + *note BUILD_MAP_UNPACK_WITH_CALL: 608. opcodes have been modified, + the new *note CALL_FUNCTION_EX: 609. and *note + BUILD_TUPLE_UNPACK_WITH_CALL: 60a. have been added, and + ‘CALL_FUNCTION_VAR’, ‘CALL_FUNCTION_VAR_KW’ and ‘MAKE_CLOSURE’ + opcodes have been removed. (Contributed by Demur Rumed in + bpo-27095(6), and Serhiy Storchaka in bpo-27213(7), bpo-28257(8).) - * The new *note SETUP_ANNOTATIONS: 713. and ‘STORE_ANNOTATION’ + * The new *note SETUP_ANNOTATIONS: 60b. and ‘STORE_ANNOTATION’ opcodes have been added to support the new *note variable - annotation: 714. syntax. (Contributed by Ivan Levkivskyi in + annotation: 60c. syntax. (Contributed by Ivan Levkivskyi in bpo-27985(9).) ---------- Footnotes ---------- @@ -20243,7 +17665,7 @@ Python 3.6.  File: python.info, Node: Notable changes in Python 3 6 2, Next: Notable changes in Python 3 6 4, Prev: Porting to Python 3 6, Up: What’s New In Python 3 6 -1.4.12 Notable changes in Python 3.6.2 +1.3.12 Notable changes in Python 3.6.2 -------------------------------------- * Menu: @@ -20254,7 +17676,7 @@ File: python.info, Node: Notable changes in Python 3 6 2, Next: Notable change  File: python.info, Node: New make regen-all build target, Next: Removal of make touch build target, Up: Notable changes in Python 3 6 2 -1.4.12.1 New ‘make regen-all’ build target +1.3.12.1 New ‘make regen-all’ build target .......................................... To simplify cross-compilation, and to ensure that CPython can reliably @@ -20275,14 +17697,14 @@ New in version 3.6.2. ---------- Footnotes ---------- - (1) https://github.com/python/cpython/tree/3.9/Makefile.pre.in + (1) https://github.com/python/cpython/tree/3.8/Makefile.pre.in (2) https://bugs.python.org/issue23404  File: python.info, Node: Removal of make touch build target, Prev: New make regen-all build target, Up: Notable changes in Python 3 6 2 -1.4.12.2 Removal of ‘make touch’ build target +1.3.12.2 Removal of ‘make touch’ build target ............................................. The ‘make touch’ build target previously used to request implicit @@ -20302,7 +17724,7 @@ Changed in version 3.6.2.  File: python.info, Node: Notable changes in Python 3 6 4, Next: Notable changes in Python 3 6 5, Prev: Notable changes in Python 3 6 2, Up: What’s New In Python 3 6 -1.4.13 Notable changes in Python 3.6.4 +1.3.13 Notable changes in Python 3.6.4 -------------------------------------- The ‘PyExc_RecursionErrorInst’ singleton that was part of the public API @@ -20319,10 +17741,10 @@ in bpo-22898(1) and bpo-30697(2).)  File: python.info, Node: Notable changes in Python 3 6 5, Next: Notable changes in Python 3 6 7, Prev: Notable changes in Python 3 6 4, Up: What’s New In Python 3 6 -1.4.14 Notable changes in Python 3.6.5 +1.3.14 Notable changes in Python 3.6.5 -------------------------------------- -The *note locale.localeconv(): 587. function now sets temporarily the +The *note locale.localeconv(): 47b. function now sets temporarily the ‘LC_CTYPE’ locale to the ‘LC_NUMERIC’ locale in some cases. (Contributed by Victor Stinner in bpo-31900(1).) @@ -20333,10 +17755,10 @@ The *note locale.localeconv(): 587. function now sets temporarily the  File: python.info, Node: Notable changes in Python 3 6 7, Next: Notable changes in Python 3 6 10, Prev: Notable changes in Python 3 6 5, Up: What’s New In Python 3 6 -1.4.15 Notable changes in Python 3.6.7 +1.3.15 Notable changes in Python 3.6.7 -------------------------------------- -In 3.6.7 the *note tokenize: 11a. module now implicitly emits a +In 3.6.7 the *note tokenize: 112. module now implicitly emits a ‘NEWLINE’ token when provided with input that does not have a trailing new line. This behavior now matches what the C tokenizer does internally. (Contributed by Ammar Askar in bpo-33899(1).) @@ -20348,11 +17770,11 @@ internally. (Contributed by Ammar Askar in bpo-33899(1).)  File: python.info, Node: Notable changes in Python 3 6 10, Next: Notable changes in Python 3 6 13, Prev: Notable changes in Python 3 6 7, Up: What’s New In Python 3 6 -1.4.16 Notable changes in Python 3.6.10 +1.3.16 Notable changes in Python 3.6.10 --------------------------------------- Due to significant security concerns, the `reuse_address' parameter of -*note asyncio.loop.create_datagram_endpoint(): 189. is no longer +*note asyncio.loop.create_datagram_endpoint(): 2d3. is no longer supported. This is because of the behavior of the socket option ‘SO_REUSEADDR’ in UDP. For more details, see the documentation for ‘loop.create_datagram_endpoint()’. (Contributed by Kyle Stanley, @@ -20365,15 +17787,15 @@ Antoine Pitrou, and Yury Selivanov in bpo-37228(1).)  File: python.info, Node: Notable changes in Python 3 6 13, Prev: Notable changes in Python 3 6 10, Up: What’s New In Python 3 6 -1.4.17 Notable changes in Python 3.6.13 +1.3.17 Notable changes in Python 3.6.13 --------------------------------------- Earlier Python versions allowed using both ‘;’ and ‘&’ as query -parameter separators in *note urllib.parse.parse_qs(): 282. and *note -urllib.parse.parse_qsl(): 283. Due to security concerns, and to conform +parameter separators in *note urllib.parse.parse_qs(): 2d7. and *note +urllib.parse.parse_qsl(): 2d8. Due to security concerns, and to conform with newer W3C recommendations, this has been changed to allow only a single separator key, with ‘&’ as the default. This change also affects -*note cgi.parse(): 284. and *note cgi.parse_multipart(): 285. as they +*note cgi.parse(): 2d9. and *note cgi.parse_multipart(): 2da. as they use the affected functions internally. For more details, please see their respective documentation. (Contributed by Adam Goldschmidt, Senthil Kumaran and Ken Jin in bpo-42967(1).) @@ -20385,7 +17807,7 @@ Senthil Kumaran and Ken Jin in bpo-42967(1).)  File: python.info, Node: What’s New In Python 3 5, Next: What’s New In Python 3 4, Prev: What’s New In Python 3 6, Up: What’s New in Python -1.5 What’s New In Python 3.5 +1.4 What’s New In Python 3.5 ============================ @@ -20403,16 +17825,16 @@ PEP 478(2) - Python 3.5 Release Schedule * Menu: -* Summary – Release highlights: Summary – Release highlights<4>. -* New Features: New Features<6>. -* Other Language Changes: Other Language Changes<5>. -* New Modules: New Modules<5>. -* Improved Modules: Improved Modules<5>. +* Summary – Release highlights: Summary – Release highlights<3>. +* New Features: New Features<4>. +* Other Language Changes: Other Language Changes<4>. +* New Modules: New Modules<4>. +* Improved Modules: Improved Modules<4>. * Other module-level changes:: -* Optimizations: Optimizations<5>. +* Optimizations: Optimizations<4>. * Build and C API Changes: Build and C API Changes<3>. -* Deprecated: Deprecated<4>. -* Removed: Removed<4>. +* Deprecated: Deprecated<3>. +* Removed: Removed<2>. * Porting to Python 3.5: Porting to Python 3 5. * Notable changes in Python 3.5.4: Notable changes in Python 3 5 4. @@ -20423,36 +17845,36 @@ PEP 478(2) - Python 3.5 Release Schedule (2) https://www.python.org/dev/peps/pep-0478  -File: python.info, Node: Summary – Release highlights<4>, Next: New Features<6>, Up: What’s New In Python 3 5 +File: python.info, Node: Summary – Release highlights<3>, Next: New Features<4>, Up: What’s New In Python 3 5 -1.5.1 Summary – Release highlights +1.4.1 Summary – Release highlights ---------------------------------- New syntax features: - * *note PEP 492: 720, coroutines with async and await syntax. + * *note PEP 492: 618, coroutines with async and await syntax. - * *note PEP 465: 721, a new matrix multiplication operator: ‘a @ b’. + * *note PEP 465: 619, a new matrix multiplication operator: ‘a @ b’. - * *note PEP 448: 722, additional unpacking generalizations. + * *note PEP 448: 61a, additional unpacking generalizations. New library modules: - * *note typing: 122.: *note PEP 484 – Type Hints: 723. + * *note typing: 11a.: *note PEP 484 – Type Hints: 61b. - * *note zipapp: 14a.: *note PEP 441 Improving Python ZIP Application - Support: 724. + * *note zipapp: 142.: *note PEP 441 Improving Python ZIP Application + Support: 61c. New built-in features: - * ‘bytes % args’, ‘bytearray % args’: *note PEP 461: 725. – Adding + * ‘bytes % args’, ‘bytearray % args’: *note PEP 461: 61d. – Adding ‘%’ formatting to bytes and bytearray. - * New *note bytes.hex(): 726, *note bytearray.hex(): 727. and *note - memoryview.hex(): 728. methods. (Contributed by Arnon Yaari in + * New *note bytes.hex(): 61e, *note bytearray.hex(): 61f. and *note + memoryview.hex(): 620. methods. (Contributed by Arnon Yaari in bpo-9951(1).) - * *note memoryview: 389. now supports tuple indexing (including + * *note memoryview: 248. now supports tuple indexing (including multi-dimensional). (Contributed by Antoine Pitrou in bpo-23632(2).) @@ -20460,49 +17882,49 @@ New built-in features: object being iterated by ‘yield from’ expressions. (Contributed by Benno Leslie and Yury Selivanov in bpo-24450(3).) - * A new *note RecursionError: 729. exception is now raised when + * A new *note RecursionError: 621. exception is now raised when maximum recursion depth is reached. (Contributed by Georg Brandl in bpo-19235(4).) CPython implementation improvements: * When the ‘LC_TYPE’ locale is the POSIX locale (‘C’ locale), *note - sys.stdin: 420. and *note sys.stdout: 421. now use the + sys.stdin: 301. and *note sys.stdout: 302. now use the ‘surrogateescape’ error handler, instead of the ‘strict’ error handler. (Contributed by Victor Stinner in bpo-19977(5).) * ‘.pyo’ files are no longer used and have been replaced by a more flexible scheme that includes the optimization level explicitly in - ‘.pyc’ name. (See *note PEP 488 overview: 72a.) + ‘.pyc’ name. (See *note PEP 488 overview: 622.) * Builtin and extension modules are now initialized in a multi-phase process, which is similar to how Python modules are loaded. (See - *note PEP 489 overview: 72b.) + *note PEP 489 overview: 623.) Significant improvements in the standard library: - * *note collections.OrderedDict: 2ed. is now *note implemented in C: - 72c, which makes it 4 to 100 times faster. + * *note collections.OrderedDict: 1a5. is now *note implemented in C: + 624, which makes it 4 to 100 times faster. - * The *note ssl: f3. module gained *note support for Memory BIO: 72d, + * The *note ssl: f4. module gained *note support for Memory BIO: 625, which decouples SSL protocol handling from network IO. - * The new *note os.scandir(): 38c. function provides a *note better - and significantly faster way: 72e. of directory traversal. + * The new *note os.scandir(): 24b. function provides a *note better + and significantly faster way: 626. of directory traversal. - * *note functools.lru_cache(): 2fb. has been mostly *note - reimplemented in C: 72f, yielding much better performance. + * *note functools.lru_cache(): 1b3. has been mostly *note + reimplemented in C: 627, yielding much better performance. - * The new *note subprocess.run(): 4f5. function provides a *note - streamlined way to run subprocesses: 730. + * The new *note subprocess.run(): 3de. function provides a *note + streamlined way to run subprocesses: 628. - * The *note traceback: 11c. module has been significantly *note - enhanced: 731. for improved performance and developer convenience. + * The *note traceback: 114. module has been significantly *note + enhanced: 629. for improved performance and developer convenience. Security improvements: * SSLv3 is now disabled throughout the standard library. It can - still be enabled by instantiating a *note ssl.SSLContext: 4ec. + still be enabled by instantiating a *note ssl.SSLContext: 3d5. manually. (See bpo-22638(6) for more details; this change was backported to CPython 3.4 and 2.7.) @@ -20513,7 +17935,7 @@ Security improvements: Windows improvements: * A new installer for Windows has replaced the old MSI. See *note - Using Python on Windows: 3fb. for more information. + Using Python on Windows: 2c5. for more information. * Windows builds now use Microsoft Visual C++ 14.0, and extension modules should use the same. @@ -20539,9 +17961,9 @@ deprecations, and potential porting issues. (7) https://bugs.python.org/issue22796  -File: python.info, Node: New Features<6>, Next: Other Language Changes<5>, Prev: Summary – Release highlights<4>, Up: What’s New In Python 3 5 +File: python.info, Node: New Features<4>, Next: Other Language Changes<4>, Prev: Summary – Release highlights<3>, Up: What’s New In Python 3 5 -1.5.2 New Features +1.4.2 New Features ------------------ * Menu: @@ -20560,28 +17982,28 @@ File: python.info, Node: New Features<6>, Next: Other Language Changes<5>, Pr * PEP 489; Multi-phase extension module initialization: PEP 489 Multi-phase extension module initialization.  -File: python.info, Node: PEP 492 - Coroutines with async and await syntax, Next: PEP 465 - A dedicated infix operator for matrix multiplication, Up: New Features<6> +File: python.info, Node: PEP 492 - Coroutines with async and await syntax, Next: PEP 465 - A dedicated infix operator for matrix multiplication, Up: New Features<4> -1.5.2.1 PEP 492 - Coroutines with async and await syntax +1.4.2.1 PEP 492 - Coroutines with async and await syntax ........................................................ PEP 492(1) greatly improves support for asynchronous programming in -Python by adding *note awaitable objects: 615, *note coroutine -functions: 734, *note asynchronous iteration: 735, and *note -asynchronous context managers: 736. +Python by adding *note awaitable objects: 507, *note coroutine +functions: 62c, *note asynchronous iteration: 62d, and *note +asynchronous context managers: 62e. -Coroutine functions are declared using the new *note async def: 3ac. +Coroutine functions are declared using the new *note async def: 26f. syntax: >>> async def coro(): ... return 'spam' -Inside a coroutine function, the new *note await: 2db. expression can be +Inside a coroutine function, the new *note await: 18f. expression can be used to suspend coroutine execution until the result is available. Any object can be `awaited', as long as it implements the *note awaitable: -615. protocol by defining the *note __await__(): 737. method. +507. protocol by defining the ‘__await__()’ method. -PEP 492 also adds *note async for: 400. statement for convenient +PEP 492 also adds *note async for: 2cf. statement for convenient iteration over asynchronous iterables. An example of a rudimentary HTTP client written using the new syntax: @@ -20638,19 +18060,19 @@ will output: coro 1: holding the lock coro 1: releasing the lock -Note that both *note async for: 400. and *note async with: 738. can only -be used inside a coroutine function declared with *note async def: 3ac. +Note that both *note async for: 2cf. and *note async with: 62f. can only +be used inside a coroutine function declared with *note async def: 26f. Coroutine functions are intended to be run inside a compatible event -loop, such as the *note asyncio loop: 739. +loop, such as the *note asyncio loop: 630. Note: Changed in version 3.5.2: Starting with CPython 3.5.2, ‘__aiter__’ - can directly return *note asynchronous iterators: 73a. Returning - an *note awaitable: 615. object will result in a *note - PendingDeprecationWarning: 15c. + can directly return *note asynchronous iterators: 631. Returning + an *note awaitable: 507. object will result in a *note + PendingDeprecationWarning: 265. - See more details in the *note Asynchronous Iterators: 73b. + See more details in the *note Asynchronous Iterators: 632. documentation section. See also @@ -20667,18 +18089,17 @@ PEP 492(2) – Coroutines with async and await syntax (2) https://www.python.org/dev/peps/pep-0492  -File: python.info, Node: PEP 465 - A dedicated infix operator for matrix multiplication, Next: PEP 448 - Additional Unpacking Generalizations, Prev: PEP 492 - Coroutines with async and await syntax, Up: New Features<6> +File: python.info, Node: PEP 465 - A dedicated infix operator for matrix multiplication, Next: PEP 448 - Additional Unpacking Generalizations, Prev: PEP 492 - Coroutines with async and await syntax, Up: New Features<4> -1.5.2.2 PEP 465 - A dedicated infix operator for matrix multiplication +1.4.2.2 PEP 465 - A dedicated infix operator for matrix multiplication ...................................................................... PEP 465(1) adds the ‘@’ infix operator for matrix multiplication. Currently, no builtin Python types implement the new operator, however, -it can be implemented by defining *note __matmul__(): 73d, *note -__rmatmul__(): 73e, and *note __imatmul__(): 73f. for regular, -reflected, and in-place matrix multiplication. The semantics of these -methods is similar to that of methods defining other infix arithmetic -operators. +it can be implemented by defining ‘__matmul__()’, ‘__rmatmul__()’, and +‘__imatmul__()’ for regular, reflected, and in-place matrix +multiplication. The semantics of these methods is similar to that of +methods defining other infix arithmetic operators. Matrix multiplication is a notably common operation in many fields of mathematics, science, engineering, and the addition of ‘@’ allows @@ -20723,14 +18144,14 @@ PEP 465(2) – A dedicated infix operator for matrix multiplication (2) https://www.python.org/dev/peps/pep-0465  -File: python.info, Node: PEP 448 - Additional Unpacking Generalizations, Next: PEP 461 - percent formatting support for bytes and bytearray, Prev: PEP 465 - A dedicated infix operator for matrix multiplication, Up: New Features<6> +File: python.info, Node: PEP 448 - Additional Unpacking Generalizations, Next: PEP 461 - percent formatting support for bytes and bytearray, Prev: PEP 465 - A dedicated infix operator for matrix multiplication, Up: New Features<4> -1.5.2.3 PEP 448 - Additional Unpacking Generalizations +1.4.2.3 PEP 448 - Additional Unpacking Generalizations ...................................................... PEP 448(1) extends the allowed uses of the ‘*’ iterable unpacking operator and ‘**’ dictionary unpacking operator. It is now possible to -use an arbitrary number of unpackings in *note function calls: 741.: +use an arbitrary number of unpackings in *note function calls: 635.: >>> print(*[1], *[2], 3, *[4, 5]) 1 2 3 4 5 @@ -20743,8 +18164,8 @@ use an arbitrary number of unpackings in *note function calls: 741.: 1 2 3 4 Similarly, tuple, list, set, and dictionary displays allow multiple -unpackings (see *note Expression lists: 742. and *note Dictionary -displays: 743.): +unpackings (see *note Expression lists: 636. and *note Dictionary +displays: 637.): >>> *range(4), 4 (0, 1, 2, 3, 4) @@ -20773,13 +18194,13 @@ PEP 448(2) – Additional Unpacking Generalizations (2) https://www.python.org/dev/peps/pep-0448  -File: python.info, Node: PEP 461 - percent formatting support for bytes and bytearray, Next: PEP 484 - Type Hints, Prev: PEP 448 - Additional Unpacking Generalizations, Up: New Features<6> +File: python.info, Node: PEP 461 - percent formatting support for bytes and bytearray, Next: PEP 484 - Type Hints, Prev: PEP 448 - Additional Unpacking Generalizations, Up: New Features<4> -1.5.2.4 PEP 461 - percent formatting support for bytes and bytearray +1.4.2.4 PEP 461 - percent formatting support for bytes and bytearray .................................................................... -PEP 461(1) adds support for the ‘%’ *note interpolation operator: 745. -to *note bytes: 172. and *note bytearray: 173. +PEP 461(1) adds support for the ‘%’ *note interpolation operator: 639. +to *note bytes: 322. and *note bytearray: 323. While interpolation is usually thought of as a string operation, there are cases where interpolation on ‘bytes’ or ‘bytearrays’ makes sense, @@ -20825,9 +18246,9 @@ PEP 461(2) – Adding % formatting to bytes and bytearray (2) https://www.python.org/dev/peps/pep-0461  -File: python.info, Node: PEP 484 - Type Hints, Next: PEP 471 - os scandir function – a better and faster directory iterator, Prev: PEP 461 - percent formatting support for bytes and bytearray, Up: New Features<6> +File: python.info, Node: PEP 484 - Type Hints, Next: PEP 471 - os scandir function – a better and faster directory iterator, Prev: PEP 461 - percent formatting support for bytes and bytearray, Up: New Features<4> -1.5.2.5 PEP 484 - Type Hints +1.4.2.5 PEP 484 - Type Hints ............................ Function annotation syntax has been a Python feature since version 3.0 ( @@ -20840,7 +18261,7 @@ became evident that it would be beneficial for Python users, if the standard library included the base definitions and tools for type annotations. -PEP 484(2) introduces a *note provisional module: 456. to provide these +PEP 484(2) introduces a *note provisional module: 339. to provide these standard definitions and tools, along with some conventions for situations where annotations are not available. @@ -20856,13 +18277,13 @@ runtime'. Instead, it is assumed that a separate off-line type checker (e.g. mypy(3)) will be used for on-demand source code analysis. The type system supports unions, generic types, and a special type named -*note Any: 747. which is consistent with (i.e. assignable to and from) +*note Any: 63b. which is consistent with (i.e. assignable to and from) all types. See also ........ - * *note typing: 122. module documentation + * *note typing: 11a. module documentation * PEP 484(4) – Type Hints @@ -20888,25 +18309,25 @@ See also (5) https://www.python.org/dev/peps/pep-0483  -File: python.info, Node: PEP 471 - os scandir function – a better and faster directory iterator, Next: PEP 475 Retry system calls failing with EINTR, Prev: PEP 484 - Type Hints, Up: New Features<6> +File: python.info, Node: PEP 471 - os scandir function – a better and faster directory iterator, Next: PEP 475 Retry system calls failing with EINTR, Prev: PEP 484 - Type Hints, Up: New Features<4> -1.5.2.6 PEP 471 - os.scandir() function – a better and faster directory iterator +1.4.2.6 PEP 471 - os.scandir() function – a better and faster directory iterator ................................................................................ PEP 471(1) adds a new directory iteration function, *note os.scandir(): -38c, to the standard library. Additionally, *note os.walk(): 749. is +24b, to the standard library. Additionally, *note os.walk(): 63d. is now implemented using ‘scandir’, which makes it 3 to 5 times faster on POSIX systems and 7 to 20 times faster on Windows systems. This is largely achieved by greatly reducing the number of calls to *note -os.stat(): 324. required to walk a directory tree. +os.stat(): 1dd. required to walk a directory tree. Additionally, ‘scandir’ returns an iterator, as opposed to returning a list of file names, which improves memory efficiency when iterating over very large directories. -The following example shows a simple use of *note os.scandir(): 38c. to +The following example shows a simple use of *note os.scandir(): 24b. to display all the files (excluding directories) in the given `path' that -don’t start with ‘'.'’. The *note entry.is_file(): 74a. call will +don’t start with ‘'.'’. The *note entry.is_file(): 63e. call will generally not make an additional system call: for entry in os.scandir(path): @@ -20928,14 +18349,14 @@ PEP 471(2) – os.scandir() function – a better and faster directory iterator (2) https://www.python.org/dev/peps/pep-0471  -File: python.info, Node: PEP 475 Retry system calls failing with EINTR, Next: PEP 479 Change StopIteration handling inside generators, Prev: PEP 471 - os scandir function – a better and faster directory iterator, Up: New Features<6> +File: python.info, Node: PEP 475 Retry system calls failing with EINTR, Next: PEP 479 Change StopIteration handling inside generators, Prev: PEP 471 - os scandir function – a better and faster directory iterator, Up: New Features<4> -1.5.2.7 PEP 475: Retry system calls failing with EINTR +1.4.2.7 PEP 475: Retry system calls failing with EINTR ...................................................... -An *note errno.EINTR: 74d. error code is returned whenever a system +An *note errno.EINTR: 641. error code is returned whenever a system call, that is waiting for I/O, is interrupted by a signal. Previously, -Python would raise *note InterruptedError: 74e. in such cases. This +Python would raise *note InterruptedError: 642. in such cases. This meant that, when writing a Python application, the developer had two choices: @@ -20961,45 +18382,45 @@ and: PEP 475(1) implements automatic retry of system calls on ‘EINTR’. This removes the burden of dealing with ‘EINTR’ or *note InterruptedError: -74e. in user code in most situations and makes Python programs, +642. in user code in most situations and makes Python programs, including the standard library, more robust. Note that the system call is only retried if the signal handler does not raise an exception. Below is a list of functions which are now retried when interrupted by a signal: - * *note open(): 16f. and *note io.open(): 74f.; + * *note open(): 4e1. and *note io.open(): 643.; - * functions of the *note faulthandler: 7b. module; + * functions of the *note faulthandler: 7d. module; - * *note os: c4. functions: *note fchdir(): 750, *note fchmod(): 751, - *note fchown(): 752, *note fdatasync(): 753, *note fstat(): 754, - *note fstatvfs(): 755, *note fsync(): 756, *note ftruncate(): 757, - *note mkfifo(): 758, *note mknod(): 759, *note open(): 75a, *note - posix_fadvise(): 75b, *note posix_fallocate(): 75c, *note pread(): - 4c2, *note pwrite(): 4c5, *note read(): 75d, *note readv(): 4c1, - *note sendfile(): 463, *note wait3(): 75e, *note wait4(): 75f, - *note wait(): 760, *note waitid(): 761, *note waitpid(): 762, *note - write(): 763, *note writev(): 4c4.; + * *note os: c5. functions: *note fchdir(): 644, *note fchmod(): 645, + *note fchown(): 646, *note fdatasync(): 647, *note fstat(): 648, + *note fstatvfs(): 649, *note fsync(): 64a, *note ftruncate(): 64b, + *note mkfifo(): 64c, *note mknod(): 64d, *note open(): 64e, *note + posix_fadvise(): 64f, *note posix_fallocate(): 650, *note pread(): + 3aa, *note pwrite(): 3ad, *note read(): 651, *note readv(): 3a9, + *note sendfile(): 34a, *note wait3(): 652, *note wait4(): 653, + *note wait(): 654, *note waitid(): 655, *note waitpid(): 656, *note + write(): 657, *note writev(): 3ac.; - * special cases: *note os.close(): 4db. and *note os.dup2(): 4c7. now - ignore *note EINTR: 74d. errors; the syscall is not retried (see + * special cases: *note os.close(): 3c3. and *note os.dup2(): 3af. now + ignore *note EINTR: 641. errors; the syscall is not retried (see the PEP for the rationale); - * *note select: e5. functions: *note devpoll.poll(): 764, *note - epoll.poll(): 765, *note kqueue.control(): 766, *note poll.poll(): - 767, *note select(): 768.; + * *note select: e6. functions: *note devpoll.poll(): 658, *note + epoll.poll(): 659, *note kqueue.control(): 65a, *note poll.poll(): + 65b, *note select(): 65c.; - * methods of the *note socket: 769. class: *note accept(): 76a, *note - connect(): 76b. (except for non-blocking sockets), *note recv(): - 76c, *note recvfrom(): 76d, *note recvmsg(): 76e, *note send(): - 76f, *note sendall(): 770, *note sendmsg(): 771, *note sendto(): - 772.; + * methods of the *note socket: 65d. class: *note accept(): 65e, *note + connect(): 65f. (except for non-blocking sockets), *note recv(): + 660, *note recvfrom(): 661, *note recvmsg(): 662, *note send(): + 663, *note sendall(): 664, *note sendmsg(): 665, *note sendto(): + 666.; - * *note signal.sigtimedwait(): 773. and *note signal.sigwaitinfo(): - 774.; + * *note signal.sigtimedwait(): 667. and *note signal.sigwaitinfo(): + 668.; - * *note time.sleep(): 775. + * *note time.sleep(): 669. See also ........ @@ -21017,12 +18438,12 @@ PEP 475(2) – Retry system calls failing with EINTR (2) https://www.python.org/dev/peps/pep-0475  -File: python.info, Node: PEP 479 Change StopIteration handling inside generators, Next: PEP 485 A function for testing approximate equality, Prev: PEP 475 Retry system calls failing with EINTR, Up: New Features<6> +File: python.info, Node: PEP 479 Change StopIteration handling inside generators, Next: PEP 485 A function for testing approximate equality, Prev: PEP 475 Retry system calls failing with EINTR, Up: New Features<4> -1.5.2.8 PEP 479: Change StopIteration handling inside generators +1.4.2.8 PEP 479: Change StopIteration handling inside generators ................................................................ -The interaction of generators and *note StopIteration: 584. in Python +The interaction of generators and *note StopIteration: 477. in Python 3.4 and earlier was sometimes surprising, and could conceal obscure bugs. Previously, ‘StopIteration’ raised accidentally inside a generator function was interpreted as the end of the iteration by the @@ -21030,14 +18451,14 @@ loop construct driving the generator. PEP 479(1) changes the behavior of generators: when a ‘StopIteration’ exception is raised inside a generator, it is replaced with a *note -RuntimeError: 3df. before it exits the generator frame. The main goal +RuntimeError: 2a5. before it exits the generator frame. The main goal of this change is to ease debugging in the situation where an unguarded -*note next(): 777. call raises ‘StopIteration’ and causes the iteration +*note next(): 66b. call raises ‘StopIteration’ and causes the iteration controlled by the generator to terminate silently. This is particularly pernicious in combination with the ‘yield from’ construct. This is a backwards incompatible change, so to enable the new behavior, -a *note __future__: 778. import is necessary: +a *note __future__: 66c. import is necessary: >>> from __future__ import generator_stop @@ -21056,8 +18477,8 @@ a *note __future__: 778. import is necessary: File "", line 1, in RuntimeError: generator raised StopIteration -Without a ‘__future__’ import, a *note PendingDeprecationWarning: 15c. -will be raised whenever a *note StopIteration: 584. exception is raised +Without a ‘__future__’ import, a *note PendingDeprecationWarning: 265. +will be raised whenever a *note StopIteration: 477. exception is raised inside a generator. See also @@ -21075,13 +18496,13 @@ PEP 479(2) – Change StopIteration handling inside generators (2) https://www.python.org/dev/peps/pep-0479  -File: python.info, Node: PEP 485 A function for testing approximate equality, Next: PEP 486 Make the Python Launcher aware of virtual environments, Prev: PEP 479 Change StopIteration handling inside generators, Up: New Features<6> +File: python.info, Node: PEP 485 A function for testing approximate equality, Next: PEP 486 Make the Python Launcher aware of virtual environments, Prev: PEP 479 Change StopIteration handling inside generators, Up: New Features<4> -1.5.2.9 PEP 485: A function for testing approximate equality +1.4.2.9 PEP 485: A function for testing approximate equality ............................................................ -PEP 485(1) adds the *note math.isclose(): 77b. and *note -cmath.isclose(): 77c. functions which tell whether two values are +PEP 485(1) adds the *note math.isclose(): 66f. and *note +cmath.isclose(): 670. functions which tell whether two values are approximately equal or “close” to each other. Whether or not two values are considered close is determined according to given absolute and relative tolerances. Relative tolerance is the maximum allowed @@ -21122,9 +18543,9 @@ PEP 485(2) – A function for testing approximate equality (2) https://www.python.org/dev/peps/pep-0485  -File: python.info, Node: PEP 486 Make the Python Launcher aware of virtual environments, Next: PEP 488 Elimination of PYO files, Prev: PEP 485 A function for testing approximate equality, Up: New Features<6> +File: python.info, Node: PEP 486 Make the Python Launcher aware of virtual environments, Next: PEP 488 Elimination of PYO files, Prev: PEP 485 A function for testing approximate equality, Up: New Features<4> -1.5.2.10 PEP 486: Make the Python Launcher aware of virtual environments +1.4.2.10 PEP 486: Make the Python Launcher aware of virtual environments ........................................................................ PEP 486(1) makes the Windows launcher (see PEP 397(2)) aware of an @@ -21148,9 +18569,9 @@ PEP 486(3) – Make the Python Launcher aware of virtual environments (3) https://www.python.org/dev/peps/pep-0486  -File: python.info, Node: PEP 488 Elimination of PYO files, Next: PEP 489 Multi-phase extension module initialization, Prev: PEP 486 Make the Python Launcher aware of virtual environments, Up: New Features<6> +File: python.info, Node: PEP 488 Elimination of PYO files, Next: PEP 489 Multi-phase extension module initialization, Prev: PEP 486 Make the Python Launcher aware of virtual environments, Up: New Features<4> -1.5.2.11 PEP 488: Elimination of PYO files +1.4.2.11 PEP 488: Elimination of PYO files .......................................... PEP 488(1) does away with the concept of ‘.pyo’ files. This means that @@ -21158,10 +18579,10 @@ PEP 488(1) does away with the concept of ‘.pyo’ files. This means that prevent the need to constantly regenerate bytecode files, ‘.pyc’ files now have an optional ‘opt-’ tag in their name when the bytecode is optimized. This has the side-effect of no more bytecode file name -clashes when running under either *note -O: 780. or *note -OO: 781. -Consequently, bytecode files generated from *note -O: 780, and *note --OO: 781. may now exist simultaneously. *note -importlib.util.cache_from_source(): 653. has an updated API to help with +clashes when running under either *note -O: 674. or *note -OO: 675. +Consequently, bytecode files generated from *note -O: 674, and *note +-OO: 675. may now exist simultaneously. *note +importlib.util.cache_from_source(): 544. has an updated API to help with this change. See also @@ -21178,9 +18599,9 @@ PEP 488(2) – Elimination of PYO files (2) https://www.python.org/dev/peps/pep-0488  -File: python.info, Node: PEP 489 Multi-phase extension module initialization, Prev: PEP 488 Elimination of PYO files, Up: New Features<6> +File: python.info, Node: PEP 489 Multi-phase extension module initialization, Prev: PEP 488 Elimination of PYO files, Up: New Features<4> -1.5.2.12 PEP 489: Multi-phase extension module initialization +1.4.2.12 PEP 489: Multi-phase extension module initialization ............................................................. PEP 489(1) updates extension module initialization to take advantage of @@ -21209,9 +18630,9 @@ PEP 489(3) – Multi-phase extension module initialization (3) https://www.python.org/dev/peps/pep-0489  -File: python.info, Node: Other Language Changes<5>, Next: New Modules<5>, Prev: New Features<6>, Up: What’s New In Python 3 5 +File: python.info, Node: Other Language Changes<4>, Next: New Modules<4>, Prev: New Features<4>, Up: What’s New In Python 3 5 -1.5.3 Other Language Changes +1.4.3 Other Language Changes ---------------------------- Some smaller changes made to the core Python language are: @@ -21220,15 +18641,15 @@ Some smaller changes made to the core Python language are: error handlers now work with decoding and translating. (Contributed by Serhiy Storchaka in bpo-19676(1) and bpo-22286(2).) - * The *note -b: 51c. option now affects comparisons of *note bytes: - 172. with *note int: 204. (Contributed by Serhiy Storchaka in + * The *note -b: 406. option now affects comparisons of *note bytes: + 322. with *note int: 171. (Contributed by Serhiy Storchaka in bpo-23681(3).) - * New Kazakh ‘kz1048’ and Tajik ‘koi8_t’ *note codecs: 784. + * New Kazakh ‘kz1048’ and Tajik ‘koi8_t’ *note codecs: 678. (Contributed by Serhiy Storchaka in bpo-22682(4) and bpo-22681(5).) * Property docstrings are now writable. This is especially useful - for *note collections.namedtuple(): 1a1. docstrings. (Contributed + for *note collections.namedtuple(): 1a3. docstrings. (Contributed by Berker Peksag in bpo-24064(6).) * Circular imports involving relative imports are now supported. @@ -21251,33 +18672,33 @@ Some smaller changes made to the core Python language are: (7) https://bugs.python.org/issue17636  -File: python.info, Node: New Modules<5>, Next: Improved Modules<5>, Prev: Other Language Changes<5>, Up: What’s New In Python 3 5 +File: python.info, Node: New Modules<4>, Next: Improved Modules<4>, Prev: Other Language Changes<4>, Up: What’s New In Python 3 5 -1.5.4 New Modules +1.4.4 New Modules ----------------- * Menu: -* typing: typing<5>. +* typing: typing<3>. * zipapp: zipapp<2>.  -File: python.info, Node: typing<5>, Next: zipapp<2>, Up: New Modules<5> +File: python.info, Node: typing<3>, Next: zipapp<2>, Up: New Modules<4> -1.5.4.1 typing +1.4.4.1 typing .............. -The new *note typing: 122. *note provisional: 456. module provides +The new *note typing: 11a. *note provisional: 339. module provides standard definitions and tools for function type annotations. See *note -Type Hints: 723. for more information. +Type Hints: 61b. for more information.  -File: python.info, Node: zipapp<2>, Prev: typing<5>, Up: New Modules<5> +File: python.info, Node: zipapp<2>, Prev: typing<3>, Up: New Modules<4> -1.5.4.2 zipapp +1.4.4.2 zipapp .............. -The new *note zipapp: 14a. module (specified in PEP 441(1)) provides an +The new *note zipapp: 142. module (specified in PEP 441(1)) provides an API and command line tool for creating executable Python Zip Applications, which were introduced in Python 2.6 in bpo-1739468(2), but which were not well publicized, either at the time or since. @@ -21308,30 +18729,30 @@ PEP 441(4) – Improving Python ZIP Application Support (4) https://www.python.org/dev/peps/pep-0441  -File: python.info, Node: Improved Modules<5>, Next: Other module-level changes, Prev: New Modules<5>, Up: What’s New In Python 3 5 +File: python.info, Node: Improved Modules<4>, Next: Other module-level changes, Prev: New Modules<4>, Up: What’s New In Python 3 5 -1.5.5 Improved Modules +1.4.5 Improved Modules ---------------------- * Menu: * argparse: argparse<2>. -* asyncio: asyncio<6>. +* asyncio: asyncio<5>. * bz2:: * cgi:: * cmath: cmath<2>. * code:: * collections: collections<5>. -* collections.abc: collections abc<2>. -* compileall: compileall<3>. -* concurrent.futures: concurrent futures<4>. +* collections.abc: collections abc. +* compileall: compileall<2>. +* concurrent.futures: concurrent futures<3>. * configparser:: * contextlib: contextlib<3>. * csv: csv<2>. -* curses: curses<3>. +* curses: curses<2>. * dbm: dbm<4>. * difflib:: -* distutils: distutils<5>. +* distutils: distutils<4>. * doctest:: * email: email<2>. * enum: enum<4>. @@ -21340,49 +18761,49 @@ File: python.info, Node: Improved Modules<5>, Next: Other module-level changes * glob:: * gzip: gzip<2>. * heapq:: -* http: http<2>. +* http:: * http.client: http client<3>. * idlelib and IDLE: idlelib and IDLE<3>. -* imaplib: imaplib<2>. +* imaplib:: * imghdr:: -* importlib: importlib<6>. -* inspect: inspect<4>. +* importlib: importlib<5>. +* inspect: inspect<3>. * io: io<3>. -* ipaddress: ipaddress<3>. +* ipaddress: ipaddress<2>. * json: json<2>. * linecache:: * locale: locale<3>. * logging: logging<4>. * lzma:: -* math: math<5>. -* multiprocessing: multiprocessing<5>. +* math: math<4>. +* multiprocessing: multiprocessing<4>. * operator:: -* os: os<6>. -* pathlib: pathlib<5>. +* os: os<5>. +* pathlib: pathlib<4>. * pickle: pickle<3>. -* poplib: poplib<2>. +* poplib:: * re: re<4>. * readline: readline<2>. * selectors:: * shutil: shutil<2>. -* signal: signal<3>. +* signal: signal<2>. * smtpd:: -* smtplib: smtplib<2>. +* smtplib:: * sndhdr:: -* socket: socket<6>. +* socket: socket<5>. * ssl: ssl<6>. * sqlite3: sqlite3<3>. * subprocess: subprocess<3>. -* sys: sys<6>. +* sys: sys<5>. * sysconfig:: * tarfile: tarfile<2>. * threading: threading<3>. -* time: time<5>. +* time: time<4>. * timeit: timeit<2>. * tkinter: tkinter<5>. * traceback: traceback<2>. * types: types<2>. -* unicodedata: unicodedata<5>. +* unicodedata: unicodedata<4>. * unittest: unittest<3>. * unittest.mock: unittest mock<3>. * urllib:: @@ -21392,14 +18813,14 @@ File: python.info, Node: Improved Modules<5>, Next: Other module-level changes * zipfile: zipfile<3>.  -File: python.info, Node: argparse<2>, Next: asyncio<6>, Up: Improved Modules<5> +File: python.info, Node: argparse<2>, Next: asyncio<5>, Up: Improved Modules<4> -1.5.5.1 argparse +1.4.5.1 argparse ................ -The *note ArgumentParser: 78a. class now allows disabling *note -abbreviated usage: 78b. of long options by setting *note allow_abbrev: -78c. to ‘False’. (Contributed by Jonathan Paugh, Steven Bethard, paul +The *note ArgumentParser: 67e. class now allows disabling *note +abbreviated usage: 67f. of long options by setting *note allow_abbrev: +680. to ‘False’. (Contributed by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson in bpo-14910(1).) ---------- Footnotes ---------- @@ -21407,87 +18828,87 @@ j3 and Daniel Eriksson in bpo-14910(1).) (1) https://bugs.python.org/issue14910  -File: python.info, Node: asyncio<6>, Next: bz2, Prev: argparse<2>, Up: Improved Modules<5> +File: python.info, Node: asyncio<5>, Next: bz2, Prev: argparse<2>, Up: Improved Modules<4> -1.5.5.2 asyncio +1.4.5.2 asyncio ............... -Since the *note asyncio: 9. module is *note provisional: 456, all +Since the *note asyncio: a. module is *note provisional: 339, all changes introduced in Python 3.5 have also been backported to Python 3.4.x. -Notable changes in the *note asyncio: 9. module since Python 3.4.0: +Notable changes in the *note asyncio: a. module since Python 3.4.0: - * New debugging APIs: *note loop.set_debug(): 78e. and *note - loop.get_debug(): 78f. methods. (Contributed by Victor Stinner.) + * New debugging APIs: *note loop.set_debug(): 682. and *note + loop.get_debug(): 683. methods. (Contributed by Victor Stinner.) * The proactor event loop now supports SSL. (Contributed by Antoine Pitrou and Victor Stinner in bpo-22560(1).) - * A new *note loop.is_closed(): 790. method to check if the event + * A new *note loop.is_closed(): 684. method to check if the event loop is closed. (Contributed by Victor Stinner in bpo-21326(2).) - * A new *note loop.create_task(): 2e5. to conveniently create and - schedule a new *note Task: 2e3. for a coroutine. The ‘create_task’ + * A new *note loop.create_task(): 19b. to conveniently create and + schedule a new *note Task: 199. for a coroutine. The ‘create_task’ method is also used by all asyncio functions that wrap coroutines - into tasks, such as *note asyncio.wait(): 207, *note - asyncio.gather(): 3ae, etc. (Contributed by Victor Stinner.) + into tasks, such as *note asyncio.wait(): 274, *note + asyncio.gather(): 271, etc. (Contributed by Victor Stinner.) - * A new *note transport.get_write_buffer_limits(): 791. method to + * A new *note transport.get_write_buffer_limits(): 685. method to inquire for `high-' and `low-' water limits of the flow control. (Contributed by Victor Stinner.) * The ‘async()’ function is deprecated in favor of *note - ensure_future(): 613. (Contributed by Yury Selivanov.) + ensure_future(): 505. (Contributed by Yury Selivanov.) - * New *note loop.set_task_factory(): 792. and *note - loop.get_task_factory(): 793. methods to customize the task factory - that *note loop.create_task(): 2e5. method uses. (Contributed by + * New *note loop.set_task_factory(): 686. and *note + loop.get_task_factory(): 687. methods to customize the task factory + that *note loop.create_task(): 19b. method uses. (Contributed by Yury Selivanov.) - * New *note Queue.join(): 794. and *note Queue.task_done(): 795. + * New *note Queue.join(): 688. and *note Queue.task_done(): 689. queue methods. (Contributed by Victor Stinner.) * The ‘JoinableQueue’ class was removed, in favor of the *note - asyncio.Queue: 3b6. class. (Contributed by Victor Stinner.) + asyncio.Queue: 27b. class. (Contributed by Victor Stinner.) Updates in 3.5.1: - * The *note ensure_future(): 613. function and all functions that use - it, such as *note loop.run_until_complete(): 614, now accept all - kinds of *note awaitable objects: 615. (Contributed by Yury + * The *note ensure_future(): 505. function and all functions that use + it, such as *note loop.run_until_complete(): 506, now accept all + kinds of *note awaitable objects: 507. (Contributed by Yury Selivanov.) - * New *note run_coroutine_threadsafe(): 616. function to submit + * New *note run_coroutine_threadsafe(): 508. function to submit coroutines to event loops from other threads. (Contributed by Vincent Michel.) - * New *note Transport.is_closing(): 617. method to check if the + * New *note Transport.is_closing(): 509. method to check if the transport is closing or closed. (Contributed by Yury Selivanov.) - * The *note loop.create_server(): 467. method can now accept a list + * The *note loop.create_server(): 34e. method can now accept a list of hosts. (Contributed by Yann Sionneau.) Updates in 3.5.2: - * New *note loop.create_future(): 618. method to create Future + * New *note loop.create_future(): 50a. method to create Future objects. This allows alternative event loop implementations, such - as uvloop(3), to provide a faster *note asyncio.Future: 548. + as uvloop(3), to provide a faster *note asyncio.Future: 433. implementation. (Contributed by Yury Selivanov.) - * New *note loop.get_exception_handler(): 619. method to get the + * New *note loop.get_exception_handler(): 50b. method to get the current exception handler. (Contributed by Yury Selivanov.) - * New *note StreamReader.readuntil(): 61a. method to read data from + * New *note StreamReader.readuntil(): 50c. method to read data from the stream until a separator bytes sequence appears. (Contributed by Mark Korenberg.) - * The *note loop.create_connection(): 2e8. and *note - loop.create_server(): 467. methods are optimized to avoid calling + * The *note loop.create_connection(): 19e. and *note + loop.create_server(): 34e. methods are optimized to avoid calling the system ‘getaddrinfo’ function if the address is already resolved. (Contributed by A. Jesse Jiryu Davis.) - * The *note loop.sock_connect(sock, address): 796. no longer requires + * The *note loop.sock_connect(sock, address): 68a. no longer requires the `address' to be resolved prior to the call. (Contributed by A. Jesse Jiryu Davis.) @@ -21500,12 +18921,12 @@ Updates in 3.5.2: (3) https://github.com/MagicStack/uvloop  -File: python.info, Node: bz2, Next: cgi, Prev: asyncio<6>, Up: Improved Modules<5> +File: python.info, Node: bz2, Next: cgi, Prev: asyncio<5>, Up: Improved Modules<4> -1.5.5.3 bz2 +1.4.5.3 bz2 ........... -The *note BZ2Decompressor.decompress: 798. method now accepts an +The *note BZ2Decompressor.decompress: 68c. method now accepts an optional `max_length' argument to limit the maximum size of decompressed data. (Contributed by Nikolaus Rath in bpo-15955(1).) @@ -21514,12 +18935,12 @@ data. (Contributed by Nikolaus Rath in bpo-15955(1).) (1) https://bugs.python.org/issue15955  -File: python.info, Node: cgi, Next: cmath<2>, Prev: bz2, Up: Improved Modules<5> +File: python.info, Node: cgi, Next: cmath<2>, Prev: bz2, Up: Improved Modules<4> -1.5.5.4 cgi +1.4.5.4 cgi ........... -The ‘FieldStorage’ class now supports the *note context manager: 663. +The ‘FieldStorage’ class now supports the *note context manager: 555. protocol. (Contributed by Berker Peksag in bpo-20289(1).) ---------- Footnotes ---------- @@ -21527,12 +18948,12 @@ protocol. (Contributed by Berker Peksag in bpo-20289(1).) (1) https://bugs.python.org/issue20289  -File: python.info, Node: cmath<2>, Next: code, Prev: cgi, Up: Improved Modules<5> +File: python.info, Node: cmath<2>, Next: code, Prev: cgi, Up: Improved Modules<4> -1.5.5.5 cmath +1.4.5.5 cmath ............. -A new function *note isclose(): 77c. provides a way to test for +A new function *note isclose(): 670. provides a way to test for approximate equality. (Contributed by Chris Barker and Tal Einat in bpo-24270(1).) @@ -21541,12 +18962,12 @@ bpo-24270(1).) (1) https://bugs.python.org/issue24270  -File: python.info, Node: code, Next: collections<5>, Prev: cmath<2>, Up: Improved Modules<5> +File: python.info, Node: code, Next: collections<5>, Prev: cmath<2>, Up: Improved Modules<4> -1.5.5.6 code +1.4.5.6 code ............ -The *note InteractiveInterpreter.showtraceback(): 79c. method now prints +The *note InteractiveInterpreter.showtraceback(): 690. method now prints the full chained traceback, just like the interactive interpreter. (Contributed by Claudiu Popa in bpo-17442(1).) @@ -21555,25 +18976,25 @@ the full chained traceback, just like the interactive interpreter. (1) https://bugs.python.org/issue17442  -File: python.info, Node: collections<5>, Next: collections abc<2>, Prev: code, Up: Improved Modules<5> +File: python.info, Node: collections<5>, Next: collections abc, Prev: code, Up: Improved Modules<4> -1.5.5.7 collections +1.4.5.7 collections ................... -The *note OrderedDict: 2ed. class is now implemented in C, which makes +The *note OrderedDict: 1a5. class is now implemented in C, which makes it 4 to 100 times faster. (Contributed by Eric Snow in bpo-16991(1).) ‘OrderedDict.items()’, ‘OrderedDict.keys()’, ‘OrderedDict.values()’ -views now support *note reversed(): 2c9. iteration. (Contributed by +views now support *note reversed(): 17b. iteration. (Contributed by Serhiy Storchaka in bpo-19505(2).) -The *note deque: 62d. class now defines *note index(): 79e, *note -insert(): 79f, and *note copy(): 7a0, and supports the ‘+’ and ‘*’ +The *note deque: 51e. class now defines *note index(): 692, *note +insert(): 693, and *note copy(): 694, and supports the ‘+’ and ‘*’ operators. This allows deques to be recognized as a *note -MutableSequence: 7a1. and improves their substitutability for lists. +MutableSequence: 695. and improves their substitutability for lists. (Contributed by Raymond Hettinger in bpo-23704(3).) -Docstrings produced by *note namedtuple(): 1a1. can now be updated: +Docstrings produced by *note namedtuple(): 1a3. can now be updated: Point = namedtuple('Point', ['x', 'y']) Point.__doc__ += ': Cartesian coodinate' @@ -21582,11 +19003,11 @@ Docstrings produced by *note namedtuple(): 1a1. can now be updated: (Contributed by Berker Peksag in bpo-24064(4).) -The *note UserString: 7a2. class now implements the *note -__getnewargs__(): 7a3, *note __rmod__(): 7a4, *note casefold(): 7a5, -*note format_map(): 7a6, *note isprintable(): 7a7, and *note -maketrans(): 7a8. methods to match the corresponding methods of *note -str: 205. (Contributed by Joe Jevnik in bpo-22189(5).) +The *note UserString: 696. class now implements the ‘__getnewargs__()’, +‘__rmod__()’, *note casefold(): 697, *note format_map(): 698, *note +isprintable(): 699, and *note maketrans(): 69a. methods to match the +corresponding methods of *note str: 321. (Contributed by Joe Jevnik in +bpo-22189(5).) ---------- Footnotes ---------- @@ -21601,20 +19022,20 @@ str: 205. (Contributed by Joe Jevnik in bpo-22189(5).) (5) https://bugs.python.org/issue22189  -File: python.info, Node: collections abc<2>, Next: compileall<3>, Prev: collections<5>, Up: Improved Modules<5> +File: python.info, Node: collections abc, Next: compileall<2>, Prev: collections<5>, Up: Improved Modules<4> -1.5.5.8 collections.abc +1.4.5.8 collections.abc ....................... The ‘Sequence.index()’ method now accepts `start' and `stop' arguments -to match the corresponding methods of *note tuple: 1a2, *note list: 1f8, +to match the corresponding methods of *note tuple: 46f, *note list: 24e, etc. (Contributed by Devin Jeanpierre in bpo-23086(1).) -A new *note Generator: 7aa. abstract base class. (Contributed by Stefan +A new *note Generator: 69c. abstract base class. (Contributed by Stefan Behnel in bpo-24018(2).) -New *note Awaitable: 7ab, *note Coroutine: 7ac, *note AsyncIterator: -7ad, and *note AsyncIterable: 7ae. abstract base classes. (Contributed +New *note Awaitable: 69d, *note Coroutine: 69e, *note AsyncIterator: +69f, and *note AsyncIterable: 6a0. abstract base classes. (Contributed by Yury Selivanov in bpo-24184(3).) For earlier Python versions, a backport of the new ABCs is available in @@ -21631,14 +19052,14 @@ an external PyPI package(4). (4) https://pypi.org/project/backports_abc  -File: python.info, Node: compileall<3>, Next: concurrent futures<4>, Prev: collections abc<2>, Up: Improved Modules<5> +File: python.info, Node: compileall<2>, Next: concurrent futures<3>, Prev: collections abc, Up: Improved Modules<4> -1.5.5.9 compileall +1.4.5.9 compileall .................. -A new *note compileall: 20. option, ‘-j `N'’, allows running `N' workers +A new *note compileall: 21. option, ‘-j `N'’, allows running `N' workers simultaneously to perform parallel bytecode compilation. The *note -compile_dir(): 47c. function has a corresponding ‘workers’ parameter. +compile_dir(): 363. function has a corresponding ‘workers’ parameter. (Contributed by Claudiu Popa in bpo-16104(1).) Another new option, ‘-r’, allows controlling the maximum recursion level @@ -21646,8 +19067,8 @@ for subdirectories. (Contributed by Claudiu Popa in bpo-19628(2).) The ‘-q’ command line option can now be specified more than once, in which case all output, including errors, will be suppressed. The -corresponding ‘quiet’ parameter in *note compile_dir(): 47c, *note -compile_file(): 7b0, and *note compile_path(): 7b1. can now accept an +corresponding ‘quiet’ parameter in *note compile_dir(): 363, *note +compile_file(): 6a2, and *note compile_path(): 6a3. can now accept an integer value indicating the level of output suppression. (Contributed by Thomas Kluyver in bpo-21338(3).) @@ -21660,17 +19081,17 @@ by Thomas Kluyver in bpo-21338(3).) (3) https://bugs.python.org/issue21338  -File: python.info, Node: concurrent futures<4>, Next: configparser, Prev: compileall<3>, Up: Improved Modules<5> +File: python.info, Node: concurrent futures<3>, Next: configparser, Prev: compileall<2>, Up: Improved Modules<4> -1.5.5.10 concurrent.futures +1.4.5.10 concurrent.futures ........................... -The *note Executor.map(): 7b3. method now accepts a `chunksize' argument +The *note Executor.map(): 6a5. method now accepts a `chunksize' argument to allow batching of tasks to improve performance when *note -ProcessPoolExecutor(): 196. is used. (Contributed by Dan O’Reilly in +ProcessPoolExecutor(): 28f. is used. (Contributed by Dan O’Reilly in bpo-11271(1).) -The number of workers in the *note ThreadPoolExecutor: 18c. constructor +The number of workers in the *note ThreadPoolExecutor: 266. constructor is optional now. The default value is 5 times the number of CPUs. (Contributed by Claudiu Popa in bpo-21527(2).) @@ -21681,14 +19102,14 @@ is optional now. The default value is 5 times the number of CPUs. (2) https://bugs.python.org/issue21527  -File: python.info, Node: configparser, Next: contextlib<3>, Prev: concurrent futures<4>, Up: Improved Modules<5> +File: python.info, Node: configparser, Next: contextlib<3>, Prev: concurrent futures<3>, Up: Improved Modules<4> -1.5.5.11 configparser +1.4.5.11 configparser ..................... -*note configparser: 22. now provides a way to customize the conversion +*note configparser: 23. now provides a way to customize the conversion of values by specifying a dictionary of converters in the *note -ConfigParser: 5a7. constructor, or by defining them as methods in +ConfigParser: 49b. constructor, or by defining them as methods in ‘ConfigParser’ subclasses. Converters defined in a parser instance are inherited by its section proxies. @@ -21717,15 +19138,15 @@ Example: (1) https://bugs.python.org/issue18159  -File: python.info, Node: contextlib<3>, Next: csv<2>, Prev: configparser, Up: Improved Modules<5> +File: python.info, Node: contextlib<3>, Next: csv<2>, Prev: configparser, Up: Improved Modules<4> -1.5.5.12 contextlib +1.4.5.12 contextlib ................... -The new *note redirect_stderr(): 7b6. *note context manager: 663. -(similar to *note redirect_stdout(): 7b7.) makes it easier for utility +The new *note redirect_stderr(): 6a8. *note context manager: 555. +(similar to *note redirect_stdout(): 6a9.) makes it easier for utility scripts to handle inflexible APIs that write their output to *note -sys.stderr: 1ea. and don’t provide any options to redirect it: +sys.stderr: 303. and don’t provide any options to redirect it: >>> import contextlib, io, logging >>> f = io.StringIO() @@ -21742,12 +19163,12 @@ sys.stderr: 1ea. and don’t provide any options to redirect it: (1) https://bugs.python.org/issue22389  -File: python.info, Node: csv<2>, Next: curses<3>, Prev: contextlib<3>, Up: Improved Modules<5> +File: python.info, Node: csv<2>, Next: curses<2>, Prev: contextlib<3>, Up: Improved Modules<4> -1.5.5.13 csv +1.4.5.13 csv ............ -The *note writerow(): 7b9. method now supports arbitrary iterables, not +The *note writerow(): 6ab. method now supports arbitrary iterables, not just sequences. (Contributed by Serhiy Storchaka in bpo-23171(1).) ---------- Footnotes ---------- @@ -21755,12 +19176,12 @@ just sequences. (Contributed by Serhiy Storchaka in bpo-23171(1).) (1) https://bugs.python.org/issue23171  -File: python.info, Node: curses<3>, Next: dbm<4>, Prev: csv<2>, Up: Improved Modules<5> +File: python.info, Node: curses<2>, Next: dbm<4>, Prev: csv<2>, Up: Improved Modules<4> -1.5.5.14 curses +1.4.5.14 curses ............... -The new *note update_lines_cols(): 7bb. function updates the ‘LINES’ and +The new *note update_lines_cols(): 6ad. function updates the ‘LINES’ and ‘COLS’ environment variables. This is useful for detecting manual screen resizing. (Contributed by Arnon Yaari in bpo-4254(1).) @@ -21769,12 +19190,12 @@ screen resizing. (Contributed by Arnon Yaari in bpo-4254(1).) (1) https://bugs.python.org/issue4254  -File: python.info, Node: dbm<4>, Next: difflib, Prev: curses<3>, Up: Improved Modules<5> +File: python.info, Node: dbm<4>, Next: difflib, Prev: curses<2>, Up: Improved Modules<4> -1.5.5.15 dbm +1.4.5.15 dbm ............ -*note dumb.open: 3e4. always creates a new database when the flag has +*note dumb.open: 2aa. always creates a new database when the flag has the value ‘"n"’. (Contributed by Claudiu Popa in bpo-18039(1).) ---------- Footnotes ---------- @@ -21782,18 +19203,18 @@ the value ‘"n"’. (Contributed by Claudiu Popa in bpo-18039(1).) (1) https://bugs.python.org/issue18039  -File: python.info, Node: difflib, Next: distutils<5>, Prev: dbm<4>, Up: Improved Modules<5> +File: python.info, Node: difflib, Next: distutils<4>, Prev: dbm<4>, Up: Improved Modules<4> -1.5.5.16 difflib +1.4.5.16 difflib ................ The charset of HTML documents generated by *note HtmlDiff.make_file(): -7be. can now be customized by using a new `charset' keyword-only +6b0. can now be customized by using a new `charset' keyword-only argument. The default charset of HTML document changed from ‘"ISO-8859-1"’ to ‘"utf-8"’. (Contributed by Berker Peksag in bpo-2052(1).) -The *note diff_bytes(): 7bf. function can now compare lists of byte +The *note diff_bytes(): 6b1. function can now compare lists of byte strings. This fixes a regression from Python 2. (Contributed by Terry J. Reedy and Greg Ward in bpo-17445(2).) @@ -21804,16 +19225,16 @@ J. Reedy and Greg Ward in bpo-17445(2).) (2) https://bugs.python.org/issue17445  -File: python.info, Node: distutils<5>, Next: doctest, Prev: difflib, Up: Improved Modules<5> +File: python.info, Node: distutils<4>, Next: doctest, Prev: difflib, Up: Improved Modules<4> -1.5.5.17 distutils +1.4.5.17 distutils .................. Both the ‘build’ and ‘build_ext’ commands now accept a ‘-j’ option to enable parallel building of extension modules. (Contributed by Antoine Pitrou in bpo-5309(1).) -The *note distutils: 38. module now supports ‘xz’ compression, and can +The *note distutils: 39. module now supports ‘xz’ compression, and can be enabled by passing ‘xztar’ as an argument to ‘bdist --format’. (Contributed by Serhiy Storchaka in bpo-16314(2).) @@ -21824,14 +19245,14 @@ be enabled by passing ‘xztar’ as an argument to ‘bdist --format’. (2) https://bugs.python.org/issue16314  -File: python.info, Node: doctest, Next: email<2>, Prev: distutils<5>, Up: Improved Modules<5> +File: python.info, Node: doctest, Next: email<2>, Prev: distutils<4>, Up: Improved Modules<4> -1.5.5.18 doctest +1.4.5.18 doctest ................ -The *note DocTestSuite(): 7c2. function returns an empty *note -unittest.TestSuite: 7c3. if `module' contains no docstrings, instead of -raising *note ValueError: 16d. (Contributed by Glenn Jones in +The *note DocTestSuite(): 6b4. function returns an empty *note +unittest.TestSuite: 6b5. if `module' contains no docstrings, instead of +raising *note ValueError: 1e7. (Contributed by Glenn Jones in bpo-15916(1).) ---------- Footnotes ---------- @@ -21839,29 +19260,29 @@ bpo-15916(1).) (1) https://bugs.python.org/issue15916  -File: python.info, Node: email<2>, Next: enum<4>, Prev: doctest, Up: Improved Modules<5> +File: python.info, Node: email<2>, Next: enum<4>, Prev: doctest, Up: Improved Modules<4> -1.5.5.19 email +1.4.5.19 email .............. -A new policy option *note Policy.mangle_from_: 7c5. controls whether or +A new policy option *note Policy.mangle_from_: 6b7. controls whether or not lines that start with ‘"From "’ in email bodies are prefixed with a ‘">"’ character by generators. The default is ‘True’ for *note -compat32: 63c. and ‘False’ for all other policies. (Contributed by +compat32: 52d. and ‘False’ for all other policies. (Contributed by Milan Oberkirch in bpo-20098(1).) -A new *note Message.get_content_disposition(): 7c6. method provides easy +A new *note Message.get_content_disposition(): 6b8. method provides easy access to a canonical value for the ‘Content-Disposition’ header. (Contributed by Abhilash Raj in bpo-21083(2).) -A new policy option *note EmailPolicy.utf8: 7c7. can be set to ‘True’ to +A new policy option *note EmailPolicy.utf8: 6b9. can be set to ‘True’ to encode email headers using the UTF-8 charset instead of using encoded words. This allows ‘Messages’ to be formatted according to RFC 6532(3) and used with an SMTP server that supports the RFC 6531(4) ‘SMTPUTF8’ extension. (Contributed by R. David Murray in bpo-24211(5).) -The *note mime.text.MIMEText: 7c8. constructor now accepts a *note -charset.Charset: 7c9. instance. (Contributed by Claude Paroz and Berker +The *note mime.text.MIMEText: 6ba. constructor now accepts a *note +charset.Charset: 6bb. instance. (Contributed by Claude Paroz and Berker Peksag in bpo-16324(6).) ---------- Footnotes ---------- @@ -21879,12 +19300,12 @@ Peksag in bpo-16324(6).) (6) https://bugs.python.org/issue16324  -File: python.info, Node: enum<4>, Next: faulthandler<2>, Prev: email<2>, Up: Improved Modules<5> +File: python.info, Node: enum<4>, Next: faulthandler<2>, Prev: email<2>, Up: Improved Modules<4> -1.5.5.20 enum +1.4.5.20 enum ............. -The *note Enum: 490. callable has a new parameter `start' to specify the +The *note Enum: 378. callable has a new parameter `start' to specify the initial number of enum values if only `names' are provided: >>> Animal = enum.Enum('Animal', 'cat dog', start=10) @@ -21900,13 +19321,13 @@ initial number of enum values if only `names' are provided: (1) https://bugs.python.org/issue21706  -File: python.info, Node: faulthandler<2>, Next: functools<3>, Prev: enum<4>, Up: Improved Modules<5> +File: python.info, Node: faulthandler<2>, Next: functools<3>, Prev: enum<4>, Up: Improved Modules<4> -1.5.5.21 faulthandler +1.4.5.21 faulthandler ..................... -The *note enable(): 644, *note register(): 7cc, *note dump_traceback(): -7cd. and *note dump_traceback_later(): 7ce. functions now accept file +The *note enable(): 535, *note register(): 6be, *note dump_traceback(): +6bf. and *note dump_traceback_later(): 6c0. functions now accept file descriptors in addition to file-like objects. (Contributed by Wei Wu in bpo-23566(1).) @@ -21915,12 +19336,12 @@ bpo-23566(1).) (1) https://bugs.python.org/issue23566  -File: python.info, Node: functools<3>, Next: glob, Prev: faulthandler<2>, Up: Improved Modules<5> +File: python.info, Node: functools<3>, Next: glob, Prev: faulthandler<2>, Up: Improved Modules<4> -1.5.5.22 functools +1.4.5.22 functools .................. -Most of the *note lru_cache(): 2fb. machinery is now implemented in C, +Most of the *note lru_cache(): 1b3. machinery is now implemented in C, making it significantly faster. (Contributed by Matt Joiner, Alexey Kachayev, and Serhiy Storchaka in bpo-14373(1).) @@ -21929,12 +19350,12 @@ Kachayev, and Serhiy Storchaka in bpo-14373(1).) (1) https://bugs.python.org/issue14373  -File: python.info, Node: glob, Next: gzip<2>, Prev: functools<3>, Up: Improved Modules<5> +File: python.info, Node: glob, Next: gzip<2>, Prev: functools<3>, Up: Improved Modules<4> -1.5.5.23 glob +1.4.5.23 glob ............. -The *note iglob(): 6c0. and *note glob(): 6bf. functions now support +The *note iglob(): 5b4. and *note glob(): 5b3. functions now support recursive search in subdirectories, using the ‘"**"’ pattern. (Contributed by Serhiy Storchaka in bpo-13968(1).) @@ -21943,12 +19364,12 @@ recursive search in subdirectories, using the ‘"**"’ pattern. (1) https://bugs.python.org/issue13968  -File: python.info, Node: gzip<2>, Next: heapq, Prev: glob, Up: Improved Modules<5> +File: python.info, Node: gzip<2>, Next: heapq, Prev: glob, Up: Improved Modules<4> -1.5.5.24 gzip +1.4.5.24 gzip ............. -The `mode' argument of the *note GzipFile: 206. constructor now accepts +The `mode' argument of the *note GzipFile: 6c4. constructor now accepts ‘"x"’ to request exclusive creation. (Contributed by Tim Heaney in bpo-19222(1).) @@ -21957,13 +19378,13 @@ bpo-19222(1).) (1) https://bugs.python.org/issue19222  -File: python.info, Node: heapq, Next: http<2>, Prev: gzip<2>, Up: Improved Modules<5> +File: python.info, Node: heapq, Next: http, Prev: gzip<2>, Up: Improved Modules<4> -1.5.5.25 heapq +1.4.5.25 heapq .............. -Element comparison in *note merge(): 7d3. can now be customized by -passing a *note key function: 7d4. in a new optional `key' keyword +Element comparison in *note merge(): 6c6. can now be customized by +passing a *note key function: 6c7. in a new optional `key' keyword argument, and a new optional `reverse' keyword argument can be used to reverse element comparison: @@ -21982,12 +19403,12 @@ reverse element comparison: (1) https://bugs.python.org/issue13742  -File: python.info, Node: http<2>, Next: http client<3>, Prev: heapq, Up: Improved Modules<5> +File: python.info, Node: http, Next: http client<3>, Prev: heapq, Up: Improved Modules<4> -1.5.5.26 http +1.4.5.26 http ............. -A new *note HTTPStatus: 1ac. enum that defines a set of HTTP status +A new *note HTTPStatus: 6c9. enum that defines a set of HTTP status codes, reason phrases and long descriptions written in English. (Contributed by Demian Brecht in bpo-21793(1).) @@ -21996,14 +19417,14 @@ codes, reason phrases and long descriptions written in English. (1) https://bugs.python.org/issue21793  -File: python.info, Node: http client<3>, Next: idlelib and IDLE<3>, Prev: http<2>, Up: Improved Modules<5> +File: python.info, Node: http client<3>, Next: idlelib and IDLE<3>, Prev: http, Up: Improved Modules<4> -1.5.5.27 http.client +1.4.5.27 http.client .................... -*note HTTPConnection.getresponse(): 7d7. now raises a *note -RemoteDisconnected: 7d8. exception when a remote server connection is -closed unexpectedly. Additionally, if a *note ConnectionError: 7d9. (of +*note HTTPConnection.getresponse(): 6cb. now raises a *note +RemoteDisconnected: 6cc. exception when a remote server connection is +closed unexpectedly. Additionally, if a *note ConnectionError: 6cd. (of which ‘RemoteDisconnected’ is a subclass) is raised, the client socket is now closed automatically, and will reconnect on the next request: @@ -22023,9 +19444,9 @@ is now closed automatically, and will reconnect on the next request: (1) https://bugs.python.org/issue3566  -File: python.info, Node: idlelib and IDLE<3>, Next: imaplib<2>, Prev: http client<3>, Up: Improved Modules<5> +File: python.info, Node: idlelib and IDLE<3>, Next: imaplib, Prev: http client<3>, Up: Improved Modules<4> -1.5.5.28 idlelib and IDLE +1.4.5.28 idlelib and IDLE ......................... Since idlelib implements the IDLE shell and editor and is not intended @@ -22035,23 +19456,23 @@ as well as changes made in future 3.5.x releases. This file is also available from the IDLE Help ‣ About IDLE dialog.  -File: python.info, Node: imaplib<2>, Next: imghdr, Prev: idlelib and IDLE<3>, Up: Improved Modules<5> +File: python.info, Node: imaplib, Next: imghdr, Prev: idlelib and IDLE<3>, Up: Improved Modules<4> -1.5.5.29 imaplib +1.4.5.29 imaplib ................ -The *note IMAP4: 1af. class now supports the *note context manager: 663. -protocol. When used in a *note with: 7dc. statement, the IMAP4 ‘LOGOUT’ +The *note IMAP4: 5f8. class now supports the *note context manager: 555. +protocol. When used in a *note with: 6d0. statement, the IMAP4 ‘LOGOUT’ command will be called automatically at the end of the block. (Contributed by Tarek Ziadé and Serhiy Storchaka in bpo-4972(1).) -The *note imaplib: 97. module now supports RFC 5161(2) (ENABLE +The *note imaplib: 98. module now supports RFC 5161(2) (ENABLE Extension) and RFC 6855(3) (UTF-8 Support) via the *note IMAP4.enable(): -7dd. method. A new *note IMAP4.utf8_enabled: 7de. attribute tracks +6d1. method. A new *note IMAP4.utf8_enabled: 6d2. attribute tracks whether or not RFC 6855(4) support is enabled. (Contributed by Milan Oberkirch, R. David Murray, and Maciej Szulik in bpo-21800(5).) -The *note imaplib: 97. module now automatically encodes non-ASCII string +The *note imaplib: 98. module now automatically encodes non-ASCII string usernames and passwords using UTF-8, as recommended by the RFCs. (Contributed by Milan Oberkirch in bpo-21800(6).) @@ -22070,12 +19491,12 @@ usernames and passwords using UTF-8, as recommended by the RFCs. (6) https://bugs.python.org/issue21800  -File: python.info, Node: imghdr, Next: importlib<6>, Prev: imaplib<2>, Up: Improved Modules<5> +File: python.info, Node: imghdr, Next: importlib<5>, Prev: imaplib, Up: Improved Modules<4> -1.5.5.30 imghdr +1.4.5.30 imghdr ............... -The *note what(): 7e0. function now recognizes the OpenEXR(1) format +The *note what(): 6d4. function now recognizes the OpenEXR(1) format (contributed by Martin Vignali and Claudiu Popa in bpo-20295(2)), and the WebP(3) format (contributed by Fabrice Aneche and Claudiu Popa in bpo-20197(4).) @@ -22091,23 +19512,23 @@ bpo-20197(4).) (4) https://bugs.python.org/issue20197  -File: python.info, Node: importlib<6>, Next: inspect<4>, Prev: imghdr, Up: Improved Modules<5> +File: python.info, Node: importlib<5>, Next: inspect<3>, Prev: imghdr, Up: Improved Modules<4> -1.5.5.31 importlib +1.4.5.31 importlib .................. -The *note util.LazyLoader: 64f. class allows for lazy loading of modules +The *note util.LazyLoader: 540. class allows for lazy loading of modules in applications where startup time is important. (Contributed by Brett Cannon in bpo-17621(1).) -The *note abc.InspectLoader.source_to_code(): 7e2. method is now a +The *note abc.InspectLoader.source_to_code(): 6d6. method is now a static method. This makes it easier to initialize a module object with code compiled from a string by running ‘exec(code, module.__dict__)’. (Contributed by Brett Cannon in bpo-21156(2).) -The new *note util.module_from_spec(): 7e3. function is now the +The new *note util.module_from_spec(): 6d7. function is now the preferred way to create a new module. As opposed to creating a *note -types.ModuleType: 7e4. instance directly, this new function will set the +types.ModuleType: 6d8. instance directly, this new function will set the various import-controlled attributes based on the passed-in spec object. (Contributed by Brett Cannon in bpo-20383(3).) @@ -22120,16 +19541,16 @@ various import-controlled attributes based on the passed-in spec object. (3) https://bugs.python.org/issue20383  -File: python.info, Node: inspect<4>, Next: io<3>, Prev: importlib<6>, Up: Improved Modules<5> +File: python.info, Node: inspect<3>, Next: io<3>, Prev: importlib<5>, Up: Improved Modules<4> -1.5.5.32 inspect +1.4.5.32 inspect ................ -Both the *note Signature: 7e6. and *note Parameter: 7e7. classes are now +Both the *note Signature: 6da. and *note Parameter: 6db. classes are now picklable and hashable. (Contributed by Yury Selivanov in bpo-20726(1) and bpo-20334(2).) -A new *note BoundArguments.apply_defaults(): 7e8. method provides a way +A new *note BoundArguments.apply_defaults(): 6dc. method provides a way to set default values for missing arguments: >>> def foo(a, b='ham', *args): pass @@ -22140,23 +19561,23 @@ to set default values for missing arguments: (Contributed by Yury Selivanov in bpo-24190(3).) -A new class method *note Signature.from_callable(): 7e9. makes -subclassing of *note Signature: 7e6. easier. (Contributed by Yury +A new class method *note Signature.from_callable(): 6dd. makes +subclassing of *note Signature: 6da. easier. (Contributed by Yury Selivanov and Eric Snow in bpo-17373(4).) -The *note signature(): 657. function now accepts a `follow_wrapped' +The *note signature(): 548. function now accepts a `follow_wrapped' optional keyword argument, which, when set to ‘False’, disables automatic following of ‘__wrapped__’ links. (Contributed by Yury Selivanov in bpo-20691(5).) -A set of new functions to inspect *note coroutine functions: 734. and -*note coroutine objects: 18a. has been added: *note iscoroutine(): 7ea, -*note iscoroutinefunction(): 7eb, *note isawaitable(): 7ec, *note -getcoroutinelocals(): 7ed, and *note getcoroutinestate(): 7ee. +A set of new functions to inspect *note coroutine functions: 62c. and +*note coroutine objects: 192. has been added: *note iscoroutine(): 6de, +*note iscoroutinefunction(): 6df, *note isawaitable(): 6e0, *note +getcoroutinelocals(): 6e1, and *note getcoroutinestate(): 6e2. (Contributed by Yury Selivanov in bpo-24017(6) and bpo-24400(7).) -The *note stack(): 7ef, *note trace(): 7f0, *note getouterframes(): 7f1, -and *note getinnerframes(): 7f2. functions now return a list of named +The *note stack(): 6e3, *note trace(): 6e4, *note getouterframes(): 6e5, +and *note getinnerframes(): 6e6. functions now return a list of named tuples. (Contributed by Daniel Shahaf in bpo-16808(8).) ---------- Footnotes ---------- @@ -22178,14 +19599,14 @@ tuples. (Contributed by Daniel Shahaf in bpo-16808(8).) (8) https://bugs.python.org/issue16808  -File: python.info, Node: io<3>, Next: ipaddress<3>, Prev: inspect<4>, Up: Improved Modules<5> +File: python.info, Node: io<3>, Next: ipaddress<2>, Prev: inspect<3>, Up: Improved Modules<4> -1.5.5.33 io +1.4.5.33 io ........... -A new *note BufferedIOBase.readinto1(): 7f4. method, that uses at most -one call to the underlying raw stream’s *note RawIOBase.read(): 7f5. or -*note RawIOBase.readinto(): 7f6. methods. (Contributed by Nikolaus Rath +A new *note BufferedIOBase.readinto1(): 6e8. method, that uses at most +one call to the underlying raw stream’s *note RawIOBase.read(): 6e9. or +*note RawIOBase.readinto(): 6ea. methods. (Contributed by Nikolaus Rath in bpo-20578(1).) ---------- Footnotes ---------- @@ -22193,12 +19614,12 @@ in bpo-20578(1).) (1) https://bugs.python.org/issue20578  -File: python.info, Node: ipaddress<3>, Next: json<2>, Prev: io<3>, Up: Improved Modules<5> +File: python.info, Node: ipaddress<2>, Next: json<2>, Prev: io<3>, Up: Improved Modules<4> -1.5.5.34 ipaddress +1.4.5.34 ipaddress .................. -Both the *note IPv4Network: 4a9. and *note IPv6Network: 4a8. classes now +Both the *note IPv4Network: 391. and *note IPv6Network: 390. classes now accept an ‘(address, netmask)’ tuple argument, so as to easily construct network objects from existing addresses: @@ -22210,8 +19631,8 @@ network objects from existing addresses: (Contributed by Peter Moody and Antoine Pitrou in bpo-16531(1).) -A new ‘reverse_pointer’ attribute for the *note IPv4Network: 4a9. and -*note IPv6Network: 4a8. classes returns the name of the reverse DNS PTR +A new ‘reverse_pointer’ attribute for the *note IPv4Network: 391. and +*note IPv6Network: 390. classes returns the name of the reverse DNS PTR record: >>> import ipaddress @@ -22231,18 +19652,18 @@ record: (2) https://bugs.python.org/issue20480  -File: python.info, Node: json<2>, Next: linecache, Prev: ipaddress<3>, Up: Improved Modules<5> +File: python.info, Node: json<2>, Next: linecache, Prev: ipaddress<2>, Up: Improved Modules<4> -1.5.5.35 json +1.4.5.35 json ............. -The *note json.tool: a5. command line interface now preserves the order +The *note json.tool: a6. command line interface now preserves the order of keys in JSON objects passed in input. The new ‘--sort-keys’ option can be used to sort the keys alphabetically. (Contributed by Berker Peksag in bpo-21650(1).) -JSON decoder now raises *note JSONDecodeError: 7f9. instead of *note -ValueError: 16d. to provide better context information about the error. +JSON decoder now raises *note JSONDecodeError: 6ed. instead of *note +ValueError: 1e7. to provide better context information about the error. (Contributed by Serhiy Storchaka in bpo-19361(2).) ---------- Footnotes ---------- @@ -22252,14 +19673,14 @@ ValueError: 16d. to provide better context information about the error. (2) https://bugs.python.org/issue19361  -File: python.info, Node: linecache, Next: locale<3>, Prev: json<2>, Up: Improved Modules<5> +File: python.info, Node: linecache, Next: locale<3>, Prev: json<2>, Up: Improved Modules<4> -1.5.5.36 linecache +1.4.5.36 linecache .................. -A new *note lazycache(): 7fb. function can be used to capture +A new *note lazycache(): 6ef. function can be used to capture information about a non-file-based module to permit getting its lines -later via *note getline(): 7fc. This avoids doing I/O until a line is +later via *note getline(): 6f0. This avoids doing I/O until a line is actually needed, without having to carry the module globals around indefinitely. (Contributed by Robert Collins in bpo-17911(1).) @@ -22268,12 +19689,12 @@ indefinitely. (Contributed by Robert Collins in bpo-17911(1).) (1) https://bugs.python.org/issue17911  -File: python.info, Node: locale<3>, Next: logging<4>, Prev: linecache, Up: Improved Modules<5> +File: python.info, Node: locale<3>, Next: logging<4>, Prev: linecache, Up: Improved Modules<4> -1.5.5.37 locale +1.4.5.37 locale ............... -A new *note delocalize(): 7fe. function can be used to convert a string +A new *note delocalize(): 6f2. function can be used to convert a string into a normalized number string, taking the ‘LC_NUMERIC’ settings into account: @@ -22294,13 +19715,13 @@ account: (1) https://bugs.python.org/issue13918  -File: python.info, Node: logging<4>, Next: lzma, Prev: locale<3>, Up: Improved Modules<5> +File: python.info, Node: logging<4>, Next: lzma, Prev: locale<3>, Up: Improved Modules<4> -1.5.5.38 logging +1.4.5.38 logging ................ -All logging methods (*note Logger: 4b0. *note log(): 800, *note -exception(): 801, *note critical(): 802, *note debug(): 803, etc.), now +All logging methods (*note Logger: 398. *note log(): 6f4, *note +exception(): 6f5, *note critical(): 6f6, *note debug(): 6f7, etc.), now accept exception instances as an `exc_info' argument, in addition to boolean values and exception tuples: @@ -22313,11 +19734,11 @@ boolean values and exception tuples: (Contributed by Yury Selivanov in bpo-20537(1).) -The *note handlers.HTTPHandler: 804. class now accepts an optional *note -ssl.SSLContext: 4ec. instance to configure SSL settings used in an HTTP +The *note handlers.HTTPHandler: 6f8. class now accepts an optional *note +ssl.SSLContext: 3d5. instance to configure SSL settings used in an HTTP connection. (Contributed by Alex Gaynor in bpo-22788(2).) -The *note handlers.QueueListener: 805. class now takes a +The *note handlers.QueueListener: 6f9. class now takes a `respect_handler_level' keyword argument which, if set to ‘True’, will pass messages to handlers taking handler levels into account. (Contributed by Vinay Sajip.) @@ -22329,12 +19750,12 @@ pass messages to handlers taking handler levels into account. (2) https://bugs.python.org/issue22788  -File: python.info, Node: lzma, Next: math<5>, Prev: logging<4>, Up: Improved Modules<5> +File: python.info, Node: lzma, Next: math<4>, Prev: logging<4>, Up: Improved Modules<4> -1.5.5.39 lzma +1.4.5.39 lzma ............. -The *note LZMADecompressor.decompress(): 807. method now accepts an +The *note LZMADecompressor.decompress(): 6fb. method now accepts an optional `max_length' argument to limit the maximum size of decompressed data. (Contributed by Martin Panter in bpo-15955(1).) @@ -22343,22 +19764,22 @@ data. (Contributed by Martin Panter in bpo-15955(1).) (1) https://bugs.python.org/issue15955  -File: python.info, Node: math<5>, Next: multiprocessing<5>, Prev: lzma, Up: Improved Modules<5> +File: python.info, Node: math<4>, Next: multiprocessing<4>, Prev: lzma, Up: Improved Modules<4> -1.5.5.40 math +1.4.5.40 math ............. -Two new constants have been added to the *note math: b1. module: *note -inf: 624. and *note nan: 625. (Contributed by Mark Dickinson in +Two new constants have been added to the *note math: b2. module: *note +inf: 516. and *note nan: 517. (Contributed by Mark Dickinson in bpo-23185(1).) -A new function *note isclose(): 77b. provides a way to test for +A new function *note isclose(): 66f. provides a way to test for approximate equality. (Contributed by Chris Barker and Tal Einat in bpo-24270(2).) -A new *note gcd(): 1be. function has been added. The ‘fractions.gcd()’ -function is now deprecated. (Contributed by Mark Dickinson and Serhiy -Storchaka in bpo-22486(3).) +A new *note gcd(): 6fd. function has been added. The *note +fractions.gcd(): 6fe. function is now deprecated. (Contributed by Mark +Dickinson and Serhiy Storchaka in bpo-22486(3).) ---------- Footnotes ---------- @@ -22369,13 +19790,13 @@ Storchaka in bpo-22486(3).) (3) https://bugs.python.org/issue22486  -File: python.info, Node: multiprocessing<5>, Next: operator, Prev: math<5>, Up: Improved Modules<5> +File: python.info, Node: multiprocessing<4>, Next: operator, Prev: math<4>, Up: Improved Modules<4> -1.5.5.41 multiprocessing +1.4.5.41 multiprocessing ........................ -*note sharedctypes.synchronized(): 80a. objects now support the *note -context manager: 663. protocol. (Contributed by Charles-François Natali +*note sharedctypes.synchronized(): 700. objects now support the *note +context manager: 555. protocol. (Contributed by Charles-François Natali in bpo-21565(1).) ---------- Footnotes ---------- @@ -22383,16 +19804,16 @@ in bpo-21565(1).) (1) https://bugs.python.org/issue21565  -File: python.info, Node: operator, Next: os<6>, Prev: multiprocessing<5>, Up: Improved Modules<5> +File: python.info, Node: operator, Next: os<5>, Prev: multiprocessing<4>, Up: Improved Modules<4> -1.5.5.42 operator +1.4.5.42 operator ................. -*note attrgetter(): 80c, *note itemgetter(): 38e, and *note -methodcaller(): 80d. objects now support pickling. (Contributed by Josh +*note attrgetter(): 702, *note itemgetter(): 24d, and *note +methodcaller(): 703. objects now support pickling. (Contributed by Josh Rosenberg and Serhiy Storchaka in bpo-22955(1).) -New *note matmul(): 80e. and *note imatmul(): 80f. functions to perform +New *note matmul(): 704. and *note imatmul(): 705. functions to perform matrix multiplication. (Contributed by Benjamin Peterson in bpo-21176(2).) @@ -22403,40 +19824,40 @@ bpo-21176(2).) (2) https://bugs.python.org/issue21176  -File: python.info, Node: os<6>, Next: pathlib<5>, Prev: operator, Up: Improved Modules<5> +File: python.info, Node: os<5>, Next: pathlib<4>, Prev: operator, Up: Improved Modules<4> -1.5.5.43 os +1.4.5.43 os ........... -The new *note scandir(): 38c. function returning an iterator of *note -DirEntry: 5ed. objects has been added. If possible, *note scandir(): -38c. extracts file attributes while scanning a directory, removing the +The new *note scandir(): 24b. function returning an iterator of *note +DirEntry: 4e2. objects has been added. If possible, *note scandir(): +24b. extracts file attributes while scanning a directory, removing the need to perform subsequent system calls to determine file type or attributes, which may significantly improve performance. (Contributed by Ben Hoyt with the help of Victor Stinner in bpo-22524(1).) -On Windows, a new *note stat_result.st_file_attributes: 811. attribute +On Windows, a new *note stat_result.st_file_attributes: 707. attribute is now available. It corresponds to the ‘dwFileAttributes’ member of the ‘BY_HANDLE_FILE_INFORMATION’ structure returned by ‘GetFileInformationByHandle()’. (Contributed by Ben Hoyt in bpo-21719(2).) -The *note urandom(): 5ce. function now uses the ‘getrandom()’ syscall on +The *note urandom(): 4c2. function now uses the ‘getrandom()’ syscall on Linux 3.17 or newer, and ‘getentropy()’ on OpenBSD 5.6 and newer, removing the need to use ‘/dev/urandom’ and avoiding failures due to potential file descriptor exhaustion. (Contributed by Victor Stinner in bpo-22181(3).) -New *note get_blocking(): 812. and *note set_blocking(): 813. functions +New *note get_blocking(): 708. and *note set_blocking(): 709. functions allow getting and setting a file descriptor’s blocking mode (*note -O_NONBLOCK: 814.) (Contributed by Victor Stinner in bpo-22054(4).) +O_NONBLOCK: 70a.) (Contributed by Victor Stinner in bpo-22054(4).) -The *note truncate(): 815. and *note ftruncate(): 757. functions are now +The *note truncate(): 70b. and *note ftruncate(): 64b. functions are now supported on Windows. (Contributed by Steve Dower in bpo-23668(5).) -There is a new *note os.path.commonpath(): 816. function returning the +There is a new *note os.path.commonpath(): 70c. function returning the longest common sub-path of each passed pathname. Unlike the *note -os.path.commonprefix(): 817. function, it always returns a valid path: +os.path.commonprefix(): 70d. function, it always returns a valid path: >>> os.path.commonprefix(['/usr/lib', '/usr/local/lib']) '/usr/l' @@ -22461,14 +19882,14 @@ os.path.commonprefix(): 817. function, it always returns a valid path: (6) https://bugs.python.org/issue10395  -File: python.info, Node: pathlib<5>, Next: pickle<3>, Prev: os<6>, Up: Improved Modules<5> +File: python.info, Node: pathlib<4>, Next: pickle<3>, Prev: os<5>, Up: Improved Modules<4> -1.5.5.44 pathlib +1.4.5.44 pathlib ................ -The new *note Path.samefile(): 819. method can be used to check whether +The new *note Path.samefile(): 70f. method can be used to check whether the path points to the same file as another path, which can be either -another *note Path: 332. object, or a string: +another *note Path: 1ed. object, or a string: >>> import pathlib >>> p1 = pathlib.Path('/etc/hosts') @@ -22478,20 +19899,20 @@ another *note Path: 332. object, or a string: (Contributed by Vajrasky Kok and Antoine Pitrou in bpo-19775(1).) -The *note Path.mkdir(): 81a. method now accepts a new optional -`exist_ok' argument to match ‘mkdir -p’ and *note os.makedirs(): 4c6. +The *note Path.mkdir(): 710. method now accepts a new optional +`exist_ok' argument to match ‘mkdir -p’ and *note os.makedirs(): 3ae. functionality. (Contributed by Berker Peksag in bpo-21539(2).) -There is a new *note Path.expanduser(): 81b. method to expand ‘~’ and +There is a new *note Path.expanduser(): 711. method to expand ‘~’ and ‘~user’ prefixes. (Contributed by Serhiy Storchaka and Claudiu Popa in bpo-19776(3).) -A new *note Path.home(): 81c. class method can be used to get a *note -Path: 332. instance representing the user’s home directory. +A new *note Path.home(): 712. class method can be used to get a *note +Path: 1ed. instance representing the user’s home directory. (Contributed by Victor Salgado and Mayank Tripathi in bpo-19777(4).) -New *note Path.write_text(): 81d, *note Path.read_text(): 81e, *note -Path.write_bytes(): 81f, *note Path.read_bytes(): 820. methods to +New *note Path.write_text(): 713, *note Path.read_text(): 714, *note +Path.write_bytes(): 715, *note Path.read_bytes(): 716. methods to simplify read/write operations on files. The following code snippet will create or rewrite existing file @@ -22517,13 +19938,13 @@ The following code snippet will create or rewrite existing file (5) https://bugs.python.org/issue20218  -File: python.info, Node: pickle<3>, Next: poplib<2>, Prev: pathlib<5>, Up: Improved Modules<5> +File: python.info, Node: pickle<3>, Next: poplib, Prev: pathlib<4>, Up: Improved Modules<4> -1.5.5.45 pickle +1.4.5.45 pickle ............... Nested objects, such as unbound methods or nested classes, can now be -pickled using *note pickle protocols: 668. older than protocol version +pickled using *note pickle protocols: 55b. older than protocol version 4. Protocol version 4 already supports these cases. (Contributed by Serhiy Storchaka in bpo-23611(1).) @@ -22532,12 +19953,12 @@ Serhiy Storchaka in bpo-23611(1).) (1) https://bugs.python.org/issue23611  -File: python.info, Node: poplib<2>, Next: re<4>, Prev: pickle<3>, Up: Improved Modules<5> +File: python.info, Node: poplib, Next: re<4>, Prev: pickle<3>, Up: Improved Modules<4> -1.5.5.46 poplib +1.4.5.46 poplib ............... -A new *note POP3.utf8(): 823. command enables RFC 6856(1) +A new *note POP3.utf8(): 719. command enables RFC 6856(1) (Internationalized Email) support, if a POP server supports it. (Contributed by Milan OberKirch in bpo-21804(2).) @@ -22548,9 +19969,9 @@ A new *note POP3.utf8(): 823. command enables RFC 6856(1) (2) https://bugs.python.org/issue21804  -File: python.info, Node: re<4>, Next: readline<2>, Prev: poplib<2>, Up: Improved Modules<5> +File: python.info, Node: re<4>, Next: readline<2>, Prev: poplib, Up: Improved Modules<4> -1.5.5.47 re +1.4.5.47 re ........... References and conditional references to groups with fixed length are @@ -22568,13 +19989,13 @@ now allowed in lookbehind assertions: The number of capturing groups in regular expressions is no longer limited to 100. (Contributed by Serhiy Storchaka in bpo-22437(2).) -The *note sub(): 57c. and *note subn(): 825. functions now replace +The *note sub(): 46c. and *note subn(): 71b. functions now replace unmatched groups with empty strings instead of raising an exception. (Contributed by Serhiy Storchaka in bpo-1519638(3).) -The *note re.error: 826. exceptions have new attributes, *note msg: 827, -*note pattern: 828, *note pos: 829, *note lineno: 82a, and *note colno: -82b, that provide better context information about the error: +The *note re.error: 71c. exceptions have new attributes, *note msg: 71d, +*note pattern: 71e, *note pos: 71f, *note lineno: 720, and *note colno: +721, that provide better context information about the error: >>> re.compile(""" ... (?x) @@ -22597,12 +20018,12 @@ The *note re.error: 826. exceptions have new attributes, *note msg: 827, (4) https://bugs.python.org/issue22578  -File: python.info, Node: readline<2>, Next: selectors, Prev: re<4>, Up: Improved Modules<5> +File: python.info, Node: readline<2>, Next: selectors, Prev: re<4>, Up: Improved Modules<4> -1.5.5.48 readline +1.4.5.48 readline ................. -A new *note append_history_file(): 82d. function can be used to append +A new *note append_history_file(): 723. function can be used to append the specified number of trailing elements in history to the given file. (Contributed by Bruno Cauet in bpo-22940(1).) @@ -22611,12 +20032,12 @@ the specified number of trailing elements in history to the given file. (1) https://bugs.python.org/issue22940  -File: python.info, Node: selectors, Next: shutil<2>, Prev: readline<2>, Up: Improved Modules<5> +File: python.info, Node: selectors, Next: shutil<2>, Prev: readline<2>, Up: Improved Modules<4> -1.5.5.49 selectors +1.4.5.49 selectors .................. -The new *note DevpollSelector: 553. supports efficient ‘/dev/poll’ +The new *note DevpollSelector: 43f. supports efficient ‘/dev/poll’ polling on Solaris. (Contributed by Giampaolo Rodola’ in bpo-18931(1).) ---------- Footnotes ---------- @@ -22624,18 +20045,18 @@ polling on Solaris. (Contributed by Giampaolo Rodola’ in bpo-18931(1).) (1) https://bugs.python.org/issue18931  -File: python.info, Node: shutil<2>, Next: signal<3>, Prev: selectors, Up: Improved Modules<5> +File: python.info, Node: shutil<2>, Next: signal<2>, Prev: selectors, Up: Improved Modules<4> -1.5.5.50 shutil +1.4.5.50 shutil ............... -The *note move(): 388. function now accepts a `copy_function' argument, -allowing, for example, the *note copy(): 386. function to be used -instead of the default *note copy2(): 387. if there is a need to ignore +The *note move(): 247. function now accepts a `copy_function' argument, +allowing, for example, the *note copy(): 245. function to be used +instead of the default *note copy2(): 246. if there is a need to ignore file metadata when moving. (Contributed by Claudiu Popa in bpo-19840(1).) -The *note make_archive(): 34b. function now supports the `xztar' format. +The *note make_archive(): 207. function now supports the `xztar' format. (Contributed by Serhiy Storchaka in bpo-5411(2).) ---------- Footnotes ---------- @@ -22645,16 +20066,16 @@ The *note make_archive(): 34b. function now supports the `xztar' format. (2) https://bugs.python.org/issue5411  -File: python.info, Node: signal<3>, Next: smtpd, Prev: shutil<2>, Up: Improved Modules<5> +File: python.info, Node: signal<2>, Next: smtpd, Prev: shutil<2>, Up: Improved Modules<4> -1.5.5.51 signal +1.4.5.51 signal ............... -On Windows, the *note set_wakeup_fd(): 4d7. function now also supports +On Windows, the *note set_wakeup_fd(): 3bf. function now also supports socket handles. (Contributed by Victor Stinner in bpo-22018(1).) -Various ‘SIG*’ constants in the *note signal: ea. module have been -converted into *note Enums: 79. This allows meaningful names to be +Various ‘SIG*’ constants in the *note signal: eb. module have been +converted into *note Enums: 7b. This allows meaningful names to be printed during debugging, instead of integer “magic numbers”. (Contributed by Giampaolo Rodola’ in bpo-21076(2).) @@ -22665,37 +20086,37 @@ printed during debugging, instead of integer “magic numbers”. (2) https://bugs.python.org/issue21076  -File: python.info, Node: smtpd, Next: smtplib<2>, Prev: signal<3>, Up: Improved Modules<5> +File: python.info, Node: smtpd, Next: smtplib, Prev: signal<2>, Up: Improved Modules<4> -1.5.5.52 smtpd +1.4.5.52 smtpd .............. -Both the *note SMTPServer: 6fb. and *note SMTPChannel: 6fa. classes now +Both the *note SMTPServer: 5ef. and *note SMTPChannel: 5ee. classes now accept a `decode_data' keyword argument to determine if the ‘DATA’ portion of the SMTP transaction is decoded using the ‘"utf-8"’ codec or -is instead provided to the *note SMTPServer.process_message(): 6fc. +is instead provided to the *note SMTPServer.process_message(): 5f0. method as a byte string. The default is ‘True’ for backward compatibility reasons, but will change to ‘False’ in Python 3.6. If `decode_data' is set to ‘False’, the ‘process_message’ method must be prepared to accept keyword arguments. (Contributed by Maciej Szulik in bpo-19662(1).) -The *note SMTPServer: 6fb. class now advertises the ‘8BITMIME’ extension +The *note SMTPServer: 5ef. class now advertises the ‘8BITMIME’ extension ( RFC 6152(2)) if `decode_data' has been set ‘True’. If the client specifies ‘BODY=8BITMIME’ on the ‘MAIL’ command, it is passed to *note -SMTPServer.process_message(): 6fc. via the `mail_options' keyword. +SMTPServer.process_message(): 5f0. via the `mail_options' keyword. (Contributed by Milan Oberkirch and R. David Murray in bpo-21795(3).) -The *note SMTPServer: 6fb. class now also supports the ‘SMTPUTF8’ +The *note SMTPServer: 5ef. class now also supports the ‘SMTPUTF8’ extension ( RFC 6531(4): Internationalized Email). If the client specified ‘SMTPUTF8 BODY=8BITMIME’ on the ‘MAIL’ command, they are -passed to *note SMTPServer.process_message(): 6fc. via the +passed to *note SMTPServer.process_message(): 5f0. via the `mail_options' keyword. It is the responsibility of the ‘process_message’ method to correctly handle the ‘SMTPUTF8’ data. (Contributed by Milan Oberkirch in bpo-21725(5).) It is now possible to provide, directly or via name resolution, IPv6 -addresses in the *note SMTPServer: 6fb. constructor, and have it +addresses in the *note SMTPServer: 5ef. constructor, and have it successfully connect. (Contributed by Milan Oberkirch in bpo-14758(6).) ---------- Footnotes ---------- @@ -22713,20 +20134,20 @@ successfully connect. (Contributed by Milan Oberkirch in bpo-14758(6).) (6) https://bugs.python.org/issue14758  -File: python.info, Node: smtplib<2>, Next: sndhdr, Prev: smtpd, Up: Improved Modules<5> +File: python.info, Node: smtplib, Next: sndhdr, Prev: smtpd, Up: Improved Modules<4> -1.5.5.53 smtplib +1.4.5.53 smtplib ................ -A new *note SMTP.auth(): 833. method provides a convenient way to +A new *note SMTP.auth(): 729. method provides a convenient way to implement custom authentication mechanisms. (Contributed by Milan Oberkirch in bpo-15014(1).) -The *note SMTP.set_debuglevel(): 834. method now accepts an additional +The *note SMTP.set_debuglevel(): 72a. method now accepts an additional debuglevel (2), which enables timestamps in debug messages. (Contributed by Gavin Chappell and Maciej Szulik in bpo-16914(2).) -Both the *note SMTP.sendmail(): 835. and *note SMTP.send_message(): 836. +Both the *note SMTP.sendmail(): 72b. and *note SMTP.send_message(): 72c. methods now support RFC 6531(3) (SMTPUTF8). (Contributed by Milan Oberkirch and R. David Murray in bpo-22027(4).) @@ -22741,40 +20162,40 @@ Oberkirch and R. David Murray in bpo-22027(4).) (4) https://bugs.python.org/issue22027  -File: python.info, Node: sndhdr, Next: socket<6>, Prev: smtplib<2>, Up: Improved Modules<5> +File: python.info, Node: sndhdr, Next: socket<5>, Prev: smtplib, Up: Improved Modules<4> -1.5.5.54 sndhdr +1.4.5.54 sndhdr ............... -The *note what(): 838. and *note whathdr(): 839. functions now return a -*note namedtuple(): 1a1. (Contributed by Claudiu Popa in bpo-18615(1).) +The *note what(): 72e. and *note whathdr(): 72f. functions now return a +*note namedtuple(): 1a3. (Contributed by Claudiu Popa in bpo-18615(1).) ---------- Footnotes ---------- (1) https://bugs.python.org/issue18615  -File: python.info, Node: socket<6>, Next: ssl<6>, Prev: sndhdr, Up: Improved Modules<5> +File: python.info, Node: socket<5>, Next: ssl<6>, Prev: sndhdr, Up: Improved Modules<4> -1.5.5.55 socket +1.4.5.55 socket ............... Functions with timeouts now use a monotonic clock, instead of a system clock. (Contributed by Victor Stinner in bpo-22043(1).) -A new *note socket.sendfile(): 83b. method allows sending a file over a -socket by using the high-performance *note os.sendfile(): 463. function +A new *note socket.sendfile(): 731. method allows sending a file over a +socket by using the high-performance *note os.sendfile(): 34a. function on UNIX, resulting in uploads being from 2 to 3 times faster than when -using plain *note socket.send(): 76f. (Contributed by Giampaolo Rodola’ +using plain *note socket.send(): 663. (Contributed by Giampaolo Rodola’ in bpo-17552(2).) -The *note socket.sendall(): 770. method no longer resets the socket +The *note socket.sendall(): 664. method no longer resets the socket timeout every time bytes are received or sent. The socket timeout is now the maximum total duration to send all data. (Contributed by Victor Stinner in bpo-23853(3).) -The `backlog' argument of the *note socket.listen(): 83c. method is now -optional. By default it is set to *note SOMAXCONN: 83d. or to ‘128’, +The `backlog' argument of the *note socket.listen(): 732. method is now +optional. By default it is set to *note SOMAXCONN: 733. or to ‘128’, whichever is less. (Contributed by Charles-François Natali in bpo-21455(4).) @@ -22789,9 +20210,9 @@ bpo-21455(4).) (4) https://bugs.python.org/issue21455  -File: python.info, Node: ssl<6>, Next: sqlite3<3>, Prev: socket<6>, Up: Improved Modules<5> +File: python.info, Node: ssl<6>, Next: sqlite3<3>, Prev: socket<5>, Up: Improved Modules<4> -1.5.5.56 ssl +1.4.5.56 ssl ............ * Menu: @@ -22803,24 +20224,24 @@ File: python.info, Node: ssl<6>, Next: sqlite3<3>, Prev: socket<6>, Up: Impr  File: python.info, Node: Memory BIO Support, Next: Application-Layer Protocol Negotiation Support, Up: ssl<6> -1.5.5.57 Memory BIO Support +1.4.5.57 Memory BIO Support ........................... (Contributed by Geert Jansen in bpo-21965(1).) -The new *note SSLObject: 4eb. class has been added to provide SSL +The new *note SSLObject: 3d4. class has been added to provide SSL protocol support for cases when the network I/O capabilities of *note -SSLSocket: 192. are not necessary or are suboptimal. ‘SSLObject’ +SSLSocket: 3d3. are not necessary or are suboptimal. ‘SSLObject’ represents an SSL protocol instance, but does not implement any network I/O methods, and instead provides a memory buffer interface. The new -*note MemoryBIO: 840. class can be used to pass data between Python and +*note MemoryBIO: 736. class can be used to pass data between Python and an SSL protocol instance. The memory BIO SSL support is primarily intended to be used in frameworks implementing asynchronous I/O for which *note SSLSocket: -192.’s readiness model (“select/poll”) is inefficient. +3d3.’s readiness model (“select/poll”) is inefficient. -A new *note SSLContext.wrap_bio(): 4ee. method can be used to create a +A new *note SSLContext.wrap_bio(): 3d7. method can be used to create a new ‘SSLObject’ instance. ---------- Footnotes ---------- @@ -22830,22 +20251,22 @@ new ‘SSLObject’ instance.  File: python.info, Node: Application-Layer Protocol Negotiation Support, Next: Other Changes, Prev: Memory BIO Support, Up: ssl<6> -1.5.5.58 Application-Layer Protocol Negotiation Support +1.4.5.58 Application-Layer Protocol Negotiation Support ....................................................... (Contributed by Benjamin Peterson in bpo-20188(1).) -Where OpenSSL support is present, the *note ssl: f3. module now +Where OpenSSL support is present, the *note ssl: f4. module now implements the `Application-Layer Protocol Negotiation' TLS extension as described in RFC 7301(2). -The new *note SSLContext.set_alpn_protocols(): 842. can be used to +The new *note SSLContext.set_alpn_protocols(): 738. can be used to specify which protocols a socket should advertise during the TLS handshake. -The new *note SSLSocket.selected_alpn_protocol(): 843. returns the +The new *note SSLSocket.selected_alpn_protocol(): 739. returns the protocol that was selected during the TLS handshake. The *note -HAS_ALPN: 844. flag indicates whether ALPN support is present. +HAS_ALPN: 73a. flag indicates whether ALPN support is present. ---------- Footnotes ---------- @@ -22856,39 +20277,39 @@ HAS_ALPN: 844. flag indicates whether ALPN support is present.  File: python.info, Node: Other Changes, Prev: Application-Layer Protocol Negotiation Support, Up: ssl<6> -1.5.5.59 Other Changes +1.4.5.59 Other Changes ...................... -There is a new *note SSLSocket.version(): 846. method to query the +There is a new *note SSLSocket.version(): 73c. method to query the actual protocol version in use. (Contributed by Antoine Pitrou in bpo-20421(1).) -The *note SSLSocket: 192. class now implements a ‘SSLSocket.sendfile()’ +The *note SSLSocket: 3d3. class now implements a ‘SSLSocket.sendfile()’ method. (Contributed by Giampaolo Rodola’ in bpo-17552(2).) The ‘SSLSocket.send()’ method now raises either the *note -ssl.SSLWantReadError: 847. or *note ssl.SSLWantWriteError: 848. +ssl.SSLWantReadError: 73d. or *note ssl.SSLWantWriteError: 73e. exception on a non-blocking socket if the operation would block. Previously, it would return ‘0’. (Contributed by Nikolaus Rath in bpo-20951(3).) -The *note cert_time_to_seconds(): 849. function now interprets the input +The *note cert_time_to_seconds(): 73f. function now interprets the input time as UTC and not as local time, per RFC 5280(4). Additionally, the -return value is always an *note int: 204. (Contributed by Akira Li in +return value is always an *note int: 171. (Contributed by Akira Li in bpo-19940(5).) New ‘SSLObject.shared_ciphers()’ and *note SSLSocket.shared_ciphers(): -84a. methods return the list of ciphers sent by the client during the +740. methods return the list of ciphers sent by the client during the handshake. (Contributed by Benjamin Peterson in bpo-23186(6).) -The *note SSLSocket.do_handshake(): 84b, *note SSLSocket.read(): 84c, -‘SSLSocket.shutdown()’, and *note SSLSocket.write(): 84d. methods of the -*note SSLSocket: 192. class no longer reset the socket timeout every +The *note SSLSocket.do_handshake(): 741, *note SSLSocket.read(): 742, +‘SSLSocket.shutdown()’, and *note SSLSocket.write(): 743. methods of the +*note SSLSocket: 3d3. class no longer reset the socket timeout every time bytes are received or sent. The socket timeout is now the maximum total duration of the method. (Contributed by Victor Stinner in bpo-23853(7).) -The *note match_hostname(): 4e5. function now supports matching of IP +The *note match_hostname(): 3cd. function now supports matching of IP addresses. (Contributed by Antoine Pitrou in bpo-23239(8).) ---------- Footnotes ---------- @@ -22910,13 +20331,13 @@ addresses. (Contributed by Antoine Pitrou in bpo-23239(8).) (8) https://bugs.python.org/issue23239  -File: python.info, Node: sqlite3<3>, Next: subprocess<3>, Prev: ssl<6>, Up: Improved Modules<5> +File: python.info, Node: sqlite3<3>, Next: subprocess<3>, Prev: ssl<6>, Up: Improved Modules<4> -1.5.5.60 sqlite3 +1.4.5.60 sqlite3 ................ -The *note Row: 84f. class now fully supports the sequence protocol, in -particular *note reversed(): 2c9. iteration and slice indexing. +The *note Row: 745. class now fully supports the sequence protocol, in +particular *note reversed(): 17b. iteration and slice indexing. (Contributed by Claudiu Popa in bpo-10203(1); by Lucas Sinclair, Jessica McKellar, and Serhiy Storchaka in bpo-13583(2).) @@ -22927,13 +20348,13 @@ McKellar, and Serhiy Storchaka in bpo-13583(2).) (2) https://bugs.python.org/issue13583  -File: python.info, Node: subprocess<3>, Next: sys<6>, Prev: sqlite3<3>, Up: Improved Modules<5> +File: python.info, Node: subprocess<3>, Next: sys<5>, Prev: sqlite3<3>, Up: Improved Modules<4> -1.5.5.61 subprocess +1.4.5.61 subprocess ................... -The new *note run(): 4f5. function has been added. It runs the -specified command and returns a *note CompletedProcess: 851. object, +The new *note run(): 3de. function has been added. It runs the +specified command and returns a *note CompletedProcess: 747. object, which describes a finished process. The new API is more consistent and is the recommended approach to invoking subprocesses in Python code that does not need to maintain compatibility with earlier Python versions. @@ -22958,21 +20379,21 @@ Examples: (1) https://bugs.python.org/issue23342  -File: python.info, Node: sys<6>, Next: sysconfig, Prev: subprocess<3>, Up: Improved Modules<5> +File: python.info, Node: sys<5>, Next: sysconfig, Prev: subprocess<3>, Up: Improved Modules<4> -1.5.5.62 sys +1.4.5.62 sys ............ A new ‘set_coroutine_wrapper()’ function allows setting a global hook -that will be called whenever a *note coroutine object: 18a. is created -by an *note async def: 3ac. function. A corresponding +that will be called whenever a *note coroutine object: 192. is created +by an *note async def: 26f. function. A corresponding ‘get_coroutine_wrapper()’ can be used to obtain a currently set wrapper. -Both functions are *note provisional: 456, and are intended for +Both functions are *note provisional: 339, and are intended for debugging purposes only. (Contributed by Yury Selivanov in bpo-24017(1).) -A new *note is_finalizing(): 853. function can be used to check if the -Python interpreter is *note shutting down: 854. (Contributed by Antoine +A new *note is_finalizing(): 749. function can be used to check if the +Python interpreter is *note shutting down: 74a. (Contributed by Antoine Pitrou in bpo-22696(2).) ---------- Footnotes ---------- @@ -22982,9 +20403,9 @@ Pitrou in bpo-22696(2).) (2) https://bugs.python.org/issue22696  -File: python.info, Node: sysconfig, Next: tarfile<2>, Prev: sys<6>, Up: Improved Modules<5> +File: python.info, Node: sysconfig, Next: tarfile<2>, Prev: sys<5>, Up: Improved Modules<4> -1.5.5.63 sysconfig +1.4.5.63 sysconfig .................. The name of the user scripts directory on Windows now includes the first @@ -22996,16 +20417,16 @@ bpo-23437(1).) (1) https://bugs.python.org/issue23437  -File: python.info, Node: tarfile<2>, Next: threading<3>, Prev: sysconfig, Up: Improved Modules<5> +File: python.info, Node: tarfile<2>, Next: threading<3>, Prev: sysconfig, Up: Improved Modules<4> -1.5.5.64 tarfile +1.4.5.64 tarfile ................ -The `mode' argument of the *note open(): 857. function now accepts ‘"x"’ +The `mode' argument of the *note open(): 74d. function now accepts ‘"x"’ to request exclusive creation. (Contributed by Berker Peksag in bpo-21717(1).) -The *note TarFile.extractall(): 858. and *note TarFile.extract(): 859. +The *note TarFile.extractall(): 74e. and *note TarFile.extract(): 74f. methods now take a keyword argument `numeric_owner'. If set to ‘True’, the extracted files and directories will be owned by the numeric ‘uid’ and ‘gid’ from the tarfile. If set to ‘False’ (the default, and the @@ -23013,9 +20434,9 @@ behavior in versions prior to 3.5), they will be owned by the named user and group in the tarfile. (Contributed by Michael Vogt and Eric Smith in bpo-23193(2).) -The *note TarFile.list(): 85a. now accepts an optional `members' keyword +The *note TarFile.list(): 750. now accepts an optional `members' keyword argument that can be set to a subset of the list returned by *note -TarFile.getmembers(): 85b. (Contributed by Serhiy Storchaka in +TarFile.getmembers(): 751. (Contributed by Serhiy Storchaka in bpo-21549(3).) ---------- Footnotes ---------- @@ -23027,12 +20448,12 @@ bpo-21549(3).) (3) https://bugs.python.org/issue21549  -File: python.info, Node: threading<3>, Next: time<5>, Prev: tarfile<2>, Up: Improved Modules<5> +File: python.info, Node: threading<3>, Next: time<4>, Prev: tarfile<2>, Up: Improved Modules<4> -1.5.5.65 threading +1.4.5.65 threading .................. -Both the *note Lock.acquire(): 85d. and *note RLock.acquire(): 85e. +Both the *note Lock.acquire(): 753. and *note RLock.acquire(): 754. methods now use a monotonic clock for timeout management. (Contributed by Victor Stinner in bpo-22043(1).) @@ -23041,12 +20462,12 @@ by Victor Stinner in bpo-22043(1).) (1) https://bugs.python.org/issue22043  -File: python.info, Node: time<5>, Next: timeit<2>, Prev: threading<3>, Up: Improved Modules<5> +File: python.info, Node: time<4>, Next: timeit<2>, Prev: threading<3>, Up: Improved Modules<4> -1.5.5.66 time +1.4.5.66 time ............. -The *note monotonic(): 860. function is now always available. +The *note monotonic(): 756. function is now always available. (Contributed by Victor Stinner in bpo-22043(1).) ---------- Footnotes ---------- @@ -23054,16 +20475,16 @@ The *note monotonic(): 860. function is now always available. (1) https://bugs.python.org/issue22043  -File: python.info, Node: timeit<2>, Next: tkinter<5>, Prev: time<5>, Up: Improved Modules<5> +File: python.info, Node: timeit<2>, Next: tkinter<5>, Prev: time<4>, Up: Improved Modules<4> -1.5.5.67 timeit +1.4.5.67 timeit ............... A new command line option ‘-u’ or ‘--unit=`U'’ can be used to specify the time unit for the timer output. Supported options are ‘usec’, ‘msec’, or ‘sec’. (Contributed by Julian Gindi in bpo-18983(1).) -The *note timeit(): 862. function has a new `globals' parameter for +The *note timeit(): 758. function has a new `globals' parameter for specifying the namespace in which the code will be running. (Contributed by Ben Roberts in bpo-2527(2).) @@ -23074,9 +20495,9 @@ specifying the namespace in which the code will be running. (2) https://bugs.python.org/issue2527  -File: python.info, Node: tkinter<5>, Next: traceback<2>, Prev: timeit<2>, Up: Improved Modules<5> +File: python.info, Node: tkinter<5>, Next: traceback<2>, Prev: timeit<2>, Up: Improved Modules<4> -1.5.5.68 tkinter +1.4.5.68 tkinter ................ The ‘tkinter._fix’ module used for setting up the Tcl/Tk environment on @@ -23089,20 +20510,20 @@ by Zachary Ware in bpo-20035(1).) (1) https://bugs.python.org/issue20035  -File: python.info, Node: traceback<2>, Next: types<2>, Prev: tkinter<5>, Up: Improved Modules<5> +File: python.info, Node: traceback<2>, Next: types<2>, Prev: tkinter<5>, Up: Improved Modules<4> -1.5.5.69 traceback +1.4.5.69 traceback .................. -New *note walk_stack(): 865. and *note walk_tb(): 866. functions to +New *note walk_stack(): 75b. and *note walk_tb(): 75c. functions to conveniently traverse frame and traceback objects. (Contributed by Robert Collins in bpo-17911(1).) -New lightweight classes: *note TracebackException: 867, *note -StackSummary: 868, and *note FrameSummary: 869. (Contributed by Robert +New lightweight classes: *note TracebackException: 75d, *note +StackSummary: 75e, and *note FrameSummary: 75f. (Contributed by Robert Collins in bpo-17911(2).) -Both the *note print_tb(): 86a. and *note print_stack(): 86b. functions +Both the *note print_tb(): 760. and *note print_stack(): 761. functions now support negative values for the `limit' argument. (Contributed by Dmitry Kazakov in bpo-22619(3).) @@ -23115,17 +20536,17 @@ Dmitry Kazakov in bpo-22619(3).) (3) https://bugs.python.org/issue22619  -File: python.info, Node: types<2>, Next: unicodedata<5>, Prev: traceback<2>, Up: Improved Modules<5> +File: python.info, Node: types<2>, Next: unicodedata<4>, Prev: traceback<2>, Up: Improved Modules<4> -1.5.5.70 types +1.4.5.70 types .............. -A new *note coroutine(): 86d. function to transform *note generator: -55b. and *note generator-like: 7aa. objects into *note awaitables: 615. +A new *note coroutine(): 763. function to transform *note generator: +448. and *note generator-like: 69c. objects into *note awaitables: 507. (Contributed by Yury Selivanov in bpo-24017(1).) -A new type called *note CoroutineType: 86e, which is used for *note -coroutine: 18a. objects created by *note async def: 3ac. functions. +A new type called *note CoroutineType: 764, which is used for *note +coroutine: 192. objects created by *note async def: 26f. functions. (Contributed by Yury Selivanov in bpo-24400(2).) ---------- Footnotes ---------- @@ -23135,24 +20556,24 @@ coroutine: 18a. objects created by *note async def: 3ac. functions. (2) https://bugs.python.org/issue24400  -File: python.info, Node: unicodedata<5>, Next: unittest<3>, Prev: types<2>, Up: Improved Modules<5> +File: python.info, Node: unicodedata<4>, Next: unittest<3>, Prev: types<2>, Up: Improved Modules<4> -1.5.5.71 unicodedata +1.4.5.71 unicodedata .................... -The *note unicodedata: 123. module now uses data from Unicode 8.0.0(1). +The *note unicodedata: 11b. module now uses data from Unicode 8.0.0(1). ---------- Footnotes ---------- (1) http://unicode.org/versions/Unicode8.0.0/  -File: python.info, Node: unittest<3>, Next: unittest mock<3>, Prev: unicodedata<5>, Up: Improved Modules<5> +File: python.info, Node: unittest<3>, Next: unittest mock<3>, Prev: unicodedata<4>, Up: Improved Modules<4> -1.5.5.72 unittest +1.4.5.72 unittest ................. -The *note TestLoader.loadTestsFromModule(): 871. method now accepts a +The *note TestLoader.loadTestsFromModule(): 767. method now accepts a keyword-only argument `pattern' which is passed to ‘load_tests’ as the third argument. Found packages are now checked for ‘load_tests’ regardless of whether their path matches `pattern', because it is @@ -23160,7 +20581,7 @@ impossible for a package name to match the default pattern. (Contributed by Robert Collins and Barry A. Warsaw in bpo-16662(1).) Unittest discovery errors now are exposed in the *note -TestLoader.errors: 872. attribute of the *note TestLoader: 873. +TestLoader.errors: 768. attribute of the *note TestLoader: 769. instance. (Contributed by Robert Collins in bpo-19746(2).) A new command line option ‘--locals’ to show local variables in @@ -23175,29 +20596,29 @@ tracebacks. (Contributed by Robert Collins in bpo-22936(3).) (3) https://bugs.python.org/issue22936  -File: python.info, Node: unittest mock<3>, Next: urllib, Prev: unittest<3>, Up: Improved Modules<5> +File: python.info, Node: unittest mock<3>, Next: urllib, Prev: unittest<3>, Up: Improved Modules<4> -1.5.5.73 unittest.mock +1.4.5.73 unittest.mock ...................... -The *note Mock: 376. class has the following improvements: +The *note Mock: 235. class has the following improvements: * The class constructor has a new `unsafe' parameter, which causes - mock objects to raise *note AttributeError: 4a4. on attribute names + mock objects to raise *note AttributeError: 38c. on attribute names starting with ‘"assert"’. (Contributed by Kushal Das in bpo-21238(1).) - * A new *note Mock.assert_not_called(): 875. method to check if the + * A new *note Mock.assert_not_called(): 76b. method to check if the mock object was called. (Contributed by Kushal Das in bpo-21262(2).) -The *note MagicMock: 876. class now supports *note __truediv__(): 877, -*note __divmod__(): 878. and *note __matmul__(): 73d. operators. -(Contributed by Johannes Baiter in bpo-20968(3), and Håkan Lövdahl in -bpo-23581(4) and bpo-23568(5).) +The *note MagicMock: 76c. class now supports ‘__truediv__()’, +‘__divmod__()’ and ‘__matmul__()’ operators. (Contributed by Johannes +Baiter in bpo-20968(3), and Håkan Lövdahl in bpo-23581(4) and +bpo-23568(5).) It is no longer necessary to explicitly pass ‘create=True’ to the *note -patch(): 879. function when patching builtin names. (Contributed by +patch(): 76d. function when patching builtin names. (Contributed by Kushal Das in bpo-17660(6).) ---------- Footnotes ---------- @@ -23215,12 +20636,12 @@ Kushal Das in bpo-17660(6).) (6) https://bugs.python.org/issue17660  -File: python.info, Node: urllib, Next: wsgiref, Prev: unittest mock<3>, Up: Improved Modules<5> +File: python.info, Node: urllib, Next: wsgiref, Prev: unittest mock<3>, Up: Improved Modules<4> -1.5.5.74 urllib +1.4.5.74 urllib ............... -A new *note request.HTTPPasswordMgrWithPriorAuth: 87b. class allows HTTP +A new *note request.HTTPPasswordMgrWithPriorAuth: 76f. class allows HTTP Basic Authentication credentials to be managed so as to eliminate unnecessary ‘401’ response handling, or to unconditionally send credentials on the first request in order to communicate with servers @@ -23228,15 +20649,15 @@ that return a ‘404’ response instead of a ‘401’ if the ‘Authorization header is not sent. (Contributed by Matej Cepl in bpo-19494(1) and Akshit Khurana in bpo-7159(2).) -A new `quote_via' argument for the *note parse.urlencode(): 87c. +A new `quote_via' argument for the *note parse.urlencode(): 770. function provides a way to control the encoding of query parts if needed. (Contributed by Samwyse and Arnon Yaari in bpo-13866(3).) -The *note request.urlopen(): 87d. function accepts an *note -ssl.SSLContext: 4ec. object as a `context' argument, which will be used +The *note request.urlopen(): 771. function accepts an *note +ssl.SSLContext: 3d5. object as a `context' argument, which will be used for the HTTPS connection. (Contributed by Alex Gaynor in bpo-22366(4).) -The *note parse.urljoin(): 87e. was updated to use the RFC 3986(5) +The *note parse.urljoin(): 772. was updated to use the RFC 3986(5) semantics for the resolution of relative URLs, rather than RFC 1808(6) and RFC 2396(7). (Contributed by Demian Brecht and Senthil Kumaran in bpo-22118(8).) @@ -23260,12 +20681,12 @@ bpo-22118(8).) (8) https://bugs.python.org/issue22118  -File: python.info, Node: wsgiref, Next: xmlrpc<2>, Prev: urllib, Up: Improved Modules<5> +File: python.info, Node: wsgiref, Next: xmlrpc<2>, Prev: urllib, Up: Improved Modules<4> -1.5.5.75 wsgiref +1.4.5.75 wsgiref ................ -The `headers' argument of the *note headers.Headers: 880. class +The `headers' argument of the *note headers.Headers: 774. class constructor is now optional. (Contributed by Pablo Torres Navarrete and SilentGhost in bpo-5800(1).) @@ -23274,16 +20695,16 @@ SilentGhost in bpo-5800(1).) (1) https://bugs.python.org/issue5800  -File: python.info, Node: xmlrpc<2>, Next: xml sax, Prev: wsgiref, Up: Improved Modules<5> +File: python.info, Node: xmlrpc<2>, Next: xml sax, Prev: wsgiref, Up: Improved Modules<4> -1.5.5.76 xmlrpc +1.4.5.76 xmlrpc ............... -The *note client.ServerProxy: 382. class now supports the *note context -manager: 663. protocol. (Contributed by Claudiu Popa in bpo-20627(1).) +The *note client.ServerProxy: 241. class now supports the *note context +manager: 555. protocol. (Contributed by Claudiu Popa in bpo-20627(1).) -The *note client.ServerProxy: 382. constructor now accepts an optional -*note ssl.SSLContext: 4ec. instance. (Contributed by Alex Gaynor in +The *note client.ServerProxy: 241. constructor now accepts an optional +*note ssl.SSLContext: 3d5. instance. (Contributed by Alex Gaynor in bpo-22960(2).) ---------- Footnotes ---------- @@ -23293,16 +20714,16 @@ bpo-22960(2).) (2) https://bugs.python.org/issue22960  -File: python.info, Node: xml sax, Next: zipfile<3>, Prev: xmlrpc<2>, Up: Improved Modules<5> +File: python.info, Node: xml sax, Next: zipfile<3>, Prev: xmlrpc<2>, Up: Improved Modules<4> -1.5.5.77 xml.sax +1.4.5.77 xml.sax ................ SAX parsers now support a character stream of the *note -xmlreader.InputSource: 883. object. (Contributed by Serhiy Storchaka in +xmlreader.InputSource: 777. object. (Contributed by Serhiy Storchaka in bpo-2175(1).) -*note parseString(): 884. now accepts a *note str: 205. instance. +*note parseString(): 778. now accepts a *note str: 321. instance. (Contributed by Serhiy Storchaka in bpo-10590(2).) ---------- Footnotes ---------- @@ -23312,15 +20733,15 @@ bpo-2175(1).) (2) https://bugs.python.org/issue10590  -File: python.info, Node: zipfile<3>, Prev: xml sax, Up: Improved Modules<5> +File: python.info, Node: zipfile<3>, Prev: xml sax, Up: Improved Modules<4> -1.5.5.78 zipfile +1.4.5.78 zipfile ................ ZIP output can now be written to unseekable streams. (Contributed by Serhiy Storchaka in bpo-23252(1).) -The `mode' argument of *note ZipFile.open(): 6b5. method now accepts +The `mode' argument of *note ZipFile.open(): 5a9. method now accepts ‘"x"’ to request exclusive creation. (Contributed by Serhiy Storchaka in bpo-21717(2).) @@ -23331,14 +20752,14 @@ in bpo-21717(2).) (2) https://bugs.python.org/issue21717  -File: python.info, Node: Other module-level changes, Next: Optimizations<5>, Prev: Improved Modules<5>, Up: What’s New In Python 3 5 +File: python.info, Node: Other module-level changes, Next: Optimizations<4>, Prev: Improved Modules<4>, Up: What’s New In Python 3 5 -1.5.6 Other module-level changes +1.4.6 Other module-level changes -------------------------------- -Many functions in the *note mmap: b3, *note ossaudiodev: c6, *note -socket: ef, *note ssl: f3, and *note codecs: 1b. modules now accept -writable *note bytes-like objects: 6e1. (Contributed by Serhiy +Many functions in the *note mmap: b4, *note ossaudiodev: c7, *note +socket: f0, *note ssl: f4, and *note codecs: 1c. modules now accept +writable *note bytes-like objects: 5d5. (Contributed by Serhiy Storchaka in bpo-23001(1).) ---------- Footnotes ---------- @@ -23346,14 +20767,14 @@ Storchaka in bpo-23001(1).) (1) https://bugs.python.org/issue23001  -File: python.info, Node: Optimizations<5>, Next: Build and C API Changes<3>, Prev: Other module-level changes, Up: What’s New In Python 3 5 +File: python.info, Node: Optimizations<4>, Next: Build and C API Changes<3>, Prev: Other module-level changes, Up: What’s New In Python 3 5 -1.5.7 Optimizations +1.4.7 Optimizations ------------------- -The *note os.walk(): 749. function has been sped up by 3 to 5 times on +The *note os.walk(): 63d. function has been sped up by 3 to 5 times on POSIX systems, and by 7 to 20 times on Windows. This was done using the -new *note os.scandir(): 38c. function, which exposes file information +new *note os.scandir(): 24b. function, which exposes file information from the underlying ‘readdir’ or ‘FindFirstFile’/‘FindNextFile’ system calls. (Contributed by Ben Hoyt with help from Victor Stinner in bpo-23605(1).) @@ -23363,22 +20784,22 @@ less memory for large objects. ‘calloc()’ is used instead of ‘malloc()’ to allocate memory for these objects. (Contributed by Victor Stinner in bpo-21233(2).) -Some operations on *note ipaddress: a2. *note IPv4Network: 4a9. and -*note IPv6Network: 4a8. have been massively sped up, such as *note -subnets(): 888, *note supernet(): 889, *note summarize_address_range(): -88a, *note collapse_addresses(): 88b. The speed up can range from 3 to +Some operations on *note ipaddress: a3. *note IPv4Network: 391. and +*note IPv6Network: 390. have been massively sped up, such as *note +subnets(): 77c, *note supernet(): 77d, *note summarize_address_range(): +77e, *note collapse_addresses(): 77f. The speed up can range from 3 to 15 times. (Contributed by Antoine Pitrou, Michel Albert, and Markus in bpo-21486(3), bpo-21487(4), bpo-20826(5), bpo-23266(6).) -Pickling of *note ipaddress: a2. objects was optimized to produce +Pickling of *note ipaddress: a3. objects was optimized to produce significantly smaller output. (Contributed by Serhiy Storchaka in bpo-23133(7).) -Many operations on *note io.BytesIO: 88c. are now 50% to 100% faster. +Many operations on *note io.BytesIO: 780. are now 50% to 100% faster. (Contributed by Serhiy Storchaka in bpo-15381(8) and David Wilson in bpo-22003(9).) -The *note marshal.dumps(): 88d. function is now faster: 65–85% with +The *note marshal.dumps(): 781. function is now faster: 65–85% with versions 3 and 4, 20–25% with versions 0 to 2 on typical data, and up to 5 times in best cases. (Contributed by Serhiy Storchaka in bpo-20416(10) and bpo-23344(11).) @@ -23389,30 +20810,30 @@ Storchaka in bpo-15027(12).) Regular expressions are now parsed up to 10% faster. (Contributed by Serhiy Storchaka in bpo-19380(13).) -The *note json.dumps(): 6fe. function was optimized to run with +The *note json.dumps(): 5f2. function was optimized to run with ‘ensure_ascii=False’ as fast as with ‘ensure_ascii=True’. (Contributed by Naoki Inada in bpo-23206(14).) -The *note PyObject_IsInstance(): 88e. and *note PyObject_IsSubclass(): -88f. functions have been sped up in the common case that the second -argument has *note type: 701. as its metaclass. (Contributed Georg +The *note PyObject_IsInstance(): 782. and *note PyObject_IsSubclass(): +783. functions have been sped up in the common case that the second +argument has *note type: 5f5. as its metaclass. (Contributed Georg Brandl by in bpo-22540(15).) Method caching was slightly improved, yielding up to 5% performance improvement in some benchmarks. (Contributed by Antoine Pitrou in bpo-22847(16).) -Objects from the *note random: dc. module now use 50% less memory on +Objects from the *note random: dd. module now use 50% less memory on 64-bit builds. (Contributed by Serhiy Storchaka in bpo-23488(17).) -The *note property(): 30b. getter calls are up to 25% faster. +The *note property(): 1c3. getter calls are up to 25% faster. (Contributed by Joe Jevnik in bpo-23910(18).) -Instantiation of *note fractions.Fraction: 2c1. is now up to 30% faster. +Instantiation of *note fractions.Fraction: 172. is now up to 30% faster. (Contributed by Stefan Behnel in bpo-22464(19).) -String methods *note find(): 890, *note rfind(): 891, *note split(): -892, *note partition(): 893. and the *note in: 179. string operator are +String methods *note find(): 784, *note rfind(): 785, *note split(): +786, *note partition(): 787. and the *note in: 788. string operator are now significantly faster for searching 1-character substrings. (Contributed by Serhiy Storchaka in bpo-23573(20).) @@ -23459,51 +20880,51 @@ now significantly faster for searching 1-character substrings. (20) https://bugs.python.org/issue23573  -File: python.info, Node: Build and C API Changes<3>, Next: Deprecated<4>, Prev: Optimizations<5>, Up: What’s New In Python 3 5 +File: python.info, Node: Build and C API Changes<3>, Next: Deprecated<3>, Prev: Optimizations<4>, Up: What’s New In Python 3 5 -1.5.8 Build and C API Changes +1.4.8 Build and C API Changes ----------------------------- New ‘calloc’ functions were added: - * *note PyMem_RawCalloc(): 895, + * *note PyMem_RawCalloc(): 78a, - * *note PyMem_Calloc(): 896, + * *note PyMem_Calloc(): 78b, - * *note PyObject_Calloc(): 897. + * *note PyObject_Calloc(): 78c. (Contributed by Victor Stinner in bpo-21233(1).) New encoding/decoding helper functions: - * *note Py_DecodeLocale(): 541. (replaced ‘_Py_char2wchar()’), + * *note Py_DecodeLocale(): 42c. (replaced ‘_Py_char2wchar()’), - * *note Py_EncodeLocale(): 542. (replaced ‘_Py_wchar2char()’). + * *note Py_EncodeLocale(): 42d. (replaced ‘_Py_wchar2char()’). (Contributed by Victor Stinner in bpo-18395(2).) -A new *note PyCodec_NameReplaceErrors(): 898. function to replace the +A new *note PyCodec_NameReplaceErrors(): 78d. function to replace the unicode encode error with ‘\N{...}’ escapes. (Contributed by Serhiy Storchaka in bpo-19676(3).) -A new *note PyErr_FormatV(): 899. function similar to *note -PyErr_Format(): 89a, but accepts a ‘va_list’ argument. (Contributed by +A new *note PyErr_FormatV(): 78e. function similar to *note +PyErr_Format(): 78f, but accepts a ‘va_list’ argument. (Contributed by Antoine Pitrou in bpo-18711(4).) A new ‘PyExc_RecursionError’ exception. (Contributed by Georg Brandl in bpo-19235(5).) -New *note PyModule_FromDefAndSpec(): 89b, *note -PyModule_FromDefAndSpec2(): 89c, and *note PyModule_ExecDef(): 89d. +New *note PyModule_FromDefAndSpec(): 790, *note +PyModule_FromDefAndSpec2(): 791, and *note PyModule_ExecDef(): 792. functions introduced by PEP 489(6) – multi-phase extension module initialization. (Contributed by Petr Viktorin in bpo-24268(7).) -New *note PyNumber_MatrixMultiply(): 89e. and *note -PyNumber_InPlaceMatrixMultiply(): 89f. functions to perform matrix +New *note PyNumber_MatrixMultiply(): 793. and *note +PyNumber_InPlaceMatrixMultiply(): 794. functions to perform matrix multiplication. (Contributed by Benjamin Peterson in bpo-21176(8). See also PEP 465(9) for details.) -The *note PyTypeObject.tp_finalize: 3f9. slot is now part of the stable +The *note PyTypeObject.tp_finalize: 2c3. slot is now part of the stable ABI. Windows builds now require Microsoft Visual C++ 14.0, which is available @@ -23578,9 +20999,9 @@ the extension won’t be loaded): (10) https://www.visualstudio.com/  -File: python.info, Node: Deprecated<4>, Next: Removed<4>, Prev: Build and C API Changes<3>, Up: What’s New In Python 3 5 +File: python.info, Node: Deprecated<3>, Next: Removed<2>, Prev: Build and C API Changes<3>, Up: What’s New In Python 3 5 -1.5.9 Deprecated +1.4.9 Deprecated ---------------- * Menu: @@ -23591,9 +21012,9 @@ File: python.info, Node: Deprecated<4>, Next: Removed<4>, Prev: Build and C A * Deprecated Python modules, functions and methods: Deprecated Python modules functions and methods<3>.  -File: python.info, Node: New Keywords<2>, Next: Deprecated Python Behavior<2>, Up: Deprecated<4> +File: python.info, Node: New Keywords<2>, Next: Deprecated Python Behavior<2>, Up: Deprecated<3> -1.5.9.1 New Keywords +1.4.9.1 New Keywords .................... ‘async’ and ‘await’ are not recommended to be used as variable, class, @@ -23605,21 +21026,21 @@ will become proper keywords in Python 3.7. (1) https://www.python.org/dev/peps/pep-0492  -File: python.info, Node: Deprecated Python Behavior<2>, Next: Unsupported Operating Systems, Prev: New Keywords<2>, Up: Deprecated<4> +File: python.info, Node: Deprecated Python Behavior<2>, Next: Unsupported Operating Systems, Prev: New Keywords<2>, Up: Deprecated<3> -1.5.9.2 Deprecated Python Behavior +1.4.9.2 Deprecated Python Behavior .................................. -Raising the *note StopIteration: 584. exception inside a generator will -now generate a silent *note PendingDeprecationWarning: 15c, which will +Raising the *note StopIteration: 477. exception inside a generator will +now generate a silent *note PendingDeprecationWarning: 265, which will become a non-silent deprecation warning in Python 3.6 and will trigger a -*note RuntimeError: 3df. in Python 3.7. See *note PEP 479; Change -StopIteration handling inside generators: 6d0. for details. +*note RuntimeError: 2a5. in Python 3.7. See *note PEP 479; Change +StopIteration handling inside generators: 5c4. for details.  -File: python.info, Node: Unsupported Operating Systems, Next: Deprecated Python modules functions and methods<3>, Prev: Deprecated Python Behavior<2>, Up: Deprecated<4> +File: python.info, Node: Unsupported Operating Systems, Next: Deprecated Python modules functions and methods<3>, Prev: Deprecated Python Behavior<2>, Up: Deprecated<3> -1.5.9.3 Unsupported Operating Systems +1.4.9.3 Unsupported Operating Systems ..................................... Windows XP is no longer supported by Microsoft, thus, per PEP 11(1), @@ -23630,32 +21051,32 @@ CPython 3.5 is no longer officially supported on this OS. (1) https://www.python.org/dev/peps/pep-0011  -File: python.info, Node: Deprecated Python modules functions and methods<3>, Prev: Unsupported Operating Systems, Up: Deprecated<4> +File: python.info, Node: Deprecated Python modules functions and methods<3>, Prev: Unsupported Operating Systems, Up: Deprecated<3> -1.5.9.4 Deprecated Python modules, functions and methods +1.4.9.4 Deprecated Python modules, functions and methods ........................................................ -The *note formatter: 80. module has now graduated to full deprecation +The *note formatter: 82. module has now graduated to full deprecation and is still slated for removal in Python 3.6. The ‘asyncio.async()’ function is deprecated in favor of *note -ensure_future(): 613. +ensure_future(): 505. -The *note smtpd: ec. module has in the past always decoded the DATA +The *note smtpd: ed. module has in the past always decoded the DATA portion of email messages using the ‘utf-8’ codec. This can now be -controlled by the new `decode_data' keyword to *note SMTPServer: 6fb. +controlled by the new `decode_data' keyword to *note SMTPServer: 5ef. The default value is ‘True’, but this default is deprecated. Specify the `decode_data' keyword with an appropriate value to avoid the deprecation warning. -Directly assigning values to the *note key: 58a, *note value: 58b. and -*note coded_value: 58c. of *note http.cookies.Morsel: 58d. objects is -deprecated. Use the *note set(): 58e. method instead. In addition, the -undocumented `LegalChars' parameter of *note set(): 58e. is deprecated, +Directly assigning values to the *note key: 47e, *note value: 47f. and +*note coded_value: 480. of *note http.cookies.Morsel: 481. objects is +deprecated. Use the *note set(): 482. method instead. In addition, the +undocumented `LegalChars' parameter of *note set(): 482. is deprecated, and is now ignored. Passing a format string as keyword argument `format_string' to the *note -format(): 589. method of the *note string.Formatter: 8a5. class has been +format(): 47d. method of the *note string.Formatter: 79a. class has been deprecated. (Contributed by Serhiy Storchaka in bpo-23671(1).) The ‘platform.dist()’ and ‘platform.linux_distribution()’ functions are @@ -23664,24 +21085,24 @@ describing themselves, so the functionality is left to a package. (Contributed by Vajrasky Kok and Berker Peksag in bpo-1322(2).) The previously undocumented ‘from_function’ and ‘from_builtin’ methods -of *note inspect.Signature: 7e6. are deprecated. Use the new *note -Signature.from_callable(): 7e9. method instead. (Contributed by Yury +of *note inspect.Signature: 6da. are deprecated. Use the new *note +Signature.from_callable(): 6dd. method instead. (Contributed by Yury Selivanov in bpo-24248(3).) -The *note inspect.getargspec(): 658. function is deprecated and +The *note inspect.getargspec(): 549. function is deprecated and scheduled to be removed in Python 3.6. (See bpo-20438(4) for details.) -The *note inspect: a0. *note getfullargspec(): 659, *note getcallargs(): -8a6, and *note formatargspec(): 8a7. functions are deprecated in favor -of the *note inspect.signature(): 657. API. (Contributed by Yury +The *note inspect: a1. *note getfullargspec(): 54a, *note getcallargs(): +79b, and *note formatargspec(): 79c. functions are deprecated in favor +of the *note inspect.signature(): 548. API. (Contributed by Yury Selivanov in bpo-20438(5).) -*note getargvalues(): 8a8. and *note formatargvalues(): 8a9. functions +*note getargvalues(): 79d. and *note formatargvalues(): 79e. functions were inadvertently marked as deprecated with the release of Python 3.5.0. -Use of *note re.LOCALE: 4d2. flag with str patterns or *note re.ASCII: -4d1. is now deprecated. (Contributed by Serhiy Storchaka in +Use of *note re.LOCALE: 3ba. flag with str patterns or *note re.ASCII: +3b9. is now deprecated. (Contributed by Serhiy Storchaka in bpo-22407(6).) Use of unrecognized special sequences consisting of ‘'\'’ and an ASCII @@ -23690,7 +21111,7 @@ raises a deprecation warning and will be forbidden in Python 3.6. (Contributed by Serhiy Storchaka in bpo-23622(7).) The undocumented and unofficial `use_load_tests' default argument of the -*note unittest.TestLoader.loadTestsFromModule(): 871. method now is +*note unittest.TestLoader.loadTestsFromModule(): 767. method now is deprecated and ignored. (Contributed by Robert Collins and Barry A. Warsaw in bpo-16662(8).) @@ -23713,9 +21134,9 @@ Warsaw in bpo-16662(8).) (8) https://bugs.python.org/issue16662  -File: python.info, Node: Removed<4>, Next: Porting to Python 3 5, Prev: Deprecated<4>, Up: What’s New In Python 3 5 +File: python.info, Node: Removed<2>, Next: Porting to Python 3 5, Prev: Deprecated<3>, Up: What’s New In Python 3 5 -1.5.10 Removed +1.4.10 Removed -------------- * Menu: @@ -23723,9 +21144,9 @@ File: python.info, Node: Removed<4>, Next: Porting to Python 3 5, Prev: Depre * API and Feature Removals: API and Feature Removals<4>.  -File: python.info, Node: API and Feature Removals<4>, Up: Removed<4> +File: python.info, Node: API and Feature Removals<4>, Up: Removed<2> -1.5.10.1 API and Feature Removals +1.4.10.1 API and Feature Removals ................................. The following obsolete and previously deprecated APIs and features have @@ -23736,13 +21157,13 @@ been removed: stdlib for a long time, and the ‘__version__’ string was not updated in the last few releases. - * The internal ‘Netrc’ class in the *note ftplib: 82. module was + * The internal ‘Netrc’ class in the *note ftplib: 84. module was deprecated in 3.4, and has now been removed. (Contributed by Matt Chaput in bpo-6623(1).) * The concept of ‘.pyo’ files has been removed. - * The JoinableQueue class in the provisional *note asyncio: 9. module + * The JoinableQueue class in the provisional *note asyncio: a. module was deprecated in 3.4.4 and is now removed. (Contributed by A. Jesse Jiryu Davis in bpo-23464(2).) @@ -23753,9 +21174,9 @@ been removed: (2) https://bugs.python.org/issue23464  -File: python.info, Node: Porting to Python 3 5, Next: Notable changes in Python 3 5 4, Prev: Removed<4>, Up: What’s New In Python 3 5 +File: python.info, Node: Porting to Python 3 5, Next: Notable changes in Python 3 5 4, Prev: Removed<2>, Up: What’s New In Python 3 5 -1.5.11 Porting to Python 3.5 +1.4.11 Porting to Python 3.5 ---------------------------- This section lists previously described changes and other bugfixes that @@ -23765,12 +21186,12 @@ may require changes to your code. * Changes in Python behavior: Changes in Python behavior<2>. * Changes in the Python API: Changes in the Python API<5>. -* Changes in the C API: Changes in the C API<5>. +* Changes in the C API: Changes in the C API<4>.  File: python.info, Node: Changes in Python behavior<2>, Next: Changes in the Python API<5>, Up: Porting to Python 3 5 -1.5.11.1 Changes in Python behavior +1.4.11.1 Changes in Python behavior ................................... * Due to an oversight, earlier Python versions erroneously accepted @@ -23779,27 +21200,27 @@ File: python.info, Node: Changes in Python behavior<2>, Next: Changes in the P f(1 for x in [1], *args) f(1 for x in [1], **kwargs) - Python 3.5 now correctly raises a *note SyntaxError: 55c, as + Python 3.5 now correctly raises a *note SyntaxError: 449, as generator expressions must be put in parentheses if not a sole argument to a function.  -File: python.info, Node: Changes in the Python API<5>, Next: Changes in the C API<5>, Prev: Changes in Python behavior<2>, Up: Porting to Python 3 5 +File: python.info, Node: Changes in the Python API<5>, Next: Changes in the C API<4>, Prev: Changes in Python behavior<2>, Up: Porting to Python 3 5 -1.5.11.2 Changes in the Python API +1.4.11.2 Changes in the Python API .................................. * PEP 475(1): System calls are now retried when interrupted by a - signal instead of raising *note InterruptedError: 74e. if the + signal instead of raising *note InterruptedError: 642. if the Python signal handler does not raise an exception. - * Before Python 3.5, a *note datetime.time: 5ef. object was + * Before Python 3.5, a *note datetime.time: 4e4. object was considered to be false if it represented midnight in UTC. This behavior was considered obscure and error-prone and has been removed in Python 3.5. See bpo-13936(2) for full details. * The ‘ssl.SSLSocket.send()’ method now raises either *note - ssl.SSLWantReadError: 847. or *note ssl.SSLWantWriteError: 848. on + ssl.SSLWantReadError: 73d. or *note ssl.SSLWantWriteError: 73e. on a non-blocking socket if the operation would block. Previously, it would return ‘0’. (Contributed by Nikolaus Rath in bpo-20951(3).) @@ -23810,61 +21231,61 @@ File: python.info, Node: Changes in the Python API<5>, Next: Changes in the C now used for the representation of a generator (‘repr(gen)’). (Contributed by Victor Stinner in bpo-21205(4).) - * The deprecated “strict” mode and argument of *note HTMLParser: 22a, + * The deprecated “strict” mode and argument of *note HTMLParser: 7a4, ‘HTMLParser.error()’, and the ‘HTMLParserError’ exception have been removed. (Contributed by Ezio Melotti in bpo-15114(5).) The - `convert_charrefs' argument of *note HTMLParser: 22a. is now ‘True’ + `convert_charrefs' argument of *note HTMLParser: 7a4. is now ‘True’ by default. (Contributed by Berker Peksag in bpo-21047(6).) * Although it is not formally part of the API, it is worth noting for porting purposes (ie: fixing tests) that error messages that were previously of the form “‘sometype’ does not support the buffer - protocol” are now of the form “a *note bytes-like object: 6e1. is + protocol” are now of the form “a *note bytes-like object: 5d5. is required, not ‘sometype’”. (Contributed by Ezio Melotti in bpo-16518(7).) * If the current directory is set to a directory that no longer - exists then *note FileNotFoundError: 8af. will no longer be raised - and instead *note find_spec(): 8b0. will return ‘None’ `without' - caching ‘None’ in *note sys.path_importer_cache: 59a, which is + exists then *note FileNotFoundError: 7a5. will no longer be raised + and instead *note find_spec(): 7a6. will return ‘None’ `without' + caching ‘None’ in *note sys.path_importer_cache: 48e, which is different than the typical case (bpo-22834(8)). - * HTTP status code and messages from *note http.client: 93. and *note - http.server: 96. were refactored into a common *note HTTPStatus: - 1ac. enum. The values in *note http.client: 93. and *note - http.server: 96. remain available for backwards compatibility. + * HTTP status code and messages from *note http.client: 94. and *note + http.server: 97. were refactored into a common *note HTTPStatus: + 6c9. enum. The values in *note http.client: 94. and *note + http.server: 97. remain available for backwards compatibility. (Contributed by Demian Brecht in bpo-21793(9).) * When an import loader defines ‘importlib.machinery.Loader.exec_module()’ it is now expected to also define ‘create_module()’ (raises a *note DeprecationWarning: - 15a. now, will be an error in Python 3.6). If the loader inherits - from *note importlib.abc.Loader: 8b1. then there is nothing to do, + 264. now, will be an error in Python 3.6). If the loader inherits + from *note importlib.abc.Loader: 7a7. then there is nothing to do, else simply define ‘create_module()’ to return ‘None’. (Contributed by Brett Cannon in bpo-23014(10).) - * The *note re.split(): 4d3. function always ignored empty pattern + * The *note re.split(): 3bb. function always ignored empty pattern matches, so the ‘"x*"’ pattern worked the same as ‘"x+"’, and the - ‘"\b"’ pattern never worked. Now *note re.split(): 4d3. raises a + ‘"\b"’ pattern never worked. Now *note re.split(): 3bb. raises a warning if the pattern could match an empty string. For compatibility, use patterns that never match an empty string (e.g. ‘"x+"’ instead of ‘"x*"’). Patterns that could only match an empty string (such as ‘"\b"’) now raise an error. (Contributed by Serhiy Storchaka in bpo-22818(11).) - * The *note http.cookies.Morsel: 58d. dict-like interface has been + * The *note http.cookies.Morsel: 481. dict-like interface has been made self consistent: morsel comparison now takes the *note key: - 58a. and *note value: 58b. into account, *note copy(): 8b2. now - results in a *note Morsel: 58d. instance rather than a *note dict: - 164, and *note update(): 8b3. will now raise an exception if any of + 47e. and *note value: 47f. into account, *note copy(): 7a8. now + results in a *note Morsel: 481. instance rather than a *note dict: + 1a4, and *note update(): 7a9. will now raise an exception if any of the keys in the update dictionary are invalid. In addition, the - undocumented `LegalChars' parameter of *note set(): 58e. is + undocumented `LegalChars' parameter of *note set(): 482. is deprecated and is now ignored. (Contributed by Demian Brecht in bpo-2211(12).) * PEP 488(13) has removed ‘.pyo’ files from Python and introduced the optional ‘opt-’ tag in ‘.pyc’ file names. The *note - importlib.util.cache_from_source(): 653. has gained an + importlib.util.cache_from_source(): 544. has gained an `optimization' parameter to help control the ‘opt-’ tag. Because of this, the `debug_override' parameter of the function is now deprecated. ‘.pyo’ files are also no longer supported as a file @@ -23874,41 +21295,41 @@ File: python.info, Node: Changes in the Python API<5>, Next: Changes in the C Python 3.5, all old ‘.pyo’ files from previous versions of Python are invalid regardless of this PEP. - * The *note socket: ef. module now exports the *note - CAN_RAW_FD_FRAMES: 8b4. constant on linux 3.6 and greater. + * The *note socket: f0. module now exports the *note + CAN_RAW_FD_FRAMES: 7aa. constant on linux 3.6 and greater. - * The *note ssl.cert_time_to_seconds(): 849. function now interprets + * The *note ssl.cert_time_to_seconds(): 73f. function now interprets the input time as UTC and not as local time, per RFC 5280(14). - Additionally, the return value is always an *note int: 204. + Additionally, the return value is always an *note int: 171. (Contributed by Akira Li in bpo-19940(15).) * The ‘pygettext.py’ Tool now uses the standard +NNNN format for timezones in the POT-Creation-Date header. - * The *note smtplib: ed. module now uses *note sys.stderr: 1ea. + * The *note smtplib: ee. module now uses *note sys.stderr: 303. instead of the previous module-level ‘stderr’ variable for debug output. If your (test) program depends on patching the module-level variable to capture the debug output, you will need to update it to capture sys.stderr instead. - * The *note str.startswith(): 8b5. and *note str.endswith(): 8b6. + * The *note str.startswith(): 7ab. and *note str.endswith(): 7ac. methods no longer return ‘True’ when finding the empty string and the indexes are completely out of range. (Contributed by Serhiy Storchaka in bpo-24284(16).) - * The *note inspect.getdoc(): 30a. function now returns documentation + * The *note inspect.getdoc(): 1c2. function now returns documentation strings inherited from base classes. Documentation strings no longer need to be duplicated if the inherited documentation is appropriate. To suppress an inherited string, an empty string must be specified (or the documentation may be filled in). This change - affects the output of the *note pydoc: d9. module and the *note - help(): 175. function. (Contributed by Serhiy Storchaka in + affects the output of the *note pydoc: da. module and the *note + help(): 55f. function. (Contributed by Serhiy Storchaka in bpo-15582(17).) - * Nested *note functools.partial(): 8b7. calls are now flattened. If + * Nested *note functools.partial(): 7ad. calls are now flattened. If you were relying on the previous behavior, you can now either add - an attribute to a *note functools.partial(): 8b7. object or you can - create a subclass of *note functools.partial(): 8b7. (Contributed + an attribute to a *note functools.partial(): 7ad. object or you can + create a subclass of *note functools.partial(): 7ad. (Contributed by Alexander Belopolsky in bpo-7830(18).) ---------- Footnotes ---------- @@ -23950,9 +21371,9 @@ File: python.info, Node: Changes in the Python API<5>, Next: Changes in the C (18) https://bugs.python.org/issue7830  -File: python.info, Node: Changes in the C API<5>, Prev: Changes in the Python API<5>, Up: Porting to Python 3 5 +File: python.info, Node: Changes in the C API<4>, Prev: Changes in the Python API<5>, Up: Porting to Python 3 5 -1.5.11.3 Changes in the C API +1.4.11.3 Changes in the C API ............................. * The undocumented ‘format’ member of the (non-public) @@ -23960,12 +21381,12 @@ File: python.info, Node: Changes in the C API<5>, Prev: Changes in the Python relying on the relevant parts in ‘memoryobject.h’ must be rebuilt. * The ‘PyMemAllocator’ structure was renamed to *note - PyMemAllocatorEx: 8b9. and a new ‘calloc’ field was added. + PyMemAllocatorEx: 7af. and a new ‘calloc’ field was added. * Removed non-documented macro ‘PyObject_REPR’ which leaked references. Use format character ‘%R’ in *note - PyUnicode_FromFormat(): 8ba.-like functions to format the *note - repr(): 8bb. of the object. (Contributed by Serhiy Storchaka in + PyUnicode_FromFormat(): 7b0.-like functions to format the *note + repr(): 7b1. of the object. (Contributed by Serhiy Storchaka in bpo-22453(1).) * Because the lack of the ‘__module__’ attribute breaks pickling and @@ -23975,8 +21396,8 @@ File: python.info, Node: Changes in the C API<5>, Prev: Changes in the Python bpo-20204(2).) * As part of the PEP 492(3) implementation, the ‘tp_reserved’ slot of - *note PyTypeObject: 3f8. was replaced with a ‘tp_as_async’ slot. - Refer to *note Coroutine Objects: 8bc. for new types, structures + *note PyTypeObject: 2c2. was replaced with a ‘tp_as_async’ slot. + Refer to *note Coroutine Objects: 7b2. for new types, structures and functions. ---------- Footnotes ---------- @@ -23990,7 +21411,7 @@ File: python.info, Node: Changes in the C API<5>, Prev: Changes in the Python  File: python.info, Node: Notable changes in Python 3 5 4, Prev: Porting to Python 3 5, Up: What’s New In Python 3 5 -1.5.12 Notable changes in Python 3.5.4 +1.4.12 Notable changes in Python 3.5.4 -------------------------------------- * Menu: @@ -24001,7 +21422,7 @@ File: python.info, Node: Notable changes in Python 3 5 4, Prev: Porting to Pyt  File: python.info, Node: New make regen-all build target<2>, Next: Removal of make touch build target<2>, Up: Notable changes in Python 3 5 4 -1.5.12.1 New ‘make regen-all’ build target +1.4.12.1 New ‘make regen-all’ build target .......................................... To simplify cross-compilation, and to ensure that CPython can reliably @@ -24022,14 +21443,14 @@ New in version 3.5.4. ---------- Footnotes ---------- - (1) https://github.com/python/cpython/tree/3.9/Makefile.pre.in + (1) https://github.com/python/cpython/tree/3.8/Makefile.pre.in (2) https://bugs.python.org/issue23404  File: python.info, Node: Removal of make touch build target<2>, Prev: New make regen-all build target<2>, Up: Notable changes in Python 3 5 4 -1.5.12.2 Removal of ‘make touch’ build target +1.4.12.2 Removal of ‘make touch’ build target ............................................. The ‘make touch’ build target previously used to request implicit @@ -24049,7 +21470,7 @@ Changed in version 3.5.4.  File: python.info, Node: What’s New In Python 3 4, Next: What’s New In Python 3 3, Prev: What’s New In Python 3 5, Up: What’s New in Python -1.6 What’s New In Python 3.4 +1.5 What’s New In Python 3.4 ============================ @@ -24067,12 +21488,12 @@ PEP 429(2) – Python 3.4 Release Schedule * Menu: * Summary – Release Highlights: Summary – Release Highlights<2>. -* New Features: New Features<7>. -* New Modules: New Modules<6>. -* Improved Modules: Improved Modules<6>. +* New Features: New Features<5>. +* New Modules: New Modules<5>. +* Improved Modules: Improved Modules<5>. * CPython Implementation Changes:: -* Deprecated: Deprecated<5>. -* Removed: Removed<5>. +* Deprecated: Deprecated<4>. +* Removed: Removed<3>. * Porting to Python 3.4: Porting to Python 3 4. * Changed in 3.4.3: Changed in 3 4 3. @@ -24083,9 +21504,9 @@ PEP 429(2) – Python 3.4 Release Schedule (2) https://www.python.org/dev/peps/pep-0429  -File: python.info, Node: Summary – Release Highlights<2>, Next: New Features<7>, Up: What’s New In Python 3 4 +File: python.info, Node: Summary – Release Highlights<2>, Next: New Features<5>, Up: What’s New In Python 3 4 -1.6.1 Summary – Release Highlights +1.5.1 Summary – Release Highlights ---------------------------------- New syntax features: @@ -24094,115 +21515,115 @@ New syntax features: Other new features: - * *note pip should always be available: 8c3. ( PEP 453(1)). + * *note pip should always be available: 7b9. ( PEP 453(1)). - * *note Newly created file descriptors are non-inheritable: 8c4. ( + * *note Newly created file descriptors are non-inheritable: 7ba. ( PEP 446(2)). - * command line option for *note isolated mode: 8c5. (bpo-16499(3)). + * command line option for *note isolated mode: 7bb. (bpo-16499(3)). - * *note improvements in the handling of codecs: 8c6. that are not + * *note improvements in the handling of codecs: 7bc. that are not text encodings (multiple issues). - * *note A ModuleSpec Type: 8c7. for the Import System ( PEP 451(4)). + * *note A ModuleSpec Type: 7bd. for the Import System ( PEP 451(4)). (Affects importer authors.) - * The *note marshal: b0. format has been made *note more compact and - efficient: 8c8. (bpo-16475(5)). + * The *note marshal: b1. format has been made *note more compact and + efficient: 7be. (bpo-16475(5)). New library modules: - * *note asyncio: 9.: *note New provisional API for asynchronous IO: - 8c9. ( PEP 3156(6)). + * *note asyncio: a.: *note New provisional API for asynchronous IO: + 7bf. ( PEP 3156(6)). - * *note ensurepip: 78.: *note Bootstrapping the pip installer: 8ca. ( + * *note ensurepip: 7a.: *note Bootstrapping the pip installer: 7c0. ( PEP 453(7)). - * *note enum: 79.: *note Support for enumeration types: 8cb. ( PEP + * *note enum: 7b.: *note Support for enumeration types: 7c1. ( PEP 435(8)). - * *note pathlib: c8.: *note Object-oriented filesystem paths: 8cc. ( + * *note pathlib: c9.: *note Object-oriented filesystem paths: 7c2. ( PEP 428(9)). - * *note selectors: e6.: *note High-level and efficient I/O - multiplexing: 8cd, built upon the *note select: e5. module + * *note selectors: e7.: *note High-level and efficient I/O + multiplexing: 7c3, built upon the *note select: e6. module primitives (part of PEP 3156(10)). - * *note statistics: f5.: A basic *note numerically stable statistics - library: 8ce. ( PEP 450(11)). + * *note statistics: f6.: A basic *note numerically stable statistics + library: 7c4. ( PEP 450(11)). - * *note tracemalloc: 11d.: *note Trace Python memory allocations: - 8cf. ( PEP 454(12)). + * *note tracemalloc: 115.: *note Trace Python memory allocations: + 7c5. ( PEP 454(12)). Significantly improved library modules: - * *note Single-dispatch generic functions: 8d0. in *note functools: - 83. ( PEP 443(13)). + * *note Single-dispatch generic functions: 7c6. in *note functools: + 85. ( PEP 443(13)). - * New *note pickle: ca. *note protocol 4: 8d1. ( PEP 3154(14)). + * New *note pickle: cb. *note protocol 4: 7c7. ( PEP 3154(14)). - * *note multiprocessing: b7. now has *note an option to avoid using - os.fork on Unix: 8d2. (bpo-8713(15)). + * *note multiprocessing: b8. now has *note an option to avoid using + os.fork on Unix: 7c8. (bpo-8713(15)). - * *note email: 67. has a new submodule, *note contentmanager: 69, and - a new *note Message: 63d. subclass (‘EmailMessage’) that *note - simplify MIME handling: 8d3. (bpo-18891(16)). + * *note email: 69. has a new submodule, *note contentmanager: 6b, and + a new *note Message: 52e. subclass (‘EmailMessage’) that *note + simplify MIME handling: 7c9. (bpo-18891(16)). - * The *note inspect: a0. and *note pydoc: d9. modules are now capable + * The *note inspect: a1. and *note pydoc: da. modules are now capable of correct introspection of a much wider variety of callable - objects, which improves the output of the Python *note help(): 175. + objects, which improves the output of the Python *note help(): 55f. system. - * The *note ipaddress: a2. module API has been declared stable + * The *note ipaddress: a3. module API has been declared stable Security improvements: - * *note Secure and interchangeable hash algorithm: 8d4. ( PEP + * *note Secure and interchangeable hash algorithm: 7ca. ( PEP 456(17)). - * *note Make newly created file descriptors non-inheritable: 8c4. ( + * *note Make newly created file descriptors non-inheritable: 7ba. ( PEP 446(18)) to avoid leaking file descriptors to child processes. - * New command line option for *note isolated mode: 8c5, + * New command line option for *note isolated mode: 7bb, (bpo-16499(19)). - * *note multiprocessing: b7. now has *note an option to avoid using - os.fork on Unix: 8d2. `spawn' and `forkserver' are more secure + * *note multiprocessing: b8. now has *note an option to avoid using + os.fork on Unix: 7c8. `spawn' and `forkserver' are more secure because they avoid sharing data with child processes. - * *note multiprocessing: b7. child processes on Windows no longer + * *note multiprocessing: b8. child processes on Windows no longer inherit all of the parent’s inheritable handles, only the necessary ones. - * A new *note hashlib.pbkdf2_hmac(): 8d5. function provides the + * A new *note hashlib.pbkdf2_hmac(): 7cb. function provides the PKCS#5 password-based key derivation function 2(20). - * *note TLSv1.1 and TLSv1.2 support: 8d6. for *note ssl: f3. + * *note TLSv1.1 and TLSv1.2 support: 7cc. for *note ssl: f4. * *note Retrieving certificates from the Windows system cert store - support: 8d7. for *note ssl: f3. + support: 7cd. for *note ssl: f4. - * *note Server-side SNI (Server Name Indication) support: 8d8. for - *note ssl: f3. + * *note Server-side SNI (Server Name Indication) support: 7ce. for + *note ssl: f4. - * The *note ssl.SSLContext: 4ec. class has a *note lot of - improvements: 8d9. + * The *note ssl.SSLContext: 3d5. class has a *note lot of + improvements: 7cf. * All modules in the standard library that support SSL now support server certificate verification, including hostname matching (*note - ssl.match_hostname(): 4e5.) and CRLs (Certificate Revocation lists, - see *note ssl.SSLContext.load_verify_locations(): 8da.). + ssl.match_hostname(): 3cd.) and CRLs (Certificate Revocation lists, + see *note ssl.SSLContext.load_verify_locations(): 7d0.). CPython implementation improvements: - * *note Safe object finalization: 8db. ( PEP 442(21)). + * *note Safe object finalization: 7d1. ( PEP 442(21)). * Leveraging PEP 442(22), in most cases *note module globals are no - longer set to None during finalization: 8db. (bpo-18214(23)). + longer set to None during finalization: 7d1. (bpo-18214(23)). - * *note Configurable memory allocators: 8dc. ( PEP 445(24)). + * *note Configurable memory allocators: 7d2. ( PEP 445(24)). - * *note Argument Clinic: 8dd. ( PEP 436(25)). + * *note Argument Clinic: 7d3. ( PEP 436(25)). Please read on for a comprehensive list of user-facing changes, including many other smaller improvements, CPython optimizations, @@ -24261,9 +21682,9 @@ deprecations, and potential porting issues. (25) https://www.python.org/dev/peps/pep-0436  -File: python.info, Node: New Features<7>, Next: New Modules<6>, Prev: Summary – Release Highlights<2>, Up: What’s New In Python 3 4 +File: python.info, Node: New Features<5>, Next: New Modules<5>, Prev: Summary – Release Highlights<2>, Up: What’s New In Python 3 4 -1.6.2 New Features +1.5.2 New Features ------------------ * Menu: @@ -24272,12 +21693,12 @@ File: python.info, Node: New Features<7>, Next: New Modules<6>, Prev: Summary * PEP 446; Newly Created File Descriptors Are Non-Inheritable: PEP 446 Newly Created File Descriptors Are Non-Inheritable. * Improvements to Codec Handling:: * PEP 451; A ModuleSpec Type for the Import System: PEP 451 A ModuleSpec Type for the Import System. -* Other Language Changes: Other Language Changes<6>. +* Other Language Changes: Other Language Changes<5>.  -File: python.info, Node: PEP 453 Explicit Bootstrapping of PIP in Python Installations, Next: PEP 446 Newly Created File Descriptors Are Non-Inheritable, Up: New Features<7> +File: python.info, Node: PEP 453 Explicit Bootstrapping of PIP in Python Installations, Next: PEP 446 Newly Created File Descriptors Are Non-Inheritable, Up: New Features<5> -1.6.2.1 PEP 453: Explicit Bootstrapping of PIP in Python Installations +1.5.2.1 PEP 453: Explicit Bootstrapping of PIP in Python Installations ...................................................................... * Menu: @@ -24288,10 +21709,10 @@ File: python.info, Node: PEP 453 Explicit Bootstrapping of PIP in Python Instal  File: python.info, Node: Bootstrapping pip By Default, Next: Documentation Changes, Up: PEP 453 Explicit Bootstrapping of PIP in Python Installations -1.6.2.2 Bootstrapping pip By Default +1.5.2.2 Bootstrapping pip By Default .................................... -The new *note ensurepip: 78. module (defined in PEP 453(1)) provides a +The new *note ensurepip: 7a. module (defined in PEP 453(1)) provides a standard cross-platform mechanism to bootstrap the pip installer into Python installations and virtual environments. The version of ‘pip’ included with Python 3.4.0 is ‘pip’ 1.5.4, and future 3.4.x maintenance @@ -24306,13 +21727,13 @@ command will also be installed. On other platforms, the system wide unversioned ‘pip’ command typically refers to the separately installed Python 2 version. -The ‘pyvenv’ command line utility and the *note venv: 12e. module make -use of the *note ensurepip: 78. module to make ‘pip’ readily available +The ‘pyvenv’ command line utility and the *note venv: 126. module make +use of the *note ensurepip: 7a. module to make ‘pip’ readily available in virtual environments. When using the command line utility, ‘pip’ is -installed by default, while when using the *note venv: 12e. module *note -API: 8e1. installation of ‘pip’ must be requested explicitly. +installed by default, while when using the *note venv: 126. module *note +API: 7d7. installation of ‘pip’ must be requested explicitly. -For CPython *note source builds on POSIX systems: 8e2, the ‘make +For CPython *note source builds on POSIX systems: 7d8, the ‘make install’ and ‘make altinstall’ commands bootstrap ‘pip’ by default. This behaviour can be controlled through configure options, and overridden through Makefile options. @@ -24349,11 +21770,11 @@ https://www.python.org/dev/peps/pep-0453/#recommendations-for-downstream-distrib  File: python.info, Node: Documentation Changes, Prev: Bootstrapping pip By Default, Up: PEP 453 Explicit Bootstrapping of PIP in Python Installations -1.6.2.3 Documentation Changes +1.5.2.3 Documentation Changes ............................. -As part of this change, the *note Installing Python Modules: 8e4. and -*note Distributing Python Modules: 8e5. sections of the documentation +As part of this change, the *note Installing Python Modules: 7da. and +*note Distributing Python Modules: 7db. sections of the documentation have been completely redesigned as short getting started and FAQ documents. Most packaging documentation has now been moved out to the Python Packaging Authority maintained Python Packaging User Guide(1) and @@ -24361,8 +21782,8 @@ the documentation of the individual projects. However, as this migration is currently still incomplete, the legacy versions of those guides remaining available as *note Installing Python -Modules (Legacy version): 8e6. and *note Distributing Python Modules -(Legacy version): 8e7. +Modules (Legacy version): 7dc. and *note Distributing Python Modules +(Legacy version): 7dd. See also ........ @@ -24379,13 +21800,13 @@ PEP 453(2) – Explicit bootstrapping of pip in Python installations (2) https://www.python.org/dev/peps/pep-0453  -File: python.info, Node: PEP 446 Newly Created File Descriptors Are Non-Inheritable, Next: Improvements to Codec Handling, Prev: PEP 453 Explicit Bootstrapping of PIP in Python Installations, Up: New Features<7> +File: python.info, Node: PEP 446 Newly Created File Descriptors Are Non-Inheritable, Next: Improvements to Codec Handling, Prev: PEP 453 Explicit Bootstrapping of PIP in Python Installations, Up: New Features<5> -1.6.2.4 PEP 446: Newly Created File Descriptors Are Non-Inheritable +1.5.2.4 PEP 446: Newly Created File Descriptors Are Non-Inheritable ................................................................... PEP 446(1) makes newly created file descriptors *note non-inheritable: -8e9. In general, this is the behavior an application will want: when +7df. In general, this is the behavior an application will want: when launching a new process, having currently open files also open in the new process can lead to all sorts of hard to find bugs, and potentially to security issues. @@ -24393,13 +21814,13 @@ to security issues. However, there are occasions when inheritance is desired. To support these cases, the following new functions and methods are available: - * *note os.get_inheritable(): 8ea, *note os.set_inheritable(): 8eb. + * *note os.get_inheritable(): 7e0, *note os.set_inheritable(): 7e1. - * *note os.get_handle_inheritable(): 8ec, *note - os.set_handle_inheritable(): 8ed. + * *note os.get_handle_inheritable(): 7e2, *note + os.set_handle_inheritable(): 7e3. - * *note socket.socket.get_inheritable(): 8ee, *note - socket.socket.set_inheritable(): 8ef. + * *note socket.socket.get_inheritable(): 7e4, *note + socket.socket.set_inheritable(): 7e5. See also ........ @@ -24415,27 +21836,27 @@ PEP 446(2) – Make newly created file descriptors non-inheritable (2) https://www.python.org/dev/peps/pep-0446  -File: python.info, Node: Improvements to Codec Handling, Next: PEP 451 A ModuleSpec Type for the Import System, Prev: PEP 446 Newly Created File Descriptors Are Non-Inheritable, Up: New Features<7> +File: python.info, Node: Improvements to Codec Handling, Next: PEP 451 A ModuleSpec Type for the Import System, Prev: PEP 446 Newly Created File Descriptors Are Non-Inheritable, Up: New Features<5> -1.6.2.5 Improvements to Codec Handling +1.5.2.5 Improvements to Codec Handling ...................................... -Since it was first introduced, the *note codecs: 1b. module has always +Since it was first introduced, the *note codecs: 1c. module has always been intended to operate as a type-neutral dynamic encoding and decoding system. However, its close coupling with the Python text model, especially the type restricted convenience methods on the builtin *note -str: 205, *note bytes: 172. and *note bytearray: 173. types, has +str: 321, *note bytes: 322. and *note bytearray: 323. types, has historically obscured that fact. As a key step in clarifying the situation, the *note codecs.encode(): -8f1. and *note codecs.decode(): 8f2. convenience functions are now +7e7. and *note codecs.decode(): 7e8. convenience functions are now properly documented in Python 2.7, 3.3 and 3.4. These functions have -existed in the *note codecs: 1b. module (and have been covered by the +existed in the *note codecs: 1c. module (and have been covered by the regression test suite) since Python 2.4, but were previously only discoverable through runtime introspection. -Unlike the convenience methods on *note str: 205, *note bytes: 172. and -*note bytearray: 173, the *note codecs: 1b. convenience functions +Unlike the convenience methods on *note str: 321, *note bytes: 322. and +*note bytearray: 323, the *note codecs: 1c. convenience functions support arbitrary codecs in both Python 2 and Python 3, rather than being limited to Unicode text encodings (in Python 3) or ‘basestring’ <-> ‘basestring’ conversions (in Python 2). @@ -24505,8 +21926,8 @@ now be written as: b'hello' The binary and text transforms provided in the standard library are -detailed in *note Binary Transforms: 8f3. and *note Text Transforms: -8f4. +detailed in *note Binary Transforms: 7e9. and *note Text Transforms: +7ea. (Contributed by Nick Coghlan in bpo-7475(1), bpo-17827(2), bpo-17828(3) and bpo-19619(4).) @@ -24522,9 +21943,9 @@ and bpo-19619(4).) (4) https://bugs.python.org/issue19619  -File: python.info, Node: PEP 451 A ModuleSpec Type for the Import System, Next: Other Language Changes<6>, Prev: Improvements to Codec Handling, Up: New Features<7> +File: python.info, Node: PEP 451 A ModuleSpec Type for the Import System, Next: Other Language Changes<5>, Prev: Improvements to Codec Handling, Up: New Features<5> -1.6.2.6 PEP 451: A ModuleSpec Type for the Import System +1.5.2.6 PEP 451: A ModuleSpec Type for the Import System ........................................................ PEP 451(1) provides an encapsulation of the information about a module @@ -24538,7 +21959,7 @@ Furthermore, they should be transparent to everyone but importer authors. Key finder and loader methods have been deprecated, but they will continue working. New importers should use the new methods described in the PEP. Existing importers should be updated to implement -the new methods. See the *note Deprecated: 8f6. section for a list of +the new methods. See the *note Deprecated: 7ec. section for a list of methods that should be replaced and their replacements. ---------- Footnotes ---------- @@ -24549,21 +21970,21 @@ methods that should be replaced and their replacements. https://mail.python.org/pipermail/python-dev/2013-November/130111.html  -File: python.info, Node: Other Language Changes<6>, Prev: PEP 451 A ModuleSpec Type for the Import System, Up: New Features<7> +File: python.info, Node: Other Language Changes<5>, Prev: PEP 451 A ModuleSpec Type for the Import System, Up: New Features<5> -1.6.2.7 Other Language Changes +1.5.2.7 Other Language Changes .............................. Some smaller changes made to the core Python language are: * Unicode database updated to UCD version 6.3. - * *note min(): 8f8. and *note max(): 8f9. now accept a `default' + * *note min(): 7ee. and *note max(): 7ef. now accept a `default' keyword-only argument that can be used to specify the value they return if the iterable they are evaluating has no elements. (Contributed by Julian Berman in bpo-18111(1).) - * Module objects are now *note weakref: 131.’able. + * Module objects are now *note weakref: 129.’able. * Module ‘__file__’ attributes (and related values) should now always contain absolute paths by default, with the sole exception of @@ -24577,34 +21998,34 @@ Some smaller changes made to the core Python language are: while encoding non-BMP characters). (Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in bpo-12892(3).) - * New German EBCDIC *note codec: 784. ‘cp273’. (Contributed by + * New German EBCDIC *note codec: 678. ‘cp273’. (Contributed by Michael Bierenfeld and Andrew Kuchling in bpo-1097797(4).) - * New Ukrainian *note codec: 784. ‘cp1125’. (Contributed by Serhiy + * New Ukrainian *note codec: 678. ‘cp1125’. (Contributed by Serhiy Storchaka in bpo-19668(5).) - * *note bytes: 172.join() and *note bytearray: 173.join() now accept + * *note bytes: 322.join() and *note bytearray: 323.join() now accept arbitrary buffer objects as arguments. (Contributed by Antoine Pitrou in bpo-15958(6).) - * The *note int: 204. constructor now accepts any object that has an + * The *note int: 171. constructor now accepts any object that has an ‘__index__’ method for its `base' argument. (Contributed by Mark Dickinson in bpo-16772(7).) - * Frame objects now have a *note clear(): 8fa. method that clears all + * Frame objects now have a *note clear(): 7f0. method that clears all references to local variables from the frame. (Contributed by Antoine Pitrou in bpo-17934(8).) - * *note memoryview: 389. is now registered as a *note Sequence: 1e, - and supports the *note reversed(): 2c9. builtin. (Contributed by + * *note memoryview: 248. is now registered as a *note Sequence: 1f, + and supports the *note reversed(): 17b. builtin. (Contributed by Nick Coghlan and Claudiu Popa in bpo-18690(9) and bpo-19078(10).) - * Signatures reported by *note help(): 175. have been modified and + * Signatures reported by *note help(): 55f. have been modified and improved in several cases as a result of the introduction of - Argument Clinic and other changes to the *note inspect: a0. and - *note pydoc: d9. modules. + Argument Clinic and other changes to the *note inspect: a1. and + *note pydoc: da. modules. - * *note __length_hint__(): 8fb. is now part of the formal language + * *note __length_hint__(): 7f1. is now part of the formal language specification (see PEP 424(11)). (Contributed by Armin Ronacher in bpo-16148(12).) @@ -24635,34 +22056,34 @@ Some smaller changes made to the core Python language are: (12) https://bugs.python.org/issue16148  -File: python.info, Node: New Modules<6>, Next: Improved Modules<6>, Prev: New Features<7>, Up: What’s New In Python 3 4 +File: python.info, Node: New Modules<5>, Next: Improved Modules<5>, Prev: New Features<5>, Up: What’s New In Python 3 4 -1.6.3 New Modules +1.5.3 New Modules ----------------- * Menu: -* asyncio: asyncio<7>. +* asyncio: asyncio<6>. * ensurepip:: * enum: enum<5>. -* pathlib: pathlib<6>. +* pathlib: pathlib<5>. * selectors: selectors<2>. * statistics: statistics<3>. -* tracemalloc: tracemalloc<4>. +* tracemalloc: tracemalloc<3>.  -File: python.info, Node: asyncio<7>, Next: ensurepip, Up: New Modules<6> +File: python.info, Node: asyncio<6>, Next: ensurepip, Up: New Modules<5> -1.6.3.1 asyncio +1.5.3.1 asyncio ............... -The new *note asyncio: 9. module (defined in PEP 3156(1)) provides a +The new *note asyncio: a. module (defined in PEP 3156(1)) provides a standard pluggable event loop model for Python, providing solid asynchronous IO support in the standard library, and making it easier for other event loop implementations to interoperate with the standard library and each other. -For Python 3.4, this module is considered a *note provisional API: 456. +For Python 3.4, this module is considered a *note provisional API: 339. See also ........ @@ -24678,18 +22099,18 @@ PEP 3156(2) – Asynchronous IO Support Rebooted: the “asyncio” Module (2) https://www.python.org/dev/peps/pep-3156  -File: python.info, Node: ensurepip, Next: enum<5>, Prev: asyncio<7>, Up: New Modules<6> +File: python.info, Node: ensurepip, Next: enum<5>, Prev: asyncio<6>, Up: New Modules<5> -1.6.3.2 ensurepip +1.5.3.2 ensurepip ................. -The new *note ensurepip: 78. module is the primary infrastructure for +The new *note ensurepip: 7a. module is the primary infrastructure for the PEP 453(1) implementation. In the normal course of events end users will not need to interact with this module, but it can be used to manually bootstrap ‘pip’ if the automated bootstrapping into an installation or virtual environment was declined. -*note ensurepip: 78. includes a bundled copy of ‘pip’, up-to-date as of +*note ensurepip: 7a. includes a bundled copy of ‘pip’, up-to-date as of the first release candidate of the release of CPython with which it ships (this applies to both maintenance releases and feature releases). ‘ensurepip’ does not access the internet. If the installation has @@ -24708,14 +22129,14 @@ version of ‘pip’ is older than the bundled copy. (1) https://www.python.org/dev/peps/pep-0453  -File: python.info, Node: enum<5>, Next: pathlib<6>, Prev: ensurepip, Up: New Modules<6> +File: python.info, Node: enum<5>, Next: pathlib<5>, Prev: ensurepip, Up: New Modules<5> -1.6.3.3 enum +1.5.3.3 enum ............ -The new *note enum: 79. module (defined in PEP 435(1)) provides a +The new *note enum: 7b. module (defined in PEP 435(1)) provides a standard implementation of enumeration types, allowing other modules -(such as *note socket: ef.) to provide more informative error messages +(such as *note socket: f0.) to provide more informative error messages and better debugging support by replacing opaque integer constants with backwards compatible enumeration values. @@ -24734,18 +22155,18 @@ PEP 435(2) – Adding an Enum type to the Python standard library (2) https://www.python.org/dev/peps/pep-0435  -File: python.info, Node: pathlib<6>, Next: selectors<2>, Prev: enum<5>, Up: New Modules<6> +File: python.info, Node: pathlib<5>, Next: selectors<2>, Prev: enum<5>, Up: New Modules<5> -1.6.3.4 pathlib +1.5.3.4 pathlib ............... -The new *note pathlib: c8. module offers classes representing filesystem +The new *note pathlib: c9. module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between `pure paths', which provide purely computational operations without I/O, and `concrete paths', which inherit from pure paths but also provide I/O operations. -For Python 3.4, this module is considered a *note provisional API: 456. +For Python 3.4, this module is considered a *note provisional API: 339. See also ........ @@ -24759,26 +22180,26 @@ PEP 428(1) – The pathlib module – object-oriented filesystem paths (1) https://www.python.org/dev/peps/pep-0428  -File: python.info, Node: selectors<2>, Next: statistics<3>, Prev: pathlib<6>, Up: New Modules<6> +File: python.info, Node: selectors<2>, Next: statistics<3>, Prev: pathlib<5>, Up: New Modules<5> -1.6.3.5 selectors +1.5.3.5 selectors ................. -The new *note selectors: e6. module (created as part of implementing PEP +The new *note selectors: e7. module (created as part of implementing PEP 3156(1)) allows high-level and efficient I/O multiplexing, built upon -the *note select: e5. module primitives. +the *note select: e6. module primitives. ---------- Footnotes ---------- (1) https://www.python.org/dev/peps/pep-3156  -File: python.info, Node: statistics<3>, Next: tracemalloc<4>, Prev: selectors<2>, Up: New Modules<6> +File: python.info, Node: statistics<3>, Next: tracemalloc<3>, Prev: selectors<2>, Up: New Modules<5> -1.6.3.6 statistics +1.5.3.6 statistics .................. -The new *note statistics: f5. module (defined in PEP 450(1)) offers some +The new *note statistics: f6. module (defined in PEP 450(1)) offers some core statistics functionality directly in the standard library. This module supports calculation of the mean, median, mode, variance and standard deviation of a data series. @@ -24797,12 +22218,12 @@ PEP 450(2) – Adding A Statistics Module To The Standard Library (2) https://www.python.org/dev/peps/pep-0450  -File: python.info, Node: tracemalloc<4>, Prev: statistics<3>, Up: New Modules<6> +File: python.info, Node: tracemalloc<3>, Prev: statistics<3>, Up: New Modules<5> -1.6.3.7 tracemalloc +1.5.3.7 tracemalloc ................... -The new *note tracemalloc: 11d. module (defined in PEP 454(1)) is a +The new *note tracemalloc: 115. module (defined in PEP 454(1)) is a debug tool to trace memory blocks allocated by Python. It provides the following information: @@ -24829,9 +22250,9 @@ PEP 454(2) – Add a new tracemalloc module to trace Python memory allocations (2) https://www.python.org/dev/peps/pep-0454  -File: python.info, Node: Improved Modules<6>, Next: CPython Implementation Changes, Prev: New Modules<6>, Up: What’s New In Python 3 4 +File: python.info, Node: Improved Modules<5>, Next: CPython Implementation Changes, Prev: New Modules<5>, Up: What’s New In Python 3 4 -1.6.4 Improved Modules +1.5.4 Improved Modules ---------------------- * Menu: @@ -24850,44 +22271,44 @@ File: python.info, Node: Improved Modules<6>, Next: CPython Implementation Cha * email: email<3>. * filecmp:: * functools: functools<4>. -* gc: gc<4>. +* gc: gc<3>. * glob: glob<2>. -* hashlib: hashlib<3>. +* hashlib: hashlib<2>. * hmac: hmac<2>. * html:: -* http: http<3>. +* http: http<2>. * idlelib and IDLE: idlelib and IDLE<4>. -* importlib: importlib<7>. -* inspect: inspect<5>. -* ipaddress: ipaddress<4>. +* importlib: importlib<6>. +* inspect: inspect<4>. +* ipaddress: ipaddress<3>. * logging: logging<5>. * marshal:: * mmap: mmap<2>. -* multiprocessing: multiprocessing<6>. +* multiprocessing: multiprocessing<5>. * operator: operator<2>. -* os: os<7>. -* pdb: pdb<4>. +* os: os<6>. +* pdb: pdb<3>. * pickle: pickle<4>. * plistlib: plistlib<2>. -* poplib: poplib<3>. -* pprint: pprint<3>. +* poplib: poplib<2>. +* pprint: pprint<2>. * pty:: -* pydoc: pydoc<4>. +* pydoc: pydoc<3>. * re: re<5>. * resource:: * select:: * shelve:: * shutil: shutil<3>. * smtpd: smtpd<2>. -* smtplib: smtplib<3>. -* socket: socket<7>. +* smtplib: smtplib<2>. +* socket: socket<6>. * sqlite3: sqlite3<4>. * ssl: ssl<7>. * stat:: * struct: struct<2>. * subprocess: subprocess<4>. * sunau: sunau<2>. -* sys: sys<7>. +* sys: sys<6>. * tarfile: tarfile<3>. * textwrap:: * threading: threading<4>. @@ -24895,23 +22316,23 @@ File: python.info, Node: Improved Modules<6>, Next: CPython Implementation Cha * types: types<3>. * urllib: urllib<2>. * unittest: unittest<4>. -* venv: venv<5>. +* venv: venv<4>. * wave: wave<2>. * weakref: weakref<2>. * xml.etree: xml etree<2>. * zipfile: zipfile<4>.  -File: python.info, Node: abc, Next: aifc<2>, Up: Improved Modules<6> +File: python.info, Node: abc, Next: aifc<2>, Up: Improved Modules<5> -1.6.4.1 abc +1.5.4.1 abc ........... -New function *note abc.get_cache_token(): 906. can be used to know when +New function *note abc.get_cache_token(): 7fc. can be used to know when to invalidate caches that are affected by changes in the object graph. (Contributed by Łukasz Langa in bpo-16832(1).) -New class *note ABC: 907. has *note ABCMeta: 908. as its meta class. +New class *note ABC: 7fd. has *note ABCMeta: 7fe. as its meta class. Using ‘ABC’ as a base class has essentially the same effect as specifying ‘metaclass=abc.ABCMeta’, but is simpler to type and easier to read. (Contributed by Bruno Dupuis in bpo-16049(2).) @@ -24923,21 +22344,21 @@ read. (Contributed by Bruno Dupuis in bpo-16049(2).) (2) https://bugs.python.org/issue16049  -File: python.info, Node: aifc<2>, Next: argparse<3>, Prev: abc, Up: Improved Modules<6> +File: python.info, Node: aifc<2>, Next: argparse<3>, Prev: abc, Up: Improved Modules<5> -1.6.4.2 aifc +1.5.4.2 aifc ............ -The *note getparams(): 90a. method now returns a namedtuple rather than +The *note getparams(): 800. method now returns a namedtuple rather than a plain tuple. (Contributed by Claudiu Popa in bpo-17818(1).) -*note aifc.open(): 55f. now supports the context management protocol: -when used in a *note with: 7dc. block, the *note close(): 90b. method of +*note aifc.open(): 44c. now supports the context management protocol: +when used in a *note with: 6d0. block, the *note close(): 801. method of the returned object will be called automatically at the end of the block. (Contributed by Serhiy Storchacha in bpo-16486(2).) -The *note writeframesraw(): 90c. and *note writeframes(): 90d. methods -now accept any *note bytes-like object: 6e1. (Contributed by Serhiy +The *note writeframesraw(): 802. and *note writeframes(): 803. methods +now accept any *note bytes-like object: 5d5. (Contributed by Serhiy Storchaka in bpo-8311(3).) ---------- Footnotes ---------- @@ -24949,13 +22370,13 @@ Storchaka in bpo-8311(3).) (3) https://bugs.python.org/issue8311  -File: python.info, Node: argparse<3>, Next: audioop, Prev: aifc<2>, Up: Improved Modules<6> +File: python.info, Node: argparse<3>, Next: audioop, Prev: aifc<2>, Up: Improved Modules<5> -1.6.4.3 argparse +1.5.4.3 argparse ................ -The *note FileType: 90f. class now accepts `encoding' and `errors' -arguments, which are passed through to *note open(): 16f. (Contributed +The *note FileType: 805. class now accepts `encoding' and `errors' +arguments, which are passed through to *note open(): 4e1. (Contributed by Lucas Maystre in bpo-11175(1).) ---------- Footnotes ---------- @@ -24963,20 +22384,20 @@ by Lucas Maystre in bpo-11175(1).) (1) https://bugs.python.org/issue11175  -File: python.info, Node: audioop, Next: base64, Prev: argparse<3>, Up: Improved Modules<6> +File: python.info, Node: audioop, Next: base64, Prev: argparse<3>, Up: Improved Modules<5> -1.6.4.4 audioop +1.5.4.4 audioop ............... -*note audioop: c. now supports 24-bit samples. (Contributed by Serhiy +*note audioop: d. now supports 24-bit samples. (Contributed by Serhiy Storchaka in bpo-12866(1).) -New *note byteswap(): 911. function converts big-endian samples to +New *note byteswap(): 807. function converts big-endian samples to little-endian and vice versa. (Contributed by Serhiy Storchaka in bpo-19641(2).) -All *note audioop: c. functions now accept any *note bytes-like object: -6e1. Strings are not accepted: they didn’t work before, now they raise +All *note audioop: d. functions now accept any *note bytes-like object: +5d5. Strings are not accepted: they didn’t work before, now they raise an error right away. (Contributed by Serhiy Storchaka in bpo-16685(3).) ---------- Footnotes ---------- @@ -24988,18 +22409,18 @@ an error right away. (Contributed by Serhiy Storchaka in bpo-16685(3).) (3) https://bugs.python.org/issue16685  -File: python.info, Node: base64, Next: collections<6>, Prev: audioop, Up: Improved Modules<6> +File: python.info, Node: base64, Next: collections<6>, Prev: audioop, Up: Improved Modules<5> -1.6.4.5 base64 +1.5.4.5 base64 .............. -The encoding and decoding functions in *note base64: d. now accept any -*note bytes-like object: 6e1. in cases where it previously required a -*note bytes: 172. or *note bytearray: 173. instance. (Contributed by +The encoding and decoding functions in *note base64: e. now accept any +*note bytes-like object: 5d5. in cases where it previously required a +*note bytes: 322. or *note bytearray: 323. instance. (Contributed by Nick Coghlan in bpo-17839(1).) -New functions *note a85encode(): 913, *note a85decode(): 914, *note -b85encode(): 915, and *note b85decode(): 916. provide the ability to +New functions *note a85encode(): 809, *note a85decode(): 80a, *note +b85encode(): 80b, and *note b85decode(): 80c. provide the ability to encode and decode binary data from and to ‘Ascii85’ and the git/mercurial ‘Base85’ formats, respectively. The ‘a85’ functions have options that can be used to make them compatible with the variants of @@ -25014,12 +22435,12 @@ Pitrou in bpo-17618(2).) (2) https://bugs.python.org/issue17618  -File: python.info, Node: collections<6>, Next: colorsys, Prev: base64, Up: Improved Modules<6> +File: python.info, Node: collections<6>, Next: colorsys, Prev: base64, Up: Improved Modules<5> -1.6.4.6 collections +1.5.4.6 collections ................... -The *note ChainMap.new_child(): 918. method now accepts an `m' argument +The *note ChainMap.new_child(): 80e. method now accepts an `m' argument specifying the child map to add to the chain. This allows an existing mapping and/or a custom mapping type to be used for the child. (Contributed by Vinay Sajip in bpo-16613(1).) @@ -25029,9 +22450,9 @@ mapping and/or a custom mapping type to be used for the child. (1) https://bugs.python.org/issue16613  -File: python.info, Node: colorsys, Next: contextlib<4>, Prev: collections<6>, Up: Improved Modules<6> +File: python.info, Node: colorsys, Next: contextlib<4>, Prev: collections<6>, Up: Improved Modules<5> -1.6.4.7 colorsys +1.5.4.7 colorsys ................ The number of digits in the coefficients for the RGB — YIQ conversions @@ -25045,29 +22466,29 @@ bpo-14323(1).) (1) https://bugs.python.org/issue14323  -File: python.info, Node: contextlib<4>, Next: dbm<5>, Prev: colorsys, Up: Improved Modules<6> +File: python.info, Node: contextlib<4>, Next: dbm<5>, Prev: colorsys, Up: Improved Modules<5> -1.6.4.8 contextlib +1.5.4.8 contextlib .................. -The new *note contextlib.suppress: 91b. context manager helps to clarify +The new *note contextlib.suppress: 811. context manager helps to clarify the intent of code that deliberately suppresses exceptions from a single statement. (Contributed by Raymond Hettinger in bpo-15806(1) and Zero Piraeus in bpo-19266(2).) -The new *note contextlib.redirect_stdout(): 7b7. context manager makes +The new *note contextlib.redirect_stdout(): 6a9. context manager makes it easier for utility scripts to handle inflexible APIs that write their -output to *note sys.stdout: 421. and don’t provide any options to -redirect it. Using the context manager, the *note sys.stdout: 421. +output to *note sys.stdout: 302. and don’t provide any options to +redirect it. Using the context manager, the *note sys.stdout: 302. output can be redirected to any other stream or, in conjunction with -*note io.StringIO: 91c, to a string. The latter can be especially +*note io.StringIO: 812, to a string. The latter can be especially useful, for example, to capture output from a function that was written to implement a command line interface. It is recommended only for utility scripts because it affects the global state of *note sys.stdout: -421. (Contributed by Raymond Hettinger in bpo-15805(3).) +302. (Contributed by Raymond Hettinger in bpo-15805(3).) -The *note contextlib: 23. documentation has also been updated to include -a *note discussion: 91d. of the differences between single use, reusable +The *note contextlib: 24. documentation has also been updated to include +a *note discussion: 813. of the differences between single use, reusable and reentrant context managers. ---------- Footnotes ---------- @@ -25079,13 +22500,13 @@ and reentrant context managers. (3) https://bugs.python.org/issue15805  -File: python.info, Node: dbm<5>, Next: dis<2>, Prev: contextlib<4>, Up: Improved Modules<6> +File: python.info, Node: dbm<5>, Next: dis<2>, Prev: contextlib<4>, Up: Improved Modules<5> -1.6.4.9 dbm +1.5.4.9 dbm ........... -*note dbm.open(): 91f. objects now support the context management -protocol. When used in a *note with: 7dc. statement, the ‘close’ method +*note dbm.open(): 815. objects now support the context management +protocol. When used in a *note with: 6d0. statement, the ‘close’ method of the database object will be called automatically at the end of the block. (Contributed by Claudiu Popa and Nick Coghlan in bpo-19282(1).) @@ -25094,24 +22515,24 @@ block. (Contributed by Claudiu Popa and Nick Coghlan in bpo-19282(1).) (1) https://bugs.python.org/issue19282  -File: python.info, Node: dis<2>, Next: doctest<2>, Prev: dbm<5>, Up: Improved Modules<6> +File: python.info, Node: dis<2>, Next: doctest<2>, Prev: dbm<5>, Up: Improved Modules<5> -1.6.4.10 dis +1.5.4.10 dis ............ -Functions *note show_code(): 921, *note dis(): 48d, *note distb(): 922, -and *note disassemble(): 923. now accept a keyword-only `file' argument +Functions *note show_code(): 817, *note dis(): 375, *note distb(): 818, +and *note disassemble(): 819. now accept a keyword-only `file' argument that controls where they write their output. -The *note dis: 37. module is now built around an *note Instruction: 924. +The *note dis: 38. module is now built around an *note Instruction: 81a. class that provides object oriented access to the details of each individual bytecode operation. -A new method, *note get_instructions(): 925, provides an iterator that +A new method, *note get_instructions(): 81b, provides an iterator that emits the Instruction stream for a given piece of Python code. Thus it is now possible to write a program that inspects and manipulates a bytecode object in ways different from those provided by the *note dis: -37. module itself. For example: +38. module itself. For example: >>> import dis >>> for instr in dis.get_instructions(lambda x: x + 1): @@ -25121,17 +22542,17 @@ bytecode object in ways different from those provided by the *note dis: BINARY_ADD RETURN_VALUE -The various display tools in the *note dis: 37. module have been +The various display tools in the *note dis: 38. module have been rewritten to use these new components. -In addition, a new application-friendly class *note Bytecode: 926. +In addition, a new application-friendly class *note Bytecode: 81c. provides an object-oriented API for inspecting bytecode in both in human-readable form and for iterating over instructions. The *note -Bytecode: 926. constructor takes the same arguments that +Bytecode: 81c. constructor takes the same arguments that ‘get_instruction()’ does (plus an optional `current_offset'), and the -resulting object can be iterated to produce *note Instruction: 924. -objects. But it also has a *note dis: 927. method, equivalent to -calling *note dis: 48d. on the constructor argument, but returned as a +resulting object can be iterated to produce *note Instruction: 81a. +objects. But it also has a *note dis: 81d. method, equivalent to +calling *note dis: 375. on the constructor argument, but returned as a multi-line string: >>> bytecode = dis.Bytecode(lambda x: x + 1, current_offset=3) @@ -25147,15 +22568,15 @@ multi-line string: ' 6 BINARY_ADD', ' 7 RETURN_VALUE'] -*note Bytecode: 926. also has a class method, *note from_traceback(): -928, that provides the ability to manipulate a traceback (that is, +*note Bytecode: 81c. also has a class method, *note from_traceback(): +81e, that provides the ability to manipulate a traceback (that is, ‘print(Bytecode.from_traceback(tb).dis())’ is equivalent to ‘distb(tb)’). (Contributed by Nick Coghlan, Ryan Kelly and Thomas Kluyver in bpo-11816(1) and Claudiu Popa in bpo-17916(2).) -New function *note stack_effect(): 929. computes the effect on the +New function *note stack_effect(): 81f. computes the effect on the Python stack of a given opcode and argument, information that is not otherwise available. (Contributed by Larry Hastings in bpo-19722(3).) @@ -25168,23 +22589,23 @@ otherwise available. (Contributed by Larry Hastings in bpo-19722(3).) (3) https://bugs.python.org/issue19722  -File: python.info, Node: doctest<2>, Next: email<3>, Prev: dis<2>, Up: Improved Modules<6> +File: python.info, Node: doctest<2>, Next: email<3>, Prev: dis<2>, Up: Improved Modules<5> -1.6.4.11 doctest +1.5.4.11 doctest ................ -A new *note option flag: 92b, *note FAIL_FAST: 92c, halts test running +A new *note option flag: 821, *note FAIL_FAST: 822, halts test running as soon as the first failure is detected. (Contributed by R. David Murray and Daniel Urban in bpo-16522(1).) -The *note doctest: 66. command line interface now uses *note argparse: -5, and has two new options, ‘-o’ and ‘-f’. ‘-o’ allows *note doctest -options: 92b. to be specified on the command line, and ‘-f’ is a +The *note doctest: 67. command line interface now uses *note argparse: +6, and has two new options, ‘-o’ and ‘-f’. ‘-o’ allows *note doctest +options: 821. to be specified on the command line, and ‘-f’ is a shorthand for ‘-o FAIL_FAST’ (to parallel the similar option supported -by the *note unittest: 124. CLI). (Contributed by R. David Murray in +by the *note unittest: 11c. CLI). (Contributed by R. David Murray in bpo-11390(2).) -*note doctest: 66. will now find doctests in extension module ‘__doc__’ +*note doctest: 67. will now find doctests in extension module ‘__doc__’ strings. (Contributed by Zachary Ware in bpo-3158(3).) ---------- Footnotes ---------- @@ -25196,40 +22617,40 @@ strings. (Contributed by Zachary Ware in bpo-3158(3).) (3) https://bugs.python.org/issue3158  -File: python.info, Node: email<3>, Next: filecmp, Prev: doctest<2>, Up: Improved Modules<6> +File: python.info, Node: email<3>, Next: filecmp, Prev: doctest<2>, Up: Improved Modules<5> -1.6.4.12 email +1.5.4.12 email .............. -*note as_string(): 92e. now accepts a `policy' argument to override the +*note as_string(): 824. now accepts a `policy' argument to override the default policy of the message when generating a string representation of it. This means that ‘as_string’ can now be used in more circumstances, -instead of having to create and use a *note generator: 6c. in order to +instead of having to create and use a *note generator: 6e. in order to pass formatting parameters to its ‘flatten’ method. (Contributed by R. David Murray in bpo-18600(1).) -New method *note as_bytes(): 92f. added to produce a bytes +New method *note as_bytes(): 825. added to produce a bytes representation of the message in a fashion similar to how ‘as_string’ produces a string representation. It does not accept the `maxheaderlen' argument, but does accept the `unixfrom' and `policy' arguments. The -*note Message: 63d. *note __bytes__(): 930. method calls it, meaning +*note Message: 52e. *note __bytes__(): 826. method calls it, meaning that ‘bytes(mymsg)’ will now produce the intuitive result: a bytes object containing the fully formatted message. (Contributed by R. David Murray in bpo-18600(2).) -The *note Message.set_param(): 931. message now accepts a `replace' +The *note Message.set_param(): 827. message now accepts a `replace' keyword argument. When specified, the associated header will be updated without changing its location in the list of headers. For backward compatibility, the default is ‘False’. (Contributed by R. David Murray -in bpo-18891(3).) A pair of new subclasses of *note Message: 63d. have -been added (*note EmailMessage: 63e. and *note MIMEPart: 932.), along -with a new sub-module, *note contentmanager: 69. and a new *note policy: -73. attribute *note content_manager: 933. All documentation is +in bpo-18891(3).) A pair of new subclasses of *note Message: 52e. have +been added (*note EmailMessage: 52f. and *note MIMEPart: 828.), along +with a new sub-module, *note contentmanager: 6b. and a new *note policy: +75. attribute *note content_manager: 829. All documentation is currently in the new module, which is being added as part of email’s new -*note provisional API: 456. These classes provide a number of new +*note provisional API: 339. These classes provide a number of new methods that make extracting content from and inserting content into email messages much easier. For details, see the *note contentmanager: -69. documentation and the *note email; Examples: 934. These API +6b. documentation and the *note email; Examples: 82a. These API additions complete the bulk of the work that was planned as part of the email6 project. The currently provisional API is scheduled to become final in Python 3.5 (possibly with a few minor additions in the area of @@ -25246,22 +22667,22 @@ error handling). (Contributed by R. David Murray in bpo-18891(4).) (4) https://bugs.python.org/issue18891  -File: python.info, Node: filecmp, Next: functools<4>, Prev: email<3>, Up: Improved Modules<6> +File: python.info, Node: filecmp, Next: functools<4>, Prev: email<3>, Up: Improved Modules<5> -1.6.4.13 filecmp +1.5.4.13 filecmp ................ -A new *note clear_cache(): 936. function provides the ability to clear -the *note filecmp: 7d. comparison cache, which uses *note os.stat(): -324. information to determine if the file has changed since the last +A new *note clear_cache(): 82c. function provides the ability to clear +the *note filecmp: 7f. comparison cache, which uses *note os.stat(): +1dd. information to determine if the file has changed since the last compare. This can be used, for example, if the file might have been changed and re-checked in less time than the resolution of a particular filesystem’s file modification time field. (Contributed by Mark Levitt in bpo-18149(1).) -New module attribute *note DEFAULT_IGNORES: 937. provides the list of +New module attribute *note DEFAULT_IGNORES: 82d. provides the list of directories that are used as the default value for the `ignore' -parameter of the *note dircmp(): 938. function. (Contributed by Eli +parameter of the *note dircmp(): 82e. function. (Contributed by Eli Bendersky in bpo-15442(2).) ---------- Footnotes ---------- @@ -25271,18 +22692,18 @@ Bendersky in bpo-15442(2).) (2) https://bugs.python.org/issue15442  -File: python.info, Node: functools<4>, Next: gc<4>, Prev: filecmp, Up: Improved Modules<6> +File: python.info, Node: functools<4>, Next: gc<3>, Prev: filecmp, Up: Improved Modules<5> -1.6.4.14 functools +1.5.4.14 functools .................. -The new *note partialmethod(): 3c2. descriptor brings partial argument -application to descriptors, just as *note partial(): 8b7. provides for +The new *note partialmethod(): 287. descriptor brings partial argument +application to descriptors, just as *note partial(): 7ad. provides for normal callables. The new descriptor also makes it easier to get -arbitrary callables (including *note partial(): 8b7. instances) to +arbitrary callables (including *note partial(): 7ad. instances) to behave like normal instance methods when included in a class definition. (Contributed by Alon Horev and Nick Coghlan in bpo-4331(1).) The new -*note singledispatch(): 493. decorator brings support for +*note singledispatch(): 37b. decorator brings support for single-dispatch generic functions to the Python standard library. Where object oriented programming focuses on grouping multiple operations on a common set of data into a class, a generic function focuses on grouping @@ -25296,11 +22717,11 @@ PEP 443(2) – Single-dispatch generic functions PEP written and implemented by Łukasz Langa. -*note total_ordering(): 93a. now supports a return value of *note -NotImplemented: 202. from the underlying comparison function. +*note total_ordering(): 830. now supports a return value of *note +NotImplemented: 831. from the underlying comparison function. (Contributed by Katie Miller in bpo-10042(3).) -A pure-python version of the *note partial(): 8b7. function is now in +A pure-python version of the *note partial(): 7ad. function is now in the stdlib; in CPython it is overridden by the C accelerated version, but it is available for other implementations to use. (Contributed by Brian Thorne in bpo-12428(4).) @@ -25316,12 +22737,12 @@ Brian Thorne in bpo-12428(4).) (4) https://bugs.python.org/issue12428  -File: python.info, Node: gc<4>, Next: glob<2>, Prev: functools<4>, Up: Improved Modules<6> +File: python.info, Node: gc<3>, Next: glob<2>, Prev: functools<4>, Up: Improved Modules<5> -1.6.4.15 gc +1.5.4.15 gc ........... -New function *note get_stats(): 93c. returns a list of three +New function *note get_stats(): 833. returns a list of three per-generation dictionaries containing the collections statistics since interpreter startup. (Contributed by Antoine Pitrou in bpo-16351(1).) @@ -25330,12 +22751,12 @@ interpreter startup. (Contributed by Antoine Pitrou in bpo-16351(1).) (1) https://bugs.python.org/issue16351  -File: python.info, Node: glob<2>, Next: hashlib<3>, Prev: gc<4>, Up: Improved Modules<6> +File: python.info, Node: glob<2>, Next: hashlib<2>, Prev: gc<3>, Up: Improved Modules<5> -1.6.4.16 glob +1.5.4.16 glob ............. -A new function *note escape(): 93e. provides a way to escape special +A new function *note escape(): 835. provides a way to escape special characters in a filename so that they do not become part of the globbing expansion but are instead matched literally. (Contributed by Serhiy Storchaka in bpo-8402(1).) @@ -25345,18 +22766,18 @@ Storchaka in bpo-8402(1).) (1) https://bugs.python.org/issue8402  -File: python.info, Node: hashlib<3>, Next: hmac<2>, Prev: glob<2>, Up: Improved Modules<6> +File: python.info, Node: hashlib<2>, Next: hmac<2>, Prev: glob<2>, Up: Improved Modules<5> -1.6.4.17 hashlib +1.5.4.17 hashlib ................ -A new *note hashlib.pbkdf2_hmac(): 8d5. function provides the PKCS#5 +A new *note hashlib.pbkdf2_hmac(): 7cb. function provides the PKCS#5 password-based key derivation function 2(1). (Contributed by Christian Heimes in bpo-18582(2).) -The *note name: 940. attribute of *note hashlib: 8c. hash objects is now +The *note name: 837. attribute of *note hashlib: 8d. hash objects is now a formally supported interface. It has always existed in CPython’s -*note hashlib: 8c. (although it did not return lower case names for all +*note hashlib: 8d. (although it did not return lower case names for all supported hashes), but it was not a public interface and so some other Python implementations have not previously supported it. (Contributed by Jason R. Coombs in bpo-18532(3).) @@ -25370,26 +22791,26 @@ by Jason R. Coombs in bpo-18532(3).) (3) https://bugs.python.org/issue18532  -File: python.info, Node: hmac<2>, Next: html, Prev: hashlib<3>, Up: Improved Modules<6> +File: python.info, Node: hmac<2>, Next: html, Prev: hashlib<2>, Up: Improved Modules<5> -1.6.4.18 hmac +1.5.4.18 hmac ............. -*note hmac: 8e. now accepts ‘bytearray’ as well as ‘bytes’ for the `key' -argument to the *note new(): 942. function, and the `msg' parameter to -both the *note new(): 942. function and the *note update(): 943. method -now accepts any type supported by the *note hashlib: 8c. module. +*note hmac: 8f. now accepts ‘bytearray’ as well as ‘bytes’ for the `key' +argument to the *note new(): 839. function, and the `msg' parameter to +both the *note new(): 839. function and the *note update(): 83a. method +now accepts any type supported by the *note hashlib: 8d. module. (Contributed by Jonas Borgström in bpo-18240(1).) -The `digestmod' argument to the *note hmac.new(): 942. function may now -be any hash digest name recognized by *note hashlib: 8c. In addition, +The `digestmod' argument to the *note hmac.new(): 839. function may now +be any hash digest name recognized by *note hashlib: 8d. In addition, the current behavior in which the value of `digestmod' defaults to ‘MD5’ is deprecated: in a future version of Python there will be no default value. (Contributed by Christian Heimes in bpo-17276(2).) -With the addition of *note block_size: 944. and *note name: 945. -attributes (and the formal documentation of the *note digest_size: 946. -attribute), the *note hmac: 8e. module now conforms fully to the PEP +With the addition of *note block_size: 83b. and *note name: 83c. +attributes (and the formal documentation of the *note digest_size: 83d. +attribute), the *note hmac: 8f. module now conforms fully to the PEP 247(3) API. (Contributed by Christian Heimes in bpo-18775(4).) ---------- Footnotes ---------- @@ -25403,23 +22824,23 @@ attribute), the *note hmac: 8e. module now conforms fully to the PEP (4) https://bugs.python.org/issue18775  -File: python.info, Node: html, Next: http<3>, Prev: hmac<2>, Up: Improved Modules<6> +File: python.info, Node: html, Next: http<2>, Prev: hmac<2>, Up: Improved Modules<5> -1.6.4.19 html +1.5.4.19 html ............. -New function *note unescape(): 22b. function converts HTML5 character +New function *note unescape(): 83f. function converts HTML5 character references to the corresponding Unicode characters. (Contributed by Ezio Melotti in bpo-2927(1).) -*note HTMLParser: 22a. accepts a new keyword argument `convert_charrefs' +*note HTMLParser: 7a4. accepts a new keyword argument `convert_charrefs' that, when ‘True’, automatically converts all character references. For backward-compatibility, its value defaults to ‘False’, but it will change to ‘True’ in a future version of Python, so you are invited to set it explicitly and update your code to use this new feature. (Contributed by Ezio Melotti in bpo-13633(2).) -The `strict' argument of *note HTMLParser: 22a. is now deprecated. +The `strict' argument of *note HTMLParser: 7a4. is now deprecated. (Contributed by Ezio Melotti in bpo-15114(3).) ---------- Footnotes ---------- @@ -25431,19 +22852,19 @@ The `strict' argument of *note HTMLParser: 22a. is now deprecated. (3) https://bugs.python.org/issue15114  -File: python.info, Node: http<3>, Next: idlelib and IDLE<4>, Prev: html, Up: Improved Modules<6> +File: python.info, Node: http<2>, Next: idlelib and IDLE<4>, Prev: html, Up: Improved Modules<5> -1.6.4.20 http +1.5.4.20 http ............. -*note send_error(): 949. now accepts an optional additional `explain' +*note send_error(): 841. now accepts an optional additional `explain' parameter which can be used to provide an extended error description, overriding the hardcoded default if there is one. This extended error description will be formatted using the ‘error_message_format’ attribute and sent as the body of the error response. (Contributed by Karl Cow in bpo-12921(1).) -The *note http.server: 96. *note command line interface: 94a. now has a +The *note http.server: 97. *note command line interface: 842. now has a ‘-b/--bind’ option that causes the server to listen on a specific address. (Contributed by Malte Swart in bpo-17764(2).) @@ -25454,9 +22875,9 @@ address. (Contributed by Malte Swart in bpo-17764(2).) (2) https://bugs.python.org/issue17764  -File: python.info, Node: idlelib and IDLE<4>, Next: importlib<7>, Prev: http<3>, Up: Improved Modules<6> +File: python.info, Node: idlelib and IDLE<4>, Next: importlib<6>, Prev: http<2>, Up: Improved Modules<5> -1.6.4.21 idlelib and IDLE +1.5.4.21 idlelib and IDLE ......................... Since idlelib implements the IDLE shell and editor and is not intended @@ -25466,48 +22887,48 @@ as well as changes made in future 3.4.x releases. This file is also available from the IDLE Help ‣ About IDLE dialog.  -File: python.info, Node: importlib<7>, Next: inspect<5>, Prev: idlelib and IDLE<4>, Up: Improved Modules<6> +File: python.info, Node: importlib<6>, Next: inspect<4>, Prev: idlelib and IDLE<4>, Up: Improved Modules<5> -1.6.4.22 importlib +1.5.4.22 importlib .................. -The *note InspectLoader: 94d. ABC defines a new method, *note -source_to_code(): 7e2. that accepts source data and a path and returns a +The *note InspectLoader: 845. ABC defines a new method, *note +source_to_code(): 6d6. that accepts source data and a path and returns a code object. The default implementation is equivalent to ‘compile(data, path, 'exec', dont_inherit=True)’. (Contributed by Eric Snow and Brett Cannon in bpo-15627(1).) -*note InspectLoader: 94d. also now has a default implementation for the -*note get_code(): 94e. method. However, it will normally be desirable +*note InspectLoader: 845. also now has a default implementation for the +*note get_code(): 846. method. However, it will normally be desirable to override the default implementation for performance reasons. (Contributed by Brett Cannon in bpo-18072(2).) -The *note reload(): 4a2. function has been moved from *note imp: 99. to -*note importlib: 9a. as part of the *note imp: 99. module deprecation. +The *note reload(): 38a. function has been moved from *note imp: 9a. to +*note importlib: 9b. as part of the *note imp: 9a. module deprecation. (Contributed by Berker Peksag in bpo-18193(3).) -*note importlib.util: 9f. now has a *note MAGIC_NUMBER: 94f. attribute +*note importlib.util: a0. now has a *note MAGIC_NUMBER: 847. attribute providing access to the bytecode version number. This replaces the -*note get_magic(): 950. function in the deprecated *note imp: 99. +*note get_magic(): 848. function in the deprecated *note imp: 9a. module. (Contributed by Brett Cannon in bpo-18192(4).) -New *note importlib.util: 9f. functions *note cache_from_source(): 653. -and *note source_from_cache(): 654. replace the same-named functions in -the deprecated *note imp: 99. module. (Contributed by Brett Cannon in +New *note importlib.util: a0. functions *note cache_from_source(): 544. +and *note source_from_cache(): 545. replace the same-named functions in +the deprecated *note imp: 9a. module. (Contributed by Brett Cannon in bpo-18194(5).) -The *note importlib: 9a. bootstrap ‘NamespaceLoader’ now conforms to the -*note InspectLoader: 94d. ABC, which means that ‘runpy’ and ‘python -m’ +The *note importlib: 9b. bootstrap ‘NamespaceLoader’ now conforms to the +*note InspectLoader: 845. ABC, which means that ‘runpy’ and ‘python -m’ can now be used with namespace packages. (Contributed by Brett Cannon in bpo-18058(6).) -*note importlib.util: 9f. has a new function *note decode_source(): 951. +*note importlib.util: a0. has a new function *note decode_source(): 849. that decodes source from bytes using universal newline processing. This -is useful for implementing *note InspectLoader.get_source(): 952. +is useful for implementing *note InspectLoader.get_source(): 84a. methods. -*note importlib.machinery.ExtensionFileLoader: 652. now has a *note -get_filename(): 953. method. This was inadvertently omitted in the +*note importlib.machinery.ExtensionFileLoader: 543. now has a *note +get_filename(): 84b. method. This was inadvertently omitted in the original implementation. (Contributed by Eric Snow in bpo-19152(7).) ---------- Footnotes ---------- @@ -25527,39 +22948,39 @@ original implementation. (Contributed by Eric Snow in bpo-19152(7).) (7) https://bugs.python.org/issue19152  -File: python.info, Node: inspect<5>, Next: ipaddress<4>, Prev: importlib<7>, Up: Improved Modules<6> +File: python.info, Node: inspect<4>, Next: ipaddress<3>, Prev: importlib<6>, Up: Improved Modules<5> -1.6.4.23 inspect +1.5.4.23 inspect ................ -The *note inspect: a0. module now offers a basic *note command line -interface: 955. to quickly display source code and other information for +The *note inspect: a1. module now offers a basic *note command line +interface: 84d. to quickly display source code and other information for modules, classes and functions. (Contributed by Claudiu Popa and Nick Coghlan in bpo-18626(1).) -*note unwrap(): 956. makes it easy to unravel wrapper function chains -created by *note functools.wraps(): 957. (and any other API that sets +*note unwrap(): 84e. makes it easy to unravel wrapper function chains +created by *note functools.wraps(): 84f. (and any other API that sets the ‘__wrapped__’ attribute on a wrapper function). (Contributed by Daniel Urban, Aaron Iles and Nick Coghlan in bpo-13266(2).) -As part of the implementation of the new *note enum: 79. module, the -*note inspect: a0. module now has substantially better support for +As part of the implementation of the new *note enum: 7b. module, the +*note inspect: a1. module now has substantially better support for custom ‘__dir__’ methods and dynamic class attributes provided through metaclasses. (Contributed by Ethan Furman in bpo-18929(3) and bpo-19030(4).) -*note getfullargspec(): 659. and *note getargspec(): 658. now use the -*note signature(): 657. API. This allows them to support a much broader +*note getfullargspec(): 54a. and *note getargspec(): 549. now use the +*note signature(): 548. API. This allows them to support a much broader range of callables, including those with ‘__signature__’ attributes, those with metadata provided by argument clinic, *note -functools.partial(): 8b7. objects and more. Note that, unlike *note -signature(): 657, these functions still ignore ‘__wrapped__’ attributes, +functools.partial(): 7ad. objects and more. Note that, unlike *note +signature(): 548, these functions still ignore ‘__wrapped__’ attributes, and report the already bound first argument for bound methods, so it is -still necessary to update your code to use *note signature(): 657. +still necessary to update your code to use *note signature(): 548. directly if those features are desired. (Contributed by Yury Selivanov in bpo-17481(5).) -*note signature(): 657. now supports duck types of CPython functions, +*note signature(): 548. now supports duck types of CPython functions, which adds support for functions compiled with Cython. (Contributed by Stefan Behnel and Yury Selivanov in bpo-17159(6).) @@ -25578,18 +22999,18 @@ Stefan Behnel and Yury Selivanov in bpo-17159(6).) (6) https://bugs.python.org/issue17159  -File: python.info, Node: ipaddress<4>, Next: logging<5>, Prev: inspect<5>, Up: Improved Modules<6> +File: python.info, Node: ipaddress<3>, Next: logging<5>, Prev: inspect<4>, Up: Improved Modules<5> -1.6.4.24 ipaddress +1.5.4.24 ipaddress .................. -*note ipaddress: a2. was added to the standard library in Python 3.3 as -a *note provisional API: 456. With the release of Python 3.4, this -qualification has been removed: *note ipaddress: a2. is now considered a +*note ipaddress: a3. was added to the standard library in Python 3.3 as +a *note provisional API: 339. With the release of Python 3.4, this +qualification has been removed: *note ipaddress: a3. is now considered a stable API, covered by the normal standard library requirements to maintain backwards compatibility. -A new *note is_global: 959. property is ‘True’ if an address is globally +A new *note is_global: 851. property is ‘True’ if an address is globally routeable. (Contributed by Peter Moody in bpo-17400(1).) ---------- Footnotes ---------- @@ -25597,28 +23018,28 @@ routeable. (Contributed by Peter Moody in bpo-17400(1).) (1) https://bugs.python.org/issue17400  -File: python.info, Node: logging<5>, Next: marshal, Prev: ipaddress<4>, Up: Improved Modules<6> +File: python.info, Node: logging<5>, Next: marshal, Prev: ipaddress<3>, Up: Improved Modules<5> -1.6.4.25 logging +1.5.4.25 logging ................ -The *note TimedRotatingFileHandler: 95b. has a new `atTime' parameter +The *note TimedRotatingFileHandler: 853. has a new `atTime' parameter that can be used to specify the time of day when rollover should happen. (Contributed by Ronald Oussoren in bpo-9556(1).) -*note SocketHandler: 95c. and *note DatagramHandler: 95d. now support +*note SocketHandler: 854. and *note DatagramHandler: 855. now support Unix domain sockets (by setting `port' to ‘None’). (Contributed by Vinay Sajip in commit ce46195b56a9.) -*note fileConfig(): 4b2. now accepts a *note -configparser.RawConfigParser: 95e. subclass instance for the `fname' +*note fileConfig(): 39a. now accepts a *note +configparser.RawConfigParser: 856. subclass instance for the `fname' parameter. This facilitates using a configuration file when logging configuration is just a part of the overall application configuration, or where the application modifies the configuration before passing it to -*note fileConfig(): 4b2. (Contributed by Vinay Sajip in bpo-16110(2).) +*note fileConfig(): 39a. (Contributed by Vinay Sajip in bpo-16110(2).) Logging configuration data received from a socket via the *note -logging.config.listen(): 95f. function can now be validated before being +logging.config.listen(): 857. function can now be validated before being processed by supplying a verification function as the argument to the new `verify' keyword argument. (Contributed by Vinay Sajip in bpo-15452(3).) @@ -25632,12 +23053,12 @@ bpo-15452(3).) (3) https://bugs.python.org/issue15452  -File: python.info, Node: marshal, Next: mmap<2>, Prev: logging<5>, Up: Improved Modules<6> +File: python.info, Node: marshal, Next: mmap<2>, Prev: logging<5>, Up: Improved Modules<5> -1.6.4.26 marshal +1.5.4.26 marshal ................ -The default *note marshal: b0. version has been bumped to 3. The code +The default *note marshal: b1. version has been bumped to 3. The code implementing the new version restores the Python2 behavior of recording only one copy of interned strings and preserving the interning on deserialization, and extends this “one copy” ability to any object type @@ -25654,12 +23075,12 @@ Antoine Pitrou in bpo-19219(2).) (2) https://bugs.python.org/issue19219  -File: python.info, Node: mmap<2>, Next: multiprocessing<6>, Prev: marshal, Up: Improved Modules<6> +File: python.info, Node: mmap<2>, Next: multiprocessing<5>, Prev: marshal, Up: Improved Modules<5> -1.6.4.27 mmap +1.5.4.27 mmap ............. -mmap objects can now be *note weakref: 131.ed. (Contributed by Valerie +mmap objects can now be *note weakref: 129.ed. (Contributed by Valerie Lambert in bpo-4885(1).) ---------- Footnotes ---------- @@ -25667,26 +23088,26 @@ Lambert in bpo-4885(1).) (1) https://bugs.python.org/issue4885  -File: python.info, Node: multiprocessing<6>, Next: operator<2>, Prev: mmap<2>, Up: Improved Modules<6> +File: python.info, Node: multiprocessing<5>, Next: operator<2>, Prev: mmap<2>, Up: Improved Modules<5> -1.6.4.28 multiprocessing +1.5.4.28 multiprocessing ........................ -On Unix two new *note start methods: 963, ‘spawn’ and ‘forkserver’, have -been added for starting processes using *note multiprocessing: b7. +On Unix two new *note start methods: 85b, ‘spawn’ and ‘forkserver’, have +been added for starting processes using *note multiprocessing: b8. These make the mixing of processes with threads more robust, and the ‘spawn’ method matches the semantics that multiprocessing has always -used on Windows. New function *note get_all_start_methods(): 964. +used on Windows. New function *note get_all_start_methods(): 85c. reports all start methods available on the platform, *note -get_start_method(): 965. reports the current start method, and *note -set_start_method(): 966. sets the start method. (Contributed by Richard +get_start_method(): 85d. reports the current start method, and *note +set_start_method(): 85e. sets the start method. (Contributed by Richard Oudkerk in bpo-8713(1).) -*note multiprocessing: b7. also now has the concept of a ‘context’, +*note multiprocessing: b8. also now has the concept of a ‘context’, which determines how child processes are created. New function *note -get_context(): 967. returns a context that uses a specified start -method. It has the same API as the *note multiprocessing: b7. module -itself, so you can use it to create *note Pool: 968.s and other objects +get_context(): 85f. returns a context that uses a specified start +method. It has the same API as the *note multiprocessing: b8. module +itself, so you can use it to create *note Pool: 860.s and other objects that will operate within that context. This allows a framework and an application or different parts of the same application to use multiprocessing without interfering with each other. (Contributed by @@ -25696,7 +23117,7 @@ Except when using the old `fork' start method, child processes no longer inherit unneeded handles/file descriptors from their parents (part of bpo-8713(3)). -*note multiprocessing: b7. now relies on *note runpy: e2. (which +*note multiprocessing: b8. now relies on *note runpy: e3. (which implements the ‘-m’ switch) to initialise ‘__main__’ appropriately in child processes when using the ‘spawn’ or ‘forkserver’ start methods. This resolves some edge cases where combining multiprocessing, the ‘-m’ @@ -25715,17 +23136,17 @@ bpo-19946(4).) (4) https://bugs.python.org/issue19946  -File: python.info, Node: operator<2>, Next: os<7>, Prev: multiprocessing<6>, Up: Improved Modules<6> +File: python.info, Node: operator<2>, Next: os<6>, Prev: multiprocessing<5>, Up: Improved Modules<5> -1.6.4.29 operator +1.5.4.29 operator ................. -New function *note length_hint(): 96a. provides an implementation of the -specification for how the *note __length_hint__(): 8fb. special method +New function *note length_hint(): 862. provides an implementation of the +specification for how the *note __length_hint__(): 7f1. special method should be used, as part of the PEP 424(1) formal specification of this language feature. (Contributed by Armin Ronacher in bpo-16148(2).) -There is now a pure-python version of the *note operator: c2. module +There is now a pure-python version of the *note operator: c3. module available for reference and for use by alternate implementations of Python. (Contributed by Zachary Ware in bpo-16694(3).) @@ -25738,35 +23159,35 @@ Python. (Contributed by Zachary Ware in bpo-16694(3).) (3) https://bugs.python.org/issue16694  -File: python.info, Node: os<7>, Next: pdb<4>, Prev: operator<2>, Up: Improved Modules<6> +File: python.info, Node: os<6>, Next: pdb<3>, Prev: operator<2>, Up: Improved Modules<5> -1.6.4.30 os +1.5.4.30 os ........... -There are new functions to get and set the *note inheritable flag: 8e9. -of a file descriptor (*note os.get_inheritable(): 8ea, *note -os.set_inheritable(): 8eb.) or a Windows handle (*note -os.get_handle_inheritable(): 8ec, *note os.set_handle_inheritable(): -8ed.). +There are new functions to get and set the *note inheritable flag: 7df. +of a file descriptor (*note os.get_inheritable(): 7e0, *note +os.set_inheritable(): 7e1.) or a Windows handle (*note +os.get_handle_inheritable(): 7e2, *note os.set_handle_inheritable(): +7e3.). -New function *note cpu_count(): 96c. reports the number of CPUs +New function *note cpu_count(): 864. reports the number of CPUs available on the platform on which Python is running (or ‘None’ if the -count can’t be determined). The *note multiprocessing.cpu_count(): 96d. +count can’t be determined). The *note multiprocessing.cpu_count(): 865. function is now implemented in terms of this function). (Contributed by Trent Nelson, Yogesh Chaudhari, Victor Stinner, and Charles-François Natali in bpo-17914(1).) -*note os.path.samestat(): 96e. is now available on the Windows platform -(and the *note os.path.samefile(): 96f. implementation is now shared +*note os.path.samestat(): 866. is now available on the Windows platform +(and the *note os.path.samefile(): 867. implementation is now shared between Unix and Windows). (Contributed by Brian Curtin in bpo-11939(2).) -*note os.path.ismount(): 32c. now recognizes volumes mounted below a +*note os.path.ismount(): 1e6. now recognizes volumes mounted below a drive root on Windows. (Contributed by Tim Golden in bpo-9035(3).) -*note os.open(): 75a. supports two new flags on platforms that provide -them, *note O_PATH: 970. (un-opened file descriptor), and *note -O_TMPFILE: 971. (unnamed temporary file; as of 3.4.0 release available +*note os.open(): 64e. supports two new flags on platforms that provide +them, *note O_PATH: 868. (un-opened file descriptor), and *note +O_TMPFILE: 869. (unnamed temporary file; as of 3.4.0 release available only on Linux systems with a kernel version of 3.11 or newer that have uapi headers). (Contributed by Christian Heimes in bpo-18673(4) and Benjamin Peterson, respectively.) @@ -25782,21 +23203,21 @@ Benjamin Peterson, respectively.) (4) https://bugs.python.org/issue18673  -File: python.info, Node: pdb<4>, Next: pickle<4>, Prev: os<7>, Up: Improved Modules<6> +File: python.info, Node: pdb<3>, Next: pickle<4>, Prev: os<6>, Up: Improved Modules<5> -1.6.4.31 pdb +1.5.4.31 pdb ............ -*note pdb: c9. has been enhanced to handle generators, *note yield: 2ca, +*note pdb: ca. has been enhanced to handle generators, *note yield: 17c, and ‘yield from’ in a more useful fashion. This is especially helpful -when debugging *note asyncio: 9. based programs. (Contributed by Andrew +when debugging *note asyncio: a. based programs. (Contributed by Andrew Svetlov and Xavier de Gaye in bpo-16596(1).) -The ‘print’ command has been removed from *note pdb: c9, restoring -access to the Python *note print(): 973. function from the pdb command +The ‘print’ command has been removed from *note pdb: ca, restoring +access to the Python *note print(): 86b. function from the pdb command line. Python2’s ‘pdb’ did not have a ‘print’ command; instead, entering ‘print’ executed the ‘print’ statement. In Python3 ‘print’ was -mistakenly made an alias for the pdb *note p: 974. command. ‘p’, +mistakenly made an alias for the pdb *note p: 86c. command. ‘p’, however, prints the ‘repr’ of its argument, not the ‘str’ like the Python2 ‘print’ command did. Worse, the Python3 ‘pdb print’ command shadowed the Python3 ‘print’ function, making it inaccessible at the @@ -25809,17 +23230,17 @@ shadowed the Python3 ‘print’ function, making it inaccessible at the (2) https://bugs.python.org/issue18764  -File: python.info, Node: pickle<4>, Next: plistlib<2>, Prev: pdb<4>, Up: Improved Modules<6> +File: python.info, Node: pickle<4>, Next: plistlib<2>, Prev: pdb<3>, Up: Improved Modules<5> -1.6.4.32 pickle +1.5.4.32 pickle ............... -*note pickle: ca. now supports (but does not use by default) a new +*note pickle: cb. now supports (but does not use by default) a new pickle protocol, protocol 4. This new protocol addresses a number of issues that were present in previous protocols, such as the serialization of nested classes, very large strings and containers, and -classes whose *note __new__(): 976. method takes keyword-only arguments. -It also provides some efficiency improvements. +classes whose ‘__new__()’ method takes keyword-only arguments. It also +provides some efficiency improvements. See also ........ @@ -25834,17 +23255,17 @@ PEP 3154(1) – Pickle protocol 4 (1) https://www.python.org/dev/peps/pep-3154  -File: python.info, Node: plistlib<2>, Next: poplib<3>, Prev: pickle<4>, Up: Improved Modules<6> +File: python.info, Node: plistlib<2>, Next: poplib<2>, Prev: pickle<4>, Up: Improved Modules<5> -1.6.4.33 plistlib +1.5.4.33 plistlib ................. -*note plistlib: cf. now has an API that is similar to the standard -pattern for stdlib serialization protocols, with new *note load(): 21e, -*note dump(): 220, *note loads(): 21f, and *note dumps(): 221. +*note plistlib: d0. now has an API that is similar to the standard +pattern for stdlib serialization protocols, with new *note load(): 86f, +*note dump(): 870, *note loads(): 871, and *note dumps(): 872. functions. (The older API is now deprecated.) In addition to the -already supported XML plist format (*note FMT_XML: 978.), it also now -supports the binary plist format (*note FMT_BINARY: 979.). (Contributed +already supported XML plist format (*note FMT_XML: 873.), it also now +supports the binary plist format (*note FMT_BINARY: 874.). (Contributed by Ronald Oussoren and others in bpo-14455(1).) ---------- Footnotes ---------- @@ -25852,14 +23273,14 @@ by Ronald Oussoren and others in bpo-14455(1).) (1) https://bugs.python.org/issue14455  -File: python.info, Node: poplib<3>, Next: pprint<3>, Prev: plistlib<2>, Up: Improved Modules<6> +File: python.info, Node: poplib<2>, Next: pprint<2>, Prev: plistlib<2>, Up: Improved Modules<5> -1.6.4.34 poplib +1.5.4.34 poplib ............... -Two new methods have been added to *note poplib: d0.: *note capa(): 97b, +Two new methods have been added to *note poplib: d1.: *note capa(): 876, which returns the list of capabilities advertised by the POP server, and -*note stls(): 97c, which switches a clear-text POP3 session into an +*note stls(): 877, which switches a clear-text POP3 session into an encrypted POP3 session if the POP server supports it. (Contributed by Lorenzo Catucci in bpo-4473(1).) @@ -25868,13 +23289,13 @@ Lorenzo Catucci in bpo-4473(1).) (1) https://bugs.python.org/issue4473  -File: python.info, Node: pprint<3>, Next: pty, Prev: poplib<3>, Up: Improved Modules<6> +File: python.info, Node: pprint<2>, Next: pty, Prev: poplib<2>, Up: Improved Modules<5> -1.6.4.35 pprint +1.5.4.35 pprint ............... -The *note pprint: d2. module’s *note PrettyPrinter: 97e. class and its -*note pformat(): 97f, and *note pprint(): 344. functions have a new +The *note pprint: d3. module’s *note PrettyPrinter: 879. class and its +*note pformat(): 87a, and *note pprint(): 1ff. functions have a new option, `compact', that controls how the output is formatted. Currently setting `compact' to ‘True’ means that sequences will be printed with as many sequence elements as will fit within `width' on each (indented) @@ -25890,40 +23311,40 @@ syntax. (Contributed by Antoine Pitrou in bpo-17150(2).) (2) https://bugs.python.org/issue17150  -File: python.info, Node: pty, Next: pydoc<4>, Prev: pprint<3>, Up: Improved Modules<6> +File: python.info, Node: pty, Next: pydoc<3>, Prev: pprint<2>, Up: Improved Modules<5> -1.6.4.36 pty +1.5.4.36 pty ............ -*note pty.spawn(): 981. now returns the status value from *note -os.waitpid(): 762. on the child process, instead of ‘None’. +*note pty.spawn(): 87c. now returns the status value from *note +os.waitpid(): 656. on the child process, instead of ‘None’. (Contributed by Gregory P. Smith.)  -File: python.info, Node: pydoc<4>, Next: re<5>, Prev: pty, Up: Improved Modules<6> +File: python.info, Node: pydoc<3>, Next: re<5>, Prev: pty, Up: Improved Modules<5> -1.6.4.37 pydoc +1.5.4.37 pydoc .............. -The *note pydoc: d9. module is now based directly on the *note -inspect.signature(): 657. introspection API, allowing it to provide +The *note pydoc: da. module is now based directly on the *note +inspect.signature(): 548. introspection API, allowing it to provide signature information for a wider variety of callable objects. This change also means that ‘__wrapped__’ attributes are now taken into account when displaying help information. (Contributed by Larry Hastings in bpo-19674(1).) -The *note pydoc: d9. module no longer displays the ‘self’ parameter for +The *note pydoc: da. module no longer displays the ‘self’ parameter for already bound methods. Instead, it aims to always display the exact current signature of the supplied callable. (Contributed by Larry Hastings in bpo-20710(2).) -In addition to the changes that have been made to *note pydoc: d9. +In addition to the changes that have been made to *note pydoc: da. directly, its handling of custom ‘__dir__’ methods and various descriptor behaviours has also been improved substantially by the -underlying changes in the *note inspect: a0. module. +underlying changes in the *note inspect: a1. module. -As the *note help(): 175. builtin is based on *note pydoc: d9, the above -changes also affect the behaviour of *note help(): 175. +As the *note help(): 55f. builtin is based on *note pydoc: da, the above +changes also affect the behaviour of *note help(): 55f. ---------- Footnotes ---------- @@ -25932,20 +23353,20 @@ changes also affect the behaviour of *note help(): 175. (2) https://bugs.python.org/issue20710  -File: python.info, Node: re<5>, Next: resource, Prev: pydoc<4>, Up: Improved Modules<6> +File: python.info, Node: re<5>, Next: resource, Prev: pydoc<3>, Up: Improved Modules<5> -1.6.4.38 re +1.5.4.38 re ........... -New *note fullmatch(): 984. function and ‘regex.fullmatch()’ method +New *note fullmatch(): 87f. function and ‘regex.fullmatch()’ method anchor the pattern at both ends of the string to match. This provides a way to be explicit about the goal of the match, which avoids a class of subtle bugs where ‘$’ characters get lost during code changes or the addition of alternatives to an existing regular expression. (Contributed by Matthew Barnett in bpo-16203(1).) -The repr of *note regex objects: 985. now includes the pattern and the -flags; the repr of *note match objects: 986. now includes the start, +The repr of *note regex objects: 880. now includes the pattern and the +flags; the repr of *note match objects: 881. now includes the start, end, and the part of the string that matched. (Contributed by Hugo Lopes Tavares and Serhiy Storchaka in bpo-13592(2) and bpo-17087(3).) @@ -25958,26 +23379,26 @@ Lopes Tavares and Serhiy Storchaka in bpo-13592(2) and bpo-17087(3).) (3) https://bugs.python.org/issue17087  -File: python.info, Node: resource, Next: select, Prev: re<5>, Up: Improved Modules<6> +File: python.info, Node: resource, Next: select, Prev: re<5>, Up: Improved Modules<5> -1.6.4.39 resource +1.5.4.39 resource ................. -New *note prlimit(): 988. function, available on Linux platforms with a +New *note prlimit(): 883. function, available on Linux platforms with a kernel version of 2.6.36 or later and glibc of 2.13 or later, provides the ability to query or set the resource limits for processes other than the one making the call. (Contributed by Christian Heimes in bpo-16595(1).) On Linux kernel version 2.6.36 or later, there are also some new Linux -specific constants: *note RLIMIT_MSGQUEUE: 989, *note RLIMIT_NICE: 98a, -*note RLIMIT_RTPRIO: 98b, *note RLIMIT_RTTIME: 98c, and *note -RLIMIT_SIGPENDING: 98d. (Contributed by Christian Heimes in +specific constants: *note RLIMIT_MSGQUEUE: 884, *note RLIMIT_NICE: 885, +*note RLIMIT_RTPRIO: 886, *note RLIMIT_RTTIME: 887, and *note +RLIMIT_SIGPENDING: 888. (Contributed by Christian Heimes in bpo-19324(2).) On FreeBSD version 9 and later, there some new FreeBSD specific -constants: *note RLIMIT_SBSIZE: 98e, *note RLIMIT_SWAP: 98f, and *note -RLIMIT_NPTS: 990. (Contributed by Claudiu Popa in bpo-19343(3).) +constants: *note RLIMIT_SBSIZE: 889, *note RLIMIT_SWAP: 88a, and *note +RLIMIT_NPTS: 88b. (Contributed by Claudiu Popa in bpo-19343(3).) ---------- Footnotes ---------- @@ -25988,18 +23409,18 @@ RLIMIT_NPTS: 990. (Contributed by Claudiu Popa in bpo-19343(3).) (3) https://bugs.python.org/issue19343  -File: python.info, Node: select, Next: shelve, Prev: resource, Up: Improved Modules<6> +File: python.info, Node: select, Next: shelve, Prev: resource, Up: Improved Modules<5> -1.6.4.40 select +1.5.4.40 select ............... -*note epoll: 992. objects now support the context management protocol. -When used in a *note with: 7dc. statement, the *note close(): 993. +*note epoll: 88d. objects now support the context management protocol. +When used in a *note with: 6d0. statement, the *note close(): 88e. method will be called automatically at the end of the block. (Contributed by Serhiy Storchaka in bpo-16488(1).) -*note devpoll: 994. objects now have *note fileno(): 995. and *note -close(): 996. methods, as well as a new attribute *note closed: 997. +*note devpoll: 88f. objects now have *note fileno(): 890. and *note +close(): 891. methods, as well as a new attribute *note closed: 892. (Contributed by Victor Stinner in bpo-18794(2).) ---------- Footnotes ---------- @@ -26009,12 +23430,12 @@ close(): 996. methods, as well as a new attribute *note closed: 997. (2) https://bugs.python.org/issue18794  -File: python.info, Node: shelve, Next: shutil<3>, Prev: select, Up: Improved Modules<6> +File: python.info, Node: shelve, Next: shutil<3>, Prev: select, Up: Improved Modules<5> -1.6.4.41 shelve +1.5.4.41 shelve ............... -*note Shelf: 999. instances may now be used in *note with: 7dc. +*note Shelf: 894. instances may now be used in *note with: 6d0. statements, and will be automatically closed at the end of the ‘with’ block. (Contributed by Filip Gruszczyński in bpo-13896(1).) @@ -26023,13 +23444,13 @@ block. (Contributed by Filip Gruszczyński in bpo-13896(1).) (1) https://bugs.python.org/issue13896  -File: python.info, Node: shutil<3>, Next: smtpd<2>, Prev: shelve, Up: Improved Modules<6> +File: python.info, Node: shutil<3>, Next: smtpd<2>, Prev: shelve, Up: Improved Modules<5> -1.6.4.42 shutil +1.5.4.42 shutil ............... -*note copyfile(): 385. now raises a specific *note Error: 99b. subclass, -*note SameFileError: 99c, when the source and destination are the same +*note copyfile(): 244. now raises a specific *note Error: 896. subclass, +*note SameFileError: 897, when the source and destination are the same file, which allows an application to take appropriate action on this specific error. (Contributed by Atsuo Ishimoto and Hynek Schlawack in bpo-1492704(1).) @@ -26039,14 +23460,14 @@ bpo-1492704(1).) (1) https://bugs.python.org/issue1492704  -File: python.info, Node: smtpd<2>, Next: smtplib<3>, Prev: shutil<3>, Up: Improved Modules<6> +File: python.info, Node: smtpd<2>, Next: smtplib<2>, Prev: shutil<3>, Up: Improved Modules<5> -1.6.4.43 smtpd +1.5.4.43 smtpd .............. -The *note SMTPServer: 6fb. and *note SMTPChannel: 6fa. classes now +The *note SMTPServer: 5ef. and *note SMTPChannel: 5ee. classes now accept a `map' keyword argument which, if specified, is passed in to -*note asynchat.async_chat: 99e. as its `map' argument. This allows an +*note asynchat.async_chat: 899. as its `map' argument. This allows an application to avoid affecting the global socket map. (Contributed by Vinay Sajip in bpo-11959(1).) @@ -26055,12 +23476,12 @@ Vinay Sajip in bpo-11959(1).) (1) https://bugs.python.org/issue11959  -File: python.info, Node: smtplib<3>, Next: socket<7>, Prev: smtpd<2>, Up: Improved Modules<6> +File: python.info, Node: smtplib<2>, Next: socket<6>, Prev: smtpd<2>, Up: Improved Modules<5> -1.6.4.44 smtplib +1.5.4.44 smtplib ................ -*note SMTPException: 9a0. is now a subclass of *note OSError: 307, which +*note SMTPException: 89b. is now a subclass of *note OSError: 1bf, which allows both socket level errors and SMTP protocol level errors to be caught in one try/except statement by code that only cares whether or not an error occurred. (Contributed by Ned Jackson Lovely in @@ -26071,27 +23492,27 @@ bpo-2118(1).) (1) https://bugs.python.org/issue2118  -File: python.info, Node: socket<7>, Next: sqlite3<4>, Prev: smtplib<3>, Up: Improved Modules<6> +File: python.info, Node: socket<6>, Next: sqlite3<4>, Prev: smtplib<2>, Up: Improved Modules<5> -1.6.4.45 socket +1.5.4.45 socket ............... -The socket module now supports the *note CAN_BCM: 9a2. protocol on +The socket module now supports the *note CAN_BCM: 89d. protocol on platforms that support it. (Contributed by Brian Thorne in bpo-15359(1).) Socket objects have new methods to get or set their *note inheritable -flag: 8e9, *note get_inheritable(): 8ee. and *note set_inheritable(): -8ef. +flag: 7df, *note get_inheritable(): 7e4. and *note set_inheritable(): +7e5. The ‘socket.AF_*’ and ‘socket.SOCK_*’ constants are now enumeration -values using the new *note enum: 79. module. This allows meaningful +values using the new *note enum: 7b. module. This allows meaningful names to be printed during debugging, instead of integer “magic numbers”. -The *note AF_LINK: 9a3. constant is now available on BSD and OSX. +The *note AF_LINK: 89e. constant is now available on BSD and OSX. -*note inet_pton(): 237. and *note inet_ntop(): 9a4. are now supported on +*note inet_pton(): 2e4. and *note inet_ntop(): 89f. are now supported on Windows. (Contributed by Atsuo Ishimoto in bpo-7171(2).) ---------- Footnotes ---------- @@ -26101,12 +23522,12 @@ Windows. (Contributed by Atsuo Ishimoto in bpo-7171(2).) (2) https://bugs.python.org/issue7171  -File: python.info, Node: sqlite3<4>, Next: ssl<7>, Prev: socket<7>, Up: Improved Modules<6> +File: python.info, Node: sqlite3<4>, Next: ssl<7>, Prev: socket<6>, Up: Improved Modules<5> -1.6.4.46 sqlite3 +1.5.4.46 sqlite3 ................ -A new boolean parameter to the *note connect(): 4e3. function, `uri', +A new boolean parameter to the *note connect(): 3cb. function, `uri', can be used to indicate that the `database' parameter is a ‘uri’ (see the SQLite URI documentation(1)). (Contributed by poq in bpo-13773(2).) @@ -26117,68 +23538,68 @@ the SQLite URI documentation(1)). (Contributed by poq in bpo-13773(2).) (2) https://bugs.python.org/issue13773  -File: python.info, Node: ssl<7>, Next: stat, Prev: sqlite3<4>, Up: Improved Modules<6> +File: python.info, Node: ssl<7>, Next: stat, Prev: sqlite3<4>, Up: Improved Modules<5> -1.6.4.47 ssl +1.5.4.47 ssl ............ -*note PROTOCOL_TLSv1_1: 9a7. and *note PROTOCOL_TLSv1_2: 9a8. (TLSv1.1 +*note PROTOCOL_TLSv1_1: 8a2. and *note PROTOCOL_TLSv1_2: 8a3. (TLSv1.1 and TLSv1.2 support) have been added; support for these protocols is only available if Python is linked with OpenSSL 1.0.1 or later. (Contributed by Michele Orrù and Antoine Pitrou in bpo-16692(1).) New -function *note create_default_context(): 9a9. provides a standard way to -obtain an *note SSLContext: 4ec. whose settings are intended to be a +function *note create_default_context(): 8a4. provides a standard way to +obtain an *note SSLContext: 3d5. whose settings are intended to be a reasonable balance between compatibility and security. These settings are more stringent than the defaults provided by the *note SSLContext: -4ec. constructor, and may be adjusted in the future, without prior +3d5. constructor, and may be adjusted in the future, without prior deprecation, if best-practice security requirements change. The new recommended best practice for using stdlib libraries that support SSL is -to use *note create_default_context(): 9a9. to obtain an *note -SSLContext: 4ec. object, modify it if needed, and then pass it as the +to use *note create_default_context(): 8a4. to obtain an *note +SSLContext: 3d5. object, modify it if needed, and then pass it as the `context' argument of the appropriate stdlib API. (Contributed by Christian Heimes in bpo-19689(2).) -*note SSLContext: 4ec. method *note load_verify_locations(): 8da. +*note SSLContext: 3d5. method *note load_verify_locations(): 7d0. accepts a new optional argument `cadata', which can be used to provide PEM or DER encoded certificates directly via strings or bytes, respectively. (Contributed by Christian Heimes in bpo-18138(3).) -New function *note get_default_verify_paths(): 9aa. returns a named +New function *note get_default_verify_paths(): 8a5. returns a named tuple of the paths and environment variables that the *note -set_default_verify_paths(): 9ab. method uses to set OpenSSL’s default +set_default_verify_paths(): 8a6. method uses to set OpenSSL’s default ‘cafile’ and ‘capath’. This can be an aid in debugging default verification issues. (Contributed by Christian Heimes in bpo-18143(4).) -*note SSLContext: 4ec. has a new method, *note cert_store_stats(): 9ac, +*note SSLContext: 3d5. has a new method, *note cert_store_stats(): 8a7, that reports the number of loaded ‘X.509’ certs, ‘X.509 CA’ certs, and certificate revocation lists (‘crl’s), as well as a *note -get_ca_certs(): 9ad. method that returns a list of the loaded ‘CA’ +get_ca_certs(): 8a8. method that returns a list of the loaded ‘CA’ certificates. (Contributed by Christian Heimes in bpo-18147(5).) -If OpenSSL 0.9.8 or later is available, *note SSLContext: 4ec. has a new -attribute *note verify_flags: 9ae. that can be used to control the +If OpenSSL 0.9.8 or later is available, *note SSLContext: 3d5. has a new +attribute *note verify_flags: 8a9. that can be used to control the certificate verification process by setting it to some combination of -the new constants *note VERIFY_DEFAULT: 9af, *note -VERIFY_CRL_CHECK_LEAF: 9b0, *note VERIFY_CRL_CHECK_CHAIN: 9b1, or *note -VERIFY_X509_STRICT: 9b2. OpenSSL does not do any CRL verification by +the new constants *note VERIFY_DEFAULT: 8aa, *note +VERIFY_CRL_CHECK_LEAF: 8ab, *note VERIFY_CRL_CHECK_CHAIN: 8ac, or *note +VERIFY_X509_STRICT: 8ad. OpenSSL does not do any CRL verification by default. (Contributed by Christien Heimes in bpo-8813(6).) -New *note SSLContext: 4ec. method *note load_default_certs(): 9b3. loads +New *note SSLContext: 3d5. method *note load_default_certs(): 8ae. loads a set of default “certificate authority” (CA) certificates from default locations, which vary according to the platform. It can be used to load both TLS web server authentication certificates (‘purpose=’*note -SERVER_AUTH: 9b4.) for a client to use to verify a server, and +SERVER_AUTH: 8af.) for a client to use to verify a server, and certificates for a server to use in verifying client certificates -(‘purpose=’*note CLIENT_AUTH: 9b5.). (Contributed by Christian Heimes +(‘purpose=’*note CLIENT_AUTH: 8b0.). (Contributed by Christian Heimes in bpo-19292(7).) Two new windows-only functions, *note -enum_certificates(): 9b6. and *note enum_crls(): 9b7. provide the +enum_certificates(): 8b1. and *note enum_crls(): 8b2. provide the ability to retrieve certificates, certificate information, and CRLs from the Windows cert store. (Contributed by Christian Heimes in bpo-17134(8).) Support for server-side SNI (Server Name Indication) -using the new *note ssl.SSLContext.set_servername_callback(): 9b8. +using the new *note ssl.SSLContext.set_servername_callback(): 8b3. method. (Contributed by Daniel Black in bpo-8109(9).) -The dictionary returned by *note SSLSocket.getpeercert(): 9b9. contains +The dictionary returned by *note SSLSocket.getpeercert(): 8b4. contains additional ‘X509v3’ extension items: ‘crlDistributionPoints’, ‘calIssuers’, and ‘OCSP’ URIs. (Contributed by Christian Heimes in bpo-18379(10).) @@ -26206,18 +23627,18 @@ bpo-18379(10).) (10) https://bugs.python.org/issue18379  -File: python.info, Node: stat, Next: struct<2>, Prev: ssl<7>, Up: Improved Modules<6> +File: python.info, Node: stat, Next: struct<2>, Prev: ssl<7>, Up: Improved Modules<5> -1.6.4.48 stat +1.5.4.48 stat ............. -The *note stat: f4. module is now backed by a C implementation in +The *note stat: f5. module is now backed by a C implementation in ‘_stat’. A C implementation is required as most of the values aren’t standardized and are platform-dependent. (Contributed by Christian Heimes in bpo-11016(1).) -The module supports new *note ST_MODE: 9bb. flags, *note S_IFDOOR: 9bc, -*note S_IFPORT: 9bd, and *note S_IFWHT: 9be. (Contributed by Christian +The module supports new *note ST_MODE: 8b6. flags, *note S_IFDOOR: 8b7, +*note S_IFPORT: 8b8, and *note S_IFWHT: 8b9. (Contributed by Christian Hiemes in bpo-11016(2).) ---------- Footnotes ---------- @@ -26227,13 +23648,13 @@ Hiemes in bpo-11016(2).) (2) https://bugs.python.org/issue11016  -File: python.info, Node: struct<2>, Next: subprocess<4>, Prev: stat, Up: Improved Modules<6> +File: python.info, Node: struct<2>, Next: subprocess<4>, Prev: stat, Up: Improved Modules<5> -1.6.4.49 struct +1.5.4.49 struct ............... -New function *note iter_unpack: 9c0. and a new *note -struct.Struct.iter_unpack(): 9c1. method on compiled formats provide +New function *note iter_unpack: 8bb. and a new *note +struct.Struct.iter_unpack(): 8bc. method on compiled formats provide streamed unpacking of a buffer containing repeated instances of a given format of data. (Contributed by Antoine Pitrou in bpo-17804(1).) @@ -26242,16 +23663,16 @@ format of data. (Contributed by Antoine Pitrou in bpo-17804(1).) (1) https://bugs.python.org/issue17804  -File: python.info, Node: subprocess<4>, Next: sunau<2>, Prev: struct<2>, Up: Improved Modules<6> +File: python.info, Node: subprocess<4>, Next: sunau<2>, Prev: struct<2>, Up: Improved Modules<5> -1.6.4.50 subprocess +1.5.4.50 subprocess ................... -*note check_output(): 9c3. now accepts an `input' argument that can be +*note check_output(): 8be. now accepts an `input' argument that can be used to provide the contents of ‘stdin’ for the command that is run. (Contributed by Zack Weinberg in bpo-16624(1).) -‘getstatus()’ and *note getstatusoutput(): 9c4. now work on Windows. +‘getstatus()’ and *note getstatusoutput(): 8bf. now work on Windows. This change was actually inadvertently made in 3.3.4. (Contributed by Tim Golden in bpo-10197(2).) @@ -26262,25 +23683,25 @@ Tim Golden in bpo-10197(2).) (2) https://bugs.python.org/issue10197  -File: python.info, Node: sunau<2>, Next: sys<7>, Prev: subprocess<4>, Up: Improved Modules<6> +File: python.info, Node: sunau<2>, Next: sys<6>, Prev: subprocess<4>, Up: Improved Modules<5> -1.6.4.51 sunau +1.5.4.51 sunau .............. The ‘getparams()’ method now returns a namedtuple rather than a plain tuple. (Contributed by Claudiu Popa in bpo-18901(1).) -*note sunau.open(): 575. now supports the context management protocol: -when used in a *note with: 7dc. block, the ‘close’ method of the +*note sunau.open(): 463. now supports the context management protocol: +when used in a *note with: 6d0. block, the ‘close’ method of the returned object will be called automatically at the end of the block. (Contributed by Serhiy Storchaka in bpo-18878(2).) -*note AU_write.setsampwidth(): 9c6. now supports 24 bit samples, thus +*note AU_write.setsampwidth(): 8c1. now supports 24 bit samples, thus adding support for writing 24 sample using the module. (Contributed by Serhiy Storchaka in bpo-19261(3).) -The *note writeframesraw(): 9c7. and *note writeframes(): 9c8. methods -now accept any *note bytes-like object: 6e1. (Contributed by Serhiy +The *note writeframesraw(): 8c2. and *note writeframes(): 8c3. methods +now accept any *note bytes-like object: 5d5. (Contributed by Serhiy Storchaka in bpo-8311(4).) ---------- Footnotes ---------- @@ -26294,29 +23715,29 @@ Storchaka in bpo-8311(4).) (4) https://bugs.python.org/issue8311  -File: python.info, Node: sys<7>, Next: tarfile<3>, Prev: sunau<2>, Up: Improved Modules<6> +File: python.info, Node: sys<6>, Next: tarfile<3>, Prev: sunau<2>, Up: Improved Modules<5> -1.6.4.52 sys +1.5.4.52 sys ............ -New function *note sys.getallocatedblocks(): 9ca. returns the current +New function *note sys.getallocatedblocks(): 8c5. returns the current number of blocks allocated by the interpreter. (In CPython with the default ‘--with-pymalloc’ setting, this is allocations made through the -*note PyObject_Malloc(): 604. API.) This can be useful for tracking +*note PyObject_Malloc(): 4f8. API.) This can be useful for tracking memory leaks, especially if automated via a test suite. (Contributed by Antoine Pitrou in bpo-13390(1).) -When the Python interpreter starts in *note interactive mode: 9cb, it -checks for an *note __interactivehook__: 9cc. attribute on the *note -sys: fd. module. If the attribute exists, its value is called with no +When the Python interpreter starts in *note interactive mode: 8c6, it +checks for an *note __interactivehook__: 8c7. attribute on the *note +sys: fe. module. If the attribute exists, its value is called with no arguments just before interactive mode is started. The check is made -after the *note PYTHONSTARTUP: 9cd. file is read, so it can be set -there. The *note site: eb. module *note sets it: 9ce. to a function +after the *note PYTHONSTARTUP: 8c8. file is read, so it can be set +there. The *note site: ec. module *note sets it: 8c9. to a function that enables tab completion and history saving (in ‘~/.python-history’) -if the platform supports *note readline: de. If you do not want this -(new) behavior, you can override it in *note PYTHONSTARTUP: 9cd, +if the platform supports *note readline: df. If you do not want this +(new) behavior, you can override it in *note PYTHONSTARTUP: 8c8, ‘sitecustomize’, or ‘usercustomize’ by deleting this attribute from -*note sys: fd. (or setting it to some other callable). (Contributed by +*note sys: fe. (or setting it to some other callable). (Contributed by Éric Araujo and Antoine Pitrou in bpo-5845(2).) ---------- Footnotes ---------- @@ -26326,13 +23747,13 @@ if the platform supports *note readline: de. If you do not want this (2) https://bugs.python.org/issue5845  -File: python.info, Node: tarfile<3>, Next: textwrap, Prev: sys<7>, Up: Improved Modules<6> +File: python.info, Node: tarfile<3>, Next: textwrap, Prev: sys<6>, Up: Improved Modules<5> -1.6.4.53 tarfile +1.5.4.53 tarfile ................ -The *note tarfile: 101. module now supports a simple *note Command-Line -Interface: 9d0. when called as a script directly or via ‘-m’. This can +The *note tarfile: 102. module now supports a simple *note Command-Line +Interface: 8cb. when called as a script directly or via ‘-m’. This can be used to create and extract tarfile archives. (Contributed by Berker Peksag in bpo-13477(1).) @@ -26341,17 +23762,17 @@ Peksag in bpo-13477(1).) (1) https://bugs.python.org/issue13477  -File: python.info, Node: textwrap, Next: threading<4>, Prev: tarfile<3>, Up: Improved Modules<6> +File: python.info, Node: textwrap, Next: threading<4>, Prev: tarfile<3>, Up: Improved Modules<5> -1.6.4.54 textwrap +1.5.4.54 textwrap ................. -The *note TextWrapper: 9d2. class has two new attributes/constructor -arguments: *note max_lines: 9d3, which limits the number of lines in the -output, and *note placeholder: 9d4, which is a string that will appear +The *note TextWrapper: 8cd. class has two new attributes/constructor +arguments: *note max_lines: 8ce, which limits the number of lines in the +output, and *note placeholder: 8cf, which is a string that will appear at the end of the output if it has been truncated because of `max_lines'. Building on these capabilities, a new convenience function -*note shorten(): 9d5. collapses all of the whitespace in the input to +*note shorten(): 8d0. collapses all of the whitespace in the input to single spaces and produces a single line of a given `width' that ends with the `placeholder' (by default, ‘[...]’). (Contributed by Antoine Pitrou and Serhiy Storchaka in bpo-18585(1) and bpo-18725(2).) @@ -26363,13 +23784,13 @@ Pitrou and Serhiy Storchaka in bpo-18585(1) and bpo-18725(2).) (2) https://bugs.python.org/issue18725  -File: python.info, Node: threading<4>, Next: traceback<3>, Prev: textwrap, Up: Improved Modules<6> +File: python.info, Node: threading<4>, Next: traceback<3>, Prev: textwrap, Up: Improved Modules<5> -1.6.4.55 threading +1.5.4.55 threading .................. -The *note Thread: 21a. object representing the main thread can be -obtained from the new *note main_thread(): 9d7. function. In normal +The *note Thread: 221. object representing the main thread can be +obtained from the new *note main_thread(): 8d2. function. In normal conditions this will be the thread from which the Python interpreter was started. (Contributed by Andrew Svetlov in bpo-18882(1).) @@ -26378,12 +23799,12 @@ started. (Contributed by Andrew Svetlov in bpo-18882(1).) (1) https://bugs.python.org/issue18882  -File: python.info, Node: traceback<3>, Next: types<3>, Prev: threading<4>, Up: Improved Modules<6> +File: python.info, Node: traceback<3>, Next: types<3>, Prev: threading<4>, Up: Improved Modules<5> -1.6.4.56 traceback +1.5.4.56 traceback .................. -A new *note traceback.clear_frames(): 9d9. function takes a traceback +A new *note traceback.clear_frames(): 8d4. function takes a traceback object and clears the local variables in all of the frames it references, reducing the amount of memory consumed. (Contributed by Andrew Kuchling in bpo-1565525(1).) @@ -26393,12 +23814,12 @@ Andrew Kuchling in bpo-1565525(1).) (1) https://bugs.python.org/issue1565525  -File: python.info, Node: types<3>, Next: urllib<2>, Prev: traceback<3>, Up: Improved Modules<6> +File: python.info, Node: types<3>, Next: urllib<2>, Prev: traceback<3>, Up: Improved Modules<5> -1.6.4.57 types +1.5.4.57 types .............. -A new *note DynamicClassAttribute(): 9db. descriptor provides a way to +A new *note DynamicClassAttribute(): 8d6. descriptor provides a way to define an attribute that acts normally when looked up through an instance object, but which is routed to the `class' ‘__getattr__’ when looked up through the class. This allows one to have properties active @@ -26411,31 +23832,31 @@ bpo-19030(1).) (1) https://bugs.python.org/issue19030  -File: python.info, Node: urllib<2>, Next: unittest<4>, Prev: types<3>, Up: Improved Modules<6> +File: python.info, Node: urllib<2>, Next: unittest<4>, Prev: types<3>, Up: Improved Modules<5> -1.6.4.58 urllib +1.5.4.58 urllib ............... -*note urllib.request: 129. now supports ‘data:’ URLs via the *note -DataHandler: 9dd. class. (Contributed by Mathias Panzenböck in +*note urllib.request: 121. now supports ‘data:’ URLs via the *note +DataHandler: 8d8. class. (Contributed by Mathias Panzenböck in bpo-16423(1).) -The http method that will be used by a *note Request: 9de. class can now -be specified by setting a *note method: 9df. class attribute on the +The http method that will be used by a *note Request: 8d9. class can now +be specified by setting a *note method: 8da. class attribute on the subclass. (Contributed by Jason R Coombs in bpo-18978(2).) -*note Request: 9de. objects are now reusable: if the *note full_url: -9e0. or *note data: 9e1. attributes are modified, all relevant internal +*note Request: 8d9. objects are now reusable: if the *note full_url: +8db. or *note data: 8dc. attributes are modified, all relevant internal properties are updated. This means, for example, that it is now -possible to use the same *note Request: 9de. object in more than one -*note OpenerDirector.open(): 9e2. call with different `data' arguments, -or to modify a *note Request: 9de.’s ‘url’ rather than recomputing it -from scratch. There is also a new *note remove_header(): 9e3. method -that can be used to remove headers from a *note Request: 9de. +possible to use the same *note Request: 8d9. object in more than one +*note OpenerDirector.open(): 8dd. call with different `data' arguments, +or to modify a *note Request: 8d9.‘s ‘url’ rather than recomputing it +from scratch. There is also a new *note remove_header(): 8de. method +that can be used to remove headers from a *note Request: 8d9. (Contributed by Alexey Kachayev in bpo-16464(3), Daniel Wozniak in bpo-17485(4), and Damien Brecht and Senthil Kumaran in bpo-17272(5).) -*note HTTPError: 9e4. objects now have a *note headers: 9e5. attribute +*note HTTPError: 8df. objects now have a *note headers: 8e0. attribute that provides access to the HTTP response headers associated with the error. (Contributed by Berker Peksag in bpo-15701(6).) @@ -26454,13 +23875,13 @@ error. (Contributed by Berker Peksag in bpo-15701(6).) (6) https://bugs.python.org/issue15701  -File: python.info, Node: unittest<4>, Next: venv<5>, Prev: urllib<2>, Up: Improved Modules<6> +File: python.info, Node: unittest<4>, Next: venv<4>, Prev: urllib<2>, Up: Improved Modules<5> -1.6.4.59 unittest +1.5.4.59 unittest ................. -The *note TestCase: 9e7. class has a new method, *note subTest(): 9e8, -that produces a context manager whose *note with: 7dc. block becomes a +The *note TestCase: 8e2. class has a new method, *note subTest(): 8e3, +that produces a context manager whose *note with: 6d0. block becomes a “sub-test”. This context manager allows a test method to dynamically generate subtests by, say, calling the ‘subTest’ context manager inside a loop. A single test method can thereby produce an indefinite number @@ -26476,42 +23897,42 @@ run even if one or more of them fail. For example: will result in six subtests, each identified in the unittest verbose output with a label consisting of the variable name ‘i’ and a particular value for that variable (‘i=0’, ‘i=1’, etc). See *note Distinguishing -test iterations using subtests: 9e9. for the full version of this +test iterations using subtests: 8e4. for the full version of this example. (Contributed by Antoine Pitrou in bpo-16997(1).) -*note unittest.main(): 9ea. now accepts an iterable of test names for +*note unittest.main(): 8e5. now accepts an iterable of test names for `defaultTest', where previously it only accepted a single test name as a string. (Contributed by Jyrki Pulliainen in bpo-15132(2).) -If *note SkipTest: 9eb. is raised during test discovery (that is, at the +If *note SkipTest: 8e6. is raised during test discovery (that is, at the module level in the test file), it is now reported as a skip instead of an error. (Contributed by Zach Ware in bpo-16935(3).) -*note discover(): 9ec. now sorts the discovered files to provide +*note discover(): 8e7. now sorts the discovered files to provide consistent test ordering. (Contributed by Martin Melin and Jeff Ramnani in bpo-16709(4).) -*note TestSuite: 7c3. now drops references to tests as soon as the test +*note TestSuite: 6b5. now drops references to tests as soon as the test has been run, if the test is successful. On Python interpreters that do garbage collection, this allows the tests to be garbage collected if nothing else is holding a reference to the test. It is possible to -override this behavior by creating a *note TestSuite: 7c3. subclass that +override this behavior by creating a *note TestSuite: 6b5. subclass that defines a custom ‘_removeTestAtIndex’ method. (Contributed by Tom Wardill, Matt McClure, and Andrew Svetlov in bpo-11798(5).) -A new test assertion context-manager, *note assertLogs(): 9ed, will +A new test assertion context-manager, *note assertLogs(): 8e8, will ensure that a given block of code emits a log message using the *note -logging: aa. module. By default the message can come from any logger +logging: ab. module. By default the message can come from any logger and have a priority of ‘INFO’ or higher, but both the logger name and an alternative minimum logging level may be specified. The object returned -by the context manager can be queried for the *note LogRecord: 9ee.s +by the context manager can be queried for the *note LogRecord: 8e9.s and/or formatted messages that were logged. (Contributed by Antoine Pitrou in bpo-18937(6).) Test discovery now works with namespace packages (Contributed by Claudiu Popa in bpo-17457(7).) -*note unittest.mock: 125. objects now inspect their specification +*note unittest.mock: 11d. objects now inspect their specification signatures when matching calls, which means an argument can now be matched by either position or name, instead of only by position. (Contributed by Antoine Pitrou in bpo-17015(8).) @@ -26540,17 +23961,17 @@ matched by either position or name, instead of only by position. (9) https://bugs.python.org/issue17467  -File: python.info, Node: venv<5>, Next: wave<2>, Prev: unittest<4>, Up: Improved Modules<6> +File: python.info, Node: venv<4>, Next: wave<2>, Prev: unittest<4>, Up: Improved Modules<5> -1.6.4.60 venv +1.5.4.60 venv ............. -*note venv: 12e. now includes activation scripts for the ‘csh’ and +*note venv: 126. now includes activation scripts for the ‘csh’ and ‘fish’ shells. (Contributed by Andrew Svetlov in bpo-15417(1).) -*note EnvBuilder: 9f0. and the *note create(): 9f1. convenience function +*note EnvBuilder: 8eb. and the *note create(): 8ec. convenience function take a new keyword argument `with_pip', which defaults to ‘False’, that -controls whether or not *note EnvBuilder: 9f0. ensures that ‘pip’ is +controls whether or not *note EnvBuilder: 8eb. ensures that ‘pip’ is installed in the virtual environment. (Contributed by Nick Coghlan in bpo-19552(2) as part of the PEP 453(3) implementation.) @@ -26563,23 +23984,23 @@ bpo-19552(2) as part of the PEP 453(3) implementation.) (3) https://www.python.org/dev/peps/pep-0453  -File: python.info, Node: wave<2>, Next: weakref<2>, Prev: venv<5>, Up: Improved Modules<6> +File: python.info, Node: wave<2>, Next: weakref<2>, Prev: venv<4>, Up: Improved Modules<5> -1.6.4.61 wave +1.5.4.61 wave ............. The ‘getparams()’ method now returns a namedtuple rather than a plain tuple. (Contributed by Claudiu Popa in bpo-17487(1).) -*note wave.open(): 219. now supports the context management protocol. +*note wave.open(): 467. now supports the context management protocol. (Contributed by Claudiu Popa in bpo-17616(2).) -*note wave: 130. can now *note write output to unseekable files: 9f3. +*note wave: 128. can now *note write output to unseekable files: 8ee. (Contributed by David Jones, Guilherme Polo, and Serhiy Storchaka in bpo-5202(3).) -The *note writeframesraw(): 9f4. and *note writeframes(): 9f5. methods -now accept any *note bytes-like object: 6e1. (Contributed by Serhiy +The *note writeframesraw(): 8ef. and *note writeframes(): 8f0. methods +now accept any *note bytes-like object: 5d5. (Contributed by Serhiy Storchaka in bpo-8311(4).) ---------- Footnotes ---------- @@ -26593,21 +24014,21 @@ Storchaka in bpo-8311(4).) (4) https://bugs.python.org/issue8311  -File: python.info, Node: weakref<2>, Next: xml etree<2>, Prev: wave<2>, Up: Improved Modules<6> +File: python.info, Node: weakref<2>, Next: xml etree<2>, Prev: wave<2>, Up: Improved Modules<5> -1.6.4.62 weakref +1.5.4.62 weakref ................ -New *note WeakMethod: 9f7. class simulates weak references to bound +New *note WeakMethod: 8f2. class simulates weak references to bound methods. (Contributed by Antoine Pitrou in bpo-14631(1).) -New *note finalize: 3c3. class makes it possible to register a callback +New *note finalize: 288. class makes it possible to register a callback to be invoked when an object is garbage collected, without needing to carefully manage the lifecycle of the weak reference itself. (Contributed by Richard Oudkerk in bpo-15528(2).) -The callback, if any, associated with a *note ref: 9f8. is now exposed -via the *note __callback__: 9f9. attribute. (Contributed by Mark +The callback, if any, associated with a *note ref: 8f3. is now exposed +via the *note __callback__: 8f4. attribute. (Contributed by Mark Dickinson in bpo-17643(3).) ---------- Footnotes ---------- @@ -26619,20 +24040,20 @@ Dickinson in bpo-17643(3).) (3) https://bugs.python.org/issue17643  -File: python.info, Node: xml etree<2>, Next: zipfile<4>, Prev: weakref<2>, Up: Improved Modules<6> +File: python.info, Node: xml etree<2>, Next: zipfile<4>, Prev: weakref<2>, Up: Improved Modules<5> -1.6.4.63 xml.etree +1.5.4.63 xml.etree .................. -A new parser, *note XMLPullParser: 9fb, allows a non-blocking +A new parser, *note XMLPullParser: 8f6, allows a non-blocking applications to parse XML documents. An example can be seen at *note -Pull API for non-blocking parsing: 9fc. (Contributed by Antoine Pitrou +Pull API for non-blocking parsing: 8f7. (Contributed by Antoine Pitrou in bpo-17741(1).) -The *note xml.etree.ElementTree: 140. *note tostring(): 9fd. and *note -tostringlist(): 9fe. functions, and the *note ElementTree: 21c. *note -write(): 9ff. method, now have a `short_empty_elements' *note -keyword-only parameter: 3d1. providing control over whether elements +The *note xml.etree.ElementTree: 138. *note tostring(): 8f8. and *note +tostringlist(): 8f9. functions, and the *note ElementTree: 8fa. *note +write(): 8fb. method, now have a `short_empty_elements' *note +keyword-only parameter: 297. providing control over whether elements with no content are written in abbreviated (‘’) or expanded (‘’) form. (Contributed by Ariel Poliak and Serhiy Storchaka in bpo-14377(2).) @@ -26644,18 +24065,18 @@ in bpo-14377(2).) (2) https://bugs.python.org/issue14377  -File: python.info, Node: zipfile<4>, Prev: xml etree<2>, Up: Improved Modules<6> +File: python.info, Node: zipfile<4>, Prev: xml etree<2>, Up: Improved Modules<5> -1.6.4.64 zipfile +1.5.4.64 zipfile ................ -The *note writepy(): a01. method of the *note PyZipFile: a02. class has +The *note writepy(): 8fd. method of the *note PyZipFile: 8fe. class has a new `filterfunc' option that can be used to control which directories and files are added to the archive. For example, this could be used to exclude test files from the archive. (Contributed by Christian Tismer in bpo-19274(1).) -The `allowZip64' parameter to *note ZipFile: 525. and ‘PyZipfile’ is now +The `allowZip64' parameter to *note ZipFile: 410. and ‘PyZipfile’ is now ‘True’ by default. (Contributed by William Mallard in bpo-17201(2).) ---------- Footnotes ---------- @@ -26665,9 +24086,9 @@ The `allowZip64' parameter to *note ZipFile: 525. and ‘PyZipfile’ is now (2) https://bugs.python.org/issue17201  -File: python.info, Node: CPython Implementation Changes, Next: Deprecated<5>, Prev: Improved Modules<6>, Up: What’s New In Python 3 4 +File: python.info, Node: CPython Implementation Changes, Next: Deprecated<4>, Prev: Improved Modules<5>, Up: What’s New In Python 3 4 -1.6.5 CPython Implementation Changes +1.5.5 CPython Implementation Changes ------------------------------------ * Menu: @@ -26683,7 +24104,7 @@ File: python.info, Node: CPython Implementation Changes, Next: Deprecated<5>,  File: python.info, Node: PEP 445 Customization of CPython Memory Allocators, Next: PEP 442 Safe Object Finalization, Up: CPython Implementation Changes -1.6.5.1 PEP 445: Customization of CPython Memory Allocators +1.5.5.1 PEP 445: Customization of CPython Memory Allocators ........................................................... PEP 445(1) adds new C level interfaces to customize memory allocation in @@ -26705,16 +24126,16 @@ PEP 445(2) – Add new APIs to customize Python memory allocators  File: python.info, Node: PEP 442 Safe Object Finalization, Next: PEP 456 Secure and Interchangeable Hash Algorithm, Prev: PEP 445 Customization of CPython Memory Allocators, Up: CPython Implementation Changes -1.6.5.2 PEP 442: Safe Object Finalization +1.5.5.2 PEP 442: Safe Object Finalization ......................................... PEP 442(1) removes the current limitations and quirks of object -finalization in CPython. With it, objects with *note __del__(): a06. -methods, as well as generators with *note finally: 2bf. clauses, can be -finalized when they are part of a reference cycle. +finalization in CPython. With it, objects with ‘__del__()’ methods, as +well as generators with *note finally: 16f. clauses, can be finalized +when they are part of a reference cycle. As part of this change, module globals are no longer forcibly set to -*note None: 203. during interpreter shutdown in most cases, instead +*note None: 158. during interpreter shutdown in most cases, instead relying on the normal operation of the cyclic garbage collector. This avoids a whole class of interpreter-shutdown-time errors, usually involving ‘__del__’ methods, that have plagued Python since the cyclic @@ -26736,7 +24157,7 @@ PEP 442(2) – Safe object finalization  File: python.info, Node: PEP 456 Secure and Interchangeable Hash Algorithm, Next: PEP 436 Argument Clinic, Prev: PEP 442 Safe Object Finalization, Up: CPython Implementation Changes -1.6.5.3 PEP 456: Secure and Interchangeable Hash Algorithm +1.5.5.3 PEP 456: Secure and Interchangeable Hash Algorithm .......................................................... PEP 456(1) follows up on earlier security fix work done on Python’s hash @@ -26749,7 +24170,7 @@ SipHash implementation on platforms that have a 64 bit data type. Any performance differences in comparison with the older FNV algorithm are trivial. -The PEP adds additional fields to the *note sys.hash_info: a08. named +The PEP adds additional fields to the *note sys.hash_info: 903. named tuple to describe the hash algorithm in use by the currently executing binary. Otherwise, the PEP does not alter any existing CPython APIs. @@ -26762,7 +24183,7 @@ binary. Otherwise, the PEP does not alter any existing CPython APIs.  File: python.info, Node: PEP 436 Argument Clinic, Next: Other Build and C API Changes, Prev: PEP 456 Secure and Interchangeable Hash Algorithm, Up: CPython Implementation Changes -1.6.5.4 PEP 436: Argument Clinic +1.5.5.4 PEP 436: Argument Clinic ................................ “Argument Clinic” ( PEP 436(1)) is now part of the CPython build process @@ -26771,8 +24192,8 @@ accurate signatures for builtins and standard library extension modules implemented in C. Some standard library extension modules have been converted to use -Argument Clinic in Python 3.4, and *note pydoc: d9. and *note inspect: -a0. have been updated accordingly. +Argument Clinic in Python 3.4, and *note pydoc: da. and *note inspect: +a1. have been updated accordingly. It is expected that signature metadata for programmatic introspection will be added to additional callables implemented in C as part of Python @@ -26800,15 +24221,15 @@ PEP 436(2) – The Argument Clinic DSL  File: python.info, Node: Other Build and C API Changes, Next: Other Improvements<2>, Prev: PEP 436 Argument Clinic, Up: CPython Implementation Changes -1.6.5.5 Other Build and C API Changes +1.5.5.5 Other Build and C API Changes ..................................... - * The new *note PyType_GetSlot(): a0b. function has been added to the + * The new *note PyType_GetSlot(): 906. function has been added to the stable ABI, allowing retrieval of function pointers from named type slots when using the limited API. (Contributed by Martin von Löwis in bpo-17162(1).) - * The new *note Py_SetStandardStreamEncoding(): a0c. + * The new *note Py_SetStandardStreamEncoding(): 907. pre-initialization API allows applications embedding the CPython interpreter to reliably force a particular encoding and error handler for the standard streams. (Contributed by Bastien Montagne @@ -26822,12 +24243,12 @@ File: python.info, Node: Other Build and C API Changes, Next: Other Improvemen python interpreter is not available (for example, in cross compilation scenarios). - * *note PyUnicode_FromFormat(): 8ba. now supports width and precision + * *note PyUnicode_FromFormat(): 7b0. now supports width and precision specifications for ‘%s’, ‘%A’, ‘%U’, ‘%V’, ‘%S’, and ‘%R’. (Contributed by Ysj Ray and Victor Stinner in bpo-7330(4).) - * New function *note PyStructSequence_InitType2(): a0d. supplements - the existing *note PyStructSequence_InitType(): a0e. function. The + * New function *note PyStructSequence_InitType2(): 908. supplements + the existing *note PyStructSequence_InitType(): 909. function. The difference is that it returns ‘0’ on success and ‘-1’ on failure. * The CPython source can now be compiled using the address sanity @@ -26839,9 +24260,9 @@ File: python.info, Node: Other Build and C API Changes, Next: Other Improvemen and Data Execution Prevention(7). (Contributed by Christian Heimes in bpo-16632(8).) - * New function *note PyObject_LengthHint(): a0f. is the C API - equivalent of *note operator.length_hint(): 96a. (Contributed by - Armin Ronacher in bpo-16148(9).) + * New function ‘PyObject_LengthHint()’ is the C API equivalent of + *note operator.length_hint(): 862. (Contributed by Armin Ronacher + in bpo-16148(9).) ---------- Footnotes ---------- @@ -26866,12 +24287,12 @@ File: python.info, Node: Other Build and C API Changes, Next: Other Improvemen  File: python.info, Node: Other Improvements<2>, Next: Significant Optimizations, Prev: Other Build and C API Changes, Up: CPython Implementation Changes -1.6.5.6 Other Improvements +1.5.5.6 Other Improvements .......................... - * The *note python: a12. command has a new *note option: a13, ‘-I’, + * The *note python: 90c. command has a new *note option: 90d, ‘-I’, which causes it to run in “isolated mode”, which means that *note - sys.path: 260. contains neither the script’s directory nor the + sys.path: 479. contains neither the script’s directory nor the user’s ‘site-packages’ directory, and all ‘PYTHON*’ environment variables are ignored (it implies both ‘-s’ and ‘-E’). Other restrictions may also be applied in the future, with the goal being @@ -26882,14 +24303,14 @@ File: python.info, Node: Other Improvements<2>, Next: Significant Optimization in bpo-16499(1).) * Tab-completion is now enabled by default in the interactive - interpreter on systems that support *note readline: de. History is + interpreter on systems that support *note readline: df. History is also enabled by default, and is written to (and read from) the file ‘~/.python-history’. (Contributed by Antoine Pitrou and Éric Araujo in bpo-5845(2).) * Invoking the Python interpreter with ‘--version’ now outputs the version to standard output instead of standard error - (bpo-18338(3)). Similar changes were made to *note argparse: 5. + (bpo-18338(3)). Similar changes were made to *note argparse: 6. (bpo-18920(4)) and other modules that have script-like invocation capabilities (bpo-18922(5)). @@ -26903,14 +24324,14 @@ File: python.info, Node: Other Improvements<2>, Next: Significant Optimization test suite, and generate an HTML coverage report for the C codebase using ‘gcov’ and lcov(8). - * The ‘-R’ option to the *note python regression test suite: a14. now + * The ‘-R’ option to the *note python regression test suite: 90e. now also checks for memory allocation leaks, using *note - sys.getallocatedblocks(): 9ca. (Contributed by Antoine Pitrou in + sys.getallocatedblocks(): 8c5. (Contributed by Antoine Pitrou in bpo-13390(9).) * ‘python -m’ now works with namespace packages. - * The *note stat: f4. module is now implemented in C, which means it + * The *note stat: f5. module is now implemented in C, which means it gets the values for its constants from the C header files, instead of having the values hard-coded in the python module as was previously the case. @@ -26920,9 +24341,9 @@ File: python.info, Node: Other Improvements<2>, Next: Significant Optimization first python module in the file). (Contributed by Václav Šmilauer in bpo-16421(10).) - * A new opcode, *note LOAD_CLASSDEREF: a15, has been added to fix a + * A new opcode, *note LOAD_CLASSDEREF: 90f, has been added to fix a bug in the loading of free variables in class bodies that could be - triggered by certain uses of *note __prepare__: 5f9. (Contributed + triggered by certain uses of *note __prepare__: 4ee. (Contributed by Benjamin Peterson in bpo-17853(11).) * A number of MemoryError-related crashes were identified and fixed @@ -26939,12 +24360,12 @@ File: python.info, Node: Other Improvements<2>, Next: Significant Optimization as part of the PEP 453(17) implementation.) * The encoding name is now optional in the value set for the *note - PYTHONIOENCODING: a16. environment variable. This makes it + PYTHONIOENCODING: 910. environment variable. This makes it possible to set just the error handler, without changing the default encoding. (Contributed by Serhiy Storchaka in bpo-18818(18).) - * The *note bz2: 13, *note lzma: ad, and *note gzip: 8b. module + * The *note bz2: 14, *note lzma: ae, and *note gzip: 8c. module ‘open’ functions now support ‘x’ (exclusive creation) mode. (Contributed by Tim Heaney and Vajrasky Kok in bpo-19201(19), bpo-19222(20), and bpo-19223(21).) @@ -26997,7 +24418,7 @@ https://devguide.python.org/coverage/#measuring-coverage-of-c-code-with-gcov-and  File: python.info, Node: Significant Optimizations, Prev: Other Improvements<2>, Up: CPython Implementation Changes -1.6.5.7 Significant Optimizations +1.5.5.7 Significant Optimizations ................................. * The UTF-32 decoder is now 3x to 4x faster. (Contributed by Serhiy @@ -27016,19 +24437,19 @@ File: python.info, Node: Significant Optimizations, Prev: Other Improvements<2 * The interpreter starts about 30% faster. A couple of measures lead to the speedup. The interpreter loads fewer modules on startup, - e.g. the *note re: dd, *note collections: 1d. and *note locale: - a9. modules and their dependencies are no longer imported by + e.g. the *note re: de, *note collections: 1e. and *note locale: + aa. modules and their dependencies are no longer imported by default. The marshal module has been improved to load compiled Python code faster. (Contributed by Antoine Pitrou, Christian Heimes and Victor Stinner in bpo-19219(3), bpo-19218(4), bpo-19209(5), bpo-19205(6) and bpo-9548(7).) - * *note bz2.BZ2File: 224. is now as fast or faster than the Python2 - version for most cases. *note lzma.LZMAFile: a18. has also been + * *note bz2.BZ2File: 912. is now as fast or faster than the Python2 + version for most cases. *note lzma.LZMAFile: 913. has also been optimized. (Contributed by Serhiy Storchaka and Nadeem Vawda in bpo-16034(8).) - * *note random.getrandbits(): a19. is 20%-40% faster for small + * *note random.getrandbits(): 914. is 20%-40% faster for small integers (the most common use case). (Contributed by Serhiy Storchaka in bpo-16674(9).) @@ -27038,17 +24459,17 @@ File: python.info, Node: Significant Optimizations, Prev: Other Improvements<2 * A performance issue in ‘io.FileIO.readall()’ has been solved. This particularly affects Windows, and significantly speeds up the case - of piping significant amounts of data through *note subprocess: f9. + of piping significant amounts of data through *note subprocess: fa. (Contributed by Richard Oudkerk in bpo-15758(11).) - * *note html.escape(): a1a. is now 10x faster. (Contributed by Matt + * *note html.escape(): 915. is now 10x faster. (Contributed by Matt Bryant in bpo-18020(12).) * On Windows, the native ‘VirtualAlloc’ is now used instead of the CRT ‘malloc’ in ‘obmalloc’. Artificial benchmarks show about a 3% memory savings. - * *note os.urandom(): 5ce. now uses a lazily-opened persistent file + * *note os.urandom(): 4c2. now uses a lazily-opened persistent file descriptor so as to avoid using many file descriptors when run in parallel from multiple threads. (Contributed by Antoine Pitrou in bpo-18756(13).) @@ -27082,15 +24503,15 @@ File: python.info, Node: Significant Optimizations, Prev: Other Improvements<2 (13) https://bugs.python.org/issue18756  -File: python.info, Node: Deprecated<5>, Next: Removed<5>, Prev: CPython Implementation Changes, Up: What’s New In Python 3 4 +File: python.info, Node: Deprecated<4>, Next: Removed<3>, Prev: CPython Implementation Changes, Up: What’s New In Python 3 4 -1.6.6 Deprecated +1.5.6 Deprecated ---------------- This section covers various APIs and other features that have been deprecated in Python 3.4, and will be removed in Python 3.5 or later. In most (but not all) cases, using the deprecated APIs will produce a -*note DeprecationWarning: 15a. when the interpreter is run with +*note DeprecationWarning: 264. when the interpreter is run with deprecation warnings enabled (for example, by using ‘-Wd’). * Menu: @@ -27099,88 +24520,89 @@ deprecation warnings enabled (for example, by using ‘-Wd’). * Deprecated Features::  -File: python.info, Node: Deprecations in the Python API, Next: Deprecated Features, Up: Deprecated<5> +File: python.info, Node: Deprecations in the Python API, Next: Deprecated Features, Up: Deprecated<4> -1.6.6.1 Deprecations in the Python API +1.5.6.1 Deprecations in the Python API ...................................... * As mentioned in *note PEP 451; A ModuleSpec Type for the Import - System: 8c7, a number of *note importlib: 9a. methods and functions - are deprecated: *note importlib.find_loader(): a1d. is replaced by - *note importlib.util.find_spec(): a1e.; *note - importlib.machinery.PathFinder.find_module(): a1f. is replaced by - *note importlib.machinery.PathFinder.find_spec(): a20.; *note - importlib.abc.MetaPathFinder.find_module(): 566. is replaced by - *note importlib.abc.MetaPathFinder.find_spec(): 567.; *note - importlib.abc.PathEntryFinder.find_loader(): 568. and *note - find_module(): a21. are replaced by *note - importlib.abc.PathEntryFinder.find_spec(): 569.; all of the + System: 7bd, a number of *note importlib: 9b. methods and functions + are deprecated: *note importlib.find_loader(): 918. is replaced by + *note importlib.util.find_spec(): 919.; *note + importlib.machinery.PathFinder.find_module(): 91a. is replaced by + *note importlib.machinery.PathFinder.find_spec(): 91b.; *note + importlib.abc.MetaPathFinder.find_module(): 453. is replaced by + *note importlib.abc.MetaPathFinder.find_spec(): 454.; *note + importlib.abc.PathEntryFinder.find_loader(): 455. and *note + find_module(): 91c. are replaced by *note + importlib.abc.PathEntryFinder.find_spec(): 456.; all of the ‘xxxLoader’ ABC ‘load_module’ methods (*note - importlib.abc.Loader.load_module(): 6dc, *note - importlib.abc.InspectLoader.load_module(): a22, *note - importlib.abc.FileLoader.load_module(): a23, *note - importlib.abc.SourceLoader.load_module(): a24.) should no longer be + importlib.abc.Loader.load_module(): 5d0, *note + importlib.abc.InspectLoader.load_module(): 91d, *note + importlib.abc.FileLoader.load_module(): 91e, *note + importlib.abc.SourceLoader.load_module(): 91f.) should no longer be implemented, instead loaders should implement an ‘exec_module’ - method (*note importlib.abc.Loader.exec_module(): 6dd, *note - importlib.abc.InspectLoader.exec_module(): a25. *note - importlib.abc.SourceLoader.exec_module(): a26.) and let the import + method (*note importlib.abc.Loader.exec_module(): 5d1, *note + importlib.abc.InspectLoader.exec_module(): 920. *note + importlib.abc.SourceLoader.exec_module(): 921.) and let the import system take care of the rest; and *note - importlib.abc.Loader.module_repr(): a27, *note - importlib.util.module_for_loader(): a28, *note - importlib.util.set_loader(): a29, and *note - importlib.util.set_package(): a2a. are no longer needed because + importlib.abc.Loader.module_repr(): 922, *note + importlib.util.module_for_loader(): 923, *note + importlib.util.set_loader(): 924, and *note + importlib.util.set_package(): 925. are no longer needed because their functions are now handled automatically by the import system. - * The *note imp: 99. module is pending deprecation. To keep + * The *note imp: 9a. module is pending deprecation. To keep compatibility with Python 2/3 code bases, the module’s removal is currently not scheduled. - * The *note formatter: 80. module is pending deprecation and is + * The *note formatter: 82. module is pending deprecation and is slated for removal in Python 3.6. - * ‘MD5’ as the default `digestmod' for the *note hmac.new(): 942. + * ‘MD5’ as the default `digestmod' for the *note hmac.new(): 839. function is deprecated. Python 3.6 will require an explicit digest name or constructor as `digestmod' argument. - * The internal ‘Netrc’ class in the *note ftplib: 82. module has been + * The internal ‘Netrc’ class in the *note ftplib: 84. module has been documented as deprecated in its docstring for quite some time. It - now emits a *note DeprecationWarning: 15a. and will be removed + now emits a *note DeprecationWarning: 264. and will be removed completely in Python 3.5. * The undocumented `endtime' argument to *note - subprocess.Popen.wait(): 68b. should not have been exposed and is + subprocess.Popen.wait(): 57f. should not have been exposed and is hopefully not in use; it is deprecated and will mostly likely be removed in Python 3.5. - * The `strict' argument of *note HTMLParser: 22a. is deprecated. + * The `strict' argument of *note HTMLParser: 7a4. is deprecated. - * The *note plistlib: cf. ‘readPlist()’, ‘writePlist()’, - ‘readPlistFromBytes()’, and ‘writePlistToBytes()’ functions are - deprecated in favor of the corresponding new functions *note - load(): 21e, *note dump(): 220, *note loads(): 21f, and *note - dumps(): 221. ‘Data()’ is deprecated in favor of just using the - *note bytes: 172. constructor. + * The *note plistlib: d0. *note readPlist(): 470, *note writePlist(): + 926, *note readPlistFromBytes(): 471, and *note + writePlistToBytes(): 927. functions are deprecated in favor of the + corresponding new functions *note load(): 86f, *note dump(): 870, + *note loads(): 871, and *note dumps(): 872. *note Data(): 928. is + deprecated in favor of just using the *note bytes: 322. + constructor. - * The *note sysconfig: fe. key ‘SO’ is deprecated, it has been + * The *note sysconfig: ff. key ‘SO’ is deprecated, it has been replaced by ‘EXT_SUFFIX’. * The ‘U’ mode accepted by various ‘open’ functions is deprecated. In Python3 it does not do anything useful, and should be replaced - by appropriate uses of *note io.TextIOWrapper: 6ec. (if needed) and + by appropriate uses of *note io.TextIOWrapper: 5e0. (if needed) and its `newline' argument. * The `parser' argument of *note xml.etree.ElementTree.iterparse(): - a2b. has been deprecated, as has the `html' argument of *note - XMLParser(): 37f. To prepare for the removal of the latter, all + 929. has been deprecated, as has the `html' argument of *note + XMLParser(): 23e. To prepare for the removal of the latter, all arguments to ‘XMLParser’ should be passed by keyword.  -File: python.info, Node: Deprecated Features, Prev: Deprecations in the Python API, Up: Deprecated<5> +File: python.info, Node: Deprecated Features, Prev: Deprecations in the Python API, Up: Deprecated<4> -1.6.6.2 Deprecated Features +1.5.6.2 Deprecated Features ........................... - * Running *note IDLE: a2d. with the ‘-n’ flag (no subprocess) is + * Running *note IDLE: 92b. with the ‘-n’ flag (no subprocess) is deprecated. However, the feature will not be removed until bpo-18823(1) is resolved. @@ -27194,9 +24616,9 @@ File: python.info, Node: Deprecated Features, Prev: Deprecations in the Python (2) https://bugs.python.org/issue19375  -File: python.info, Node: Removed<5>, Next: Porting to Python 3 4, Prev: Deprecated<5>, Up: What’s New In Python 3 4 +File: python.info, Node: Removed<3>, Next: Porting to Python 3 4, Prev: Deprecated<4>, Up: What’s New In Python 3 4 -1.6.7 Removed +1.5.7 Removed ------------- * Menu: @@ -27206,9 +24628,9 @@ File: python.info, Node: Removed<5>, Next: Porting to Python 3 4, Prev: Depre * Code Cleanups::  -File: python.info, Node: Operating Systems No Longer Supported, Next: API and Feature Removals<5>, Up: Removed<5> +File: python.info, Node: Operating Systems No Longer Supported, Next: API and Feature Removals<5>, Up: Removed<3> -1.6.7.1 Operating Systems No Longer Supported +1.5.7.1 Operating Systems No Longer Supported ............................................. Support for the following operating systems has been removed from the @@ -27232,9 +24654,9 @@ source and build tools: (3) https://bugs.python.org/issue16136  -File: python.info, Node: API and Feature Removals<5>, Next: Code Cleanups, Prev: Operating Systems No Longer Supported, Up: Removed<5> +File: python.info, Node: API and Feature Removals<5>, Next: Code Cleanups, Prev: Operating Systems No Longer Supported, Up: Removed<3> -1.6.7.2 API and Feature Removals +1.5.7.2 API and Feature Removals ................................ The following obsolete and previously deprecated APIs and features have @@ -27252,38 +24674,38 @@ been removed: introduced (bpo-19199(3)). * ‘PyLoader’ and ‘PyPycLoader’ have been removed from *note - importlib: 9a. (Contributed by Taras Lyapun in bpo-15641(4).) + importlib: 9b. (Contributed by Taras Lyapun in bpo-15641(4).) - * The `strict' argument to *note HTTPConnection: 49b. and *note - HTTPSConnection: 49c. has been removed. HTTP 0.9-style “Simple + * The `strict' argument to *note HTTPConnection: 383. and *note + HTTPSConnection: 384. has been removed. HTTP 0.9-style “Simple Responses” are no longer supported. - * The deprecated *note urllib.request.Request: 9de. getter and setter + * The deprecated *note urllib.request.Request: 8d9. getter and setter methods ‘add_data’, ‘has_data’, ‘get_data’, ‘get_type’, ‘get_host’, ‘get_selector’, ‘set_proxy’, ‘get_origin_req_host’, and ‘is_unverifiable’ have been removed (use direct attribute access instead). * Support for loading the deprecated ‘TYPE_INT64’ has been removed - from *note marshal: b0. (Contributed by Dan Riti in bpo-15480(5).) + from *note marshal: b1. (Contributed by Dan Riti in bpo-15480(5).) - * *note inspect.Signature: 7e6.: positional-only parameters are now + * *note inspect.Signature: 6da.: positional-only parameters are now required to have a valid name. - * *note object.__format__(): a31. no longer accepts non-empty format - strings, it now raises a *note TypeError: 1fe. instead. Using a + * *note object.__format__(): 92f. no longer accepts non-empty format + strings, it now raises a *note TypeError: 17f. instead. Using a non-empty string has been deprecated since Python 3.2. This change has been made to prevent a situation where previously working (but incorrect) code would start failing if an object gained a __format__ method, which means that your code may now raise a *note - TypeError: 1fe. if you are using an ‘'s'’ format code with objects + TypeError: 17f. if you are using an ‘'s'’ format code with objects that do not have a __format__ method that handles it. See bpo-7994(6) for background. * ‘difflib.SequenceMatcher.isbjunk()’ and ‘difflib.SequenceMatcher.isbpopular()’ were deprecated in 3.2, and have now been removed: use ‘x in sm.bjunk’ and ‘x in sm.bpopular’, - where `sm' is a *note SequenceMatcher: a32. object (bpo-13248(7)). + where `sm' is a *note SequenceMatcher: 930. object (bpo-13248(7)). ---------- Footnotes ---------- @@ -27302,22 +24724,22 @@ been removed: (7) https://bugs.python.org/issue13248  -File: python.info, Node: Code Cleanups, Prev: API and Feature Removals<5>, Up: Removed<5> +File: python.info, Node: Code Cleanups, Prev: API and Feature Removals<5>, Up: Removed<3> -1.6.7.3 Code Cleanups +1.5.7.3 Code Cleanups ..................... * The unused and undocumented internal ‘Scanner’ class has been - removed from the *note pydoc: d9. module. + removed from the *note pydoc: da. module. * The private and effectively unused ‘_gestalt’ module has been - removed, along with the private *note platform: ce. functions + removed, along with the private *note platform: cf. functions ‘_mac_ver_lookup’, ‘_mac_ver_gstalt’, and ‘_bcd2str’, which would only have ever been called on badly broken OSX systems (see bpo-18393(1)). - * The hardcoded copies of certain *note stat: f4. constants that were - included in the *note tarfile: 101. module namespace have been + * The hardcoded copies of certain *note stat: f5. constants that were + included in the *note tarfile: 102. module namespace have been removed. ---------- Footnotes ---------- @@ -27325,9 +24747,9 @@ File: python.info, Node: Code Cleanups, Prev: API and Feature Removals<5>, Up (1) https://bugs.python.org/issue18393  -File: python.info, Node: Porting to Python 3 4, Next: Changed in 3 4 3, Prev: Removed<5>, Up: What’s New In Python 3 4 +File: python.info, Node: Porting to Python 3 4, Next: Changed in 3 4 3, Prev: Removed<3>, Up: What’s New In Python 3 4 -1.6.8 Porting to Python 3.4 +1.5.8 Porting to Python 3.4 --------------------------- This section lists previously described changes and other bugfixes that @@ -27337,18 +24759,18 @@ may require changes to your code. * Changes in ‘python’ Command Behavior: Changes in ‘python’ Command Behavior<2>. * Changes in the Python API: Changes in the Python API<6>. -* Changes in the C API: Changes in the C API<6>. +* Changes in the C API: Changes in the C API<5>.  File: python.info, Node: Changes in ‘python’ Command Behavior<2>, Next: Changes in the Python API<6>, Up: Porting to Python 3 4 -1.6.8.1 Changes in ‘python’ Command Behavior +1.5.8.1 Changes in ‘python’ Command Behavior ............................................ * In a posix shell, setting the ‘PATH’ environment variable to an empty value is equivalent to not setting it at all. However, - setting *note PYTHONPATH: a36. to an empty value was `not' - equivalent to not setting it at all: setting *note PYTHONPATH: a36. + setting *note PYTHONPATH: 934. to an empty value was `not' + equivalent to not setting it at all: setting *note PYTHONPATH: 934. to an empty value was equivalent to setting it to ‘.’, which leads to confusion when reasoning by analogy to how ‘PATH’ works. The behavior now conforms to the posix convention for ‘PATH’. @@ -27359,34 +24781,34 @@ File: python.info, Node: Changes in ‘python’ Command Behavior<2>, Next: Ch Ezio Melotti in bpo-17323(1).) * The python command and most stdlib scripts (as well as *note - argparse: 5.) now output ‘--version’ information to ‘stdout’ + argparse: 6.) now output ‘--version’ information to ‘stdout’ instead of ‘stderr’ (for issue list see *note Other Improvements: - a11. above). + 90b. above). ---------- Footnotes ---------- (1) https://bugs.python.org/issue17323  -File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C API<6>, Prev: Changes in ‘python’ Command Behavior<2>, Up: Porting to Python 3 4 +File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C API<5>, Prev: Changes in ‘python’ Command Behavior<2>, Up: Porting to Python 3 4 -1.6.8.2 Changes in the Python API +1.5.8.2 Changes in the Python API ................................. - * The ABCs defined in *note importlib.abc: 9b. now either raise the + * The ABCs defined in *note importlib.abc: 9c. now either raise the appropriate exception or return a default value instead of raising - *note NotImplementedError: 706. blindly. This will only affect - code calling *note super(): 5df. and falling through all the way to + *note NotImplementedError: 5fb. blindly. This will only affect + code calling *note super(): 4d3. and falling through all the way to the ABCs. For compatibility, catch both *note NotImplementedError: - 706. or the appropriate exception as needed. + 5fb. or the appropriate exception as needed. - * The module type now initializes the *note __package__: a38. and - *note __loader__: a39. attributes to ‘None’ by default. To + * The module type now initializes the *note __package__: 936. and + *note __loader__: 937. attributes to ‘None’ by default. To determine if these attributes were set in a backwards-compatible fashion, use e.g. ‘getattr(module, '__loader__', None) is not None’. (bpo-17115(1).) - * *note importlib.util.module_for_loader(): a28. now sets + * *note importlib.util.module_for_loader(): 923. now sets ‘__loader__’ and ‘__package__’ unconditionally to properly support reloading. If this is not desired then you will need to set these attributes manually. You can use ‘importlib.util.module_to_load()’ @@ -27412,80 +24834,80 @@ File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C that a module comes from frozen code then you can see if the module’s ‘__spec__.location’ is set to ‘'frozen'’, check if the loader is a subclass of *note importlib.machinery.FrozenImporter: - a3a, or if Python 2 compatibility is necessary you can use + 938, or if Python 2 compatibility is necessary you can use ‘imp.is_frozen()’. - * *note py_compile.compile(): 346. now raises *note FileExistsError: - a3b. if the file path it would write to is a symlink or a + * *note py_compile.compile(): 201. now raises *note FileExistsError: + 939. if the file path it would write to is a symlink or a non-regular file. This is to act as a warning that import will overwrite those files with a regular file regardless of what type of file path they were originally. - * *note importlib.abc.SourceLoader.get_source(): a3c. no longer - raises *note ImportError: 16c. when the source code being loaded - triggers a *note SyntaxError: 55c. or *note UnicodeDecodeError: - 32e. As *note ImportError: 16c. is meant to be raised only when + * *note importlib.abc.SourceLoader.get_source(): 93a. no longer + raises *note ImportError: 325. when the source code being loaded + triggers a *note SyntaxError: 449. or *note UnicodeDecodeError: + 1e9. As *note ImportError: 325. is meant to be raised only when source code cannot be found but it should, it was felt to be over-reaching/overloading of that meaning when the source code is found but improperly structured. If you were catching ImportError before and wish to continue to ignore syntax or decoding issues, catch all three exceptions now. - * *note functools.update_wrapper(): a3d. and *note functools.wraps(): - 957. now correctly set the ‘__wrapped__’ attribute to the function + * *note functools.update_wrapper(): 93b. and *note functools.wraps(): + 84f. now correctly set the ‘__wrapped__’ attribute to the function being wrapped, even if that function also had its ‘__wrapped__’ attribute set. This means ‘__wrapped__’ attributes now correctly link a stack of decorated functions rather than every ‘__wrapped__’ attribute in the chain referring to the innermost function. Introspection libraries that assumed the previous behaviour was - intentional can use *note inspect.unwrap(): 956. to access the + intentional can use *note inspect.unwrap(): 84e. to access the first function in the chain that has no ‘__wrapped__’ attribute. - * *note inspect.getfullargspec(): 659. has been reimplemented on top - of *note inspect.signature(): 657. and hence handles a much wider + * *note inspect.getfullargspec(): 54a. has been reimplemented on top + of *note inspect.signature(): 548. and hence handles a much wider variety of callable objects than it did in the past. It is expected that additional builtin and extension module callables will gain signature metadata over the course of the Python 3.4 series. Code that assumes that *note inspect.getfullargspec(): - 659. will fail on non-Python callables may need to be adjusted + 54a. will fail on non-Python callables may need to be adjusted accordingly. - * *note importlib.machinery.PathFinder: a3e. now passes on the - current working directory to objects in *note sys.path_hooks: a3f. + * *note importlib.machinery.PathFinder: 93c. now passes on the + current working directory to objects in *note sys.path_hooks: 93d. for the empty string. This results in *note - sys.path_importer_cache: 59a. never containing ‘''’, thus iterating - through *note sys.path_importer_cache: 59a. based on *note - sys.path: 260. will not find all keys. A module’s ‘__file__’ when + sys.path_importer_cache: 48e. never containing ‘''’, thus iterating + through *note sys.path_importer_cache: 48e. based on *note + sys.path: 479. will not find all keys. A module’s ‘__file__’ when imported in the current working directory will also now have an absolute path, including when using ‘-m’ with the interpreter (except for ‘__main__.__file__’ when a script has been executed directly using a relative path) (Contributed by Brett Cannon in bpo-18416(4)). is specified on the command-line) (bpo-18416(5)). - * The removal of the `strict' argument to *note HTTPConnection: 49b. - and *note HTTPSConnection: 49c. changes the meaning of the + * The removal of the `strict' argument to *note HTTPConnection: 383. + and *note HTTPSConnection: 384. changes the meaning of the remaining arguments if you are specifying them positionally rather than by keyword. If you’ve been paying attention to deprecation warnings your code should already be specifying any additional arguments via keywords. * Strings between ‘from __future__ import ...’ statements now - `always' raise a *note SyntaxError: 55c. Previously if there was + `always' raise a *note SyntaxError: 449. Previously if there was no leading docstring, an interstitial string would sometimes be ignored. This brings CPython into compliance with the language spec; Jython and PyPy already were. (bpo-17434(6)). - * *note ssl.SSLSocket.getpeercert(): 9b9. and *note - ssl.SSLSocket.do_handshake(): 84b. now raise an *note OSError: 307. + * *note ssl.SSLSocket.getpeercert(): 8b4. and *note + ssl.SSLSocket.do_handshake(): 741. now raise an *note OSError: 1bf. with ‘ENOTCONN’ when the ‘SSLSocket’ is not connected, instead of - the previous behavior of raising an *note AttributeError: 4a4. In - addition, *note getpeercert(): 9b9. will raise a *note ValueError: - 16d. if the handshake has not yet been done. + the previous behavior of raising an *note AttributeError: 38c. In + addition, *note getpeercert(): 8b4. will raise a *note ValueError: + 1e7. if the handshake has not yet been done. - * *note base64.b32decode(): a40. now raises a *note binascii.Error: - a41. when the input string contains non-b32-alphabet characters, - instead of a *note TypeError: 1fe. This particular *note - TypeError: 1fe. was missed when the other *note TypeError: 1fe.s + * *note base64.b32decode(): 93e. now raises a *note binascii.Error: + 93f. when the input string contains non-b32-alphabet characters, + instead of a *note TypeError: 17f. This particular *note + TypeError: 17f. was missed when the other *note TypeError: 17f.s were converted. (Contributed by Serhiy Storchaka in bpo-18011(7).) Note: this change was also inadvertently applied in Python 3.3.3. @@ -27498,31 +24920,31 @@ File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C collected. * Calling ‘read’ or ‘write’ on a closed SSL socket now raises an - informative *note ValueError: 16d. rather than the previous more - mysterious *note AttributeError: 4a4. (bpo-9177(8)). + informative *note ValueError: 1e7. rather than the previous more + mysterious *note AttributeError: 38c. (bpo-9177(8)). - * *note slice.indices(): a42. no longer produces an *note - OverflowError: a43. for huge values. As a consequence of this fix, - *note slice.indices(): a42. now raises a *note ValueError: 16d. if + * *note slice.indices(): 940. no longer produces an *note + OverflowError: 941. for huge values. As a consequence of this fix, + *note slice.indices(): 940. now raises a *note ValueError: 1e7. if given a negative length; previously it returned nonsense values (bpo-14794(9)). - * The *note complex: 2c4. constructor, unlike the *note cmath: 18. - functions, was incorrectly accepting *note float: 1fd. values if an + * The *note complex: 176. constructor, unlike the *note cmath: 19. + functions, was incorrectly accepting *note float: 174. values if an object’s ‘__complex__’ special method returned one. This now - raises a *note TypeError: 1fe. (bpo-16290(10).) + raises a *note TypeError: 17f. (bpo-16290(10).) - * The *note int: 204. constructor in 3.2 and 3.3 erroneously accepts - *note float: 1fd. values for the `base' parameter. It is unlikely + * The *note int: 171. constructor in 3.2 and 3.3 erroneously accepts + *note float: 174. values for the `base' parameter. It is unlikely anyone was doing this, but if so, it will now raise a *note - TypeError: 1fe. (bpo-16772(11)). + TypeError: 17f. (bpo-16772(11)). * Defaults for keyword-only arguments are now evaluated `after' defaults for regular keyword arguments, instead of before. Hopefully no one wrote any code that depends on the previous buggy behavior (bpo-16967(12)). - * Stale thread states are now cleared after *note fork(): a44. This + * Stale thread states are now cleared after *note fork(): 942. This may cause some system resources to be released that previously were incorrectly kept perpetually alive (for example, database connections kept in thread-local storage). (bpo-17094(13).) @@ -27531,54 +24953,54 @@ File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C properly, similarly to ‘__kwdefaults__’. (Contributed by Yury Selivanov in bpo-20625(14).) - * *note hashlib.hash.name: 940. now always returns the identifier in + * *note hashlib.hash.name: 837. now always returns the identifier in lower case. Previously some builtin hashes had uppercase names, but now that it is a formal public interface the naming has been made consistent (bpo-18532(15)). - * Because *note unittest.TestSuite: 7c3. now drops references to + * Because *note unittest.TestSuite: 6b5. now drops references to tests after they are run, test harnesses that re-use a *note - TestSuite: 7c3. to re-run a set of tests may fail. Test suites + TestSuite: 6b5. to re-run a set of tests may fail. Test suites should not be re-used in this fashion since it means state is retained between test runs, breaking the test isolation that *note - unittest: 124. is designed to provide. However, if the lack of + unittest: 11c. is designed to provide. However, if the lack of isolation is considered acceptable, the old behavior can be - restored by creating a *note TestSuite: 7c3. subclass that defines + restored by creating a *note TestSuite: 6b5. subclass that defines a ‘_removeTestAtIndex’ method that does nothing (see *note - TestSuite.__iter__(): a45.) (bpo-11798(16)). + TestSuite.__iter__(): 943.) (bpo-11798(16)). - * *note unittest: 124. now uses *note argparse: 5. for command line + * *note unittest: 11c. now uses *note argparse: 6. for command line parsing. There are certain invalid command forms that used to work that are no longer allowed; in theory this should not cause backward compatibility issues since the disallowed command forms didn’t make any sense and are unlikely to be in use. - * The *note re.split(): 4d3, *note re.findall(): a46, and *note - re.sub(): 57c. functions, and the ‘group()’ and ‘groups()’ methods + * The *note re.split(): 3bb, *note re.findall(): 944, and *note + re.sub(): 46c. functions, and the ‘group()’ and ‘groups()’ methods of ‘match’ objects now always return a `bytes' object when the - string to be matched is a *note bytes-like object: 6e1. Previously + string to be matched is a *note bytes-like object: 5d5. Previously the return type matched the input type, so if your code was depending on the return value being, say, a ‘bytearray’, you will need to change your code. - * *note audioop: c. functions now raise an error immediately if + * *note audioop: d. functions now raise an error immediately if passed string input, instead of failing randomly later on (bpo-16685(17)). - * The new `convert_charrefs' argument to *note HTMLParser: 22a. + * The new `convert_charrefs' argument to *note HTMLParser: 7a4. currently defaults to ‘False’ for backward compatibility, but will eventually be changed to default to ‘True’. It is recommended that you add this keyword, with the appropriate value, to any *note - HTMLParser: 22a. calls in your code (bpo-13633(18)). + HTMLParser: 7a4. calls in your code (bpo-13633(18)). - * Since the `digestmod' argument to the *note hmac.new(): 942. + * Since the `digestmod' argument to the *note hmac.new(): 839. function will in the future have no default, all calls to *note - hmac.new(): 942. should be changed to explicitly specify a + hmac.new(): 839. should be changed to explicitly specify a `digestmod' (bpo-17276(19)). - * Calling *note sysconfig.get_config_var(): a47. with the ‘SO’ key, + * Calling *note sysconfig.get_config_var(): 945. with the ‘SO’ key, or looking ‘SO’ up in the results of a call to *note - sysconfig.get_config_vars(): a48. is deprecated. This key should + sysconfig.get_config_vars(): 946. is deprecated. This key should be replaced by ‘EXT_SUFFIX’ or ‘SHLIB_SUFFIX’, depending on the context (bpo-19555(20)). @@ -27586,29 +25008,29 @@ File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C ‘U’ is ineffective in Python3 and will eventually raise an error if used. Depending on the function, the equivalent of its old Python2 behavior can be achieved using either a `newline' argument, or if - necessary by wrapping the stream in *note TextIOWrapper: 6ec. to + necessary by wrapping the stream in *note TextIOWrapper: 5e0. to use its `newline' argument (bpo-15204(21)). * If you use ‘pyvenv’ in a script and desire that pip `not' be installed, you must add ‘--without-pip’ to your command invocation. - * The default behavior of *note json.dump(): 6fd. and *note - json.dumps(): 6fe. when an indent is specified has changed: it no + * The default behavior of *note json.dump(): 5f1. and *note + json.dumps(): 5f2. when an indent is specified has changed: it no longer produces trailing spaces after the item separating commas at the ends of lines. This will matter only if you have tests that are doing white-space-sensitive comparisons of such output (bpo-16333(22)). - * *note doctest: 66. now looks for doctests in extension module + * *note doctest: 67. now looks for doctests in extension module ‘__doc__’ strings, so if your doctest test discovery includes extension modules that have things that look like doctests in them you may see test failures you’ve never seen before when running your tests (bpo-3158(23)). - * The *note collections.abc: 1e. module has been slightly refactored + * The *note collections.abc: 1f. module has been slightly refactored as part of the Python startup improvements. As a consequence of this, it is no longer the case that importing *note collections: - 1d. automatically imports *note collections.abc: 1e. If your + 1e. automatically imports *note collections.abc: 1f. If your program depended on the (undocumented) implicit import, you will need to add an explicit ‘import collections.abc’ (bpo-20784(24)). @@ -27663,40 +25085,40 @@ File: python.info, Node: Changes in the Python API<6>, Next: Changes in the C (24) https://bugs.python.org/issue20784  -File: python.info, Node: Changes in the C API<6>, Prev: Changes in the Python API<6>, Up: Porting to Python 3 4 +File: python.info, Node: Changes in the C API<5>, Prev: Changes in the Python API<6>, Up: Porting to Python 3 4 -1.6.8.3 Changes in the C API +1.5.8.3 Changes in the C API ............................ - * *note PyEval_EvalFrameEx(): a4a, *note PyObject_Repr(): a4b, and - *note PyObject_Str(): a4c, along with some other internal C APIs, + * *note PyEval_EvalFrameEx(): 948, *note PyObject_Repr(): 949, and + *note PyObject_Str(): 94a, along with some other internal C APIs, now include a debugging assertion that ensures they are not used in situations where they may silently discard a currently active exception. In cases where discarding the active exception is expected and desired (for example, because it has already been - saved locally with *note PyErr_Fetch(): a4d. or is being + saved locally with *note PyErr_Fetch(): 94b. or is being deliberately replaced with a different exception), an explicit - *note PyErr_Clear(): a4e. call will be needed to avoid triggering + *note PyErr_Clear(): 94c. call will be needed to avoid triggering the assertion when invoking these operations (directly or indirectly) and running against a version of Python that is compiled with assertions enabled. - * *note PyErr_SetImportError(): 6f1. now sets *note TypeError: 1fe. + * *note PyErr_SetImportError(): 5e5. now sets *note TypeError: 17f. when its `msg' argument is not set. Previously only ‘NULL’ was returned with no exception set. - * The result of the *note PyOS_ReadlineFunctionPointer: a4f. callback - must now be a string allocated by *note PyMem_RawMalloc(): a50. or - *note PyMem_RawRealloc(): a51, or ‘NULL’ if an error occurred, - instead of a string allocated by *note PyMem_Malloc(): 601. or - *note PyMem_Realloc(): a52. (bpo-16742(1)) + * The result of the *note PyOS_ReadlineFunctionPointer: 94d. callback + must now be a string allocated by *note PyMem_RawMalloc(): 94e. or + *note PyMem_RawRealloc(): 94f, or ‘NULL’ if an error occurred, + instead of a string allocated by *note PyMem_Malloc(): 4f6. or + *note PyMem_Realloc(): 950. (bpo-16742(1)) - * *note PyThread_set_key_value(): a53. now always set the value. In + * *note PyThread_set_key_value(): 951. now always set the value. In Python 3.3, the function did nothing if the key already exists (if the current value is a non-‘NULL’ pointer). * The ‘f_tstate’ (thread state) field of the *note PyFrameObject: - a54. structure has been removed to fix a bug: see bpo-14432(2) for + 952. structure has been removed to fix a bug: see bpo-14432(2) for the rationale. ---------- Footnotes ---------- @@ -27708,7 +25130,7 @@ File: python.info, Node: Changes in the C API<6>, Prev: Changes in the Python  File: python.info, Node: Changed in 3 4 3, Prev: Porting to Python 3 4, Up: What’s New In Python 3 4 -1.6.9 Changed in 3.4.3 +1.5.9 Changed in 3.4.3 ---------------------- * Menu: @@ -27718,11 +25140,11 @@ File: python.info, Node: Changed in 3 4 3, Prev: Porting to Python 3 4, Up: W  File: python.info, Node: PEP 476 Enabling certificate verification by default for stdlib http clients, Up: Changed in 3 4 3 -1.6.9.1 PEP 476: Enabling certificate verification by default for stdlib http clients +1.5.9.1 PEP 476: Enabling certificate verification by default for stdlib http clients ..................................................................................... -*note http.client: 93. and modules which use it, such as *note -urllib.request: 129. and *note xmlrpc.client: 148, will now verify that +*note http.client: 94. and modules which use it, such as *note +urllib.request: 121. and *note xmlrpc.client: 140, will now verify that the server presents a certificate which is signed by a CA in the platform trust store and whose hostname matches the hostname being requested by default, significantly improving security for many @@ -27746,7 +25168,7 @@ an alternate context:  File: python.info, Node: What’s New In Python 3 3, Next: What’s New In Python 3 2, Prev: What’s New In Python 3 4, Up: What’s New in Python -1.7 What’s New In Python 3.3 +1.6 What’s New In Python 3.3 ============================ This article explains the new features in Python 3.3, compared to 3.2. @@ -27760,7 +25182,7 @@ PEP 398(2) - Python 3.3 Release Schedule * Menu: -* Summary – Release highlights: Summary – Release highlights<5>. +* Summary – Release highlights: Summary – Release highlights<4>. * PEP 405; Virtual Environments: PEP 405 Virtual Environments. * PEP 420; Implicit Namespace Packages: PEP 420 Implicit Namespace Packages. * PEP 3118; New memoryview implementation and buffer protocol documentation: PEP 3118 New memoryview implementation and buffer protocol documentation. @@ -27775,14 +25197,14 @@ PEP 398(2) - Python 3.3 Release Schedule * PEP 362; Function Signature Object: PEP 362 Function Signature Object. * PEP 421; Adding sys.implementation: PEP 421 Adding sys implementation. * Using importlib as the Implementation of Import:: -* Other Language Changes: Other Language Changes<7>. +* Other Language Changes: Other Language Changes<6>. * A Finer-Grained Import Lock:: * Builtin functions and types:: -* New Modules: New Modules<7>. -* Improved Modules: Improved Modules<7>. -* Optimizations: Optimizations<6>. +* New Modules: New Modules<6>. +* Improved Modules: Improved Modules<6>. +* Optimizations: Optimizations<5>. * Build and C API Changes: Build and C API Changes<4>. -* Deprecated: Deprecated<6>. +* Deprecated: Deprecated<5>. * Porting to Python 3.3: Porting to Python 3 3. ---------- Footnotes ---------- @@ -27792,52 +25214,52 @@ PEP 398(2) - Python 3.3 Release Schedule (2) https://www.python.org/dev/peps/pep-0398  -File: python.info, Node: Summary – Release highlights<5>, Next: PEP 405 Virtual Environments, Up: What’s New In Python 3 3 +File: python.info, Node: Summary – Release highlights<4>, Next: PEP 405 Virtual Environments, Up: What’s New In Python 3 3 -1.7.1 Summary – Release highlights +1.6.1 Summary – Release highlights ---------------------------------- New syntax features: - * New ‘yield from’ expression for *note generator delegation: a5b. + * New ‘yield from’ expression for *note generator delegation: 959. - * The ‘u'unicode'’ syntax is accepted again for *note str: 205. + * The ‘u'unicode'’ syntax is accepted again for *note str: 321. objects. New library modules: - * *note faulthandler: 7b. (helps debugging low-level crashes) + * *note faulthandler: 7d. (helps debugging low-level crashes) - * *note ipaddress: a2. (high-level objects representing IP addresses + * *note ipaddress: a3. (high-level objects representing IP addresses and masks) - * *note lzma: ad. (compress data using the XZ / LZMA algorithm) + * *note lzma: ae. (compress data using the XZ / LZMA algorithm) - * *note unittest.mock: 125. (replace parts of your system under test + * *note unittest.mock: 11d. (replace parts of your system under test with mock objects) - * *note venv: 12e. (Python *note virtual environments: a5c, as in the + * *note venv: 126. (Python *note virtual environments: 95a, as in the popular ‘virtualenv’ package) New built-in features: - * Reworked *note I/O exception hierarchy: a5d. + * Reworked *note I/O exception hierarchy: 95b. Implementation improvements: - * Rewritten *note import machinery: a5e. based on *note importlib: - 9a. + * Rewritten *note import machinery: 95c. based on *note importlib: + 9b. - * More compact *note unicode strings: a5f. + * More compact *note unicode strings: 95d. - * More compact *note attribute dictionaries: a60. + * More compact *note attribute dictionaries: 95e. Significantly Improved Library Modules: - * C Accelerator for the *note decimal: a61. module. + * C Accelerator for the *note decimal: 95f. module. - * Better unicode handling in the *note email: a62. module (*note - provisional: a63.). + * Better unicode handling in the *note email: 960. module (*note + provisional: 961.). Security improvements: @@ -27846,9 +25268,9 @@ Security improvements: Please read on for a comprehensive list of user-facing changes.  -File: python.info, Node: PEP 405 Virtual Environments, Next: PEP 420 Implicit Namespace Packages, Prev: Summary – Release highlights<5>, Up: What’s New In Python 3 3 +File: python.info, Node: PEP 405 Virtual Environments, Next: PEP 420 Implicit Namespace Packages, Prev: Summary – Release highlights<4>, Up: What’s New In Python 3 3 -1.7.2 PEP 405: Virtual Environments +1.6.2 PEP 405: Virtual Environments ----------------------------------- Virtual environments help create separate Python setups while sharing a @@ -27859,7 +25281,7 @@ packages. Their concept and implementation are inspired by the popular ‘virtualenv’ third-party package, but benefit from tighter integration with the interpreter core. -This PEP adds the *note venv: 12e. module for programmatic access, and +This PEP adds the *note venv: 126. module for programmatic access, and the ‘pyvenv’ script for command-line access and administration. The Python interpreter checks for a ‘pyvenv.cfg’, file whose existence signals the base of a virtual environment’s directory tree. @@ -27879,7 +25301,7 @@ PEP 405(1) - Python Virtual Environments  File: python.info, Node: PEP 420 Implicit Namespace Packages, Next: PEP 3118 New memoryview implementation and buffer protocol documentation, Prev: PEP 405 Virtual Environments, Up: What’s New In Python 3 3 -1.7.3 PEP 420: Implicit Namespace Packages +1.6.3 PEP 420: Implicit Namespace Packages ------------------------------------------ Native support for package directories that don’t require ‘__init__.py’ @@ -27904,7 +25326,7 @@ PEP 420(2) - Implicit Namespace Packages  File: python.info, Node: PEP 3118 New memoryview implementation and buffer protocol documentation, Next: PEP 393 Flexible String Representation, Prev: PEP 420 Implicit Namespace Packages, Up: What’s New In Python 3 3 -1.7.4 PEP 3118: New memoryview implementation and buffer protocol documentation +1.6.4 PEP 3118: New memoryview implementation and buffer protocol documentation ------------------------------------------------------------------------------- The implementation of PEP 3118(1) has been significantly improved. @@ -27937,7 +25359,7 @@ non-contiguous and multi-dimensional NumPy-style arrays is explained.  File: python.info, Node: Features, Next: API changes, Up: PEP 3118 New memoryview implementation and buffer protocol documentation -1.7.4.1 Features +1.6.4.1 Features ................ * All native single character format specifiers in struct module @@ -27966,7 +25388,7 @@ File: python.info, Node: Features, Next: API changes, Up: PEP 3118 New memory  File: python.info, Node: API changes, Prev: Features, Up: PEP 3118 New memoryview implementation and buffer protocol documentation -1.7.4.2 API changes +1.6.4.2 API changes ................... * The maximum number of dimensions is officially limited to 64. @@ -27984,8 +25406,8 @@ File: python.info, Node: API changes, Prev: Features, Up: PEP 3118 New memory unrecognised format strings are still permitted, but will always compare as unequal, regardless of view contents. - * For further changes see *note Build and C API Changes: a6a. and - *note Porting C code: a6b. + * For further changes see *note Build and C API Changes: 968. and + *note Porting C code: 969. (Contributed by Stefan Krah in bpo-10181(1).) @@ -28003,7 +25425,7 @@ PEP 3118(2) - Revising the Buffer Protocol  File: python.info, Node: PEP 393 Flexible String Representation, Next: PEP 397 Python Launcher for Windows, Prev: PEP 3118 New memoryview implementation and buffer protocol documentation, Up: What’s New In Python 3 3 -1.7.5 PEP 393: Flexible String Representation +1.6.5 PEP 393: Flexible String Representation --------------------------------------------- The Unicode string type is changed to support multiple internal @@ -28035,7 +25457,7 @@ storage).  File: python.info, Node: Functionality, Next: Performance and resource usage, Up: PEP 393 Flexible String Representation -1.7.5.1 Functionality +1.6.5.1 Functionality ..................... Changes introduced by PEP 393(1) are the following: @@ -28048,7 +25470,7 @@ Changes introduced by PEP 393(1) are the following: * With the death of narrow builds, the problems specific to narrow builds have also been fixed, for example: - * *note len(): 28e. now always returns 1 for non-BMP characters, + * *note len(): 151. now always returns 1 for non-BMP characters, so ‘len('\U0010FFFF') == 1’; * surrogate pairs are not recombined in string literals, so @@ -28061,7 +25483,7 @@ Changes introduced by PEP 393(1) are the following: * all other functions in the standard library now correctly handle non-BMP code points. - * The value of *note sys.maxunicode: a6e. is now always ‘1114111’ + * The value of *note sys.maxunicode: 96c. is now always ‘1114111’ (‘0x10FFFF’ in hexadecimal). The ‘PyUnicode_GetMax()’ function still returns either ‘0xFFFF’ or ‘0x10FFFF’ for backward compatibility, and it should not be used with the new Unicode API @@ -28078,7 +25500,7 @@ Changes introduced by PEP 393(1) are the following:  File: python.info, Node: Performance and resource usage, Prev: Functionality, Up: PEP 393 Flexible String Representation -1.7.5.2 Performance and resource usage +1.6.5.2 Performance and resource usage ...................................... The storage of Unicode strings now depends on the highest code point in @@ -28116,7 +25538,7 @@ PEP 393(1) - Flexible String Representation  File: python.info, Node: PEP 397 Python Launcher for Windows, Next: PEP 3151 Reworking the OS and IO exception hierarchy, Prev: PEP 393 Flexible String Representation, Up: What’s New In Python 3 3 -1.7.6 PEP 397: Python Launcher for Windows +1.6.6 PEP 397: Python Launcher for Windows ------------------------------------------ The Python 3.3 Windows installer now includes a ‘py’ launcher @@ -28149,9 +25571,9 @@ PEP 397(2) - Python Launcher for Windows PEP written by Mark Hammond and Martin v. Löwis; implementation by Vinay Sajip. -Launcher documentation: *note Python Launcher for Windows: a72. +Launcher documentation: *note Python Launcher for Windows: 970. -Installer PATH modification: *note Finding the Python executable: a73. +Installer PATH modification: *note Finding the Python executable: 971. ---------- Footnotes ---------- @@ -28162,58 +25584,58 @@ Installer PATH modification: *note Finding the Python executable: a73.  File: python.info, Node: PEP 3151 Reworking the OS and IO exception hierarchy, Next: PEP 380 Syntax for Delegating to a Subgenerator, Prev: PEP 397 Python Launcher for Windows, Up: What’s New In Python 3 3 -1.7.7 PEP 3151: Reworking the OS and IO exception hierarchy +1.6.7 PEP 3151: Reworking the OS and IO exception hierarchy ----------------------------------------------------------- The hierarchy of exceptions raised by operating system errors is now both simplified and finer-grained. You don’t have to worry anymore about choosing the appropriate exception -type between *note OSError: 307, *note IOError: a75, *note -EnvironmentError: a76, *note WindowsError: a77, ‘mmap.error’, *note -socket.error: a78. or *note select.error: a79. All these exception -types are now only one: *note OSError: 307. The other names are kept as +type between *note OSError: 1bf, *note IOError: 973, *note +EnvironmentError: 974, *note WindowsError: 975, ‘mmap.error’, *note +socket.error: 976. or *note select.error: 977. All these exception +types are now only one: *note OSError: 1bf. The other names are kept as aliases for compatibility reasons. Also, it is now easier to catch a specific error condition. Instead of inspecting the ‘errno’ attribute (or ‘args[0]’) for a particular -constant from the *note errno: 7a. module, you can catch the adequate -*note OSError: 307. subclass. The available subclasses are the +constant from the *note errno: 7c. module, you can catch the adequate +*note OSError: 1bf. subclass. The available subclasses are the following: - * *note BlockingIOError: a7a. + * *note BlockingIOError: 978. - * *note ChildProcessError: a7b. + * *note ChildProcessError: 979. - * *note ConnectionError: 7d9. + * *note ConnectionError: 6cd. - * *note FileExistsError: a3b. + * *note FileExistsError: 939. - * *note FileNotFoundError: 8af. + * *note FileNotFoundError: 7a5. - * *note InterruptedError: 74e. + * *note InterruptedError: 642. - * *note IsADirectoryError: a7c. + * *note IsADirectoryError: 97a. - * *note NotADirectoryError: a7d. + * *note NotADirectoryError: 97b. - * *note PermissionError: 6f8. + * *note PermissionError: 5ec. - * *note ProcessLookupError: a7e. + * *note ProcessLookupError: 97c. - * *note TimeoutError: a7f. + * *note TimeoutError: 97d. -And the *note ConnectionError: 7d9. itself has finer-grained subclasses: +And the *note ConnectionError: 6cd. itself has finer-grained subclasses: - * *note BrokenPipeError: a80. + * *note BrokenPipeError: 97e. - * *note ConnectionAbortedError: a81. + * *note ConnectionAbortedError: 97f. - * *note ConnectionRefusedError: a82. + * *note ConnectionRefusedError: 980. - * *note ConnectionResetError: a83. + * *note ConnectionResetError: 981. -Thanks to the new exceptions, common usages of the *note errno: 7a. can +Thanks to the new exceptions, common usages of the *note errno: 7c. can now be avoided. For example, the following code written for Python 3.2: from errno import ENOENT, EACCES, EPERM @@ -28229,7 +25651,7 @@ now be avoided. For example, the following code written for Python 3.2: else: raise -can now be written without the *note errno: 7a. import and without +can now be written without the *note errno: 7c. import and without manual inspection of exception attributes: try: @@ -28254,12 +25676,12 @@ PEP 3151(1) - Reworking the OS and IO Exception Hierarchy  File: python.info, Node: PEP 380 Syntax for Delegating to a Subgenerator, Next: PEP 409 Suppressing exception context, Prev: PEP 3151 Reworking the OS and IO exception hierarchy, Up: What’s New In Python 3 3 -1.7.8 PEP 380: Syntax for Delegating to a Subgenerator +1.6.8 PEP 380: Syntax for Delegating to a Subgenerator ------------------------------------------------------ PEP 380 adds the ‘yield from’ expression, allowing a *note generator: -a85. to delegate part of its operations to another generator. This -allows a section of code containing *note yield: 2ca. to be factored out +983. to delegate part of its operations to another generator. This +allows a section of code containing *note yield: 17c. to be factored out and placed in another generator. Additionally, the subgenerator is allowed to return with a value, and the value is made available to the delegating generator. @@ -28330,7 +25752,7 @@ PEP 380(1) - Syntax for Delegating to a Subgenerator  File: python.info, Node: PEP 409 Suppressing exception context, Next: PEP 414 Explicit Unicode literals, Prev: PEP 380 Syntax for Delegating to a Subgenerator, Up: What’s New In Python 3 3 -1.7.9 PEP 409: Suppressing exception context +1.6.9 PEP 409: Suppressing exception context -------------------------------------------- PEP 409 introduces new syntax that allows the display of the chained @@ -28402,7 +25824,7 @@ PEP 409(1) - Suppressing exception context  File: python.info, Node: PEP 414 Explicit Unicode literals, Next: PEP 3155 Qualified name for classes and functions, Prev: PEP 409 Suppressing exception context, Up: What’s New In Python 3 3 -1.7.10 PEP 414: Explicit Unicode literals +1.6.10 PEP 414: Explicit Unicode literals ----------------------------------------- To ease the transition from Python 2 for Unicode aware Python @@ -28427,7 +25849,7 @@ PEP 414(1) - Explicit Unicode literals  File: python.info, Node: PEP 3155 Qualified name for classes and functions, Next: PEP 412 Key-Sharing Dictionary, Prev: PEP 414 Explicit Unicode literals, Up: What’s New In Python 3 3 -1.7.11 PEP 3155: Qualified name for classes and functions +1.6.11 PEP 3155: Qualified name for classes and functions --------------------------------------------------------- Functions and class objects have a new ‘__qualname__’ attribute @@ -28497,7 +25919,7 @@ PEP 3155(1) - Qualified name for classes and functions  File: python.info, Node: PEP 412 Key-Sharing Dictionary, Next: PEP 362 Function Signature Object, Prev: PEP 3155 Qualified name for classes and functions, Up: What’s New In Python 3 3 -1.7.12 PEP 412: Key-Sharing Dictionary +1.6.12 PEP 412: Key-Sharing Dictionary -------------------------------------- Dictionaries used for the storage of objects’ attributes are now able to @@ -28520,15 +25942,15 @@ PEP 412(1) - Key-Sharing Dictionary  File: python.info, Node: PEP 362 Function Signature Object, Next: PEP 421 Adding sys implementation, Prev: PEP 412 Key-Sharing Dictionary, Up: What’s New In Python 3 3 -1.7.13 PEP 362: Function Signature Object +1.6.13 PEP 362: Function Signature Object ----------------------------------------- -A new function *note inspect.signature(): 657. makes introspection of +A new function *note inspect.signature(): 548. makes introspection of python callables easy and straightforward. A broad range of callables is supported: python functions, decorated or not, classes, and *note -functools.partial(): 8b7. objects. New classes *note inspect.Signature: -7e6, *note inspect.Parameter: 7e7. and *note inspect.BoundArguments: -a8b. hold information about the call signatures, such as, annotations, +functools.partial(): 7ad. objects. New classes *note inspect.Signature: +6da, *note inspect.Parameter: 6db. and *note inspect.BoundArguments: +989. hold information about the call signatures, such as, annotations, default values, parameters kinds, and bound arguments, which considerably simplifies writing decorators and any code that validates or amends calling signatures or arguments. @@ -28548,12 +25970,12 @@ PEP 362(1): - Function Signature Object  File: python.info, Node: PEP 421 Adding sys implementation, Next: Using importlib as the Implementation of Import, Prev: PEP 362 Function Signature Object, Up: What’s New In Python 3 3 -1.7.14 PEP 421: Adding sys.implementation +1.6.14 PEP 421: Adding sys.implementation ----------------------------------------- -A new attribute on the *note sys: fd. module exposes details specific to +A new attribute on the *note sys: fe. module exposes details specific to the implementation of the currently running interpreter. The initial -set of attributes on *note sys.implementation: a8d. are ‘name’, +set of attributes on *note sys.implementation: 98b. are ‘name’, ‘version’, ‘hexversion’, and ‘cache_tag’. The intention of ‘sys.implementation’ is to consolidate into one @@ -28566,7 +25988,7 @@ to make the standard library more portable. One example of improved standard library portability is ‘cache_tag’. As of Python 3.3, ‘sys.implementation.cache_tag’ is used by *note -importlib: 9a. to support PEP 3147(1) compliance. Any Python +importlib: 9b. to support PEP 3147(1) compliance. Any Python implementation that uses ‘importlib’ for its built-in import system may use ‘cache_tag’ to control the caching behavior for modules. @@ -28581,13 +26003,13 @@ use ‘cache_tag’ to control the caching behavior for modules.  File: python.info, Node: SimpleNamespace, Up: PEP 421 Adding sys implementation -1.7.14.1 SimpleNamespace +1.6.14.1 SimpleNamespace ........................ The implementation of ‘sys.implementation’ also introduces a new type to -Python: *note types.SimpleNamespace: 1d8. In contrast to a -mapping-based namespace, like *note dict: 164, ‘SimpleNamespace’ is -attribute-based, like *note object: 3d5. However, unlike ‘object’, +Python: *note types.SimpleNamespace: 98d. In contrast to a +mapping-based namespace, like *note dict: 1a4, ‘SimpleNamespace’ is +attribute-based, like *note object: 29b. However, unlike ‘object’, ‘SimpleNamespace’ instances are writable. This means that you can add, remove, and modify the namespace through normal attribute access. @@ -28603,18 +26025,18 @@ PEP 421(1) - Adding sys.implementation (1) https://www.python.org/dev/peps/pep-0421  -File: python.info, Node: Using importlib as the Implementation of Import, Next: Other Language Changes<7>, Prev: PEP 421 Adding sys implementation, Up: What’s New In Python 3 3 +File: python.info, Node: Using importlib as the Implementation of Import, Next: Other Language Changes<6>, Prev: PEP 421 Adding sys implementation, Up: What’s New In Python 3 3 -1.7.15 Using importlib as the Implementation of Import +1.6.15 Using importlib as the Implementation of Import ------------------------------------------------------ bpo-2377(1) - Replace __import__ w/ importlib.__import__ bpo-13959(2) - -Re-implement parts of *note imp: 99. in pure Python bpo-14605(3) - Make +Re-implement parts of *note imp: 9a. in pure Python bpo-14605(3) - Make import machinery explicit bpo-14646(4) - Require loaders set __loader__ and __package__ -The *note __import__(): 16b. function is now powered by *note -importlib.__import__(): a90. This work leads to the completion of +The *note __import__(): 5fd. function is now powered by *note +importlib.__import__(): 98f. This work leads to the completion of “phase 2” of PEP 302(5). There are multiple benefits to this change. First, it has allowed for more of the machinery powering import to be exposed instead of being implicit and hidden within the C code. It also @@ -28626,7 +26048,7 @@ future growth to occur. For the common user, there should be no visible change in semantics. For those whose code currently manipulates import or calls import programmatically, the code changes that might possibly be required are -covered in the *note Porting Python code: a91. section of this document. +covered in the *note Porting Python code: 990. section of this document. * Menu: @@ -28648,57 +26070,57 @@ covered in the *note Porting Python code: a91. section of this document.  File: python.info, Node: New APIs, Next: Visible Changes, Up: Using importlib as the Implementation of Import -1.7.15.1 New APIs +1.6.15.1 New APIs ................. One of the large benefits of this work is the exposure of what goes into making the import statement work. That means the various importers that were once implicit are now fully exposed as part of the *note importlib: -9a. package. +9b. package. -The abstract base classes defined in *note importlib.abc: 9b. have been -expanded to properly delineate between *note meta path finders: a93. and -*note path entry finders: a94. by introducing *note -importlib.abc.MetaPathFinder: a95. and *note -importlib.abc.PathEntryFinder: a96, respectively. The old ABC of *note -importlib.abc.Finder: a97. is now only provided for +The abstract base classes defined in *note importlib.abc: 9c. have been +expanded to properly delineate between *note meta path finders: 992. and +*note path entry finders: 993. by introducing *note +importlib.abc.MetaPathFinder: 994. and *note +importlib.abc.PathEntryFinder: 995, respectively. The old ABC of *note +importlib.abc.Finder: 996. is now only provided for backwards-compatibility and does not enforce any method requirements. -In terms of finders, *note importlib.machinery.FileFinder: a98. exposes +In terms of finders, *note importlib.machinery.FileFinder: 997. exposes the mechanism used to search for source and bytecode files of a module. Previously this class was an implicit member of *note sys.path_hooks: -a3f. +93d. For loaders, the new abstract base class *note importlib.abc.FileLoader: -a99. helps write a loader that uses the file system as the storage +998. helps write a loader that uses the file system as the storage mechanism for a module’s code. The loader for source files (*note -importlib.machinery.SourceFileLoader: a9a.), sourceless bytecode files -(*note importlib.machinery.SourcelessFileLoader: a9b.), and extension -modules (*note importlib.machinery.ExtensionFileLoader: 652.) are now +importlib.machinery.SourceFileLoader: 999.), sourceless bytecode files +(*note importlib.machinery.SourcelessFileLoader: 99a.), and extension +modules (*note importlib.machinery.ExtensionFileLoader: 543.) are now available for direct use. -*note ImportError: 16c. now has ‘name’ and ‘path’ attributes which are +*note ImportError: 325. now has ‘name’ and ‘path’ attributes which are set when there is relevant data to provide. The message for failed imports will also provide the full name of the module now instead of just the tail end of the module’s name. -The *note importlib.invalidate_caches(): 599. function will now call the +The *note importlib.invalidate_caches(): 48d. function will now call the method with the same name on all finders cached in *note -sys.path_importer_cache: 59a. to help clean up any stored state as +sys.path_importer_cache: 48e. to help clean up any stored state as necessary.  File: python.info, Node: Visible Changes, Prev: New APIs, Up: Using importlib as the Implementation of Import -1.7.15.2 Visible Changes +1.6.15.2 Visible Changes ........................ For potential required changes to code, see the *note Porting Python -code: a91. section. +code: 990. section. -Beyond the expanse of what *note importlib: 9a. now exposes, there are +Beyond the expanse of what *note importlib: 9b. now exposes, there are other visible changes to import. The biggest is that *note -sys.meta_path: 6df. and *note sys.path_hooks: a3f. now store all of the +sys.meta_path: 5d3. and *note sys.path_hooks: 93d. now store all of the meta path finders and path entry hooks used by import. Previously the finders were implicit and hidden within the C code of import instead of being directly exposed. This means that one can now easily remove or @@ -28713,18 +26135,18 @@ import is setting the module post-load. Loaders are also now expected to set the ‘__package__’ attribute from PEP 366(2). Once again, import itself is already setting this on all -loaders from *note importlib: 9a. and import itself is setting the +loaders from *note importlib: 9b. and import itself is setting the attribute post-load. -‘None’ is now inserted into *note sys.path_importer_cache: 59a. when no -finder can be found on *note sys.path_hooks: a3f. Since *note -imp.NullImporter: a9d. is not directly exposed on *note sys.path_hooks: -a3f. it could no longer be relied upon to always be available to use as +‘None’ is now inserted into *note sys.path_importer_cache: 48e. when no +finder can be found on *note sys.path_hooks: 93d. Since *note +imp.NullImporter: 99c. is not directly exposed on *note sys.path_hooks: +93d. it could no longer be relied upon to always be available to use as a value representing no finder found. All other changes relate to semantic changes which should be taken into consideration when updating code for Python 3.3, and thus should be read -about in the *note Porting Python code: a91. section of this document. +about in the *note Porting Python code: 990. section of this document. (Implementation by Brett Cannon) @@ -28735,40 +26157,40 @@ about in the *note Porting Python code: a91. section of this document. (2) https://www.python.org/dev/peps/pep-0366  -File: python.info, Node: Other Language Changes<7>, Next: A Finer-Grained Import Lock, Prev: Using importlib as the Implementation of Import, Up: What’s New In Python 3 3 +File: python.info, Node: Other Language Changes<6>, Next: A Finer-Grained Import Lock, Prev: Using importlib as the Implementation of Import, Up: What’s New In Python 3 3 -1.7.16 Other Language Changes +1.6.16 Other Language Changes ----------------------------- Some smaller changes made to the core Python language are: * Added support for Unicode name aliases and named sequences. Both - *note unicodedata.lookup(): a9f. and ‘'\N{...}'’ now resolve name - aliases, and *note unicodedata.lookup(): a9f. resolves named + *note unicodedata.lookup(): 99e. and ‘'\N{...}'’ now resolve name + aliases, and *note unicodedata.lookup(): 99e. resolves named sequences too. (Contributed by Ezio Melotti in bpo-12753(1).) * Unicode database updated to UCD version 6.1.0 - * Equality comparisons on *note range(): 1f5. objects now return a + * Equality comparisons on *note range(): 99f. objects now return a result reflecting the equality of the underlying sequences generated by those range objects. (bpo-13201(2)) * The ‘count()’, ‘find()’, ‘rfind()’, ‘index()’ and ‘rindex()’ - methods of *note bytes: 172. and *note bytearray: 173. objects now + methods of *note bytes: 322. and *note bytearray: 323. objects now accept an integer between 0 and 255 as their first argument. (Contributed by Petri Lehtinen in bpo-12170(3).) * The ‘rjust()’, ‘ljust()’, and ‘center()’ methods of *note bytes: - 172. and *note bytearray: 173. now accept a *note bytearray: 173. + 322. and *note bytearray: 323. now accept a *note bytearray: 323. for the ‘fill’ argument. (Contributed by Petri Lehtinen in bpo-12380(4).) - * New methods have been added to *note list: 1f8. and *note - bytearray: 173.: ‘copy()’ and ‘clear()’ (bpo-10516(5)). - Consequently, *note MutableSequence: 7a1. now also defines a + * New methods have been added to *note list: 24e. and *note + bytearray: 323.: ‘copy()’ and ‘clear()’ (bpo-10516(5)). + Consequently, *note MutableSequence: 695. now also defines a ‘clear()’ method (bpo-11388(6)). * Raw bytes literals can now be written ‘rb"..."’ as well as @@ -28776,7 +26198,7 @@ Some smaller changes made to the core Python language are: (Contributed by Antoine Pitrou in bpo-13748(7).) - * *note dict.setdefault(): aa0. now does only one lookup for the + * *note dict.setdefault(): 9a0. now does only one lookup for the given key, making it atomic when used with built-in types. (Contributed by Filip Gruszczyński in bpo-13521(8).) @@ -28805,16 +26227,16 @@ Some smaller changes made to the core Python language are: (8) https://bugs.python.org/issue13521  -File: python.info, Node: A Finer-Grained Import Lock, Next: Builtin functions and types, Prev: Other Language Changes<7>, Up: What’s New In Python 3 3 +File: python.info, Node: A Finer-Grained Import Lock, Next: Builtin functions and types, Prev: Other Language Changes<6>, Up: What’s New In Python 3 3 -1.7.17 A Finer-Grained Import Lock +1.6.17 A Finer-Grained Import Lock ---------------------------------- Previous versions of CPython have always relied on a global import lock. This led to unexpected annoyances, such as deadlocks when importing a module would trigger code execution in a different thread as a side-effect. Clumsy workarounds were sometimes employed, such as the -*note PyImport_ImportModuleNoBlock(): aa2. C API function. +*note PyImport_ImportModuleNoBlock(): 9a2. C API function. In Python 3.3, importing a module takes a per-module lock. This correctly serializes importation of a given module from multiple threads @@ -28828,25 +26250,25 @@ eliminating the aforementioned annoyances. (1) https://bugs.python.org/issue9260  -File: python.info, Node: Builtin functions and types, Next: New Modules<7>, Prev: A Finer-Grained Import Lock, Up: What’s New In Python 3 3 +File: python.info, Node: Builtin functions and types, Next: New Modules<6>, Prev: A Finer-Grained Import Lock, Up: What’s New In Python 3 3 -1.7.18 Builtin functions and types +1.6.18 Builtin functions and types ---------------------------------- - * *note open(): 16f. gets a new `opener' parameter: the underlying + * *note open(): 4e1. gets a new `opener' parameter: the underlying file descriptor for the file object is then obtained by calling `opener' with (`file', `flags'). It can be used to use custom - flags like *note os.O_CLOEXEC: aa4. for example. The ‘'x'’ mode + flags like *note os.O_CLOEXEC: 9a4. for example. The ‘'x'’ mode was added: open for exclusive creation, failing if the file already exists. - * *note print(): 973.: added the `flush' keyword argument. If the + * *note print(): 86b.: added the `flush' keyword argument. If the `flush' keyword argument is true, the stream is forcibly flushed. - * *note hash(): aa5.: hash randomization is enabled by default, see - *note object.__hash__(): 44e. and *note PYTHONHASHSEED: aa6. + * *note hash(): 9a5.: hash randomization is enabled by default, see + *note object.__hash__(): 331. and *note PYTHONHASHSEED: 9a6. - * The *note str: 205. type gets a new *note casefold(): 7a5. method: + * The *note str: 321. type gets a new *note casefold(): 697. method: return a casefolded copy of the string, casefolded strings may be used for caseless matching. For example, ‘'ß'.casefold()’ returns ‘'ss'’. @@ -28861,30 +26283,30 @@ File: python.info, Node: Builtin functions and types, Next: New Modules<7>, P (1) https://bugs.python.org/issue4966  -File: python.info, Node: New Modules<7>, Next: Improved Modules<7>, Prev: Builtin functions and types, Up: What’s New In Python 3 3 +File: python.info, Node: New Modules<6>, Next: Improved Modules<6>, Prev: Builtin functions and types, Up: What’s New In Python 3 3 -1.7.19 New Modules +1.6.19 New Modules ------------------ * Menu: * faulthandler: faulthandler<3>. -* ipaddress: ipaddress<5>. +* ipaddress: ipaddress<4>. * lzma: lzma<2>.  -File: python.info, Node: faulthandler<3>, Next: ipaddress<5>, Up: New Modules<7> +File: python.info, Node: faulthandler<3>, Next: ipaddress<4>, Up: New Modules<6> -1.7.19.1 faulthandler +1.6.19.1 faulthandler ..................... -This new debug module *note faulthandler: 7b. contains functions to dump +This new debug module *note faulthandler: 7d. contains functions to dump Python tracebacks explicitly, on a fault (a crash like a segmentation fault), after a timeout, or on a user signal. Call *note -faulthandler.enable(): 644. to install fault handlers for the ‘SIGSEGV’, +faulthandler.enable(): 535. to install fault handlers for the ‘SIGSEGV’, ‘SIGFPE’, ‘SIGABRT’, ‘SIGBUS’, and ‘SIGILL’ signals. You can also -enable them at startup by setting the *note PYTHONFAULTHANDLER: aa9. -environment variable or by using *note -X: 293. ‘faulthandler’ command +enable them at startup by setting the *note PYTHONFAULTHANDLER: 9a9. +environment variable or by using *note -X: 156. ‘faulthandler’ command line option. Example of a segmentation fault on Linux: @@ -28900,12 +26322,12 @@ Example of a segmentation fault on Linux: Segmentation fault  -File: python.info, Node: ipaddress<5>, Next: lzma<2>, Prev: faulthandler<3>, Up: New Modules<7> +File: python.info, Node: ipaddress<4>, Next: lzma<2>, Prev: faulthandler<3>, Up: New Modules<6> -1.7.19.2 ipaddress +1.6.19.2 ipaddress .................. -The new *note ipaddress: a2. module provides tools for creating and +The new *note ipaddress: a3. module provides tools for creating and manipulating objects representing IPv4 and IPv6 addresses, networks and interfaces (i.e. an IP address associated with a specific IP subnet). @@ -28916,12 +26338,12 @@ interfaces (i.e. an IP address associated with a specific IP subnet). (1) https://www.python.org/dev/peps/pep-3144  -File: python.info, Node: lzma<2>, Prev: ipaddress<5>, Up: New Modules<7> +File: python.info, Node: lzma<2>, Prev: ipaddress<4>, Up: New Modules<6> -1.7.19.3 lzma +1.6.19.3 lzma ............. -The newly-added *note lzma: ad. module provides data compression and +The newly-added *note lzma: ae. module provides data compression and decompression using the LZMA algorithm, including support for the ‘.xz’ and ‘.lzma’ file formats. @@ -28932,9 +26354,9 @@ and ‘.lzma’ file formats. (1) https://bugs.python.org/issue6715  -File: python.info, Node: Improved Modules<7>, Next: Optimizations<6>, Prev: New Modules<7>, Up: What’s New In Python 3 3 +File: python.info, Node: Improved Modules<6>, Next: Optimizations<5>, Prev: New Modules<6>, Up: What’s New In Python 3 3 -1.7.20 Improved Modules +1.6.20 Improved Modules ----------------------- * Menu: @@ -28948,50 +26370,50 @@ File: python.info, Node: Improved Modules<7>, Next: Optimizations<6>, Prev: N * collections: collections<7>. * contextlib: contextlib<5>. * crypt: crypt<2>. -* curses: curses<4>. -* datetime: datetime<5>. +* curses: curses<3>. +* datetime: datetime<4>. * decimal: decimal<3>. * email: email<4>. -* ftplib: ftplib<2>. +* ftplib:: * functools: functools<5>. -* gc: gc<5>. +* gc: gc<4>. * hmac: hmac<3>. -* http: http<4>. +* http: http<3>. * html: html<2>. -* imaplib: imaplib<3>. -* inspect: inspect<6>. +* imaplib: imaplib<2>. +* inspect: inspect<5>. * io: io<4>. * itertools: itertools<3>. * logging: logging<6>. -* math: math<6>. +* math: math<5>. * mmap: mmap<3>. -* multiprocessing: multiprocessing<7>. -* nntplib: nntplib<2>. -* os: os<8>. -* pdb: pdb<5>. +* multiprocessing: multiprocessing<6>. +* nntplib:: +* os: os<7>. +* pdb: pdb<4>. * pickle: pickle<5>. -* pydoc: pydoc<5>. +* pydoc: pydoc<4>. * re: re<6>. * sched:: * select: select<2>. * shlex: shlex<3>. * shutil: shutil<4>. -* signal: signal<4>. +* signal: signal<3>. * smtpd: smtpd<3>. -* smtplib: smtplib<4>. -* socket: socket<8>. +* smtplib: smtplib<3>. +* socket: socket<7>. * socketserver: socketserver<3>. * sqlite3: sqlite3<5>. * ssl: ssl<8>. * stat: stat<2>. * struct: struct<3>. * subprocess: subprocess<5>. -* sys: sys<8>. +* sys: sys<7>. * tarfile: tarfile<4>. * tempfile:: * textwrap: textwrap<2>. * threading: threading<5>. -* time: time<6>. +* time: time<5>. * types: types<4>. * unittest: unittest<5>. * urllib: urllib<3>. @@ -29000,9 +26422,9 @@ File: python.info, Node: Improved Modules<7>, Next: Optimizations<6>, Prev: N * zlib: zlib<2>.  -File: python.info, Node: abc<2>, Next: array<2>, Up: Improved Modules<7> +File: python.info, Node: abc<2>, Next: array<2>, Up: Improved Modules<6> -1.7.20.1 abc +1.6.20.1 abc ............ Improved support for abstract base classes containing descriptors @@ -29011,21 +26433,21 @@ abstract descriptors is now to provide ‘__isabstractmethod__’ as a dynamically updated property. The built-in descriptors have been updated accordingly. - * *note abc.abstractproperty: aae. has been deprecated, use - *note property: 30b. with *note abc.abstractmethod(): aaf. + * *note abc.abstractproperty: 9ae. has been deprecated, use + *note property: 1c3. with *note abc.abstractmethod(): 9af. instead. - * *note abc.abstractclassmethod: ab0. has been deprecated, use - *note classmethod: 30c. with *note abc.abstractmethod(): aaf. + * *note abc.abstractclassmethod: 9b0. has been deprecated, use + *note classmethod: 1c4. with *note abc.abstractmethod(): 9af. instead. - * *note abc.abstractstaticmethod: ab1. has been deprecated, use - *note staticmethod: 30d. with *note abc.abstractmethod(): aaf. + * *note abc.abstractstaticmethod: 9b1. has been deprecated, use + *note staticmethod: 1c5. with *note abc.abstractmethod(): 9af. instead. (Contributed by Darren Dale in bpo-11610(1).) -*note abc.ABCMeta.register(): ab2. now returns the registered subclass, +*note abc.ABCMeta.register(): 9b2. now returns the registered subclass, which means it can now be used as a class decorator (bpo-10868(2)). ---------- Footnotes ---------- @@ -29035,13 +26457,13 @@ which means it can now be used as a class decorator (bpo-10868(2)). (2) https://bugs.python.org/issue10868  -File: python.info, Node: array<2>, Next: base64<2>, Prev: abc<2>, Up: Improved Modules<7> +File: python.info, Node: array<2>, Next: base64<2>, Prev: abc<2>, Up: Improved Modules<6> -1.7.20.2 array +1.6.20.2 array .............. -The *note array: 6. module supports the ‘long long’ type using ‘q’ and -‘Q’ type codes. +The *note array: 7. module supports the long long type using ‘q’ and ‘Q’ +type codes. (Contributed by Oren Tirosh and Hirokazu Yamamoto in bpo-1172711(1).) @@ -29050,13 +26472,13 @@ The *note array: 6. module supports the ‘long long’ type using ‘q’ and (1) https://bugs.python.org/issue1172711  -File: python.info, Node: base64<2>, Next: binascii<3>, Prev: array<2>, Up: Improved Modules<7> +File: python.info, Node: base64<2>, Next: binascii<3>, Prev: array<2>, Up: Improved Modules<6> -1.7.20.3 base64 +1.6.20.3 base64 ............... ASCII-only Unicode strings are now accepted by the decoding functions of -the *note base64: d. modern interface. For example, +the *note base64: e. modern interface. For example, ‘base64.b64decode('YWJj')’ returns ‘b'abc'’. (Contributed by Catalin Iacob in bpo-13641(1).) @@ -29065,9 +26487,9 @@ Iacob in bpo-13641(1).) (1) https://bugs.python.org/issue13641  -File: python.info, Node: binascii<3>, Next: bz2<2>, Prev: base64<2>, Up: Improved Modules<7> +File: python.info, Node: binascii<3>, Next: bz2<2>, Prev: base64<2>, Up: Improved Modules<6> -1.7.20.4 binascii +1.6.20.4 binascii ................. In addition to the binary objects they normally accept, the ‘a2b_’ @@ -29079,32 +26501,32 @@ by Antoine Pitrou in bpo-13637(1).) (1) https://bugs.python.org/issue13637  -File: python.info, Node: bz2<2>, Next: codecs, Prev: binascii<3>, Up: Improved Modules<7> +File: python.info, Node: bz2<2>, Next: codecs, Prev: binascii<3>, Up: Improved Modules<6> -1.7.20.5 bz2 +1.6.20.5 bz2 ............ -The *note bz2: 13. module has been rewritten from scratch. In the +The *note bz2: 14. module has been rewritten from scratch. In the process, several new features have been added: - * New *note bz2.open(): ab7. function: open a bzip2-compressed file + * New *note bz2.open(): 9b7. function: open a bzip2-compressed file in binary or text mode. - * *note bz2.BZ2File: 224. can now read from and write to arbitrary + * *note bz2.BZ2File: 912. can now read from and write to arbitrary file-like objects, by means of its constructor’s `fileobj' argument. (Contributed by Nadeem Vawda in bpo-5863(1).) - * *note bz2.BZ2File: 224. and *note bz2.decompress(): ab8. can now + * *note bz2.BZ2File: 912. and *note bz2.decompress(): 9b8. can now decompress multi-stream inputs (such as those produced by the - ‘pbzip2’ tool). *note bz2.BZ2File: 224. can now also be used to + ‘pbzip2’ tool). *note bz2.BZ2File: 912. can now also be used to create this type of file, using the ‘'a'’ (append) mode. (Contributed by Nir Aides in bpo-1625(2).) - * *note bz2.BZ2File: 224. now implements all of the *note - io.BufferedIOBase: 681. API, except for the ‘detach()’ and + * *note bz2.BZ2File: 912. now implements all of the *note + io.BufferedIOBase: 575. API, except for the ‘detach()’ and ‘truncate()’ methods. ---------- Footnotes ---------- @@ -29114,14 +26536,14 @@ process, several new features have been added: (2) https://bugs.python.org/issue1625  -File: python.info, Node: codecs, Next: collections<7>, Prev: bz2<2>, Up: Improved Modules<7> +File: python.info, Node: codecs, Next: collections<7>, Prev: bz2<2>, Up: Improved Modules<6> -1.7.20.6 codecs +1.6.20.6 codecs ............... -The *note mbcs: 76. codec has been rewritten to handle correctly +The *note mbcs: 78. codec has been rewritten to handle correctly ‘replace’ and ‘ignore’ error handlers on all Windows versions. The -*note mbcs: 76. codec now supports all error handlers, instead of only +*note mbcs: 78. codec now supports all error handlers, instead of only ‘replace’ to encode and ‘ignore’ to decode. A new Windows-only codec has been added: ‘cp65001’ (bpo-13216(1)). It @@ -29160,22 +26582,22 @@ The ‘unicode_internal’ codec has been deprecated. (3) https://bugs.python.org/issue12100  -File: python.info, Node: collections<7>, Next: contextlib<5>, Prev: codecs, Up: Improved Modules<7> +File: python.info, Node: collections<7>, Next: contextlib<5>, Prev: codecs, Up: Improved Modules<6> -1.7.20.7 collections +1.6.20.7 collections .................... -Addition of a new *note ChainMap: 5a6. class to allow treating a number +Addition of a new *note ChainMap: 49a. class to allow treating a number of mappings as a single unit. (Written by Raymond Hettinger for bpo-11089(1), made public in bpo-11297(2).) The abstract base classes have been moved in a new *note -collections.abc: 1e. module, to better differentiate between the +collections.abc: 1f. module, to better differentiate between the abstract and the concrete collections classes. Aliases for ABCs are -still present in the *note collections: 1d. module to preserve existing +still present in the *note collections: 1e. module to preserve existing imports. (bpo-11085(3)) -The *note Counter: abb. class now supports the unary ‘+’ and ‘-’ +The *note Counter: 9bb. class now supports the unary ‘+’ and ‘-’ operators, as well as the in-place operators ‘+=’, ‘-=’, ‘|=’, and ‘&=’. (Contributed by Raymond Hettinger in bpo-13121(4).) @@ -29190,18 +26612,18 @@ operators, as well as the in-place operators ‘+=’, ‘-=’, ‘|=’, and (4) https://bugs.python.org/issue13121  -File: python.info, Node: contextlib<5>, Next: crypt<2>, Prev: collections<7>, Up: Improved Modules<7> +File: python.info, Node: contextlib<5>, Next: crypt<2>, Prev: collections<7>, Up: Improved Modules<6> -1.7.20.8 contextlib +1.6.20.8 contextlib ................... -*note ExitStack: 480. now provides a solid foundation for programmatic +*note ExitStack: 367. now provides a solid foundation for programmatic manipulation of context managers and similar cleanup functionality. Unlike the previous ‘contextlib.nested’ API (which was deprecated and removed), the new API is designed to work correctly regardless of whether context managers acquire their resources in their ‘__init__’ method (for example, file objects) or in their ‘__enter__’ method (for -example, synchronisation objects from the *note threading: 10b. module). +example, synchronisation objects from the *note threading: 10a. module). (bpo-13585(1)) @@ -29210,13 +26632,13 @@ example, synchronisation objects from the *note threading: 10b. module). (1) https://bugs.python.org/issue13585  -File: python.info, Node: crypt<2>, Next: curses<4>, Prev: contextlib<5>, Up: Improved Modules<7> +File: python.info, Node: crypt<2>, Next: curses<3>, Prev: contextlib<5>, Up: Improved Modules<6> -1.7.20.9 crypt +1.6.20.9 crypt .............. Addition of salt and modular crypt format (hashing method) and the *note -mksalt(): 486. function to the *note crypt: 28. module. +mksalt(): 36d. function to the *note crypt: 29. module. (bpo-10924(1)) @@ -29225,12 +26647,12 @@ mksalt(): 486. function to the *note crypt: 28. module. (1) https://bugs.python.org/issue10924  -File: python.info, Node: curses<4>, Next: datetime<5>, Prev: crypt<2>, Up: Improved Modules<7> +File: python.info, Node: curses<3>, Next: datetime<4>, Prev: crypt<2>, Up: Improved Modules<6> -1.7.20.10 curses +1.6.20.10 curses ................ - * If the *note curses: 2b. module is linked to the ncursesw + * If the *note curses: 2c. module is linked to the ncursesw library, use Unicode functions when Unicode strings or characters are passed (e.g. ‘waddwstr()’), and bytes functions otherwise (e.g. ‘waddstr()’). @@ -29238,15 +26660,15 @@ File: python.info, Node: curses<4>, Next: datetime<5>, Prev: crypt<2>, Up: I * Use the locale encoding instead of ‘utf-8’ to encode Unicode strings. - * ‘curses.window’ has a new *note curses.window.encoding: abf. + * ‘curses.window’ has a new *note curses.window.encoding: 9bf. attribute. - * The ‘curses.window’ class has a new *note get_wch(): ac0. + * The ‘curses.window’ class has a new *note get_wch(): 9c0. method to get a wide character - * The *note curses: 2b. module has a new *note unget_wch(): ac1. + * The *note curses: 2c. module has a new *note unget_wch(): 9c1. function to push a wide character so the next *note get_wch(): - ac0. will return it + 9c0. will return it (Contributed by Iñigo Serna in bpo-6755(1).) @@ -29255,23 +26677,23 @@ File: python.info, Node: curses<4>, Next: datetime<5>, Prev: crypt<2>, Up: I (1) https://bugs.python.org/issue6755  -File: python.info, Node: datetime<5>, Next: decimal<3>, Prev: curses<4>, Up: Improved Modules<7> +File: python.info, Node: datetime<4>, Next: decimal<3>, Prev: curses<3>, Up: Improved Modules<6> -1.7.20.11 datetime +1.6.20.11 datetime .................. * Equality comparisons between naive and aware *note datetime: - 1a0. instances now return *note False: 491. instead of raising - *note TypeError: 1fe. (bpo-15006(1)). + 181. instances now return *note False: 379. instead of raising + *note TypeError: 17f. (bpo-15006(1)). - * New *note datetime.datetime.timestamp(): ac3. method: Return - POSIX timestamp corresponding to the *note datetime: 1a0. + * New *note datetime.datetime.timestamp(): 9c3. method: Return + POSIX timestamp corresponding to the *note datetime: 181. instance. - * The *note datetime.datetime.strftime(): 633. method supports + * The *note datetime.datetime.strftime(): 524. method supports formatting years older than 1000. - * The *note datetime.datetime.astimezone(): 2ce. method can now + * The *note datetime.datetime.astimezone(): 183. method can now be called without arguments to convert datetime instance to the system timezone. @@ -29280,9 +26702,9 @@ File: python.info, Node: datetime<5>, Next: decimal<3>, Prev: curses<4>, Up: (1) https://bugs.python.org/issue15006  -File: python.info, Node: decimal<3>, Next: email<4>, Prev: datetime<5>, Up: Improved Modules<7> +File: python.info, Node: decimal<3>, Next: email<4>, Prev: datetime<4>, Up: Improved Modules<6> -1.7.20.12 decimal +1.6.20.12 decimal ................. bpo-7652(1) - integrate fast native decimal arithmetic. @@ -29329,20 +26751,20 @@ available at ‘http://www.bytereef.org/mpdecimal/quickstart.html’.  File: python.info, Node: Features<2>, Next: API changes<2>, Up: decimal<3> -1.7.20.13 Features +1.6.20.13 Features .................. - * The *note FloatOperation: ac6. signal optionally enables stricter + * The *note FloatOperation: 9c6. signal optionally enables stricter semantics for mixing floats and Decimals. * If Python is compiled without threads, the C version automatically disables the expensive thread local context machinery. In this - case, the variable *note HAVE_THREADS: ac7. is set to ‘False’. + case, the variable *note HAVE_THREADS: 9c7. is set to ‘False’.  File: python.info, Node: API changes<2>, Prev: Features<2>, Up: decimal<3> -1.7.20.14 API changes +1.6.20.14 API changes ..................... * The C module has the following context limits, depending on the @@ -29361,44 +26783,44 @@ File: python.info, Node: API changes<2>, Prev: Features<2>, Up: decimal<3> ‘MIN_EMIN’ ‘-425000000’ ‘-999999999999999999’ - * In the context templates (*note DefaultContext: ac9, *note - BasicContext: aca. and *note ExtendedContext: acb.) the magnitude + * In the context templates (*note DefaultContext: 9c9, *note + BasicContext: 9ca. and *note ExtendedContext: 9cb.) the magnitude of ‘Emax’ and ‘Emin’ has changed to ‘999999’. - * The *note Decimal: 2c3. constructor in decimal.py does not observe + * The *note Decimal: 175. constructor in decimal.py does not observe the context limits and converts values with arbitrary exponents or precision exactly. Since the C version has internal limits, the following scheme is used: If possible, values are converted - exactly, otherwise *note InvalidOperation: acc. is raised and the + exactly, otherwise *note InvalidOperation: 9cc. is raised and the result is NaN. In the latter case it is always possible to use - *note create_decimal(): acd. in order to obtain a rounded or + *note create_decimal(): 9cd. in order to obtain a rounded or inexact value. * The power function in decimal.py is always correctly-rounded. In the C version, it is defined in terms of the correctly-rounded - *note exp(): ace. and *note ln(): acf. functions, but the final + *note exp(): 9ce. and *note ln(): 9cf. functions, but the final result is only “almost always correctly rounded”. * In the C version, the context dictionary containing the signals is - a *note MutableMapping: ad0. For speed reasons, ‘flags’ and - ‘traps’ always refer to the same *note MutableMapping: ad0. that + a *note MutableMapping: 9d0. For speed reasons, ‘flags’ and + ‘traps’ always refer to the same *note MutableMapping: 9d0. that the context was initialized with. If a new signal dictionary is assigned, ‘flags’ and ‘traps’ are updated with the new values, but they do not reference the RHS dictionary. - * Pickling a *note Context: ad1. produces a different output in order + * Pickling a *note Context: 9d1. produces a different output in order to have a common interchange format for the Python and C versions. - * The order of arguments in the *note Context: ad1. constructor has - been changed to match the order displayed by *note repr(): 8bb. + * The order of arguments in the *note Context: 9d1. constructor has + been changed to match the order displayed by *note repr(): 7b1. - * The ‘watchexp’ parameter in the *note quantize(): ad2. method is + * The ‘watchexp’ parameter in the *note quantize(): 9d2. method is deprecated.  -File: python.info, Node: email<4>, Next: ftplib<2>, Prev: decimal<3>, Up: Improved Modules<7> +File: python.info, Node: email<4>, Next: ftplib, Prev: decimal<3>, Up: Improved Modules<6> -1.7.20.15 email +1.6.20.15 email ............... * Menu: @@ -29410,21 +26832,21 @@ File: python.info, Node: email<4>, Next: ftplib<2>, Prev: decimal<3>, Up: Im  File: python.info, Node: Policy Framework, Next: Provisional Policy with New Header API, Up: email<4> -1.7.20.16 Policy Framework +1.6.20.16 Policy Framework .......................... -The email package now has a *note policy: 73. framework. A *note -Policy: ad5. is an object with several methods and properties that +The email package now has a *note policy: 75. framework. A *note +Policy: 9d5. is an object with several methods and properties that control how the email package behaves. The primary policy for Python -3.3 is the *note Compat32: ad6. policy, which provides backward +3.3 is the *note Compat32: 9d6. policy, which provides backward compatibility with the email package in Python 3.2. A ‘policy’ can be -specified when an email message is parsed by a *note parser: 72, or when -a *note Message: 63d. object is created, or when an email is serialized -using a *note generator: 6c. Unless overridden, a policy passed to a +specified when an email message is parsed by a *note parser: 74, or when +a *note Message: 52e. object is created, or when an email is serialized +using a *note generator: 6e. Unless overridden, a policy passed to a ‘parser’ is inherited by all the ‘Message’ object and sub-objects created by the ‘parser’. By default a ‘generator’ will use the policy of the ‘Message’ object it is serializing. The default policy is *note -compat32: 63c. +compat32: 52d. The minimum set of controls implemented by all ‘policy’ objects are: @@ -29449,7 +26871,7 @@ The minimum set of controls implemented by all ‘policy’ objects are: A new policy instance, with new settings, is created using the *note -clone(): ad7. method of policy objects. ‘clone’ takes any of the above +clone(): 9d7. method of policy objects. ‘clone’ takes any of the above controls as keyword arguments. Any control not specified in the call retains its default value. Thus you can create a policy that uses ‘\r\n’ linesep characters like this: @@ -29469,7 +26891,7 @@ pass those in when you create the ‘generator’.  File: python.info, Node: Provisional Policy with New Header API, Next: Other API Changes, Prev: Policy Framework, Up: email<4> -1.7.20.17 Provisional Policy with New Header API +1.6.20.17 Provisional Policy with New Header API ................................................ While the policy framework is worthwhile all by itself, the main @@ -29477,16 +26899,16 @@ motivation for introducing it is to allow the creation of new policies that implement new features for the email package in a way that maintains backward compatibility for those who do not use the new policies. Because the new policies introduce a new API, we are -releasing them in Python 3.3 as a *note provisional policy: a63. +releasing them in Python 3.3 as a *note provisional policy: 961. Backwards incompatible changes (up to and including removal of the code) may occur if deemed necessary by the core developers. -The new policies are instances of *note EmailPolicy: ad9, and add the +The new policies are instances of *note EmailPolicy: 9d9, and add the following additional controls: refold_source Controls whether or not headers parsed by a - *note parser: 72. are refolded by the - *note generator: 6c. It can be ‘none’, ‘long’, or ‘all’. + *note parser: 74. are refolded by the + *note generator: 6e. It can be ‘none’, ‘long’, or ‘all’. The default is ‘long’, which means that source headers with a line longer than ‘max_line_length’ get refolded. ‘none’ means no line get refolded, and ‘all’ means that @@ -29528,8 +26950,8 @@ header. This means you can now do things like this: You will note that the unicode display name is automatically encoded as ‘utf-8’ when the message is serialized, but that when the header is accessed directly, you get the unicode version. This eliminates any -need to deal with the *note email.header: 6d. *note decode_header(): -ada. or *note make_header(): adb. functions. +need to deal with the *note email.header: 6f. *note decode_header(): +9da. or *note make_header(): 9db. functions. You can also create addresses from parts: @@ -29564,47 +26986,47 @@ and from the RFC standard Content Transfer Encodings.  File: python.info, Node: Other API Changes, Prev: Provisional Policy with New Header API, Up: email<4> -1.7.20.18 Other API Changes +1.6.20.18 Other API Changes ........................... -New *note BytesHeaderParser: add, added to the *note parser: 72. module -to complement *note HeaderParser: ade. and complete the Bytes API. +New *note BytesHeaderParser: 9dd, added to the *note parser: 74. module +to complement *note HeaderParser: 9de. and complete the Bytes API. New utility functions: - * *note format_datetime(): adf.: given a *note datetime: 1a0, + * *note format_datetime(): 9df.: given a *note datetime: 181, produce a string formatted for use in an email header. - * *note parsedate_to_datetime(): ae0.: given a date string from - an email header, convert it into an aware *note datetime: 1a0, - or a naive *note datetime: 1a0. if the offset is ‘-0000’. + * *note parsedate_to_datetime(): 9e0.: given a date string from + an email header, convert it into an aware *note datetime: 181, + or a naive *note datetime: 181. if the offset is ‘-0000’. - * *note localtime(): ae1.: With no argument, returns the current - local time as an aware *note datetime: 1a0. using the local - *note timezone: ae2. Given an aware *note datetime: 1a0, - converts it into an aware *note datetime: 1a0. using the local - *note timezone: ae2. + * *note localtime(): 9e1.: With no argument, returns the current + local time as an aware *note datetime: 181. using the local + *note timezone: 9e2. Given an aware *note datetime: 181, + converts it into an aware *note datetime: 181. using the local + *note timezone: 9e2.  -File: python.info, Node: ftplib<2>, Next: functools<5>, Prev: email<4>, Up: Improved Modules<7> +File: python.info, Node: ftplib, Next: functools<5>, Prev: email<4>, Up: Improved Modules<6> -1.7.20.19 ftplib +1.6.20.19 ftplib ................ - * *note ftplib.FTP: 1a6. now accepts a ‘source_address’ keyword + * *note ftplib.FTP: 2dc. now accepts a ‘source_address’ keyword argument to specify the ‘(host, port)’ to use as the source address in the bind call when creating the outgoing socket. (Contributed by Giampaolo Rodolà in bpo-8594(1).) - * The *note FTP_TLS: 1a7. class now provides a new *note ccc(): ae4. + * The *note FTP_TLS: 9e4. class now provides a new *note ccc(): 9e5. function to revert control channel back to plaintext. This can be useful to take advantage of firewalls that know how to handle NAT with non-secure FTP without opening fixed ports. (Contributed by Giampaolo Rodolà in bpo-12139(2).) - * Added *note ftplib.FTP.mlsd(): ae5. method which provides a + * Added *note ftplib.FTP.mlsd(): 9e6. method which provides a parsable directory listing format and deprecates *note - ftplib.FTP.nlst(): ae6. and *note ftplib.FTP.dir(): ae7. + ftplib.FTP.nlst(): 9e7. and *note ftplib.FTP.dir(): 9e8. (Contributed by Giampaolo Rodolà in bpo-11072(3).) ---------- Footnotes ---------- @@ -29616,12 +27038,12 @@ File: python.info, Node: ftplib<2>, Next: functools<5>, Prev: email<4>, Up: (3) https://bugs.python.org/issue11072  -File: python.info, Node: functools<5>, Next: gc<5>, Prev: ftplib<2>, Up: Improved Modules<7> +File: python.info, Node: functools<5>, Next: gc<4>, Prev: ftplib, Up: Improved Modules<6> -1.7.20.20 functools +1.6.20.20 functools ................... -The *note functools.lru_cache(): 2fb. decorator now accepts a ‘typed’ +The *note functools.lru_cache(): 1b3. decorator now accepts a ‘typed’ keyword argument (that defaults to ‘False’ to ensure that it caches values of different types that compare equal in separate cache slots. (Contributed by Raymond Hettinger in bpo-13227(1).) @@ -29631,22 +27053,22 @@ values of different types that compare equal in separate cache slots. (1) https://bugs.python.org/issue13227  -File: python.info, Node: gc<5>, Next: hmac<3>, Prev: functools<5>, Up: Improved Modules<7> +File: python.info, Node: gc<4>, Next: hmac<3>, Prev: functools<5>, Up: Improved Modules<6> -1.7.20.21 gc +1.6.20.21 gc ............ It is now possible to register callbacks invoked by the garbage collector before and after collection using the new *note callbacks: -aea. list. +9eb. list.  -File: python.info, Node: hmac<3>, Next: http<4>, Prev: gc<5>, Up: Improved Modules<7> +File: python.info, Node: hmac<3>, Next: http<3>, Prev: gc<4>, Up: Improved Modules<6> -1.7.20.22 hmac +1.6.20.22 hmac .............. -A new *note compare_digest(): aec. function has been added to prevent +A new *note compare_digest(): 9ed. function has been added to prevent side channel attacks on digests through timing analysis. (Contributed by Nick Coghlan and Christian Heimes in bpo-15061(1).) @@ -29655,22 +27077,22 @@ by Nick Coghlan and Christian Heimes in bpo-15061(1).) (1) https://bugs.python.org/issue15061  -File: python.info, Node: http<4>, Next: html<2>, Prev: hmac<3>, Up: Improved Modules<7> +File: python.info, Node: http<3>, Next: html<2>, Prev: hmac<3>, Up: Improved Modules<6> -1.7.20.23 http +1.6.20.23 http .............. -*note http.server.BaseHTTPRequestHandler: aee. now buffers the headers -and writes them all at once when *note end_headers(): aef. is called. A -new method *note flush_headers(): af0. can be used to directly manage +*note http.server.BaseHTTPRequestHandler: 9ef. now buffers the headers +and writes them all at once when *note end_headers(): 9f0. is called. A +new method *note flush_headers(): 9f1. can be used to directly manage when the accumulated headers are sent. (Contributed by Andrew Schaaf in bpo-3709(1).) -*note http.server: 96. now produces valid ‘HTML 4.01 strict’ output. +*note http.server: 97. now produces valid ‘HTML 4.01 strict’ output. (Contributed by Ezio Melotti in bpo-13295(2).) -*note http.client.HTTPResponse: af1. now has a *note readinto(): af2. -method, which means it can be used as an *note io.RawIOBase: af3. class. +*note http.client.HTTPResponse: 9f2. now has a *note readinto(): 9f3. +method, which means it can be used as an *note io.RawIOBase: 9f4. class. (Contributed by John Kuhn in bpo-13464(3).) ---------- Footnotes ---------- @@ -29682,12 +27104,12 @@ method, which means it can be used as an *note io.RawIOBase: af3. class. (3) https://bugs.python.org/issue13464  -File: python.info, Node: html<2>, Next: imaplib<3>, Prev: http<4>, Up: Improved Modules<7> +File: python.info, Node: html<2>, Next: imaplib<2>, Prev: http<3>, Up: Improved Modules<6> -1.7.20.24 html +1.6.20.24 html .............. -*note html.parser.HTMLParser: 22a. is now able to parse broken markup +*note html.parser.HTMLParser: 7a4. is now able to parse broken markup without raising errors, therefore the `strict' argument of the constructor and the ‘HTMLParseError’ exception are now deprecated. The ability to parse broken markup is the result of a number of bug fixes @@ -29697,10 +27119,10 @@ bpo-14538(2), bpo-13993(3), bpo-13960(4), bpo-13358(5), bpo-1745761(6), bpo-755670(7), bpo-13357(8), bpo-12629(9), bpo-1200313(10), bpo-670664(11), bpo-13273(12), bpo-12888(13), bpo-7311(14).) -A new *note html5: af5. dictionary that maps HTML5 named character +A new *note html5: 9f6. dictionary that maps HTML5 named character references to the equivalent Unicode character(s) (e.g. ‘html5['gt;'] -== '>'’) has been added to the *note html.entities: 90. module. The -dictionary is now also used by *note HTMLParser: 22a. (Contributed by +== '>'’) has been added to the *note html.entities: 91. module. The +dictionary is now also used by *note HTMLParser: 7a4. (Contributed by Ezio Melotti in bpo-11113(15) and bpo-15156(16).) ---------- Footnotes ---------- @@ -29738,12 +27160,12 @@ Ezio Melotti in bpo-11113(15) and bpo-15156(16).) (16) https://bugs.python.org/issue15156  -File: python.info, Node: imaplib<3>, Next: inspect<6>, Prev: html<2>, Up: Improved Modules<7> +File: python.info, Node: imaplib<2>, Next: inspect<5>, Prev: html<2>, Up: Improved Modules<6> -1.7.20.25 imaplib +1.6.20.25 imaplib ................. -The *note IMAP4_SSL: 1b0. constructor now accepts an SSLContext +The *note IMAP4_SSL: 9f8. constructor now accepts an SSLContext parameter to control parameters of the secure channel. (Contributed by Sijin Joseph in bpo-8808(1).) @@ -29753,12 +27175,12 @@ parameter to control parameters of the secure channel. (1) https://bugs.python.org/issue8808  -File: python.info, Node: inspect<6>, Next: io<4>, Prev: imaplib<3>, Up: Improved Modules<7> +File: python.info, Node: inspect<5>, Next: io<4>, Prev: imaplib<2>, Up: Improved Modules<6> -1.7.20.26 inspect +1.6.20.26 inspect ................. -A new *note getclosurevars(): af8. function has been added. This +A new *note getclosurevars(): 9fa. function has been added. This function reports the current binding of all names referenced from the function body and where those names were resolved, making it easier to verify correct internal state when testing code that relies on stateful @@ -29766,7 +27188,7 @@ closures. (Contributed by Meador Inge and Nick Coghlan in bpo-13062(1).) -A new *note getgeneratorlocals(): af9. function has been added. This +A new *note getgeneratorlocals(): 9fb. function has been added. This function reports the current binding of local variables in the generator’s stack frame, making it easier to verify correct internal state when testing generators. @@ -29780,21 +27202,21 @@ state when testing generators. (2) https://bugs.python.org/issue15153  -File: python.info, Node: io<4>, Next: itertools<3>, Prev: inspect<6>, Up: Improved Modules<7> +File: python.info, Node: io<4>, Next: itertools<3>, Prev: inspect<5>, Up: Improved Modules<6> -1.7.20.27 io +1.6.20.27 io ............ -The *note open(): 74f. function has a new ‘'x'’ mode that can be used to -exclusively create a new file, and raise a *note FileExistsError: a3b. +The *note open(): 643. function has a new ‘'x'’ mode that can be used to +exclusively create a new file, and raise a *note FileExistsError: 939. if the file already exists. It is based on the C11 ‘x’ mode to fopen(). (Contributed by David Townshend in bpo-12760(1).) -The constructor of the *note TextIOWrapper: 6ec. class has a new +The constructor of the *note TextIOWrapper: 5e0. class has a new `write_through' optional argument. If `write_through' is ‘True’, calls to ‘write()’ are guaranteed not to be buffered: any data written on the -*note TextIOWrapper: 6ec. object is immediately handled to its +*note TextIOWrapper: 5e0. object is immediately handled to its underlying binary buffer. ---------- Footnotes ---------- @@ -29802,36 +27224,36 @@ underlying binary buffer. (1) https://bugs.python.org/issue12760  -File: python.info, Node: itertools<3>, Next: logging<6>, Prev: io<4>, Up: Improved Modules<7> +File: python.info, Node: itertools<3>, Next: logging<6>, Prev: io<4>, Up: Improved Modules<6> -1.7.20.28 itertools +1.6.20.28 itertools ................... -*note accumulate(): 311. now takes an optional ‘func’ argument for +*note accumulate(): 1c9. now takes an optional ‘func’ argument for providing a user-supplied binary function.  -File: python.info, Node: logging<6>, Next: math<6>, Prev: itertools<3>, Up: Improved Modules<7> +File: python.info, Node: logging<6>, Next: math<5>, Prev: itertools<3>, Up: Improved Modules<6> -1.7.20.29 logging +1.6.20.29 logging ................. -The *note basicConfig(): 314. function now supports an optional +The *note basicConfig(): 1cc. function now supports an optional ‘handlers’ argument taking an iterable of handlers to be added to the root logger. A class level attribute ‘append_nul’ has been added to *note -SysLogHandler: afd. to allow control of the appending of the ‘NUL’ +SysLogHandler: 9ff. to allow control of the appending of the ‘NUL’ (‘\000’) byte to syslog records, since for some daemons it is required while for others it is passed through to the log.  -File: python.info, Node: math<6>, Next: mmap<3>, Prev: logging<6>, Up: Improved Modules<7> +File: python.info, Node: math<5>, Next: mmap<3>, Prev: logging<6>, Up: Improved Modules<6> -1.7.20.30 math +1.6.20.30 math .............. -The *note math: b1. module has a new function, *note log2(): aff, which +The *note math: b2. module has a new function, *note log2(): a01, which returns the base-2 logarithm of `x'. (Written by Mark Dickinson in bpo-11888(1).) @@ -29841,12 +27263,12 @@ returns the base-2 logarithm of `x'. (1) https://bugs.python.org/issue11888  -File: python.info, Node: mmap<3>, Next: multiprocessing<7>, Prev: math<6>, Up: Improved Modules<7> +File: python.info, Node: mmap<3>, Next: multiprocessing<6>, Prev: math<5>, Up: Improved Modules<6> -1.7.20.31 mmap +1.6.20.31 mmap .............. -The *note read(): b01. method is now more compatible with other +The *note read(): a03. method is now more compatible with other file-like objects: if the argument is omitted or specified as ‘None’, it returns the bytes from the current file position to the end of the mapping. (Contributed by Petri Lehtinen in bpo-12021(1).) @@ -29856,12 +27278,12 @@ mapping. (Contributed by Petri Lehtinen in bpo-12021(1).) (1) https://bugs.python.org/issue12021  -File: python.info, Node: multiprocessing<7>, Next: nntplib<2>, Prev: mmap<3>, Up: Improved Modules<7> +File: python.info, Node: multiprocessing<6>, Next: nntplib, Prev: mmap<3>, Up: Improved Modules<6> -1.7.20.32 multiprocessing +1.6.20.32 multiprocessing ......................... -The new *note multiprocessing.connection.wait(): b03. function allows +The new *note multiprocessing.connection.wait(): a05. function allows polling multiple objects (such as connections, sockets and pipes) with a timeout. (Contributed by Richard Oudkerk in bpo-12328(1).) @@ -29869,19 +27291,19 @@ timeout. (Contributed by Richard Oudkerk in bpo-12328(1).) multiprocessing connections. (Contributed by Richard Oudkerk in bpo-4892(2).) -*note multiprocessing.Process: 4bb. now accepts a ‘daemon’ keyword +*note multiprocessing.Process: 3a3. now accepts a ‘daemon’ keyword argument to override the default behavior of inheriting the ‘daemon’ flag from the parent process (bpo-6064(3)). -New attribute *note multiprocessing.Process.sentinel: b04. allows a -program to wait on multiple *note Process: 4bb. objects at one time -using the appropriate OS primitives (for example, *note select: e5. on +New attribute *note multiprocessing.Process.sentinel: a06. allows a +program to wait on multiple *note Process: 3a3. objects at one time +using the appropriate OS primitives (for example, *note select: e6. on posix systems). -New methods *note multiprocessing.pool.Pool.starmap(): b05. and *note -starmap_async(): b06. provide *note itertools.starmap(): b07. -equivalents to the existing *note multiprocessing.pool.Pool.map(): b08. -and *note map_async(): b09. functions. (Contributed by Hynek Schlawack +New methods *note multiprocessing.pool.Pool.starmap(): a07. and *note +starmap_async(): a08. provide *note itertools.starmap(): a09. +equivalents to the existing *note multiprocessing.pool.Pool.map(): a0a. +and *note map_async(): a0b. functions. (Contributed by Hynek Schlawack in bpo-12708(4).) ---------- Footnotes ---------- @@ -29895,13 +27317,13 @@ in bpo-12708(4).) (4) https://bugs.python.org/issue12708  -File: python.info, Node: nntplib<2>, Next: os<8>, Prev: multiprocessing<7>, Up: Improved Modules<7> +File: python.info, Node: nntplib, Next: os<7>, Prev: multiprocessing<6>, Up: Improved Modules<6> -1.7.20.33 nntplib +1.6.20.33 nntplib ................. -The *note nntplib.NNTP: 1c6. class now supports the context management -protocol to unconditionally consume *note socket.error: a78. exceptions +The *note nntplib.NNTP: a0d. class now supports the context management +protocol to unconditionally consume *note socket.error: 976. exceptions and to close the NNTP connection when done: >>> from nntplib import NNTP @@ -29918,22 +27340,22 @@ and to close the NNTP connection when done: (1) https://bugs.python.org/issue9795  -File: python.info, Node: os<8>, Next: pdb<5>, Prev: nntplib<2>, Up: Improved Modules<7> +File: python.info, Node: os<7>, Next: pdb<4>, Prev: nntplib, Up: Improved Modules<6> -1.7.20.34 os +1.6.20.34 os ............ - * The *note os: c4. module has a new *note pipe2(): b0c. function - that makes it possible to create a pipe with *note O_CLOEXEC: aa4. - or *note O_NONBLOCK: 814. flags set atomically. This is especially + * The *note os: c5. module has a new *note pipe2(): a0f. function + that makes it possible to create a pipe with *note O_CLOEXEC: 9a4. + or *note O_NONBLOCK: 70a. flags set atomically. This is especially useful to avoid race conditions in multi-threaded programs. - * The *note os: c4. module has a new *note sendfile(): 463. function + * The *note os: c5. module has a new *note sendfile(): 34a. function which provides an efficient “zero-copy” way for copying data from one file (or socket) descriptor to another. The phrase “zero-copy” refers to the fact that all of the copying of data between the two descriptors is done entirely by the kernel, with no copying of data - into userspace buffers. *note sendfile(): 463. can be used to + into userspace buffers. *note sendfile(): 34a. can be used to efficiently copy data from a file on disk to a network socket, e.g. for downloading a file. @@ -29947,128 +27369,128 @@ File: python.info, Node: os<8>, Next: pdb<5>, Prev: nntplib<2>, Up: Improved to work on file descriptors (bpo-4761(2), bpo-10755(3) and bpo-14626(4)). - - The *note os: c4. module has a new *note fwalk(): 4bd. - function similar to *note walk(): 749. except that it also + - The *note os: c5. module has a new *note fwalk(): 3a5. + function similar to *note walk(): 63d. except that it also yields file descriptors referring to the directories visited. This is especially useful to avoid symlink races. - The following functions get new optional `dir_fd' (*note paths - relative to directory descriptors: b0d.) and/or - `follow_symlinks' (*note not following symlinks: b0e.): *note - access(): b0f, *note chflags(): b10, *note chmod(): b11, *note - chown(): b12, *note link(): b13, *note lstat(): 325, *note - mkdir(): b14, *note mkfifo(): 758, *note mknod(): 759, *note - open(): 75a, *note readlink(): 1d1, *note remove(): b15, *note - rename(): b16, *note replace(): b17, *note rmdir(): b18, *note - stat(): 324, *note symlink(): b19, *note unlink(): b1a, *note - utime(): b1b. Platform support for using these parameters can - be checked via the sets *note os.supports_dir_fd: b1c. and + relative to directory descriptors: a10.) and/or + `follow_symlinks' (*note not following symlinks: a11.): *note + access(): a12, *note chflags(): a13, *note chmod(): a14, *note + chown(): a15, *note link(): a16, *note lstat(): 1de, *note + mkdir(): a17, *note mkfifo(): 64c, *note mknod(): 64d, *note + open(): 64e, *note readlink(): 1df, *note remove(): a18, *note + rename(): a19, *note replace(): a1a, *note rmdir(): a1b, *note + stat(): 1dd, *note symlink(): a1c, *note unlink(): a1d, *note + utime(): a1e. Platform support for using these parameters can + be checked via the sets *note os.supports_dir_fd: a1f. and ‘os.supports_follows_symlinks’. - The following functions now support a file descriptor for - their path argument: *note chdir(): 16e, *note chmod(): b11, - *note chown(): b12, *note execve(): b1d, *note listdir(): b1e, - *note pathconf(): b1f, *note exists(): 328, *note stat(): 324, - *note statvfs(): b20, *note utime(): b1b. Platform support - for this can be checked via the *note os.supports_fd: b21. + their path argument: *note chdir(): a20, *note chmod(): a14, + *note chown(): a15, *note execve(): a21, *note listdir(): a22, + *note pathconf(): a23, *note exists(): 1e2, *note stat(): 1dd, + *note statvfs(): a24, *note utime(): a1e. Platform support + for this can be checked via the *note os.supports_fd: a25. set. - * *note access(): b0f. accepts an ‘effective_ids’ keyword argument to + * *note access(): a12. accepts an ‘effective_ids’ keyword argument to turn on using the effective uid/gid rather than the real uid/gid in the access check. Platform support for this can be checked via the - *note supports_effective_ids: b22. set. + *note supports_effective_ids: a26. set. - * The *note os: c4. module has two new functions: *note - getpriority(): b23. and *note setpriority(): b24. They can be used + * The *note os: c5. module has two new functions: *note + getpriority(): a27. and *note setpriority(): a28. They can be used to get or set process niceness/priority in a fashion similar to - *note os.nice(): b25. but extended to all processes instead of just + *note os.nice(): a29. but extended to all processes instead of just the current one. (Patch submitted by Giampaolo Rodolà in bpo-10784(5).) - * The new *note os.replace(): b17. function allows cross-platform + * The new *note os.replace(): a1a. function allows cross-platform renaming of a file with overwriting the destination. With *note - os.rename(): b16, an existing destination file is overwritten under + os.rename(): a19, an existing destination file is overwritten under POSIX, but raises an error under Windows. (Contributed by Antoine Pitrou in bpo-8828(6).) - * The stat family of functions (*note stat(): 324, *note fstat(): - 754, and *note lstat(): 325.) now support reading a file’s + * The stat family of functions (*note stat(): 1dd, *note fstat(): + 648, and *note lstat(): 1de.) now support reading a file’s timestamps with nanosecond precision. Symmetrically, *note - utime(): b1b. can now write file timestamps with nanosecond + utime(): a1e. can now write file timestamps with nanosecond precision. (Contributed by Larry Hastings in bpo-14127(7).) - * The new *note os.get_terminal_size(): b26. function queries the + * The new *note os.get_terminal_size(): a2a. function queries the size of the terminal attached to a file descriptor. See also *note - shutil.get_terminal_size(): b27. (Contributed by Zbigniew + shutil.get_terminal_size(): a2b. (Contributed by Zbigniew Jędrzejewski-Szmek in bpo-13609(8).) * New functions to support Linux extended attributes (bpo-12720(9)): - *note getxattr(): b28, *note listxattr(): b29, *note removexattr(): - b2a, *note setxattr(): b2b. + *note getxattr(): a2c, *note listxattr(): a2d, *note removexattr(): + a2e, *note setxattr(): a2f. * New interface to the scheduler. These functions control how a process is allocated CPU time by the operating system. New - functions: *note sched_get_priority_max(): b2c, *note - sched_get_priority_min(): b2d, *note sched_getaffinity(): b2e, - *note sched_getparam(): b2f, *note sched_getscheduler(): b30, *note - sched_rr_get_interval(): b31, *note sched_setaffinity(): b32, *note - sched_setparam(): b33, *note sched_setscheduler(): b34, *note - sched_yield(): b35, + functions: *note sched_get_priority_max(): a30, *note + sched_get_priority_min(): a31, *note sched_getaffinity(): a32, + *note sched_getparam(): a33, *note sched_getscheduler(): a34, *note + sched_rr_get_interval(): a35, *note sched_setaffinity(): a36, *note + sched_setparam(): a37, *note sched_setscheduler(): a38, *note + sched_yield(): a39, * New functions to control the file system: - * *note posix_fadvise(): 75b.: Announces an intention to access + * *note posix_fadvise(): 64f.: Announces an intention to access data in a specific pattern thus allowing the kernel to make optimizations. - * *note posix_fallocate(): 75c.: Ensures that enough disk space + * *note posix_fallocate(): 650.: Ensures that enough disk space is allocated for a file. - * *note sync(): b36.: Force write of everything to disk. + * *note sync(): a3a.: Force write of everything to disk. * Additional new posix functions: - * *note lockf(): b37.: Apply, test or remove a POSIX lock on an + * *note lockf(): a3b.: Apply, test or remove a POSIX lock on an open file descriptor. - * *note pread(): 4c2.: Read from a file descriptor at an offset, + * *note pread(): 3aa.: Read from a file descriptor at an offset, the file offset remains unchanged. - * *note pwrite(): 4c5.: Write to a file descriptor from an + * *note pwrite(): 3ad.: Write to a file descriptor from an offset, leaving the file offset unchanged. - * *note readv(): 4c1.: Read from a file descriptor into a number + * *note readv(): 3a9.: Read from a file descriptor into a number of writable buffers. - * *note truncate(): 815.: Truncate the file corresponding to + * *note truncate(): 70b.: Truncate the file corresponding to `path', so that it is at most `length' bytes in size. - * *note waitid(): 761.: Wait for the completion of one or more + * *note waitid(): 655.: Wait for the completion of one or more child processes. - * *note writev(): 4c4.: Write the contents of `buffers' to a + * *note writev(): 3ac.: Write the contents of `buffers' to a file descriptor, where `buffers' is an arbitrary sequence of buffers. - * *note getgrouplist(): b38. (bpo-9344(10)): Return list of + * *note getgrouplist(): a3c. (bpo-9344(10)): Return list of group ids that specified user belongs to. - * *note times(): b39. and *note uname(): b3a.: Return type changed + * *note times(): a3d. and *note uname(): a3e.: Return type changed from a tuple to a tuple-like object with named attributes. * Some platforms now support additional constants for the *note - lseek(): b3b. function, such as ‘os.SEEK_HOLE’ and ‘os.SEEK_DATA’. + lseek(): a3f. function, such as ‘os.SEEK_HOLE’ and ‘os.SEEK_DATA’. - * New constants *note RTLD_LAZY: b3c, *note RTLD_NOW: b3d, *note - RTLD_GLOBAL: b3e, *note RTLD_LOCAL: b3f, *note RTLD_NODELETE: b40, - *note RTLD_NOLOAD: b41, and *note RTLD_DEEPBIND: b42. are available + * New constants *note RTLD_LAZY: a40, *note RTLD_NOW: a41, *note + RTLD_GLOBAL: a42, *note RTLD_LOCAL: a43, *note RTLD_NODELETE: a44, + *note RTLD_NOLOAD: a45, and *note RTLD_DEEPBIND: a46. are available on platforms that support them. These are for use with the *note - sys.setdlopenflags(): b43. function, and supersede the similar - constants defined in *note ctypes: 2a. and ‘DLFCN’. (Contributed + sys.setdlopenflags(): a47. function, and supersede the similar + constants defined in *note ctypes: 2b. and ‘DLFCN’. (Contributed by Victor Stinner in bpo-13226(11).) - * *note os.symlink(): b19. now accepts (and ignores) the + * *note os.symlink(): a1c. now accepts (and ignores) the ‘target_is_directory’ keyword argument on non-Windows platforms, to ease cross-platform support. @@ -30097,9 +27519,9 @@ File: python.info, Node: os<8>, Next: pdb<5>, Prev: nntplib<2>, Up: Improved (11) https://bugs.python.org/issue13226  -File: python.info, Node: pdb<5>, Next: pickle<5>, Prev: os<8>, Up: Improved Modules<7> +File: python.info, Node: pdb<4>, Next: pickle<5>, Prev: os<7>, Up: Improved Modules<6> -1.7.20.35 pdb +1.6.20.35 pdb ............. Tab-completion is now available not only for command names, but also @@ -30113,13 +27535,13 @@ file names are completed. (1) https://bugs.python.org/issue14210  -File: python.info, Node: pickle<5>, Next: pydoc<5>, Prev: pdb<5>, Up: Improved Modules<7> +File: python.info, Node: pickle<5>, Next: pydoc<4>, Prev: pdb<4>, Up: Improved Modules<6> -1.7.20.36 pickle +1.6.20.36 pickle ................ -*note pickle.Pickler: 33e. objects now have an optional *note -dispatch_table: b46. attribute allowing per-pickler reduction functions +*note pickle.Pickler: 1f9. objects now have an optional *note +dispatch_table: a4a. attribute allowing per-pickler reduction functions to be set. (Contributed by Richard Oudkerk in bpo-14166(1).) @@ -30129,22 +27551,22 @@ to be set. (1) https://bugs.python.org/issue14166  -File: python.info, Node: pydoc<5>, Next: re<6>, Prev: pickle<5>, Up: Improved Modules<7> +File: python.info, Node: pydoc<4>, Next: re<6>, Prev: pickle<5>, Up: Improved Modules<6> -1.7.20.37 pydoc +1.6.20.37 pydoc ............... The Tk GUI and the ‘serve()’ function have been removed from the *note -pydoc: d9. module: ‘pydoc -g’ and ‘serve()’ have been deprecated in +pydoc: da. module: ‘pydoc -g’ and ‘serve()’ have been deprecated in Python 3.2.  -File: python.info, Node: re<6>, Next: sched, Prev: pydoc<5>, Up: Improved Modules<7> +File: python.info, Node: re<6>, Next: sched, Prev: pydoc<4>, Up: Improved Modules<6> -1.7.20.38 re +1.6.20.38 re ............ -*note str: 205. regular expressions now support ‘\u’ and ‘\U’ escapes. +*note str: 321. regular expressions now support ‘\u’ and ‘\U’ escapes. (Contributed by Serhiy Storchaka in bpo-3665(1).) @@ -30153,31 +27575,31 @@ File: python.info, Node: re<6>, Next: sched, Prev: pydoc<5>, Up: Improved Mo (1) https://bugs.python.org/issue3665  -File: python.info, Node: sched, Next: select<2>, Prev: re<6>, Up: Improved Modules<7> +File: python.info, Node: sched, Next: select<2>, Prev: re<6>, Up: Improved Modules<6> -1.7.20.39 sched +1.6.20.39 sched ............... - * *note run(): b4a. now accepts a `blocking' parameter which when set + * *note run(): a4e. now accepts a `blocking' parameter which when set to false makes the method execute the scheduled events due to expire soonest (if any) and then return immediately. This is - useful in case you want to use the *note scheduler: b4b. in + useful in case you want to use the *note scheduler: a4f. in non-blocking applications. (Contributed by Giampaolo Rodolà in bpo-13449(1).) - * *note scheduler: b4b. class can now be safely used in + * *note scheduler: a4f. class can now be safely used in multi-threaded environments. (Contributed by Josiah Carlson and Giampaolo Rodolà in bpo-8684(2).) - * `timefunc' and `delayfunct' parameters of *note scheduler: b4b. + * `timefunc' and `delayfunct' parameters of *note scheduler: a4f. class constructor are now optional and defaults to *note - time.time(): 42f. and *note time.sleep(): 775. respectively. + time.time(): 30f. and *note time.sleep(): 669. respectively. (Contributed by Chris Clark in bpo-13245(3).) - * *note enter(): b4c. and *note enterabs(): b4d. `argument' parameter + * *note enter(): a50. and *note enterabs(): a51. `argument' parameter is now optional. (Contributed by Chris Clark in bpo-13245(4).) - * *note enter(): b4c. and *note enterabs(): b4d. now accept a + * *note enter(): a50. and *note enterabs(): a51. now accept a `kwargs' parameter. (Contributed by Chris Clark in bpo-13245(5).) ---------- Footnotes ---------- @@ -30193,13 +27615,13 @@ File: python.info, Node: sched, Next: select<2>, Prev: re<6>, Up: Improved M (5) https://bugs.python.org/issue13245  -File: python.info, Node: select<2>, Next: shlex<3>, Prev: sched, Up: Improved Modules<7> +File: python.info, Node: select<2>, Next: shlex<3>, Prev: sched, Up: Improved Modules<6> -1.7.20.40 select +1.6.20.40 select ................ Solaris and derivative platforms have a new class *note select.devpoll: -994. for high performance asynchronous sockets via ‘/dev/poll’. +88f. for high performance asynchronous sockets via ‘/dev/poll’. (Contributed by Jesús Cea Avión in bpo-6397(1).) ---------- Footnotes ---------- @@ -30207,38 +27629,38 @@ Solaris and derivative platforms have a new class *note select.devpoll: (1) https://bugs.python.org/issue6397  -File: python.info, Node: shlex<3>, Next: shutil<4>, Prev: select<2>, Up: Improved Modules<7> +File: python.info, Node: shlex<3>, Next: shutil<4>, Prev: select<2>, Up: Improved Modules<6> -1.7.20.41 shlex +1.6.20.41 shlex ............... The previously undocumented helper function ‘quote’ from the *note -pipes: cc. modules has been moved to the *note shlex: e8. module and -documented. *note quote(): b50. properly escapes all characters in a +pipes: cd. modules has been moved to the *note shlex: e9. module and +documented. *note quote(): a54. properly escapes all characters in a string that might be otherwise given special meaning by the shell.  -File: python.info, Node: shutil<4>, Next: signal<4>, Prev: shlex<3>, Up: Improved Modules<7> +File: python.info, Node: shutil<4>, Next: signal<3>, Prev: shlex<3>, Up: Improved Modules<6> -1.7.20.42 shutil +1.6.20.42 shutil ................ * New functions: - * *note disk_usage(): b52.: provides total, used and free disk + * *note disk_usage(): a56.: provides total, used and free disk space statistics. (Contributed by Giampaolo Rodolà in bpo-12442(1).) - * *note chown(): b53.: allows one to change user and/or group of + * *note chown(): a57.: allows one to change user and/or group of the given path also specifying the user/group names and not only their numeric ids. (Contributed by Sandro Tosi in bpo-12191(2).) - * *note shutil.get_terminal_size(): b27.: returns the size of + * *note shutil.get_terminal_size(): a2b.: returns the size of the terminal window to which the interpreter is attached. (Contributed by Zbigniew Jędrzejewski-Szmek in bpo-13609(3).) - * *note copy2(): 387. and *note copystat(): b54. now preserve file + * *note copy2(): 246. and *note copystat(): a58. now preserve file timestamps with nanosecond precision on platforms that support it. They also preserve file “extended attributes” on Linux. (Contributed by Larry Hastings in bpo-14127(4) and bpo-15238(5).) @@ -30248,15 +27670,15 @@ File: python.info, Node: shutil<4>, Next: signal<4>, Prev: shlex<3>, Up: Imp operation instead acts on the symlink itself (or creates one, if relevant). (Contributed by Hynek Schlawack in bpo-12715(6).) - * When copying files to a different file system, *note move(): 388. + * When copying files to a different file system, *note move(): 247. now handles symlinks the way the posix ‘mv’ command does, recreating the symlink rather than copying the target file contents. (Contributed by Jonathan Niehof in bpo-9993(7).) *note - move(): 388. now also returns the ‘dst’ argument as its result. + move(): 247. now also returns the ‘dst’ argument as its result. - * *note rmtree(): 34c. is now resistant to symlink attacks on + * *note rmtree(): 208. is now resistant to symlink attacks on platforms which support the new ‘dir_fd’ parameter in *note - os.open(): 75a. and *note os.unlink(): b1a. (Contributed by Martin + os.open(): 64e. and *note os.unlink(): a1d. (Contributed by Martin von Löwis and Hynek Schlawack in bpo-4489(8).) ---------- Footnotes ---------- @@ -30278,27 +27700,27 @@ File: python.info, Node: shutil<4>, Next: signal<4>, Prev: shlex<3>, Up: Imp (8) https://bugs.python.org/issue4489  -File: python.info, Node: signal<4>, Next: smtpd<3>, Prev: shutil<4>, Up: Improved Modules<7> +File: python.info, Node: signal<3>, Next: smtpd<3>, Prev: shutil<4>, Up: Improved Modules<6> -1.7.20.43 signal +1.6.20.43 signal ................ - * The *note signal: ea. module has new functions: + * The *note signal: eb. module has new functions: - * *note pthread_sigmask(): b56.: fetch and/or change the signal + * *note pthread_sigmask(): a5a.: fetch and/or change the signal mask of the calling thread (Contributed by Jean-Paul Calderone in bpo-8407(1)); - * *note pthread_kill(): b57.: send a signal to a thread; + * *note pthread_kill(): a5b.: send a signal to a thread; - * *note sigpending(): b58.: examine pending functions; + * *note sigpending(): a5c.: examine pending functions; - * *note sigwait(): b59.: wait a signal; + * *note sigwait(): a5d.: wait a signal; - * *note sigwaitinfo(): 774.: wait for a signal, returning + * *note sigwaitinfo(): 668.: wait for a signal, returning detailed information about it; - * *note sigtimedwait(): 773.: like *note sigwaitinfo(): 774. but + * *note sigtimedwait(): 667.: like *note sigwaitinfo(): 668. but with a timeout. * The signal handler writes the signal number as a single byte @@ -30306,7 +27728,7 @@ File: python.info, Node: signal<4>, Next: smtpd<3>, Prev: shutil<4>, Up: Imp possible to wait more than one signal and know which signals were raised. - * *note signal.signal(): b5a. and *note signal.siginterrupt(): b5b. + * *note signal.signal(): a5e. and *note signal.siginterrupt(): a5f. raise an OSError, instead of a RuntimeError: OSError has an errno attribute. @@ -30315,12 +27737,12 @@ File: python.info, Node: signal<4>, Next: smtpd<3>, Prev: shutil<4>, Up: Imp (1) https://bugs.python.org/issue8407  -File: python.info, Node: smtpd<3>, Next: smtplib<4>, Prev: signal<4>, Up: Improved Modules<7> +File: python.info, Node: smtpd<3>, Next: smtplib<3>, Prev: signal<3>, Up: Improved Modules<6> -1.7.20.44 smtpd +1.6.20.44 smtpd ............... -The *note smtpd: ec. module now supports RFC 5321(1) (extended SMTP) and +The *note smtpd: ed. module now supports RFC 5321(1) (extended SMTP) and RFC 1870(2) (size extension). Per the standard, these extensions are enabled if and only if the client initiates the session with an ‘EHLO’ command. @@ -30338,21 +27760,21 @@ Michele Orrù and Dan Boswell. bpo-8739(3)) (3) https://bugs.python.org/issue8739  -File: python.info, Node: smtplib<4>, Next: socket<8>, Prev: smtpd<3>, Up: Improved Modules<7> +File: python.info, Node: smtplib<3>, Next: socket<7>, Prev: smtpd<3>, Up: Improved Modules<6> -1.7.20.45 smtplib +1.6.20.45 smtplib ................. -The *note SMTP: 1de, *note SMTP_SSL: 1df, and *note LMTP: 1e0. classes +The *note SMTP: a62, *note SMTP_SSL: a63, and *note LMTP: a64. classes now accept a ‘source_address’ keyword argument to specify the ‘(host, port)’ to use as the source address in the bind call when creating the outgoing socket. (Contributed by Paulo Scardine in bpo-11281(1).) -*note SMTP: 1de. now supports the context management protocol, allowing +*note SMTP: a62. now supports the context management protocol, allowing an ‘SMTP’ instance to be used in a ‘with’ statement. (Contributed by Giampaolo Rodolà in bpo-11289(2).) -The *note SMTP_SSL: 1df. constructor and the *note starttls(): b5e. +The *note SMTP_SSL: a63. constructor and the *note starttls(): a65. method now accept an SSLContext parameter to control parameters of the secure channel. (Contributed by Kasun Herath in bpo-8809(3).) @@ -30365,39 +27787,39 @@ secure channel. (Contributed by Kasun Herath in bpo-8809(3).) (3) https://bugs.python.org/issue8809  -File: python.info, Node: socket<8>, Next: socketserver<3>, Prev: smtplib<4>, Up: Improved Modules<7> +File: python.info, Node: socket<7>, Next: socketserver<3>, Prev: smtplib<3>, Up: Improved Modules<6> -1.7.20.46 socket +1.6.20.46 socket ................ - * The *note socket: 769. class now exposes additional methods to + * The *note socket: 65d. class now exposes additional methods to process ancillary data when supported by the underlying platform: - * *note sendmsg(): 771. + * *note sendmsg(): 665. - * *note recvmsg(): 76e. + * *note recvmsg(): 662. - * *note recvmsg_into(): b60. + * *note recvmsg_into(): a67. (Contributed by David Watson in bpo-6560(1), based on an earlier patch by Heiko Wundram) - * The *note socket: 769. class now supports the PF_CAN protocol + * The *note socket: 65d. class now supports the PF_CAN protocol family (‘https://en.wikipedia.org/wiki/Socketcan’), on Linux (‘https://lwn.net/Articles/253425’). (Contributed by Matthias Fuchs, updated by Tiago Gonçalves in bpo-10141(2).) - * The *note socket: 769. class now supports the PF_RDS protocol + * The *note socket: 65d. class now supports the PF_RDS protocol family (‘https://en.wikipedia.org/wiki/Reliable_Datagram_Sockets’ and ‘https://oss.oracle.com/projects/rds/’). - * The *note socket: 769. class now supports the ‘PF_SYSTEM’ protocol + * The *note socket: 65d. class now supports the ‘PF_SYSTEM’ protocol family on OS X. (Contributed by Michael Goderbauer in bpo-13777(3).) - * New function *note sethostname(): b61. allows the hostname to be + * New function *note sethostname(): a68. allows the hostname to be set on unix systems if the calling process has sufficient privileges. (Contributed by Ross Lagerwall in bpo-10866(4).) @@ -30412,14 +27834,14 @@ File: python.info, Node: socket<8>, Next: socketserver<3>, Prev: smtplib<4>, (4) https://bugs.python.org/issue10866  -File: python.info, Node: socketserver<3>, Next: sqlite3<5>, Prev: socket<8>, Up: Improved Modules<7> +File: python.info, Node: socketserver<3>, Next: sqlite3<5>, Prev: socket<7>, Up: Improved Modules<6> -1.7.20.47 socketserver +1.6.20.47 socketserver ...................... -*note BaseServer: b63. now has an overridable method *note -service_actions(): b64. that is called by the *note serve_forever(): -b65. method in the service loop. *note ForkingMixIn: 4de. now uses this +*note BaseServer: a6a. now has an overridable method *note +service_actions(): a6b. that is called by the *note serve_forever(): +a6c. method in the service loop. *note ForkingMixIn: 3c6. now uses this to clean up zombie child processes. (Contributed by Justin Warkentin in bpo-11109(1).) @@ -30428,13 +27850,13 @@ bpo-11109(1).) (1) https://bugs.python.org/issue11109  -File: python.info, Node: sqlite3<5>, Next: ssl<8>, Prev: socketserver<3>, Up: Improved Modules<7> +File: python.info, Node: sqlite3<5>, Next: ssl<8>, Prev: socketserver<3>, Up: Improved Modules<6> -1.7.20.48 sqlite3 +1.6.20.48 sqlite3 ................. -New *note sqlite3.Connection: 4e1. method *note set_trace_callback(): -b67. can be used to capture a trace of all sql commands processed by +New *note sqlite3.Connection: 3c9. method *note set_trace_callback(): +a6e. can be used to capture a trace of all sql commands processed by sqlite. (Contributed by Torsten Landschoff in bpo-11688(1).) ---------- Footnotes ---------- @@ -30442,55 +27864,55 @@ sqlite. (Contributed by Torsten Landschoff in bpo-11688(1).) (1) https://bugs.python.org/issue11688  -File: python.info, Node: ssl<8>, Next: stat<2>, Prev: sqlite3<5>, Up: Improved Modules<7> +File: python.info, Node: ssl<8>, Next: stat<2>, Prev: sqlite3<5>, Up: Improved Modules<6> -1.7.20.49 ssl +1.6.20.49 ssl ............. - * The *note ssl: f3. module has two new random generation functions: + * The *note ssl: f4. module has two new random generation functions: - * *note RAND_bytes(): b69.: generate cryptographically strong + * *note RAND_bytes(): a70.: generate cryptographically strong pseudo-random bytes. - * *note RAND_pseudo_bytes(): b6a.: generate pseudo-random bytes. + * *note RAND_pseudo_bytes(): a71.: generate pseudo-random bytes. (Contributed by Victor Stinner in bpo-12049(1).) - * The *note ssl: f3. module now exposes a finer-grained exception + * The *note ssl: f4. module now exposes a finer-grained exception hierarchy in order to make it easier to inspect the various kinds of errors. (Contributed by Antoine Pitrou in bpo-11183(2).) - * *note load_cert_chain(): b6b. now accepts a `password' argument to + * *note load_cert_chain(): a72. now accepts a `password' argument to be used if the private key is encrypted. (Contributed by Adam Simpkins in bpo-12803(3).) * Diffie-Hellman key exchange, both regular and Elliptic Curve-based, - is now supported through the *note load_dh_params(): b6c. and *note - set_ecdh_curve(): b6d. methods. (Contributed by Antoine Pitrou in + is now supported through the *note load_dh_params(): a73. and *note + set_ecdh_curve(): a74. methods. (Contributed by Antoine Pitrou in bpo-13626(4) and bpo-13627(5).) - * SSL sockets have a new *note get_channel_binding(): b6e. method + * SSL sockets have a new *note get_channel_binding(): a75. method allowing the implementation of certain authentication mechanisms such as SCRAM-SHA-1-PLUS. (Contributed by Jacek Konieczny in bpo-12551(6).) * You can query the SSL compression algorithm used by an SSL socket, - thanks to its new *note compression(): b6f. method. The new - attribute *note OP_NO_COMPRESSION: b70. can be used to disable + thanks to its new *note compression(): a76. method. The new + attribute *note OP_NO_COMPRESSION: a77. can be used to disable compression. (Contributed by Antoine Pitrou in bpo-13634(7).) * Support has been added for the Next Protocol Negotiation extension - using the *note ssl.SSLContext.set_npn_protocols(): b71. method. + using the *note ssl.SSLContext.set_npn_protocols(): a78. method. (Contributed by Colin Marc in bpo-14204(8).) * SSL errors can now be introspected more easily thanks to *note - library: b72. and *note reason: b73. attributes. (Contributed by + library: a79. and *note reason: a7a. attributes. (Contributed by Antoine Pitrou in bpo-14837(9).) - * The *note get_server_certificate(): b74. function now supports + * The *note get_server_certificate(): a7b. function now supports IPv6. (Contributed by Charles-François Natali in bpo-11811(10).) - * New attribute *note OP_CIPHER_SERVER_PREFERENCE: b75. allows + * New attribute *note OP_CIPHER_SERVER_PREFERENCE: a7c. allows setting SSLv3 server sockets to use the server’s cipher ordering preference rather than the client’s (bpo-13635(11)). @@ -30519,13 +27941,13 @@ File: python.info, Node: ssl<8>, Next: stat<2>, Prev: sqlite3<5>, Up: Improv (11) https://bugs.python.org/issue13635  -File: python.info, Node: stat<2>, Next: struct<3>, Prev: ssl<8>, Up: Improved Modules<7> +File: python.info, Node: stat<2>, Next: struct<3>, Prev: ssl<8>, Up: Improved Modules<6> -1.7.20.50 stat +1.6.20.50 stat .............. The undocumented tarfile.filemode function has been moved to *note -stat.filemode(): b77. It can be used to convert a file’s mode to a +stat.filemode(): a7e. It can be used to convert a file’s mode to a string of the form ‘-rwxrwxrwx’. (Contributed by Giampaolo Rodolà in bpo-14807(1).) @@ -30535,12 +27957,12 @@ string of the form ‘-rwxrwxrwx’. (1) https://bugs.python.org/issue14807  -File: python.info, Node: struct<3>, Next: subprocess<5>, Prev: stat<2>, Up: Improved Modules<7> +File: python.info, Node: struct<3>, Next: subprocess<5>, Prev: stat<2>, Up: Improved Modules<6> -1.7.20.51 struct +1.6.20.51 struct ................ -The *note struct: f8. module now supports ‘ssize_t’ and ‘size_t’ via the +The *note struct: f9. module now supports ‘ssize_t’ and ‘size_t’ via the new codes ‘n’ and ‘N’, respectively. (Contributed by Antoine Pitrou in bpo-3163(1).) @@ -30549,15 +27971,15 @@ bpo-3163(1).) (1) https://bugs.python.org/issue3163  -File: python.info, Node: subprocess<5>, Next: sys<8>, Prev: struct<3>, Up: Improved Modules<7> +File: python.info, Node: subprocess<5>, Next: sys<7>, Prev: struct<3>, Up: Improved Modules<6> -1.7.20.52 subprocess +1.6.20.52 subprocess .................... Command strings can now be bytes objects on posix platforms. (Contributed by Victor Stinner in bpo-8513(1).) -A new constant *note DEVNULL: b7a. allows suppressing output in a +A new constant *note DEVNULL: a81. allows suppressing output in a platform-independent fashion. (Contributed by Ross Lagerwall in bpo-5870(2).) @@ -30568,13 +27990,13 @@ bpo-5870(2).) (2) https://bugs.python.org/issue5870  -File: python.info, Node: sys<8>, Next: tarfile<4>, Prev: subprocess<5>, Up: Improved Modules<7> +File: python.info, Node: sys<7>, Next: tarfile<4>, Prev: subprocess<5>, Up: Improved Modules<6> -1.7.20.53 sys +1.6.20.53 sys ............. -The *note sys: fd. module has a new *note thread_info: b7c. *note named -tuple: b7d. holding information about the thread implementation +The *note sys: fe. module has a new *note thread_info: a83. *note named +tuple: a84. holding information about the thread implementation (bpo-11223(1)). ---------- Footnotes ---------- @@ -30582,12 +28004,12 @@ tuple: b7d. holding information about the thread implementation (1) https://bugs.python.org/issue11223  -File: python.info, Node: tarfile<4>, Next: tempfile, Prev: sys<8>, Up: Improved Modules<7> +File: python.info, Node: tarfile<4>, Next: tempfile, Prev: sys<7>, Up: Improved Modules<6> -1.7.20.54 tarfile +1.6.20.54 tarfile ................. -*note tarfile: 101. now supports ‘lzma’ encoding via the *note lzma: ad. +*note tarfile: 102. now supports ‘lzma’ encoding via the *note lzma: ae. module. (Contributed by Lars Gustäbel in bpo-5689(1).) ---------- Footnotes ---------- @@ -30595,12 +28017,12 @@ module. (Contributed by Lars Gustäbel in bpo-5689(1).) (1) https://bugs.python.org/issue5689  -File: python.info, Node: tempfile, Next: textwrap<2>, Prev: tarfile<4>, Up: Improved Modules<7> +File: python.info, Node: tempfile, Next: textwrap<2>, Prev: tarfile<4>, Up: Improved Modules<6> -1.7.20.55 tempfile +1.6.20.55 tempfile .................. -*note tempfile.SpooledTemporaryFile: b80.’s ‘truncate()’ method now +*note tempfile.SpooledTemporaryFile: a87.’s ‘truncate()’ method now accepts a ‘size’ parameter. (Contributed by Ryan Kelly in bpo-9957(1).) ---------- Footnotes ---------- @@ -30608,12 +28030,12 @@ accepts a ‘size’ parameter. (Contributed by Ryan Kelly in bpo-9957(1).) (1) https://bugs.python.org/issue9957  -File: python.info, Node: textwrap<2>, Next: threading<5>, Prev: tempfile, Up: Improved Modules<7> +File: python.info, Node: textwrap<2>, Next: threading<5>, Prev: tempfile, Up: Improved Modules<6> -1.7.20.56 textwrap +1.6.20.56 textwrap .................. -The *note textwrap: 10a. module has a new *note indent(): b82. that +The *note textwrap: 109. module has a new *note indent(): a89. that makes it straightforward to add a common prefix to selected lines in a block of text (bpo-13857(1)). @@ -30622,23 +28044,23 @@ block of text (bpo-13857(1)). (1) https://bugs.python.org/issue13857  -File: python.info, Node: threading<5>, Next: time<6>, Prev: textwrap<2>, Up: Improved Modules<7> +File: python.info, Node: threading<5>, Next: time<5>, Prev: textwrap<2>, Up: Improved Modules<6> -1.7.20.57 threading +1.6.20.57 threading ................... -*note threading.Condition: b84, *note threading.Semaphore: b85, *note -threading.BoundedSemaphore: b86, *note threading.Event: b87, and *note -threading.Timer: b88, all of which used to be factory functions +*note threading.Condition: a8b, *note threading.Semaphore: a8c, *note +threading.BoundedSemaphore: a8d, *note threading.Event: a8e, and *note +threading.Timer: a8f, all of which used to be factory functions returning a class instance, are now classes and may be subclassed. (Contributed by Éric Araujo in bpo-10968(1).) -The *note threading.Thread: 21a. constructor now accepts a ‘daemon’ +The *note threading.Thread: 221. constructor now accepts a ‘daemon’ keyword argument to override the default behavior of inheriting the ‘daemon’ flag value from the parent thread (bpo-6064(2)). The formerly private function ‘_thread.get_ident’ is now available as -the public function *note threading.get_ident(): b89. This eliminates +the public function *note threading.get_ident(): a90. This eliminates several cases of direct access to the ‘_thread’ module in the stdlib. Third party code that used ‘_thread.get_ident’ should likewise be changed to use the new public interface. @@ -30650,32 +28072,32 @@ changed to use the new public interface. (2) https://bugs.python.org/issue6064  -File: python.info, Node: time<6>, Next: types<4>, Prev: threading<5>, Up: Improved Modules<7> +File: python.info, Node: time<5>, Next: types<4>, Prev: threading<5>, Up: Improved Modules<6> -1.7.20.58 time +1.6.20.58 time .............. -The PEP 418(1) added new functions to the *note time: 10c. module: +The PEP 418(1) added new functions to the *note time: 10b. module: - * *note get_clock_info(): b8b.: Get information on a clock. + * *note get_clock_info(): a92.: Get information on a clock. - * *note monotonic(): 860.: Monotonic clock (cannot go backward), not + * *note monotonic(): 756.: Monotonic clock (cannot go backward), not affected by system clock updates. - * *note perf_counter(): 3cf.: Performance counter with the highest + * *note perf_counter(): 295.: Performance counter with the highest available resolution to measure a short duration. - * *note process_time(): 3d0.: Sum of the system and user CPU time of + * *note process_time(): 296.: Sum of the system and user CPU time of the current process. Other new functions: - * *note clock_getres(): b8c, *note clock_gettime(): b8d. and *note - clock_settime(): b8e. functions with ‘CLOCK_xxx’ constants. + * *note clock_getres(): a93, *note clock_gettime(): a94. and *note + clock_settime(): a95. functions with ‘CLOCK_xxx’ constants. (Contributed by Victor Stinner in bpo-10278(2).) -To improve cross platform consistency, *note sleep(): 775. now raises a -*note ValueError: 16d. when passed a negative sleep value. Previously +To improve cross platform consistency, *note sleep(): 669. now raises a +*note ValueError: 1e7. when passed a negative sleep value. Previously this was an error on posix, but produced an infinite sleep on Windows. ---------- Footnotes ---------- @@ -30685,16 +28107,16 @@ this was an error on posix, but produced an infinite sleep on Windows. (2) https://bugs.python.org/issue10278  -File: python.info, Node: types<4>, Next: unittest<5>, Prev: time<6>, Up: Improved Modules<7> +File: python.info, Node: types<4>, Next: unittest<5>, Prev: time<5>, Up: Improved Modules<6> -1.7.20.59 types +1.6.20.59 types ............... -Add a new *note types.MappingProxyType: b90. class: Read-only proxy of a +Add a new *note types.MappingProxyType: a97. class: Read-only proxy of a mapping. (bpo-14386(1)) -The new functions *note types.new_class(): b91. and *note -types.prepare_class(): b92. provide support for PEP 3115(2) compliant +The new functions *note types.new_class(): a98. and *note +types.prepare_class(): a99. provide support for PEP 3115(2) compliant dynamic type creation. (bpo-14588(3)) ---------- Footnotes ---------- @@ -30706,31 +28128,31 @@ dynamic type creation. (bpo-14588(3)) (3) https://bugs.python.org/issue14588  -File: python.info, Node: unittest<5>, Next: urllib<3>, Prev: types<4>, Up: Improved Modules<7> +File: python.info, Node: unittest<5>, Next: urllib<3>, Prev: types<4>, Up: Improved Modules<6> -1.7.20.60 unittest +1.6.20.60 unittest .................. -*note assertRaises(): b94, *note assertRaisesRegex(): b95, *note -assertWarns(): b96, and *note assertWarnsRegex(): b97. now accept a +*note assertRaises(): a9b, *note assertRaisesRegex(): a9c, *note +assertWarns(): a9d, and *note assertWarnsRegex(): a9e. now accept a keyword argument `msg' when used as context managers. (Contributed by Ezio Melotti and Winston Ewert in bpo-10775(1).) -*note unittest.TestCase.run(): b98. now returns the *note TestResult: -b99. object. +*note unittest.TestCase.run(): a9f. now returns the *note TestResult: +aa0. object. ---------- Footnotes ---------- (1) https://bugs.python.org/issue10775  -File: python.info, Node: urllib<3>, Next: webbrowser, Prev: unittest<5>, Up: Improved Modules<7> +File: python.info, Node: urllib<3>, Next: webbrowser, Prev: unittest<5>, Up: Improved Modules<6> -1.7.20.61 urllib +1.6.20.61 urllib ................ -The *note Request: 9de. class, now accepts a `method' argument used by -*note get_method(): b9b. to determine what HTTP method should be used. +The *note Request: 8d9. class, now accepts a `method' argument used by +*note get_method(): aa2. to determine what HTTP method should be used. For example, this will send a ‘'HEAD'’ request: >>> urlopen(Request('https://www.python.org', method='HEAD')) @@ -30742,12 +28164,12 @@ For example, this will send a ‘'HEAD'’ request: (1) https://bugs.python.org/issue1673007  -File: python.info, Node: webbrowser, Next: xml etree ElementTree, Prev: urllib<3>, Up: Improved Modules<7> +File: python.info, Node: webbrowser, Next: xml etree ElementTree, Prev: urllib<3>, Up: Improved Modules<6> -1.7.20.62 webbrowser +1.6.20.62 webbrowser .................... -The *note webbrowser: 132. module supports more “browsers”: Google +The *note webbrowser: 12a. module supports more “browsers”: Google Chrome (named ‘chrome’, ‘chromium’, ‘chrome-browser’ or ‘chromium-browser’ depending on the version and operating system), and the generic launchers ‘xdg-open’, from the FreeDesktop.org project, and @@ -30762,31 +28184,31 @@ Klose in bpo-14493(2).) (2) https://bugs.python.org/issue14493  -File: python.info, Node: xml etree ElementTree, Next: zlib<2>, Prev: webbrowser, Up: Improved Modules<7> +File: python.info, Node: xml etree ElementTree, Next: zlib<2>, Prev: webbrowser, Up: Improved Modules<6> -1.7.20.63 xml.etree.ElementTree +1.6.20.63 xml.etree.ElementTree ............................... -The *note xml.etree.ElementTree: 140. module now imports its C +The *note xml.etree.ElementTree: 138. module now imports its C accelerator by default; there is no longer a need to explicitly import ‘xml.etree.cElementTree’ (this module stays for backwards compatibility, but is now deprecated). In addition, the ‘iter’ family of methods of -*note Element: 21d. has been optimized (rewritten in C). The module’s +*note Element: aa5. has been optimized (rewritten in C). The module’s documentation has also been greatly improved with added examples and a more detailed reference.  -File: python.info, Node: zlib<2>, Prev: xml etree ElementTree, Up: Improved Modules<7> +File: python.info, Node: zlib<2>, Prev: xml etree ElementTree, Up: Improved Modules<6> -1.7.20.64 zlib +1.6.20.64 zlib .............. -New attribute *note zlib.Decompress.eof: b9f. makes it possible to +New attribute *note zlib.Decompress.eof: aa7. makes it possible to distinguish between a properly-formed compressed stream and an incomplete or truncated one. (Contributed by Nadeem Vawda in bpo-12646(1).) -New attribute *note zlib.ZLIB_RUNTIME_VERSION: ba0. reports the version +New attribute *note zlib.ZLIB_RUNTIME_VERSION: aa8. reports the version string of the underlying ‘zlib’ library that is loaded at runtime. (Contributed by Torsten Landschoff in bpo-12306(2).) @@ -30797,9 +28219,9 @@ string of the underlying ‘zlib’ library that is loaded at runtime. (2) https://bugs.python.org/issue12306  -File: python.info, Node: Optimizations<6>, Next: Build and C API Changes<4>, Prev: Improved Modules<7>, Up: What’s New In Python 3 3 +File: python.info, Node: Optimizations<5>, Next: Build and C API Changes<4>, Prev: Improved Modules<6>, Up: What’s New In Python 3 3 -1.7.21 Optimizations +1.6.21 Optimizations -------------------- Major performance enhancements have been added: @@ -30836,65 +28258,65 @@ Major performance enhancements have been added: (4) https://bugs.python.org/issue15026  -File: python.info, Node: Build and C API Changes<4>, Next: Deprecated<6>, Prev: Optimizations<6>, Up: What’s New In Python 3 3 +File: python.info, Node: Build and C API Changes<4>, Next: Deprecated<5>, Prev: Optimizations<5>, Up: What’s New In Python 3 3 -1.7.22 Build and C API Changes +1.6.22 Build and C API Changes ------------------------------ Changes to Python’s build process and to the C API include: * New PEP 3118(1) related function: - * *note PyMemoryView_FromMemory(): ba2. + * *note PyMemoryView_FromMemory(): aaa. * PEP 393(2) added new Unicode types, macros and functions: * High-level API: - * *note PyUnicode_CopyCharacters(): ba3. + * *note PyUnicode_CopyCharacters(): aab. - * *note PyUnicode_FindChar(): 545. + * *note PyUnicode_FindChar(): 430. - * *note PyUnicode_GetLength(): ba4, *note - PyUnicode_GET_LENGTH: ba5. + * *note PyUnicode_GetLength(): aac, *note + PyUnicode_GET_LENGTH: aad. - * *note PyUnicode_New(): ba6. + * *note PyUnicode_New(): aae. - * *note PyUnicode_Substring(): ba7. + * *note PyUnicode_Substring(): aaf. - * *note PyUnicode_ReadChar(): ba8, *note - PyUnicode_WriteChar(): ba9. + * *note PyUnicode_ReadChar(): ab0, *note + PyUnicode_WriteChar(): ab1. * Low-level API: - * *note Py_UCS1: baa, *note Py_UCS2: bab, *note Py_UCS4: - bac. types + * *note Py_UCS1: ab2, *note Py_UCS2: ab3, *note Py_UCS4: + ab4. types - * *note PyASCIIObject: bad. and *note - PyCompactUnicodeObject: bae. structures + * *note PyASCIIObject: ab5. and *note + PyCompactUnicodeObject: ab6. structures - * *note PyUnicode_READY: baf. + * *note PyUnicode_READY: ab7. - * *note PyUnicode_FromKindAndData(): bb0. + * *note PyUnicode_FromKindAndData(): ab8. - * *note PyUnicode_AsUCS4(): bb1, *note - PyUnicode_AsUCS4Copy(): bb2. + * *note PyUnicode_AsUCS4(): ab9, *note + PyUnicode_AsUCS4Copy(): aba. - * *note PyUnicode_DATA: bb3, *note PyUnicode_1BYTE_DATA: - bb4, *note PyUnicode_2BYTE_DATA: bb5, *note - PyUnicode_4BYTE_DATA: bb6. + * *note PyUnicode_DATA: abb, *note PyUnicode_1BYTE_DATA: + abc, *note PyUnicode_2BYTE_DATA: abd, *note + PyUnicode_4BYTE_DATA: abe. - * *note PyUnicode_KIND: bb7. with ‘PyUnicode_Kind’ enum: - *note PyUnicode_WCHAR_KIND: bb8, *note - PyUnicode_1BYTE_KIND: bb9, *note PyUnicode_2BYTE_KIND: - bba, *note PyUnicode_4BYTE_KIND: bbb. + * *note PyUnicode_KIND: abf. with ‘PyUnicode_Kind’ enum: + *note PyUnicode_WCHAR_KIND: ac0, *note + PyUnicode_1BYTE_KIND: ac1, *note PyUnicode_2BYTE_KIND: + ac2, *note PyUnicode_4BYTE_KIND: ac3. - * *note PyUnicode_READ: bbc, *note PyUnicode_READ_CHAR: - bbd, *note PyUnicode_WRITE: bbe. + * *note PyUnicode_READ: ac4, *note PyUnicode_READ_CHAR: + ac5, *note PyUnicode_WRITE: ac6. - * *note PyUnicode_MAX_CHAR_VALUE: bbf. + * *note PyUnicode_MAX_CHAR_VALUE: ac7. - * *note PyArg_ParseTuple: 396. now accepts a *note bytearray: 173. + * *note PyArg_ParseTuple: 256. now accepts a *note bytearray: 323. for the ‘c’ format (bpo-12380(3)). ---------- Footnotes ---------- @@ -30906,9 +28328,9 @@ Changes to Python’s build process and to the C API include: (3) https://bugs.python.org/issue12380  -File: python.info, Node: Deprecated<6>, Next: Porting to Python 3 3, Prev: Build and C API Changes<4>, Up: What’s New In Python 3 3 +File: python.info, Node: Deprecated<5>, Next: Porting to Python 3 3, Prev: Build and C API Changes<4>, Up: What’s New In Python 3 3 -1.7.23 Deprecated +1.6.23 Deprecated ----------------- * Menu: @@ -30919,9 +28341,9 @@ File: python.info, Node: Deprecated<6>, Next: Porting to Python 3 3, Prev: Bu * Deprecated features::  -File: python.info, Node: Unsupported Operating Systems<2>, Next: Deprecated Python modules functions and methods<4>, Up: Deprecated<6> +File: python.info, Node: Unsupported Operating Systems<2>, Next: Deprecated Python modules functions and methods<4>, Up: Deprecated<5> -1.7.23.1 Unsupported Operating Systems +1.6.23.1 Unsupported Operating Systems ...................................... OS/2 and VMS are no longer supported due to the lack of a maintainer. @@ -30932,28 +28354,28 @@ are no longer supported due to maintenance burden. OSF support, which was deprecated in 3.2, has been completely removed.  -File: python.info, Node: Deprecated Python modules functions and methods<4>, Next: Deprecated functions and types of the C API<3>, Prev: Unsupported Operating Systems<2>, Up: Deprecated<6> +File: python.info, Node: Deprecated Python modules functions and methods<4>, Next: Deprecated functions and types of the C API<3>, Prev: Unsupported Operating Systems<2>, Up: Deprecated<5> -1.7.23.2 Deprecated Python modules, functions and methods +1.6.23.2 Deprecated Python modules, functions and methods ......................................................... * Passing a non-empty string to ‘object.__format__()’ is deprecated, - and will produce a *note TypeError: 1fe. in Python 3.4 + and will produce a *note TypeError: 17f. in Python 3.4 (bpo-9856(1)). * The ‘unicode_internal’ codec has been deprecated because of the PEP 393(2), use UTF-8, UTF-16 (‘utf-16-le’ or ‘utf-16-be’), or UTF-32 (‘utf-32-le’ or ‘utf-32-be’) - * *note ftplib.FTP.nlst(): ae6. and *note ftplib.FTP.dir(): ae7.: use - *note ftplib.FTP.mlsd(): ae5. + * *note ftplib.FTP.nlst(): 9e7. and *note ftplib.FTP.dir(): 9e8.: use + *note ftplib.FTP.mlsd(): 9e6. - * ‘platform.popen()’: use the *note subprocess: f9. module. Check + * ‘platform.popen()’: use the *note subprocess: fa. module. Check especially the *note Replacing Older Functions with the subprocess - Module: bc3. section (bpo-11377(3)). + Module: acb. section (bpo-11377(3)). * bpo-13374(4): The Windows bytes API has been deprecated in the - *note os: c4. module. Use Unicode filenames, instead of bytes + *note os: c5. module. Use Unicode filenames, instead of bytes filenames, to not depend on the ANSI code page anymore and to support any filename. @@ -30961,31 +28383,31 @@ File: python.info, Node: Deprecated Python modules functions and methods<4>, N The accelerator is used automatically whenever available. * The behaviour of ‘time.clock()’ depends on the platform: use the - new *note time.perf_counter(): 3cf. or *note time.process_time(): - 3d0. function instead, depending on your requirements, to have a + new *note time.perf_counter(): 295. or *note time.process_time(): + 296. function instead, depending on your requirements, to have a well defined behaviour. * The ‘os.stat_float_times()’ function is deprecated. - * *note abc: 3. module: + * *note abc: 4. module: - * *note abc.abstractproperty: aae. has been deprecated, use - *note property: 30b. with *note abc.abstractmethod(): aaf. + * *note abc.abstractproperty: 9ae. has been deprecated, use + *note property: 1c3. with *note abc.abstractmethod(): 9af. instead. - * *note abc.abstractclassmethod: ab0. has been deprecated, use - *note classmethod: 30c. with *note abc.abstractmethod(): aaf. + * *note abc.abstractclassmethod: 9b0. has been deprecated, use + *note classmethod: 1c4. with *note abc.abstractmethod(): 9af. instead. - * *note abc.abstractstaticmethod: ab1. has been deprecated, use - *note staticmethod: 30d. with *note abc.abstractmethod(): aaf. + * *note abc.abstractstaticmethod: 9b1. has been deprecated, use + *note staticmethod: 1c5. with *note abc.abstractmethod(): 9af. instead. - * *note importlib: 9a. package: + * *note importlib: 9b. package: - * *note importlib.abc.SourceLoader.path_mtime(): bc4. is now + * *note importlib.abc.SourceLoader.path_mtime(): acc. is now deprecated in favour of *note - importlib.abc.SourceLoader.path_stats(): bc5. as bytecode + importlib.abc.SourceLoader.path_stats(): acd. as bytecode files now store both the modification time and size of the source file the bytecode file was compiled from. @@ -31002,118 +28424,118 @@ File: python.info, Node: Deprecated Python modules functions and methods<4>, N (5) https://bugs.python.org/issue13988  -File: python.info, Node: Deprecated functions and types of the C API<3>, Next: Deprecated features, Prev: Deprecated Python modules functions and methods<4>, Up: Deprecated<6> +File: python.info, Node: Deprecated functions and types of the C API<3>, Next: Deprecated features, Prev: Deprecated Python modules functions and methods<4>, Up: Deprecated<5> -1.7.23.3 Deprecated functions and types of the C API +1.6.23.3 Deprecated functions and types of the C API .................................................... -The *note Py_UNICODE: bc7. has been deprecated by PEP 393(1) and will be +The *note Py_UNICODE: acf. has been deprecated by PEP 393(1) and will be removed in Python 4. All functions using this type are deprecated: -Unicode functions and methods using *note Py_UNICODE: bc7. and *note -Py_UNICODE*: bc7. types: +Unicode functions and methods using *note Py_UNICODE: acf. and *note +Py_UNICODE: acf.* types: - * *note PyUnicode_FromUnicode: 263.: use *note - PyUnicode_FromWideChar(): bc8. or *note - PyUnicode_FromKindAndData(): bb0. + * *note PyUnicode_FromUnicode: ad0.: use *note + PyUnicode_FromWideChar(): ad1. or *note + PyUnicode_FromKindAndData(): ab8. - * *note PyUnicode_AS_UNICODE: bc9, *note PyUnicode_AsUnicode(): 264, - *note PyUnicode_AsUnicodeAndSize(): 265.: use *note - PyUnicode_AsWideCharString(): 53e. + * *note PyUnicode_AS_UNICODE: ad2, *note PyUnicode_AsUnicode(): ad3, + *note PyUnicode_AsUnicodeAndSize(): ad4.: use *note + PyUnicode_AsWideCharString(): 428. - * *note PyUnicode_AS_DATA: bca.: use *note PyUnicode_DATA: bb3. with - *note PyUnicode_READ: bbc. and *note PyUnicode_WRITE: bbe. + * *note PyUnicode_AS_DATA: ad5.: use *note PyUnicode_DATA: abb. with + *note PyUnicode_READ: ac4. and *note PyUnicode_WRITE: ac6. - * *note PyUnicode_GET_SIZE: bcb, *note PyUnicode_GetSize(): bcc.: use - *note PyUnicode_GET_LENGTH: ba5. or *note PyUnicode_GetLength(): - ba4. + * *note PyUnicode_GET_SIZE: ad6, *note PyUnicode_GetSize(): ad7.: use + *note PyUnicode_GET_LENGTH: aad. or *note PyUnicode_GetLength(): + aac. - * *note PyUnicode_GET_DATA_SIZE: bcd.: use ‘PyUnicode_GET_LENGTH(str) + * *note PyUnicode_GET_DATA_SIZE: ad8.: use ‘PyUnicode_GET_LENGTH(str) * PyUnicode_KIND(str)’ (only work on ready strings) - * *note PyUnicode_AsUnicodeCopy(): bce.: use *note - PyUnicode_AsUCS4Copy(): bb2. or *note PyUnicode_AsWideCharString(): - 53e. + * *note PyUnicode_AsUnicodeCopy(): ad9.: use *note + PyUnicode_AsUCS4Copy(): aba. or *note PyUnicode_AsWideCharString(): + 428. * ‘PyUnicode_GetMax()’ Functions and macros manipulating Py_UNICODE* strings: - * ‘Py_UNICODE_strlen’: use *note PyUnicode_GetLength(): ba4. or *note - PyUnicode_GET_LENGTH: ba5. + * ‘Py_UNICODE_strlen’: use *note PyUnicode_GetLength(): aac. or *note + PyUnicode_GET_LENGTH: aad. - * ‘Py_UNICODE_strcat’: use *note PyUnicode_CopyCharacters(): ba3. or - *note PyUnicode_FromFormat(): 8ba. + * ‘Py_UNICODE_strcat’: use *note PyUnicode_CopyCharacters(): aab. or + *note PyUnicode_FromFormat(): 7b0. * ‘Py_UNICODE_strcpy’, ‘Py_UNICODE_strncpy’, ‘Py_UNICODE_COPY’: use - *note PyUnicode_CopyCharacters(): ba3. or *note - PyUnicode_Substring(): ba7. + *note PyUnicode_CopyCharacters(): aab. or *note + PyUnicode_Substring(): aaf. - * ‘Py_UNICODE_strcmp’: use *note PyUnicode_Compare(): bcf. + * ‘Py_UNICODE_strcmp’: use *note PyUnicode_Compare(): ada. - * ‘Py_UNICODE_strncmp’: use *note PyUnicode_Tailmatch(): 275. + * ‘Py_UNICODE_strncmp’: use *note PyUnicode_Tailmatch(): adb. * ‘Py_UNICODE_strchr’, ‘Py_UNICODE_strrchr’: use *note - PyUnicode_FindChar(): 545. + PyUnicode_FindChar(): 430. - * ‘Py_UNICODE_FILL’: use *note PyUnicode_Fill(): bd0. + * ‘Py_UNICODE_FILL’: use *note PyUnicode_Fill(): adc. * ‘Py_UNICODE_MATCH’ Encoders: - * *note PyUnicode_Encode(): bd1.: use ‘PyUnicode_AsEncodedObject()’ + * *note PyUnicode_Encode(): add.: use ‘PyUnicode_AsEncodedObject()’ - * *note PyUnicode_EncodeUTF7(): bd2. + * *note PyUnicode_EncodeUTF7(): ade. - * *note PyUnicode_EncodeUTF8(): bd3.: use *note PyUnicode_AsUTF8(): - 531. or *note PyUnicode_AsUTF8String(): bd4. + * *note PyUnicode_EncodeUTF8(): adf.: use *note PyUnicode_AsUTF8(): + 41b. or *note PyUnicode_AsUTF8String(): ae0. - * *note PyUnicode_EncodeUTF32(): bd5. + * *note PyUnicode_EncodeUTF32(): ae1. - * *note PyUnicode_EncodeUTF16(): bd6. + * *note PyUnicode_EncodeUTF16(): ae2. - * *note PyUnicode_EncodeUnicodeEscape(): bd7. use *note - PyUnicode_AsUnicodeEscapeString(): bd8. + * *note PyUnicode_EncodeUnicodeEscape(): ae3. use *note + PyUnicode_AsUnicodeEscapeString(): ae4. - * *note PyUnicode_EncodeRawUnicodeEscape(): bd9. use *note - PyUnicode_AsRawUnicodeEscapeString(): bda. + * *note PyUnicode_EncodeRawUnicodeEscape(): ae5. use *note + PyUnicode_AsRawUnicodeEscapeString(): ae6. - * *note PyUnicode_EncodeLatin1(): bdb.: use *note - PyUnicode_AsLatin1String(): bdc. + * *note PyUnicode_EncodeLatin1(): ae7.: use *note + PyUnicode_AsLatin1String(): ae8. - * *note PyUnicode_EncodeASCII(): bdd.: use *note - PyUnicode_AsASCIIString(): bde. + * *note PyUnicode_EncodeASCII(): ae9.: use *note + PyUnicode_AsASCIIString(): aea. - * *note PyUnicode_EncodeCharmap(): bdf. + * *note PyUnicode_EncodeCharmap(): aeb. - * *note PyUnicode_TranslateCharmap(): be0. + * *note PyUnicode_TranslateCharmap(): aec. - * *note PyUnicode_EncodeMBCS(): be1.: use *note - PyUnicode_AsMBCSString(): be2. or *note PyUnicode_EncodeCodePage(): - be3. (with ‘CP_ACP’ code_page) + * *note PyUnicode_EncodeMBCS(): aed.: use *note + PyUnicode_AsMBCSString(): aee. or *note PyUnicode_EncodeCodePage(): + aef. (with ‘CP_ACP’ code_page) * ‘PyUnicode_EncodeDecimal()’, *note - PyUnicode_TransformDecimalToASCII(): be4. + PyUnicode_TransformDecimalToASCII(): af0. ---------- Footnotes ---------- (1) https://www.python.org/dev/peps/pep-0393  -File: python.info, Node: Deprecated features, Prev: Deprecated functions and types of the C API<3>, Up: Deprecated<6> +File: python.info, Node: Deprecated features, Prev: Deprecated functions and types of the C API<3>, Up: Deprecated<5> -1.7.23.4 Deprecated features +1.6.23.4 Deprecated features ............................ -The *note array: 6. module’s ‘'u'’ format code is now deprecated and +The *note array: 7. module’s ‘'u'’ format code is now deprecated and will be removed in Python 4 together with the rest of the (*note -Py_UNICODE: bc7.) API. +Py_UNICODE: acf.) API.  -File: python.info, Node: Porting to Python 3 3, Prev: Deprecated<6>, Up: What’s New In Python 3 3 +File: python.info, Node: Porting to Python 3 3, Prev: Deprecated<5>, Up: What’s New In Python 3 3 -1.7.24 Porting to Python 3.3 +1.6.24 Porting to Python 3.3 ---------------------------- This section lists previously described changes and other bugfixes that @@ -31129,12 +28551,12 @@ may require changes to your code.  File: python.info, Node: Porting Python code, Next: Porting C code, Up: Porting to Python 3 3 -1.7.24.1 Porting Python code +1.6.24.1 Porting Python code ............................ * Hash randomization is enabled by default. Set the *note - PYTHONHASHSEED: aa6. environment variable to ‘0’ to disable hash - randomization. See also the *note object.__hash__(): 44e. method. + PYTHONHASHSEED: 9a6. environment variable to ‘0’ to disable hash + randomization. See also the *note object.__hash__(): 331. method. * bpo-12326(1): On Linux, sys.platform doesn’t contain the major version anymore. It is now always ‘linux’, instead of ‘linux2’ or @@ -31143,70 +28565,70 @@ File: python.info, Node: Porting Python code, Next: Porting C code, Up: Porti sys.platform.startswith(‘linux’), or directly sys.platform == ‘linux’ if you don’t need to support older Python versions. - * bpo-13847(2), bpo-14180(3): *note time: 10c. and *note datetime: - 30.: *note OverflowError: a43. is now raised instead of *note - ValueError: 16d. if a timestamp is out of range. *note OSError: - 307. is now raised if C functions ‘gmtime()’ or ‘localtime()’ + * bpo-13847(2), bpo-14180(3): *note time: 10b. and *note datetime: + 31.: *note OverflowError: 941. is now raised instead of *note + ValueError: 1e7. if a timestamp is out of range. *note OSError: + 1bf. is now raised if C functions ‘gmtime()’ or ‘localtime()’ failed. * The default finders used by import now utilize a cache of what is contained within a specific directory. If you create a Python source file or sourceless bytecode file, make sure to call *note - importlib.invalidate_caches(): 599. to clear out the cache for the + importlib.invalidate_caches(): 48d. to clear out the cache for the finders to notice the new file. - * *note ImportError: 16c. now uses the full name of the module that + * *note ImportError: 325. now uses the full name of the module that was attempted to be imported. Doctests that check ImportErrors’ message will need to be updated to use the full name of the module instead of just the tail of the name. - * The `index' argument to *note __import__(): 16b. now defaults to 0 + * The `index' argument to *note __import__(): 5fd. now defaults to 0 instead of -1 and no longer support negative values. It was an oversight when PEP 328(4) was implemented that the default value remained -1. If you need to continue to perform a relative import followed by an absolute import, then perform the relative import using an index of 1, followed by another import using an index of 0. It is preferred, though, that you use *note - importlib.import_module(): be8. rather than call *note - __import__(): 16b. directly. + importlib.import_module(): af4. rather than call *note + __import__(): 5fd. directly. - * *note __import__(): 16b. no longer allows one to use an index value + * *note __import__(): 5fd. no longer allows one to use an index value other than 0 for top-level modules. E.g. ‘__import__('sys', level=1)’ is now an error. - * Because *note sys.meta_path: 6df. and *note sys.path_hooks: a3f. + * Because *note sys.meta_path: 5d3. and *note sys.path_hooks: 93d. now have finders on them by default, you will most likely want to use ‘list.insert()’ instead of ‘list.append()’ to add to those lists. * Because ‘None’ is now inserted into *note sys.path_importer_cache: - 59a, if you are clearing out entries in the dictionary of paths + 48e, if you are clearing out entries in the dictionary of paths that do not have a finder, you will need to remove keys paired with - values of ‘None’ `and' *note imp.NullImporter: a9d. to be + values of ‘None’ `and' *note imp.NullImporter: 99c. to be backwards-compatible. This will lead to extra overhead on older versions of Python that re-insert ‘None’ into *note - sys.path_importer_cache: 59a. where it represents the use of + sys.path_importer_cache: 48e. where it represents the use of implicit finders, but semantically it should not change anything. - * *note importlib.abc.Finder: a97. no longer specifies a + * *note importlib.abc.Finder: 996. no longer specifies a ‘find_module()’ abstract method that must be implemented. If you were relying on subclasses to implement that method, make sure to check for the method’s existence first. You will probably want to check for ‘find_loader()’ first, though, in the case of working - with *note path entry finders: a94. + with *note path entry finders: 993. - * *note pkgutil: cd. has been converted to use *note importlib: 9a. + * *note pkgutil: ce. has been converted to use *note importlib: 9b. internally. This eliminates many edge cases where the old behaviour of the PEP 302(5) import emulation failed to match the behaviour of the real import system. The import emulation itself is still present, but is now deprecated. The *note - pkgutil.iter_importers(): be9. and *note pkgutil.walk_packages(): - 588. functions special case the standard import hooks so they are + pkgutil.iter_importers(): af5. and *note pkgutil.walk_packages(): + 47c. functions special case the standard import hooks so they are still supported even though they do not provide the non-standard ‘iter_modules()’ method. * A longstanding RFC-compliance bug (bpo-1079(6)) in the parsing done - by *note email.header.decode_header(): ada. has been fixed. Code + by *note email.header.decode_header(): 9da. has been fixed. Code that uses the standard idiom to convert encoded headers into unicode (‘str(make_header(decode_header(h))’) will see no change, but code that looks at the individual tuples returned by @@ -31217,19 +28639,19 @@ File: python.info, Node: Porting Python code, Next: Porting C code, Up: Porti between ‘ASCII’ and non-‘ASCII’ sections if it is not already present in the input strings. - * *note email.utils.formataddr(): bea. now does the correct content + * *note email.utils.formataddr(): af6. now does the correct content transfer encoding when passed non-‘ASCII’ display names. Any code that depended on the previous buggy behavior that preserved the non-‘ASCII’ unicode in the formatted output string will need to be changed (bpo-1690608(7)). - * *note poplib.POP3.quit(): beb. may now raise protocol errors like + * *note poplib.POP3.quit(): af7. may now raise protocol errors like all other ‘poplib’ methods. Code that assumes ‘quit’ does not - raise *note poplib.error_proto: bec. errors may need to be changed + raise *note poplib.error_proto: af8. errors may need to be changed if errors on ‘quit’ are encountered by a particular application (bpo-11291(8)). - * The ‘strict’ argument to *note email.parser.Parser: bed, deprecated + * The ‘strict’ argument to *note email.parser.Parser: af9, deprecated since Python 2.4, has finally been removed. * The deprecated method ‘unittest.TestCase.assertSameElements’ has @@ -31238,23 +28660,23 @@ File: python.info, Node: Porting Python code, Next: Porting C code, Up: Porti * The deprecated variable ‘time.accept2dyear’ has been removed. * The deprecated ‘Context._clamp’ attribute has been removed from the - *note decimal: 35. module. It was previously replaced by the + *note decimal: 36. module. It was previously replaced by the public attribute ‘clamp’. (See bpo-8540(9).) * The undocumented internal helper class ‘SSLFakeFile’ has been - removed from *note smtplib: ed, since its functionality has long - been provided directly by *note socket.socket.makefile(): bee. + removed from *note smtplib: ee, since its functionality has long + been provided directly by *note socket.socket.makefile(): afa. - * Passing a negative value to *note time.sleep(): 775. on Windows now + * Passing a negative value to *note time.sleep(): 669. on Windows now raises an error instead of sleeping forever. It has always raised an error on posix. * The ‘ast.__version__’ constant has been removed. If you need to make decisions affected by the AST version, use *note - sys.version_info: bef. to make the decision. + sys.version_info: afb. to make the decision. * Code that used to work around the fact that the *note threading: - 10b. module used factory functions by subclassing the private + 10a. module used factory functions by subclassing the private classes will need to change to subclass the now-public classes. * The undocumented debugging machinery in the threading module has @@ -31287,35 +28709,35 @@ File: python.info, Node: Porting Python code, Next: Porting C code, Up: Porti  File: python.info, Node: Porting C code, Next: Building C extensions, Prev: Porting Python code, Up: Porting to Python 3 3 -1.7.24.2 Porting C code +1.6.24.2 Porting C code ....................... * In the course of changes to the buffer API the undocumented - ‘smalltable’ member of the *note Py_buffer: bf0. structure has been + ‘smalltable’ member of the *note Py_buffer: afc. structure has been removed and the layout of the ‘PyMemoryViewObject’ has changed. All extensions relying on the relevant parts in ‘memoryobject.h’ or ‘object.h’ must be rebuilt. - * Due to *note PEP 393: a5f, the *note Py_UNICODE: bc7. type and all + * Due to *note PEP 393: 95d, the *note Py_UNICODE: acf. type and all functions using this type are deprecated (but will stay available for at least five years). If you were using low-level Unicode APIs to construct and access unicode objects and you want to benefit of the memory footprint reduction provided by PEP 393(1), you have to - convert your code to the new *note Unicode API: bf1. + convert your code to the new *note Unicode API: afd. However, if you only have been using high-level functions such as - *note PyUnicode_Concat(): bf2, *note PyUnicode_Join(): bf3. or - *note PyUnicode_FromFormat(): 8ba, your code will automatically + *note PyUnicode_Concat(): afe, *note PyUnicode_Join(): aff. or + *note PyUnicode_FromFormat(): 7b0, your code will automatically take advantage of the new unicode representations. - * *note PyImport_GetMagicNumber(): bf4. now returns ‘-1’ upon + * *note PyImport_GetMagicNumber(): b00. now returns ‘-1’ upon failure. * As a negative value for the `level' argument to *note __import__(): - 16b. is no longer valid, the same now holds for *note - PyImport_ImportModuleLevel(): bf5. This also means that the value - of `level' used by *note PyImport_ImportModuleEx(): bf6. is now ‘0’ + 5fd. is no longer valid, the same now holds for *note + PyImport_ImportModuleLevel(): b01. This also means that the value + of `level' used by *note PyImport_ImportModuleEx(): b02. is now ‘0’ instead of ‘-1’. ---------- Footnotes ---------- @@ -31325,7 +28747,7 @@ File: python.info, Node: Porting C code, Next: Building C extensions, Prev: P  File: python.info, Node: Building C extensions, Next: Command Line Switch Changes, Prev: Porting C code, Up: Porting to Python 3 3 -1.7.24.3 Building C extensions +1.6.24.3 Building C extensions .............................. * The range of possible file names for C extensions has been @@ -31345,7 +28767,7 @@ File: python.info, Node: Building C extensions, Next: Command Line Switch Chan  File: python.info, Node: Command Line Switch Changes, Prev: Building C extensions, Up: Porting to Python 3 3 -1.7.24.4 Command Line Switch Changes +1.6.24.4 Command Line Switch Changes .................................... * The -Q command-line flag and related artifacts have been removed. @@ -31353,7 +28775,7 @@ File: python.info, Node: Command Line Switch Changes, Prev: Building C extensi (bpo-10998(1), contributed by Éric Araujo.) - * When ‘python’ is started with *note -S: bf9, ‘import site’ will no + * When ‘python’ is started with *note -S: b05, ‘import site’ will no longer add site-specific paths to the module search paths. In previous versions, it did. @@ -31369,7 +28791,7 @@ File: python.info, Node: Command Line Switch Changes, Prev: Building C extensi  File: python.info, Node: What’s New In Python 3 2, Next: What’s New In Python 3 1, Prev: What’s New In Python 3 3, Up: What’s New in Python -1.8 What’s New In Python 3.2 +1.7 What’s New In Python 3.2 ============================ @@ -31393,10 +28815,10 @@ PEP 392(2) - Python 3.2 Release Schedule * PEP 3147; PYC Repository Directories: PEP 3147 PYC Repository Directories. * PEP 3149; ABI Version Tagged .so Files: PEP 3149 ABI Version Tagged so Files. * PEP 3333; Python Web Server Gateway Interface v1.0.1: PEP 3333 Python Web Server Gateway Interface v1 0 1. -* Other Language Changes: Other Language Changes<8>. +* Other Language Changes: Other Language Changes<7>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules. * Multi-threading:: -* Optimizations: Optimizations<7>. +* Optimizations: Optimizations<6>. * Unicode:: * Codecs:: * Documentation:: @@ -31415,7 +28837,7 @@ https://github.com/python/cpython/blob/076ca6c3c8df3030307e548d9be792ce3c1c6eea/  File: python.info, Node: PEP 384 Defining a Stable ABI, Next: PEP 389 Argparse Command Line Parsing Module, Up: What’s New In Python 3 2 -1.8.1 PEP 384: Defining a Stable ABI +1.7.1 PEP 384: Defining a Stable ABI ------------------------------------ In the past, extension modules built for one Python version were often @@ -31447,18 +28869,18 @@ PEP 384(1) - Defining a Stable ABI  File: python.info, Node: PEP 389 Argparse Command Line Parsing Module, Next: PEP 391 Dictionary Based Configuration for Logging, Prev: PEP 384 Defining a Stable ABI, Up: What’s New In Python 3 2 -1.8.2 PEP 389: Argparse Command Line Parsing Module +1.7.2 PEP 389: Argparse Command Line Parsing Module --------------------------------------------------- -A new module for command line parsing, *note argparse: 5, was introduced -to overcome the limitations of *note optparse: c3. which did not provide +A new module for command line parsing, *note argparse: 6, was introduced +to overcome the limitations of *note optparse: c4. which did not provide support for positional arguments (not just options), subcommands, required options and other common patterns of specifying and validating options. This module has already had widespread success in the community as a third-party module. Being more fully featured than its predecessor, the -*note argparse: 5. module is now the preferred module for command-line +*note argparse: 6. module is now the preferred module for command-line processing. The older module is still being kept available because of the substantial amount of legacy code that depends on it. @@ -31512,7 +28934,7 @@ Example of the parser’s automatically generated help: Tested on Solaris and Linux -An especially nice *note argparse: 5. feature is the ability to define +An especially nice *note argparse: 6. feature is the ability to define subparsers, each with their own argument patterns and help displays: import argparse @@ -31540,8 +28962,8 @@ PEP 389(1) - New Command Line Parsing Module PEP written by Steven Bethard. -*note Upgrading optparse code: bfe. for details on the differences from -*note optparse: c3. +*note Upgrading optparse code: b0a. for details on the differences from +*note optparse: c4. ---------- Footnotes ---------- @@ -31550,10 +28972,10 @@ PEP 389(1) - New Command Line Parsing Module  File: python.info, Node: PEP 391 Dictionary Based Configuration for Logging, Next: PEP 3148 The concurrent futures module, Prev: PEP 389 Argparse Command Line Parsing Module, Up: What’s New In Python 3 2 -1.8.3 PEP 391: Dictionary Based Configuration for Logging +1.7.3 PEP 391: Dictionary Based Configuration for Logging --------------------------------------------------------- -The *note logging: aa. module provided two kinds of configuration, one +The *note logging: ab. module provided two kinds of configuration, one style with function calls for each option or another style driven by an external file saved in a ‘ConfigParser’ format. Those options did not provide the flexibility to create configurations from JSON or YAML @@ -31561,7 +28983,7 @@ files, nor did they support incremental configuration, which is needed for specifying logger options from a command line. To support a more flexible style, the module now offers *note -logging.config.dictConfig(): c00. for specifying logging configuration +logging.config.dictConfig(): b0c. for specifying logging configuration with plain Python dictionaries. The configuration options include formatters, handlers, filters, and loggers. Here’s a working example of a configuration dictionary: @@ -31610,7 +29032,7 @@ PEP 391(1) - Dictionary Based Configuration for Logging  File: python.info, Node: PEP 3148 The concurrent futures module, Next: PEP 3147 PYC Repository Directories, Prev: PEP 391 Dictionary Based Configuration for Logging, Up: What’s New In Python 3 2 -1.8.4 PEP 3148: The ‘concurrent.futures’ module +1.7.4 PEP 3148: The ‘concurrent.futures’ module ----------------------------------------------- Code for creating and managing concurrency is being collected in a new @@ -31618,9 +29040,9 @@ top-level namespace, `concurrent'. Its first member is a `futures' package which provides a uniform high-level interface for managing threads and processes. -The design for *note concurrent.futures: 21. was inspired by the +The design for *note concurrent.futures: 22. was inspired by the `java.util.concurrent' package. In that model, a running call and its -result are represented by a *note Future: c02. object that abstracts +result are represented by a *note Future: b0e. object that abstracts features common to threads, processes, and remote procedure calls. That object supports status checks (running or done), timeouts, cancellations, adding callbacks, and access to results or exceptions. @@ -31638,14 +29060,14 @@ This solves the design challenge that arises when each component has its own competing strategy for resource management. Both classes share a common interface with three methods: *note -submit(): 3c9. for scheduling a callable and returning a *note Future: -c02. object; *note map(): 7b3. for scheduling many asynchronous calls at -a time, and *note shutdown(): 195. for freeing resources. The class is -a *note context manager: 663. and can be used in a *note with: 7dc. +submit(): 28e. for scheduling a callable and returning a *note Future: +b0e. object; *note map(): 6a5. for scheduling many asynchronous calls at +a time, and *note shutdown(): b0f. for freeing resources. The class is +a *note context manager: 555. and can be used in a *note with: 6d0. statement to assure that resources are automatically released when currently pending futures are done executing. -A simple of example of *note ThreadPoolExecutor: 18c. is a launch of +A simple of example of *note ThreadPoolExecutor: 266. is a launch of four parallel threads for copying files: import concurrent.futures, shutil @@ -31662,11 +29084,11 @@ PEP 3148(1) - Futures – Execute Computations Asynchronously PEP written by Brian Quinlan. -*note Code for Threaded Parallel URL reads: c03, an example using +*note Code for Threaded Parallel URL reads: b10, an example using threads to fetch multiple web pages in parallel. -*note Code for computing prime numbers in parallel: c04, an example -demonstrating *note ProcessPoolExecutor: 196. +*note Code for computing prime numbers in parallel: b11, an example +demonstrating *note ProcessPoolExecutor: 28f. ---------- Footnotes ---------- @@ -31675,7 +29097,7 @@ demonstrating *note ProcessPoolExecutor: 196.  File: python.info, Node: PEP 3147 PYC Repository Directories, Next: PEP 3149 ABI Version Tagged so Files, Prev: PEP 3148 The concurrent futures module, Up: What’s New In Python 3 2 -1.8.5 PEP 3147: PYC Repository Directories +1.7.5 PEP 3147: PYC Repository Directories ------------------------------------------ Python’s scheme for caching bytecode in `.pyc' files did not work well @@ -31701,7 +29123,7 @@ package directory. Aside from the filenames and target directories, the new scheme has a few aspects that are visible to the programmer: - * Imported modules now have a *note __cached__: c06. attribute which + * Imported modules now have a *note __cached__: b13. attribute which stores the name of the actual file that was imported: >>> import collections @@ -31709,7 +29131,7 @@ few aspects that are visible to the programmer: 'c:/py32/lib/__pycache__/collections.cpython-32.pyc' * The tag that is unique to each interpreter is accessible from the - *note imp: 99. module: + *note imp: 9a. module: >>> import imp >>> imp.get_tag() @@ -31718,22 +29140,22 @@ few aspects that are visible to the programmer: * Scripts that try to deduce source filename from the imported file now need to be smarter. It is no longer sufficient to simply strip the “c” from a “.pyc” filename. Instead, use the new functions in - the *note imp: 99. module: + the *note imp: 9a. module: >>> imp.source_from_cache('c:/py32/lib/__pycache__/collections.cpython-32.pyc') 'c:/py32/lib/collections.py' >>> imp.cache_from_source('c:/py32/lib/collections.py') 'c:/py32/lib/__pycache__/collections.cpython-32.pyc' - * The *note py_compile: d7. and *note compileall: 20. modules have + * The *note py_compile: d8. and *note compileall: 21. modules have been updated to reflect the new naming convention and target directory. The command-line invocation of `compileall' has new options: ‘-i’ for specifying a list of files and directories to compile and ‘-b’ which causes bytecode files to be written to their legacy location rather than `__pycache__'. - * The *note importlib.abc: 9b. module has been updated with new *note - abstract base classes: c07. for loading bytecode files. The + * The *note importlib.abc: 9c. module has been updated with new *note + abstract base classes: b14. for loading bytecode files. The obsolete ABCs, ‘PyLoader’ and ‘PyPycLoader’, have been deprecated (instructions on how to stay Python 3.1 compatible are included with the documentation). @@ -31752,7 +29174,7 @@ PEP 3147(1) - PYC Repository Directories  File: python.info, Node: PEP 3149 ABI Version Tagged so Files, Next: PEP 3333 Python Web Server Gateway Interface v1 0 1, Prev: PEP 3147 PYC Repository Directories, Up: What’s New In Python 3 2 -1.8.6 PEP 3149: ABI Version Tagged .so Files +1.7.6 PEP 3149: ABI Version Tagged .so Files -------------------------------------------- The PYC repository directory allows multiple bytecode cache files to be @@ -31771,7 +29193,7 @@ package is installed: /usr/share/pyshared/foo.cpython-33md.so In Python itself, the tags are accessible from functions in the *note -sysconfig: fe. module: +sysconfig: ff. module: >>> import sysconfig >>> sysconfig.get_config_var('SOABI') # find the version tag @@ -31791,21 +29213,21 @@ PEP 3149(1) - ABI Version Tagged .so Files (1) https://www.python.org/dev/peps/pep-3149  -File: python.info, Node: PEP 3333 Python Web Server Gateway Interface v1 0 1, Next: Other Language Changes<8>, Prev: PEP 3149 ABI Version Tagged so Files, Up: What’s New In Python 3 2 +File: python.info, Node: PEP 3333 Python Web Server Gateway Interface v1 0 1, Next: Other Language Changes<7>, Prev: PEP 3149 ABI Version Tagged so Files, Up: What’s New In Python 3 2 -1.8.7 PEP 3333: Python Web Server Gateway Interface v1.0.1 +1.7.7 PEP 3333: Python Web Server Gateway Interface v1.0.1 ---------------------------------------------------------- This informational PEP clarifies how bytes/text issues are to be handled by the WSGI protocol. The challenge is that string handling in Python 3 -is most conveniently handled with the *note str: 205. type even though +is most conveniently handled with the *note str: 321. type even though the HTTP protocol is itself bytes oriented. The PEP differentiates so-called `native strings' that are used for request/response headers and metadata versus `byte strings' which are used for the bodies of requests and responses. -The `native strings' are always of type *note str: 205. but are +The `native strings' are always of type *note str: 321. but are restricted to code points between `U+0000' through `U+00FF' which are translatable to bytes using `Latin-1' encoding. These strings are used for the keys and values in the environment dictionary and for response @@ -31832,9 +29254,9 @@ salient points: For server implementers writing CGI-to-WSGI pathways or other CGI-style protocols, the users must to be able access the environment using native strings even though the underlying platform may have a different -convention. To bridge this gap, the *note wsgiref: 135. module has a -new function, *note wsgiref.handlers.read_environ(): c0a. for -transcoding CGI variables from *note os.environ: c0b. into native +convention. To bridge this gap, the *note wsgiref: 12d. module has a +new function, *note wsgiref.handlers.read_environ(): b17. for +transcoding CGI variables from *note os.environ: b18. into native strings and returning a new dictionary. See also @@ -31853,15 +29275,15 @@ PEP 3333(3) - Python Web Server Gateway Interface v1.0.1 (3) https://www.python.org/dev/peps/pep-3333  -File: python.info, Node: Other Language Changes<8>, Next: New Improved and Deprecated Modules, Prev: PEP 3333 Python Web Server Gateway Interface v1 0 1, Up: What’s New In Python 3 2 +File: python.info, Node: Other Language Changes<7>, Next: New Improved and Deprecated Modules, Prev: PEP 3333 Python Web Server Gateway Interface v1 0 1, Up: What’s New In Python 3 2 -1.8.8 Other Language Changes +1.7.8 Other Language Changes ---------------------------- Some smaller changes made to the core Python language are: - * String formatting for *note format(): 5d8. and *note str.format(): - 5d7. gained new capabilities for the format character `#'. + * String formatting for *note format(): 4cc. and *note str.format(): + 4cb. gained new capabilities for the format character `#'. Previously, for integers in binary, octal, or hexadecimal, it caused the output to be prefixed with ‘0b’, ‘0o’, or ‘0x’ respectively. Now it can also handle floats, complex, and Decimal, @@ -31876,15 +29298,15 @@ Some smaller changes made to the core Python language are: (Suggested by Mark Dickinson and implemented by Eric Smith in bpo-7094(1).) - * There is also a new *note str.format_map(): 7a6. method that - extends the capabilities of the existing *note str.format(): 5d7. - method by accepting arbitrary *note mapping: c0d. objects. This + * There is also a new *note str.format_map(): 698. method that + extends the capabilities of the existing *note str.format(): 4cb. + method by accepting arbitrary *note mapping: b1a. objects. This new method makes it possible to use string formatting with any of Python’s many dictionary-like objects such as *note defaultdict: - c0e, *note Shelf: 999, *note ConfigParser: 5a7, or *note dbm: 31. - It is also useful with custom *note dict: 164. subclasses that - normalize keys before look-up or that supply a *note __missing__(): - c0f. method for unknown keys: + b1b, *note Shelf: 894, *note ConfigParser: 49b, or *note dbm: 32. + It is also useful with custom *note dict: 1a4. subclasses that + normalize keys before look-up or that supply a ‘__missing__()’ + method for unknown keys: >>> import shelve >>> d = shelve.open('tmp.shl') @@ -31910,7 +29332,7 @@ Some smaller changes made to the core Python language are: * The interpreter can now be started with a quiet option, ‘-q’, to prevent the copyright and version information from being displayed in the interactive mode. The option can be introspected using the - *note sys.flags: c10. attribute: + *note sys.flags: b1c. attribute: $ python -q >>> sys.flags @@ -31920,14 +29342,14 @@ Some smaller changes made to the core Python language are: (Contributed by Marcin Wojdyr in bpo-1772833(3)). - * The *note hasattr(): 54c. function works by calling *note - getattr(): 54d. and detecting whether an exception is raised. This - technique allows it to detect methods created dynamically by *note - __getattr__(): 42c. or *note __getattribute__(): 54e. which would - otherwise be absent from the class dictionary. Formerly, `hasattr' - would catch any exception, possibly masking genuine errors. Now, - `hasattr' has been tightened to only catch *note AttributeError: - 4a4. and let other exceptions pass through: + * The *note hasattr(): 437. function works by calling *note + getattr(): 438. and detecting whether an exception is raised. This + technique allows it to detect methods created dynamically by + ‘__getattr__()’ or ‘__getattribute__()’ which would otherwise be + absent from the class dictionary. Formerly, `hasattr' would catch + any exception, possibly masking genuine errors. Now, `hasattr' has + been tightened to only catch *note AttributeError: 38c. and let + other exceptions pass through: >>> class A: ... @property @@ -31943,10 +29365,10 @@ Some smaller changes made to the core Python language are: (Discovered by Yury Selivanov and fixed by Benjamin Peterson; bpo-9666(4).) - * The *note str(): 205. of a float or complex number is now the same - as its *note repr(): 8bb. Previously, the *note str(): 205. form + * The *note str(): 321. of a float or complex number is now the same + as its *note repr(): 7b1. Previously, the *note str(): 321. form was shorter but that just caused confusion and is no longer needed - now that the shortest possible *note repr(): 8bb. is displayed by + now that the shortest possible *note repr(): 7b1. is displayed by default: >>> import math @@ -31957,7 +29379,7 @@ Some smaller changes made to the core Python language are: (Proposed and implemented by Mark Dickinson; bpo-9337(5).) - * *note memoryview: 389. objects now have a *note release(): c11. + * *note memoryview: 248. objects now have a *note release(): b1d. method and they also now support the context management protocol. This allows timely release of any resources that were acquired when requesting a buffer from the original object. @@ -31978,8 +29400,8 @@ Some smaller changes made to the core Python language are: del x This is now allowed. Remember that the target of an *note except: - c12. clause is cleared, so this code which used to work with Python - 2.6, raised a *note SyntaxError: 55c. with Python 3.1 and now works + b1e. clause is cleared, so this code which used to work with Python + 2.6, raised a *note SyntaxError: 449. with Python 3.1 and now works again: def f(): @@ -31995,8 +29417,8 @@ Some smaller changes made to the core Python language are: * The internal ‘structsequence’ tool now creates subclasses of tuple. This means that C structures like those returned by *note - os.stat(): 324, *note time.gmtime(): c13, and *note - sys.version_info: bef. now work like a *note named tuple: b7d. and + os.stat(): 1dd, *note time.gmtime(): b1f, and *note + sys.version_info: afb. now work like a *note named tuple: a84. and now work with functions and methods that expect a tuple as an argument. This is a big step forward in making the C structures as flexible as their pure Python counterparts: @@ -32011,7 +29433,7 @@ Some smaller changes made to the core Python language are: by Benjamin Peterson in bpo-8413(8).) * Warnings are now easier to control using the *note PYTHONWARNINGS: - 51e. environment variable as an alternative to using ‘-W’ at the + 409. environment variable as an alternative to using ‘-W’ at the command line: $ export PYTHONWARNINGS='ignore::RuntimeWarning::,once::UnicodeWarning::' @@ -32019,20 +29441,20 @@ Some smaller changes made to the core Python language are: (Suggested by Barry Warsaw and implemented by Philip Jenvey in bpo-7301(9).) - * A new warning category, *note ResourceWarning: 5cd, has been added. + * A new warning category, *note ResourceWarning: 4c1, has been added. It is emitted when potential issues with resource consumption or cleanup are detected. It is silenced by default in normal release builds but can be enabled through the means provided by the *note - warnings: 12f. module, or on the command line. + warnings: 127. module, or on the command line. - A *note ResourceWarning: 5cd. is issued at interpreter shutdown if - the *note gc.garbage: c14. list isn’t empty, and if *note - gc.DEBUG_UNCOLLECTABLE: c15. is set, all uncollectable objects are + A *note ResourceWarning: 4c1. is issued at interpreter shutdown if + the *note gc.garbage: b20. list isn’t empty, and if *note + gc.DEBUG_UNCOLLECTABLE: b21. is set, all uncollectable objects are printed. This is meant to make the programmer aware that their code contains object finalization issues. - A *note ResourceWarning: 5cd. is also issued when a *note file - object: c16. is destroyed without having been explicitly closed. + A *note ResourceWarning: 4c1. is also issued when a *note file + object: b22. is destroyed without having been explicitly closed. While the deallocator for such object ensures it closes the underlying operating system resource (usually, a file descriptor), the delay in deallocating the object could produce various issues, @@ -32047,12 +29469,12 @@ Some smaller changes made to the core Python language are: (Added by Antoine Pitrou and Georg Brandl in bpo-10093(10) and bpo-477863(11).) - * *note range: 1f5. objects now support `index' and `count' methods. + * *note range: 99f. objects now support `index' and `count' methods. This is part of an effort to make more objects fully implement the - ‘collections.Sequence’ *note abstract base class: c07. As a + ‘collections.Sequence’ *note abstract base class: b14. As a result, the language will have a more uniform API. In addition, - *note range: 1f5. objects now support slicing and negative indices, - even with values larger than *note sys.maxsize: c17. This makes + *note range: 99f. objects now support slicing and negative indices, + even with values larger than *note sys.maxsize: b23. This makes `range' more interoperable with lists: >>> range(0, 100, 2).count(10) @@ -32067,9 +29489,9 @@ Some smaller changes made to the core Python language are: (Contributed by Daniel Stutzbach in bpo-9213(12), by Alexander Belopolsky in bpo-2690(13), and by Nick Coghlan in bpo-10889(14).) - * The *note callable(): c18. builtin function from Py2.x was + * The *note callable(): b24. builtin function from Py2.x was resurrected. It provides a concise, readable alternative to using - an *note abstract base class: c07. in an expression like + an *note abstract base class: b14. in an expression like ‘isinstance(x, collections.Callable)’: >>> callable(max) @@ -32121,16 +29543,16 @@ Some smaller changes made to the core Python language are: (16) https://bugs.python.org/issue9425  -File: python.info, Node: New Improved and Deprecated Modules, Next: Multi-threading, Prev: Other Language Changes<8>, Up: What’s New In Python 3 2 +File: python.info, Node: New Improved and Deprecated Modules, Next: Multi-threading, Prev: Other Language Changes<7>, Up: What’s New In Python 3 2 -1.8.9 New, Improved, and Deprecated Modules +1.7.9 New, Improved, and Deprecated Modules ------------------------------------------- Python’s standard library has undergone significant maintenance efforts and quality improvements. -The biggest news for Python 3.2 is that the *note email: 67. package, -*note mailbox: ae. module, and *note nntplib: c0. modules now work +The biggest news for Python 3.2 is that the *note email: 69. package, +*note mailbox: af. module, and *note nntplib: c1. modules now work correctly with the bytes/text model in Python 3. For the first time, there is correct handling of messages with mixed encodings. @@ -32142,9 +29564,9 @@ using the Windows MBCS encoding, locale-aware encodings, or UTF-8. Another significant win is the addition of substantially better support for `SSL' connections and security certificates. -In addition, more classes now implement a *note context manager: 663. to +In addition, more classes now implement a *note context manager: 555. to support convenient and reliable resource clean-up using a *note with: -7dc. statement. +6d0. statement. * Menu: @@ -32155,7 +29577,7 @@ support convenient and reliable resource clean-up using a *note with: * collections: collections<8>. * threading: threading<6>. * datetime and time:: -* math: math<7>. +* math: math<6>. * abc: abc<3>. * io: io<5>. * reprlib:: @@ -32168,75 +29590,75 @@ support convenient and reliable resource clean-up using a *note with: * select: select<3>. * gzip and zipfile:: * tarfile: tarfile<5>. -* hashlib: hashlib<4>. -* ast: ast<4>. -* os: os<9>. +* hashlib: hashlib<3>. +* ast: ast<3>. +* os: os<8>. * shutil: shutil<5>. * sqlite3: sqlite3<6>. * html: html<3>. -* socket: socket<9>. +* socket: socket<8>. * ssl: ssl<9>. * nntp:: * certificates:: -* imaplib: imaplib<4>. +* imaplib: imaplib<3>. * http.client: http client<4>. * unittest: unittest<6>. -* random: random<3>. -* poplib: poplib<4>. +* random: random<2>. +* poplib: poplib<3>. * asyncore: asyncore<2>. * tempfile: tempfile<2>. -* inspect: inspect<7>. -* pydoc: pydoc<6>. +* inspect: inspect<6>. +* pydoc: pydoc<5>. * dis: dis<3>. * dbm: dbm<6>. * ctypes: ctypes<2>. * site: site<2>. * sysconfig: sysconfig<2>. -* pdb: pdb<6>. +* pdb: pdb<5>. * configparser: configparser<2>. -* urllib.parse: urllib parse<4>. +* urllib.parse: urllib parse<3>. * mailbox:: * turtledemo::  File: python.info, Node: email<5>, Next: elementtree, Up: New Improved and Deprecated Modules -1.8.9.1 email +1.7.9.1 email ............. -The usability of the *note email: 67. package in Python 3 has been +The usability of the *note email: 69. package in Python 3 has been mostly fixed by the extensive efforts of R. David Murray. The problem was that emails are typically read and stored in the form of *note -bytes: 172. rather than *note str: 205. text, and they may contain +bytes: 322. rather than *note str: 321. text, and they may contain multiple encodings within a single email. So, the email package had to be extended to parse and generate email messages in bytes format. - * New functions *note message_from_bytes(): c1b. and *note - message_from_binary_file(): c1c, and new classes *note - BytesFeedParser: c1d. and *note BytesParser: c1e. allow binary + * New functions *note message_from_bytes(): b27. and *note + message_from_binary_file(): b28, and new classes *note + BytesFeedParser: b29. and *note BytesParser: b2a. allow binary message data to be parsed into model objects. - * Given bytes input to the model, *note get_payload(): c1f. will by + * Given bytes input to the model, *note get_payload(): b2b. will by default decode a message body that has a ‘Content-Transfer-Encoding’ of `8bit' using the charset specified in the MIME headers and return the resulting string. - * Given bytes input to the model, *note Generator: c20. will convert + * Given bytes input to the model, *note Generator: b2c. will convert message bodies that have a ‘Content-Transfer-Encoding’ of `8bit' to instead have a `7bit' ‘Content-Transfer-Encoding’. Headers with unencoded non-ASCII bytes are deemed to be RFC 2047(1)-encoded using the `unknown-8bit' character set. - * A new class *note BytesGenerator: c21. produces bytes as output, + * A new class *note BytesGenerator: b2d. produces bytes as output, preserving any unchanged non-ASCII data that was present in the input used to build the model, including message bodies with a ‘Content-Transfer-Encoding’ of `8bit'. - * The *note smtplib: ed. *note SMTP: 1de. class now accepts a byte - string for the `msg' argument to the *note sendmail(): 835. method, - and a new method, *note send_message(): 836. accepts a *note - Message: 63d. object and can optionally obtain the `from_addr' and + * The *note smtplib: ee. *note SMTP: a62. class now accepts a byte + string for the `msg' argument to the *note sendmail(): 72b. method, + and a new method, *note send_message(): 72c. accepts a *note + Message: 52e. object and can optionally obtain the `from_addr' and `to_addrs' addresses directly from the object. (Proposed and implemented by R. David Murray, bpo-4661(2) and @@ -32253,36 +29675,36 @@ bpo-10321(3).)  File: python.info, Node: elementtree, Next: functools<6>, Prev: email<5>, Up: New Improved and Deprecated Modules -1.8.9.2 elementtree +1.7.9.2 elementtree ................... -The *note xml.etree.ElementTree: 140. package and its +The *note xml.etree.ElementTree: 138. package and its ‘xml.etree.cElementTree’ counterpart have been updated to version 1.3. Several new and useful functions and methods have been added: - * *note xml.etree.ElementTree.fromstringlist(): c23. which builds an + * *note xml.etree.ElementTree.fromstringlist(): b2f. which builds an XML document from a sequence of fragments - * *note xml.etree.ElementTree.register_namespace(): c24. for + * *note xml.etree.ElementTree.register_namespace(): b30. for registering a global namespace prefix - * *note xml.etree.ElementTree.tostringlist(): 9fe. for string + * *note xml.etree.ElementTree.tostringlist(): 8f9. for string representation including all sublists - * *note xml.etree.ElementTree.Element.extend(): c25. for appending a + * *note xml.etree.ElementTree.Element.extend(): b31. for appending a sequence of zero or more elements - * *note xml.etree.ElementTree.Element.iterfind(): c26. searches an + * *note xml.etree.ElementTree.Element.iterfind(): b32. searches an element and subelements - * *note xml.etree.ElementTree.Element.itertext(): c27. creates a text + * *note xml.etree.ElementTree.Element.itertext(): b33. creates a text iterator over an element and its subelements - * *note xml.etree.ElementTree.TreeBuilder.end(): c28. closes the + * *note xml.etree.ElementTree.TreeBuilder.end(): b34. closes the current element - * *note xml.etree.ElementTree.TreeBuilder.doctype(): 3e6. handles a + * *note xml.etree.ElementTree.TreeBuilder.doctype(): 2ac. handles a doctype declaration Two methods have been deprecated: @@ -32305,11 +29727,11 @@ Lundh’s website.  File: python.info, Node: functools<6>, Next: itertools<4>, Prev: elementtree, Up: New Improved and Deprecated Modules -1.8.9.3 functools +1.7.9.3 functools ................. - * The *note functools: 83. module includes a new decorator for - caching function calls. *note functools.lru_cache(): 2fb. can save + * The *note functools: 85. module includes a new decorator for + caching function calls. *note functools.lru_cache(): 1b3. can save repeated queries to an external resource whenever the results are expected to be the same. @@ -32341,7 +29763,7 @@ File: python.info, Node: functools<6>, Next: itertools<4>, Prev: elementtree, from Jim Baker, Miki Tebeka, and Nick Coghlan; see recipe 498245(1), recipe 577479(2), bpo-10586(3), and bpo-10593(4).) - * The *note functools.wraps(): 957. decorator now adds a + * The *note functools.wraps(): 84f. decorator now adds a ‘__wrapped__’ attribute pointing to the original callable function. This allows wrapped functions to be introspected. It also copies ‘__annotations__’ if defined. And now it also gracefully skips @@ -32357,11 +29779,11 @@ File: python.info, Node: functools<6>, Next: itertools<4>, Prev: elementtree, bpo-8814(7).) * To help write classes with rich comparison methods, a new decorator - *note functools.total_ordering(): 93a. will use existing equality + *note functools.total_ordering(): 830. will use existing equality and inequality methods to fill in the remaining methods. For example, supplying `__eq__' and `__lt__' will enable *note - total_ordering(): 93a. to fill-in `__le__', `__gt__' and `__ge__': + total_ordering(): 830. to fill-in `__le__', `__gt__' and `__ge__': @total_ordering class Student: @@ -32379,8 +29801,8 @@ File: python.info, Node: functools<6>, Next: itertools<4>, Prev: elementtree, (Contributed by Raymond Hettinger.) * To aid in porting programs from Python 2, the *note - functools.cmp_to_key(): c2a. function converts an old-style - comparison function to modern *note key function: 7d4.: + functools.cmp_to_key(): b36. function converts an old-style + comparison function to modern *note key function: 6c7.: >>> # locale-aware sort order >>> sorted(iterable, key=cmp_to_key(locale.strcoll)) @@ -32411,10 +29833,10 @@ File: python.info, Node: functools<6>, Next: itertools<4>, Prev: elementtree,  File: python.info, Node: itertools<4>, Next: collections<8>, Prev: functools<6>, Up: New Improved and Deprecated Modules -1.8.9.4 itertools +1.7.9.4 itertools ................. - * The *note itertools: a3. module has a new *note accumulate(): 311. + * The *note itertools: a4. module has a new *note accumulate(): 1c9. function modeled on APL’s `scan' operator and Numpy’s `accumulate' function: @@ -32426,8 +29848,8 @@ File: python.info, Node: itertools<4>, Next: collections<8>, Prev: functools< >>> list(accumulate(prob_dist)) # cumulative probability distribution [0.1, 0.5, 0.7, 1.0] - For an example using *note accumulate(): 311, see the *note - examples for the random module: c2c. + For an example using *note accumulate(): 1c9, see the *note + examples for the random module: b38. (Contributed by Raymond Hettinger and incorporating design suggestions from Mark Dickinson.) @@ -32435,12 +29857,12 @@ File: python.info, Node: itertools<4>, Next: collections<8>, Prev: functools<  File: python.info, Node: collections<8>, Next: threading<6>, Prev: itertools<4>, Up: New Improved and Deprecated Modules -1.8.9.5 collections +1.7.9.5 collections ................... - * The *note collections.Counter: abb. class now has two forms of + * The *note collections.Counter: 9bb. class now has two forms of in-place subtraction, the existing `-=' operator for saturating - subtraction(1) and the new *note subtract(): c2e. method for + subtraction(1) and the new *note subtract(): b3a. method for regular subtraction. The former is suitable for multisets(2) which only have positive counts, and the latter is more suitable for use cases that allow negative counts: @@ -32458,8 +29880,8 @@ File: python.info, Node: collections<8>, Next: threading<6>, Prev: itertools< (Contributed by Raymond Hettinger.) - * The *note collections.OrderedDict: 2ed. class has a new method - *note move_to_end(): c2f. which takes an existing key and moves it + * The *note collections.OrderedDict: 1a5. class has a new method + *note move_to_end(): b3b. which takes an existing key and moves it to either the first or last position in the ordered sequence. The default is to move an item to the last position. This is @@ -32480,9 +29902,9 @@ File: python.info, Node: collections<8>, Next: threading<6>, Prev: itertools< (Contributed by Raymond Hettinger.) - * The *note collections.deque: 62d. class grew two new methods *note - count(): c30. and *note reverse(): c31. that make them more - substitutable for *note list: 1f8. objects: + * The *note collections.deque: 51e. class grew two new methods *note + count(): b3c. and *note reverse(): b3d. that make them more + substitutable for *note list: 24e. objects: >>> from collections import deque >>> d = deque('simsalabim') @@ -32503,10 +29925,10 @@ File: python.info, Node: collections<8>, Next: threading<6>, Prev: itertools<  File: python.info, Node: threading<6>, Next: datetime and time, Prev: collections<8>, Up: New Improved and Deprecated Modules -1.8.9.6 threading +1.7.9.6 threading ................. -The *note threading: 10b. module has a new *note Barrier: c33. +The *note threading: 10a. module has a new *note Barrier: b3f. synchronization class for making multiple threads wait until all of them have reached a common barrier point. Barriers are useful for making sure that a task with multiple preconditions does not run until all of @@ -32515,7 +29937,7 @@ the predecessor tasks are complete. Barriers can work with an arbitrary number of threads. This is a generalization of a Rendezvous(1) which is defined for only two threads. -Implemented as a two-phase cyclic barrier, *note Barrier: c33. objects +Implemented as a two-phase cyclic barrier, *note Barrier: b3f. objects are suitable for use in loops. The separate `filling' and `draining' phases assure that all threads get released (drained) before any one of them can loop back and re-enter the barrier. The barrier fully resets @@ -32538,13 +29960,13 @@ Example of using barriers: In this example, the barrier enforces a rule that votes cannot be counted at any polling site until all polls are closed. Notice how a solution with a barrier is similar to one with *note -threading.Thread.join(): c34, but the threads stay alive and continue to +threading.Thread.join(): b40, but the threads stay alive and continue to do work (summarizing ballots) after the barrier point is crossed. If any of the predecessor tasks can hang or be delayed, a barrier can be created with an optional `timeout' parameter. Then if the timeout period elapses before all the predecessor tasks reach the barrier point, -all waiting threads are released and a *note BrokenBarrierError: c35. +all waiting threads are released and a *note BrokenBarrierError: b41. exception is raised: def get_votes(site): @@ -32582,13 +30004,13 @@ http://osl.cs.illinois.edu/media/papers/karmani-2009-barrier_synchronization_pat (4) https://bugs.python.org/issue8777  -File: python.info, Node: datetime and time, Next: math<7>, Prev: threading<6>, Up: New Improved and Deprecated Modules +File: python.info, Node: datetime and time, Next: math<6>, Prev: threading<6>, Up: New Improved and Deprecated Modules -1.8.9.7 datetime and time +1.7.9.7 datetime and time ......................... - * The *note datetime: 30. module has a new type *note timezone: ae2. - that implements the *note tzinfo: 180. interface by returning a + * The *note datetime: 31. module has a new type *note timezone: 9e2. + that implements the *note tzinfo: 371. interface by returning a fixed UTC offset and timezone name. This makes it easier to create timezone-aware datetime objects: @@ -32600,12 +30022,12 @@ File: python.info, Node: datetime and time, Next: math<7>, Prev: threading<6> >>> datetime.strptime("01/01/2000 12:00 +0000", "%m/%d/%Y %H:%M %z") datetime.datetime(2000, 1, 1, 12, 0, tzinfo=datetime.timezone.utc) - * Also, *note timedelta: 2cd. objects can now be multiplied by *note - float: 1fd. and divided by *note float: 1fd. and *note int: 204. - objects. And *note timedelta: 2cd. objects can now divide one + * Also, *note timedelta: 182. objects can now be multiplied by *note + float: 174. and divided by *note float: 174. and *note int: 171. + objects. And *note timedelta: 182. objects can now divide one another. - * The *note datetime.date.strftime(): 634. method is no longer + * The *note datetime.date.strftime(): 525. method is no longer restricted to years after 1900. The new supported year range is from 1000 to 9999 inclusive. @@ -32616,7 +30038,7 @@ File: python.info, Node: datetime and time, Next: math<7>, Prev: threading<6> strptime format. Starting with Py3.2, use of the century guessing heuristic will - emit a *note DeprecationWarning: 15a. Instead, it is recommended + emit a *note DeprecationWarning: 264. Instead, it is recommended that ‘time.accept2dyear’ be set to ‘False’ so that large date ranges can be used without guesswork: @@ -32635,9 +30057,9 @@ File: python.info, Node: datetime and time, Next: math<7>, Prev: threading<6> 'Fri Jan 1 12:34:56 11' Several functions now have significantly expanded date ranges. - When ‘time.accept2dyear’ is false, the *note time.asctime(): c37. + When ‘time.accept2dyear’ is false, the *note time.asctime(): b43. function will accept any year that fits in a C int, while the *note - time.mktime(): c38. and *note time.strftime(): c39. functions will + time.mktime(): b44. and *note time.strftime(): b45. functions will accept the full range supported by the corresponding operating system functions. @@ -32662,15 +30084,15 @@ bpo-8013(6), and bpo-10827(7).) (7) https://bugs.python.org/issue10827  -File: python.info, Node: math<7>, Next: abc<3>, Prev: datetime and time, Up: New Improved and Deprecated Modules +File: python.info, Node: math<6>, Next: abc<3>, Prev: datetime and time, Up: New Improved and Deprecated Modules -1.8.9.8 math +1.7.9.8 math ............ -The *note math: b1. module has been updated with six new functions +The *note math: b2. module has been updated with six new functions inspired by the C99 standard. -The *note isfinite(): c3b. function provides a reliable and fast way to +The *note isfinite(): b47. function provides a reliable and fast way to detect special values. It returns ‘True’ for regular numbers and ‘False’ for `Nan' or `Infinity': @@ -32678,7 +30100,7 @@ detect special values. It returns ‘True’ for regular numbers and >>> [isfinite(x) for x in (123, 4.56, float('Nan'), float('Inf'))] [True, True, False, False] -The *note expm1(): c3c. function computes ‘e**x-1’ for small values of +The *note expm1(): b48. function computes ‘e**x-1’ for small values of `x' without incurring the loss of precision that usually accompanies the subtraction of nearly equal quantities: @@ -32686,9 +30108,9 @@ subtraction of nearly equal quantities: >>> expm1(0.013671875) # more accurate way to compute e**x-1 for a small x 0.013765762467652909 -The *note erf(): 556. function computes a probability integral or +The *note erf(): 443. function computes a probability integral or Gaussian error function(1). The complementary error function, *note -erfc(): 557, is ‘1 - erf(x)’: +erfc(): 444, is ‘1 - erf(x)’: >>> from math import erf, erfc, sqrt >>> erf(1.0/sqrt(2.0)) # portion of normal distribution within 1 standard deviation @@ -32698,11 +30120,11 @@ erfc(): 557, is ‘1 - erf(x)’: >>> erf(1.0/sqrt(2.0)) + erfc(1.0/sqrt(2.0)) 1.0 -The *note gamma(): c3d. function is a continuous extension of the +The *note gamma(): b49. function is a continuous extension of the factorial function. See ‘https://en.wikipedia.org/wiki/Gamma_function’ for details. Because the function is related to factorials, it grows large even for small values of `x', so there is also a *note lgamma(): -c3e. function for computing the natural logarithm of the gamma function: +b4a. function for computing the natural logarithm of the gamma function: >>> from math import gamma, lgamma >>> gamma(7.0) # six factorial @@ -32717,17 +30139,17 @@ c3e. function for computing the natural logarithm of the gamma function: (1) https://en.wikipedia.org/wiki/Error_function  -File: python.info, Node: abc<3>, Next: io<5>, Prev: math<7>, Up: New Improved and Deprecated Modules +File: python.info, Node: abc<3>, Next: io<5>, Prev: math<6>, Up: New Improved and Deprecated Modules -1.8.9.9 abc +1.7.9.9 abc ........... -The *note abc: 3. module now supports *note abstractclassmethod(): ab0. -and *note abstractstaticmethod(): ab1. +The *note abc: 4. module now supports *note abstractclassmethod(): 9b0. +and *note abstractstaticmethod(): 9b1. These tools make it possible to define an *note abstract base class: -c07. that requires a particular *note classmethod(): 30c. or *note -staticmethod(): 30d. to be implemented: +b14. that requires a particular *note classmethod(): 1c4. or *note +staticmethod(): 1c5. to be implemented: class Temperature(metaclass=abc.ABCMeta): @abc.abstractclassmethod @@ -32746,11 +30168,11 @@ staticmethod(): 30d. to be implemented:  File: python.info, Node: io<5>, Next: reprlib, Prev: abc<3>, Up: New Improved and Deprecated Modules -1.8.9.10 io +1.7.9.10 io ........... -The *note io.BytesIO: 88c. has a new method, *note getbuffer(): c41, -which provides functionality similar to *note memoryview(): 389. It +The *note io.BytesIO: 780. has a new method, *note getbuffer(): b4d, +which provides functionality similar to *note memoryview(): 248. It creates an editable view of the data without making a copy. The buffer’s random access and support for slice notation are well-suited to in-place editing: @@ -32785,19 +30207,19 @@ in-place editing:  File: python.info, Node: reprlib, Next: logging<7>, Prev: io<5>, Up: New Improved and Deprecated Modules -1.8.9.11 reprlib +1.7.9.11 reprlib ................ -When writing a *note __repr__(): 44c. method for a custom container, it -is easy to forget to handle the case where a member refers back to the -container itself. Python’s builtin objects such as *note list: 1f8. and -*note set: 1f6. handle self-reference by displaying “…” in the recursive -part of the representation string. +When writing a ‘__repr__()’ method for a custom container, it is easy to +forget to handle the case where a member refers back to the container +itself. Python’s builtin objects such as *note list: 24e. and *note +set: b4f. handle self-reference by displaying “…” in the recursive part +of the representation string. -To help write such *note __repr__(): 44c. methods, the *note reprlib: -df. module has a new decorator, *note recursive_repr(): c43, for -detecting recursive calls to *note __repr__(): 44c. and substituting a -placeholder string instead: +To help write such ‘__repr__()’ methods, the *note reprlib: e0. module +has a new decorator, *note recursive_repr(): b50, for detecting +recursive calls to ‘__repr__()’ and substituting a placeholder string +instead: >>> class MyList(list): ... @recursive_repr() @@ -32821,22 +30243,22 @@ placeholder string instead:  File: python.info, Node: logging<7>, Next: csv<3>, Prev: reprlib, Up: New Improved and Deprecated Modules -1.8.9.12 logging +1.7.9.12 logging ................ In addition to dictionary-based configuration described above, the *note -logging: aa. package has many other improvements. +logging: ab. package has many other improvements. The logging documentation has been augmented by a *note basic tutorial: -c45, an *note advanced tutorial: c46, and a *note cookbook: c47. of +b52, an *note advanced tutorial: b53, and a *note cookbook: b54. of logging recipes. These documents are the fastest way to learn about logging. -The *note logging.basicConfig(): 314. set-up function gained a `style' +The *note logging.basicConfig(): 1cc. set-up function gained a `style' argument to support three different types of string formatting. It defaults to “%” for traditional %-formatting, can be set to “{” for the -new *note str.format(): 5d7. style, or can be set to “$” for the -shell-style formatting provided by *note string.Template: 4f3. The +new *note str.format(): 4cb. style, or can be set to “$” for the +shell-style formatting provided by *note string.Template: 3dc. The following three configurations are equivalent: >>> from logging import basicConfig @@ -32845,15 +30267,15 @@ following three configurations are equivalent: >>> basicConfig(style='$', format="$name -> $levelname: $message") If no configuration is set-up before a logging event occurs, there is -now a default configuration using a *note StreamHandler: c48. directed -to *note sys.stderr: 1ea. for events of ‘WARNING’ level or higher. +now a default configuration using a *note StreamHandler: b55. directed +to *note sys.stderr: 303. for events of ‘WARNING’ level or higher. Formerly, an event occurring before a configuration was set-up would either raise an exception or silently drop the event depending on the value of ‘logging.raiseExceptions’. The new default handler is stored -in *note logging.lastResort: c49. +in *note logging.lastResort: b56. The use of filters has been simplified. Instead of creating a *note -Filter: c4a. object, the predicate can be any Python callable that +Filter: b57. object, the predicate can be any Python callable that returns ‘True’ or ‘False’. There were a number of other improvements that add flexibility and @@ -32863,16 +30285,16 @@ of changes in Python 3.2.  File: python.info, Node: csv<3>, Next: contextlib<6>, Prev: logging<7>, Up: New Improved and Deprecated Modules -1.8.9.13 csv +1.7.9.13 csv ............ -The *note csv: 29. module now supports a new dialect, *note -unix_dialect: c4c, which applies quoting for all fields and a +The *note csv: 2a. module now supports a new dialect, *note +unix_dialect: b59, which applies quoting for all fields and a traditional Unix style with ‘'\n'’ as the line terminator. The registered dialect name is ‘unix’. -The *note csv.DictWriter: c4d. has a new method, *note writeheader(): -c4e. for writing-out an initial row to document the field names: +The *note csv.DictWriter: b5a. has a new method, *note writeheader(): +b5b. for writing-out an initial row to document the field names: >>> import csv, sys >>> w = csv.DictWriter(sys.stdout, ['name', 'dept'], dialect='unix') @@ -32896,20 +30318,20 @@ suggested by Ed Abraham in bpo-1537721(2).)  File: python.info, Node: contextlib<6>, Next: decimal and fractions, Prev: csv<3>, Up: New Improved and Deprecated Modules -1.8.9.14 contextlib +1.7.9.14 contextlib ................... There is a new and slightly mind-blowing tool *note ContextDecorator: -c50. that is helpful for creating a *note context manager: 663. that +b5d. that is helpful for creating a *note context manager: 555. that does double duty as a function decorator. As a convenience, this new functionality is used by *note -contextmanager(): c51. so that no extra effort is needed to support both +contextmanager(): b5e. so that no extra effort is needed to support both roles. The basic idea is that both context managers and function decorators can be used for pre-action and post-action wrappers. Context managers wrap -a group of statements using a *note with: 7dc. statement, and function +a group of statements using a *note with: 6d0. statement, and function decorators wrap a group of statements enclosed in a function. So, occasionally there is a need to write a pre-action or post-action wrapper that can be used in either role. @@ -32917,7 +30339,7 @@ wrapper that can be used in either role. For example, it is sometimes useful to wrap functions or groups of statements with a logger that can track the time of entry and time of exit. Rather than writing both a function decorator and a context -manager for the task, the *note contextmanager(): c51. provides both +manager for the task, the *note contextmanager(): b5e. provides both capabilities in a single definition: from contextlib import contextmanager @@ -32946,7 +30368,7 @@ Now, it can be used as a decorator as well: Trying to fulfill two roles at once places some limitations on the technique. Context managers normally have the flexibility to return an -argument usable by a *note with: 7dc. statement, but there is no +argument usable by a *note with: 6d0. statement, but there is no parallel for function decorators. In the above example, there is not a clean way for the @@ -32962,7 +30384,7 @@ use in the body of enclosed statements.  File: python.info, Node: decimal and fractions, Next: ftp, Prev: contextlib<6>, Up: New Improved and Deprecated Modules -1.8.9.15 decimal and fractions +1.7.9.15 decimal and fractions .............................. Mark Dickinson crafted an elegant and efficient scheme for assuring that @@ -32973,7 +30395,7 @@ actual values are equal (bpo-8188(1)): hash(Decimal("1.5")) == hash(complex(1.5, 0)) Some of the hashing details are exposed through a new attribute, *note -sys.hash_info: a08, which describes the bit width of the hash value, the +sys.hash_info: 903, which describes the bit width of the hash value, the prime modulus, the hash values for `infinity' and `nan', and the multiplier used for the imaginary part of a number: @@ -32989,17 +30411,17 @@ value can be converted losslessly to either a decimal or rational representation, it makes sense to add them to the constructor and to support mixed-type comparisons. - * The *note decimal.Decimal: 2c3. constructor now accepts *note - float: 1fd. objects directly so there in no longer a need to use - the *note from_float(): c53. method (bpo-8257(2)). + * The *note decimal.Decimal: 175. constructor now accepts *note + float: 174. objects directly so there in no longer a need to use + the *note from_float(): b60. method (bpo-8257(2)). * Mixed type comparisons are now fully supported so that *note - Decimal: 2c3. objects can be directly compared with *note float: - 1fd. and *note fractions.Fraction: 2c1. (bpo-2531(3) and + Decimal: 175. objects can be directly compared with *note float: + 174. and *note fractions.Fraction: 172. (bpo-2531(3) and bpo-8188(4)). -Similar changes were made to *note fractions.Fraction: 2c1. so that the -*note from_float(): c54. and *note from_decimal(): c55. methods are no +Similar changes were made to *note fractions.Fraction: 172. so that the +*note from_float(): b61. and *note from_decimal(): b62. methods are no longer needed (bpo-8294(5)): >>> from decimal import Decimal @@ -33009,7 +30431,7 @@ longer needed (bpo-8294(5)): >>> Fraction(1.1) Fraction(2476979795053773, 2251799813685248) -Another useful change for the *note decimal: 35. module is that the +Another useful change for the *note decimal: 36. module is that the ‘Context.clamp’ attribute is now public. This is useful in creating contexts that correspond to the decimal interchange formats specified in IEEE 754 (see bpo-8540(6)). @@ -33033,11 +30455,11 @@ IEEE 754 (see bpo-8540(6)).  File: python.info, Node: ftp, Next: popen, Prev: decimal and fractions, Up: New Improved and Deprecated Modules -1.8.9.16 ftp +1.7.9.16 ftp ............ -The *note ftplib.FTP: 1a6. class now supports the context management -protocol to unconditionally consume *note socket.error: a78. exceptions +The *note ftplib.FTP: 2dc. class now supports the context management +protocol to unconditionally consume *note socket.error: 976. exceptions and to close the FTP connection when done: >>> from ftplib import FTP @@ -33051,8 +30473,8 @@ and to close the FTP connection when done: dr-xr-xr-x 5 ftp ftp 4096 May 6 10:43 CentOS dr-xr-xr-x 3 ftp ftp 18 Jul 10 2008 Fedora -Other file-like objects such as *note mmap.mmap: 31f. and *note -fileinput.input(): 3d2. also grew auto-closing context managers: +Other file-like objects such as *note mmap.mmap: 1d8. and *note +fileinput.input(): 298. also grew auto-closing context managers: with fileinput.input(files=('log1.txt', 'log2.txt')) as f: for line in f: @@ -33061,8 +30483,8 @@ fileinput.input(): 3d2. also grew auto-closing context managers: (Contributed by Tarek Ziadé and Giampaolo Rodolà in bpo-4972(1), and by Georg Brandl in bpo-8046(2) and bpo-1286(3).) -The *note FTP_TLS: 1a7. class now accepts a `context' parameter, which -is a *note ssl.SSLContext: 4ec. object allowing bundling SSL +The *note FTP_TLS: 9e4. class now accepts a `context' parameter, which +is a *note ssl.SSLContext: 3d5. object allowing bundling SSL configuration options, certificates and private keys into a single (potentially long-lived) structure. @@ -33081,11 +30503,11 @@ configuration options, certificates and private keys into a single  File: python.info, Node: popen, Next: select<3>, Prev: ftp, Up: New Improved and Deprecated Modules -1.8.9.17 popen +1.7.9.17 popen .............. -The *note os.popen(): 3ce. and *note subprocess.Popen(): 3de. functions -now support *note with: 7dc. statements for auto-closing of the file +The *note os.popen(): 294. and *note subprocess.Popen(): 2a4. functions +now support *note with: 6d0. statements for auto-closing of the file descriptors. (Contributed by Antoine Pitrou and Brian Curtin in bpo-7461(1) and @@ -33100,12 +30522,12 @@ bpo-10554(2).)  File: python.info, Node: select<3>, Next: gzip and zipfile, Prev: popen, Up: New Improved and Deprecated Modules -1.8.9.18 select +1.7.9.18 select ............... -The *note select: e5. module now exposes a new, constant attribute, -*note PIPE_BUF: c59, which gives the minimum number of bytes which are -guaranteed not to block when *note select.select(): 768. says a pipe is +The *note select: e6. module now exposes a new, constant attribute, +*note PIPE_BUF: b66, which gives the minimum number of bytes which are +guaranteed not to block when *note select.select(): 65c. says a pipe is ready for writing. >>> import select @@ -33121,18 +30543,18 @@ ready for writing.  File: python.info, Node: gzip and zipfile, Next: tarfile<5>, Prev: select<3>, Up: New Improved and Deprecated Modules -1.8.9.19 gzip and zipfile +1.7.9.19 gzip and zipfile ......................... -*note gzip.GzipFile: 206. now implements the *note io.BufferedIOBase: -681. *note abstract base class: c07. (except for ‘truncate()’). It also -has a *note peek(): c5b. method and supports unseekable as well as +*note gzip.GzipFile: 6c4. now implements the *note io.BufferedIOBase: +575. *note abstract base class: b14. (except for ‘truncate()’). It also +has a *note peek(): b68. method and supports unseekable as well as zero-padded file objects. -The *note gzip: 8b. module also gains the *note compress(): 305. and -*note decompress(): c5c. functions for easier in-memory compression and +The *note gzip: 8c. module also gains the *note compress(): 1bd. and +*note decompress(): b69. functions for easier in-memory compression and decompression. Keep in mind that text needs to be encoded as *note -bytes: 172. before compressing and decompressing: +bytes: 322. before compressing and decompressing: >>> import gzip >>> s = 'Three shall be the number thou shalt count, ' @@ -33153,7 +30575,7 @@ and bpo-2846(5).) Also, the ‘zipfile.ZipExtFile’ class was reworked internally to represent files stored inside an archive. The new implementation is significantly faster and can be wrapped in an *note io.BufferedReader: -c5d. object for more speedups. It also solves an issue where +b6a. object for more speedups. It also solves an issue where interleaved calls to `read' and `readline' gave the wrong results. (Patch submitted by Nir Aides in bpo-7610(6).) @@ -33173,21 +30595,21 @@ interleaved calls to `read' and `readline' gave the wrong results. (6) https://bugs.python.org/issue7610  -File: python.info, Node: tarfile<5>, Next: hashlib<4>, Prev: gzip and zipfile, Up: New Improved and Deprecated Modules +File: python.info, Node: tarfile<5>, Next: hashlib<3>, Prev: gzip and zipfile, Up: New Improved and Deprecated Modules -1.8.9.20 tarfile +1.7.9.20 tarfile ................ -The *note TarFile: c5f. class can now be used as a context manager. In -addition, its *note add(): 57d. method has a new option, `filter', that +The *note TarFile: b6c. class can now be used as a context manager. In +addition, its *note add(): 46d. method has a new option, `filter', that controls which files are added to the archive and allows the file metadata to be edited. The new `filter' option replaces the older, less flexible `exclude' parameter which is now deprecated. If specified, the optional `filter' -parameter needs to be a *note keyword argument: 6bd. The user-supplied -filter function accepts a *note TarInfo: c60. object and returns an -updated *note TarInfo: c60. object, or if it wants the file to be +parameter needs to be a *note keyword argument: 5b1. The user-supplied +filter function accepts a *note TarInfo: b6d. object and returns an +updated *note TarInfo: b6d. object, or if it wants the file to be excluded, the function can return ‘None’: >>> import tarfile, glob @@ -33215,12 +30637,12 @@ bpo-6856(1).) (1) https://bugs.python.org/issue6856  -File: python.info, Node: hashlib<4>, Next: ast<4>, Prev: tarfile<5>, Up: New Improved and Deprecated Modules +File: python.info, Node: hashlib<3>, Next: ast<3>, Prev: tarfile<5>, Up: New Improved and Deprecated Modules -1.8.9.21 hashlib +1.7.9.21 hashlib ................ -The *note hashlib: 8c. module has two new constant attributes listing +The *note hashlib: 8d. module has two new constant attributes listing the hashing algorithms guaranteed to be present in all implementations and those available on the current implementation: @@ -33242,16 +30664,16 @@ and those available on the current implementation: (1) https://bugs.python.org/issue7418  -File: python.info, Node: ast<4>, Next: os<9>, Prev: hashlib<4>, Up: New Improved and Deprecated Modules +File: python.info, Node: ast<3>, Next: os<8>, Prev: hashlib<3>, Up: New Improved and Deprecated Modules -1.8.9.22 ast +1.7.9.22 ast ............ -The *note ast: 7. module has a wonderful a general-purpose tool for +The *note ast: 8. module has a wonderful a general-purpose tool for safely evaluating expression strings using the Python literal syntax. -The *note ast.literal_eval(): 5a2. function serves as a secure -alternative to the builtin *note eval(): c63. function which is easily -abused. Python 3.2 adds *note bytes: 172. and *note set: 1f6. literals +The *note ast.literal_eval(): 496. function serves as a secure +alternative to the builtin *note eval(): b70. function which is easily +abused. Python 3.2 adds *note bytes: 322. and *note set: b4f. literals to the list of supported types: strings, bytes, numbers, tuples, lists, dicts, sets, booleans, and ‘None’. @@ -33270,14 +30692,14 @@ dicts, sets, booleans, and ‘None’. (Implemented by Benjamin Peterson and Georg Brandl.)  -File: python.info, Node: os<9>, Next: shutil<5>, Prev: ast<4>, Up: New Improved and Deprecated Modules +File: python.info, Node: os<8>, Next: shutil<5>, Prev: ast<3>, Up: New Improved and Deprecated Modules -1.8.9.23 os +1.7.9.23 os ........... Different operating systems use various encodings for filenames and -environment variables. The *note os: c4. module provides two new -functions, *note fsencode(): 5ec. and *note fsdecode(): 5eb, for +environment variables. The *note os: c5. module provides two new +functions, *note fsencode(): 4e0. and *note fsdecode(): 4df, for encoding and decoding filenames: >>> import os @@ -33286,22 +30708,22 @@ encoding and decoding filenames: b'Sehensw\xc3\xbcrdigkeiten' Some operating systems allow direct access to encoded bytes in the -environment. If so, the *note os.supports_bytes_environ: c65. constant +environment. If so, the *note os.supports_bytes_environ: b72. constant will be true. For direct access to encoded environment variables (if available), use -the new *note os.getenvb(): c66. function or use *note os.environb: c67. -which is a bytes version of *note os.environ: c0b. +the new *note os.getenvb(): b73. function or use *note os.environb: b74. +which is a bytes version of *note os.environ: b18. (Contributed by Victor Stinner.)  -File: python.info, Node: shutil<5>, Next: sqlite3<6>, Prev: os<9>, Up: New Improved and Deprecated Modules +File: python.info, Node: shutil<5>, Next: sqlite3<6>, Prev: os<8>, Up: New Improved and Deprecated Modules -1.8.9.24 shutil +1.7.9.24 shutil ............... -The *note shutil.copytree(): 34a. function has two new options: +The *note shutil.copytree(): 206. function has two new options: * `ignore_dangling_symlinks': when ‘symlinks=False’ so that the function copies a file pointed to by a symlink, not the symlink @@ -33309,19 +30731,19 @@ The *note shutil.copytree(): 34a. function has two new options: doesn’t exist. * `copy_function': is a callable that will be used to copy files. - *note shutil.copy2(): 387. is used by default. + *note shutil.copy2(): 246. is used by default. (Contributed by Tarek Ziadé.) -In addition, the *note shutil: e9. module now supports *note archiving -operations: c69. for zipfiles, uncompressed tarfiles, gzipped tarfiles, +In addition, the *note shutil: ea. module now supports *note archiving +operations: b76. for zipfiles, uncompressed tarfiles, gzipped tarfiles, and bzipped tarfiles. And there are functions for registering additional archiving file formats (such as xz compressed tarfiles or custom formats). -The principal functions are *note make_archive(): 34b. and *note -unpack_archive(): c6a. By default, both operate on the current -directory (which can be set by *note os.chdir(): 16e.) and on any +The principal functions are *note make_archive(): 207. and *note +unpack_archive(): b77. By default, both operate on the current +directory (which can be set by *note os.chdir(): a20.) and on any sub-directories. The archive filename needs to be specified with a full pathname. The archiving step is non-destructive (the original files are left unchanged). @@ -33354,17 +30776,17 @@ left unchanged).  File: python.info, Node: sqlite3<6>, Next: html<3>, Prev: shutil<5>, Up: New Improved and Deprecated Modules -1.8.9.25 sqlite3 +1.7.9.25 sqlite3 ................ -The *note sqlite3: f2. module was updated to pysqlite version 2.6.0. It +The *note sqlite3: f3. module was updated to pysqlite version 2.6.0. It has two new capabilities. * The ‘sqlite3.Connection.in_transit’ attribute is true if there is an active transaction for uncommitted changes. - * The *note sqlite3.Connection.enable_load_extension(): c6c. and - *note sqlite3.Connection.load_extension(): c6d. methods allows you + * The *note sqlite3.Connection.enable_load_extension(): b79. and + *note sqlite3.Connection.load_extension(): b7a. methods allows you to load SQLite extensions from “.so” files. One well-known extension is the fulltext-search extension distributed with SQLite. @@ -33375,13 +30797,13 @@ has two new capabilities. (1) https://bugs.python.org/issue8845  -File: python.info, Node: html<3>, Next: socket<9>, Prev: sqlite3<6>, Up: New Improved and Deprecated Modules +File: python.info, Node: html<3>, Next: socket<8>, Prev: sqlite3<6>, Up: New Improved and Deprecated Modules -1.8.9.26 html +1.7.9.26 html ............. -A new *note html: 8f. module was introduced with only a single function, -*note escape(): a1a, which is used for escaping reserved characters from +A new *note html: 90. module was introduced with only a single function, +*note escape(): 915, which is used for escaping reserved characters from HTML markup: >>> import html @@ -33389,21 +30811,21 @@ HTML markup: 'x > 2 && x < 7'  -File: python.info, Node: socket<9>, Next: ssl<9>, Prev: html<3>, Up: New Improved and Deprecated Modules +File: python.info, Node: socket<8>, Next: ssl<9>, Prev: html<3>, Up: New Improved and Deprecated Modules -1.8.9.27 socket +1.7.9.27 socket ............... -The *note socket: ef. module has two new improvements. +The *note socket: f0. module has two new improvements. - * Socket objects now have a *note detach(): c70. method which puts + * Socket objects now have a *note detach(): b7d. method which puts the socket into closed state without actually closing the underlying file descriptor. The latter can then be reused for other purposes. (Added by Antoine Pitrou; bpo-8524(1).) - * *note socket.create_connection(): c71. now supports the context + * *note socket.create_connection(): b7e. now supports the context management protocol to unconditionally consume *note socket.error: - a78. exceptions and to close the socket when done. (Contributed by + 976. exceptions and to close the socket when done. (Contributed by Giampaolo Rodolà; bpo-9794(2).) ---------- Footnotes ---------- @@ -33413,38 +30835,38 @@ The *note socket: ef. module has two new improvements. (2) https://bugs.python.org/issue9794  -File: python.info, Node: ssl<9>, Next: nntp, Prev: socket<9>, Up: New Improved and Deprecated Modules +File: python.info, Node: ssl<9>, Next: nntp, Prev: socket<8>, Up: New Improved and Deprecated Modules -1.8.9.28 ssl +1.7.9.28 ssl ............ -The *note ssl: f3. module added a number of features to satisfy common +The *note ssl: f4. module added a number of features to satisfy common requirements for secure (encrypted, authenticated) internet connections: - * A new class, *note SSLContext: 4ec, serves as a container for + * A new class, *note SSLContext: 3d5, serves as a container for persistent SSL data, such as protocol settings, certificates, private keys, and various other options. It includes a *note - wrap_socket(): 4ed. for creating an SSL socket from an SSL context. + wrap_socket(): 3d6. for creating an SSL socket from an SSL context. - * A new function, *note ssl.match_hostname(): 4e5, supports server + * A new function, *note ssl.match_hostname(): 3cd, supports server identity verification for higher-level protocols by implementing the rules of HTTPS (from RFC 2818(1)) which are also suitable for other protocols. - * The *note ssl.wrap_socket(): 573. constructor function now takes a + * The *note ssl.wrap_socket(): 460. constructor function now takes a `ciphers' argument. The `ciphers' string lists the allowed encryption algorithms using the format described in the OpenSSL documentation(2). - * When linked against recent versions of OpenSSL, the *note ssl: f3. + * When linked against recent versions of OpenSSL, the *note ssl: f4. module now supports the Server Name Indication extension to the TLS protocol, allowing multiple “virtual hosts” using different certificates on a single IP port. This extension is only supported in client mode, and is activated by passing the `server_hostname' - argument to *note ssl.SSLContext.wrap_socket(): 4ed. + argument to *note ssl.SSLContext.wrap_socket(): 3d6. - * Various options have been added to the *note ssl: f3. module, such - as *note OP_NO_SSLv2: c73. which disables the insecure and obsolete + * Various options have been added to the *note ssl: f4. module, such + as *note OP_NO_SSLv2: b80. which disables the insecure and obsolete SSLv2 protocol. * The extension now loads all the OpenSSL ciphers and digest @@ -33452,9 +30874,9 @@ requirements for secure (encrypted, authenticated) internet connections: reported as an “unknown algorithm” error. * The version of OpenSSL being used is now accessible using the - module attributes *note ssl.OPENSSL_VERSION: c74. (a string), *note - ssl.OPENSSL_VERSION_INFO: c75. (a 5-tuple), and *note - ssl.OPENSSL_VERSION_NUMBER: c76. (an integer). + module attributes *note ssl.OPENSSL_VERSION: b81. (a string), *note + ssl.OPENSSL_VERSION_INFO: b82. (a 5-tuple), and *note + ssl.OPENSSL_VERSION_NUMBER: b83. (an integer). (Contributed by Antoine Pitrou in bpo-8850(3), bpo-1589(4), bpo-8322(5), bpo-5639(6), bpo-4870(7), bpo-8484(8), and bpo-8321(9).) @@ -33483,17 +30905,17 @@ https://www.openssl.org/docs/manmaster/man1/ciphers.html#CIPHER-LIST-FORMAT  File: python.info, Node: nntp, Next: certificates, Prev: ssl<9>, Up: New Improved and Deprecated Modules -1.8.9.29 nntp +1.7.9.29 nntp ............. -The *note nntplib: c0. module has a revamped implementation with better +The *note nntplib: c1. module has a revamped implementation with better bytes and text semantics as well as more practical APIs. These improvements break compatibility with the nntplib version in Python 3.1, which was partly dysfunctional in itself. Support for secure connections through both implicit (using *note -nntplib.NNTP_SSL: 1c7.) and explicit (using *note -nntplib.NNTP.starttls(): c78.) TLS has also been added. +nntplib.NNTP_SSL: b85.) and explicit (using *note +nntplib.NNTP.starttls(): b86.) TLS has also been added. (Contributed by Antoine Pitrou in bpo-9360(1) and Andrew Vant in bpo-1926(2).) @@ -33505,14 +30927,14 @@ bpo-1926(2).) (2) https://bugs.python.org/issue1926  -File: python.info, Node: certificates, Next: imaplib<4>, Prev: nntp, Up: New Improved and Deprecated Modules +File: python.info, Node: certificates, Next: imaplib<3>, Prev: nntp, Up: New Improved and Deprecated Modules -1.8.9.30 certificates +1.7.9.30 certificates ..................... -*note http.client.HTTPSConnection: 49c, *note -urllib.request.HTTPSHandler: c7a. and *note urllib.request.urlopen(): -87d. now take optional arguments to allow for server certificate +*note http.client.HTTPSConnection: 384, *note +urllib.request.HTTPSHandler: b88. and *note urllib.request.urlopen(): +771. now take optional arguments to allow for server certificate checking against a set of Certificate Authorities, as recommended in public uses of HTTPS. @@ -33523,13 +30945,13 @@ public uses of HTTPS. (1) https://bugs.python.org/issue9003  -File: python.info, Node: imaplib<4>, Next: http client<4>, Prev: certificates, Up: New Improved and Deprecated Modules +File: python.info, Node: imaplib<3>, Next: http client<4>, Prev: certificates, Up: New Improved and Deprecated Modules -1.8.9.31 imaplib +1.7.9.31 imaplib ................ Support for explicit TLS on standard IMAP4 connections has been added -through the new *note imaplib.IMAP4.starttls: c7c. method. +through the new *note imaplib.IMAP4.starttls: b8a. method. (Contributed by Lorenzo M. Catucci and Antoine Pitrou, bpo-4471(1).) @@ -33538,34 +30960,34 @@ through the new *note imaplib.IMAP4.starttls: c7c. method. (1) https://bugs.python.org/issue4471  -File: python.info, Node: http client<4>, Next: unittest<6>, Prev: imaplib<4>, Up: New Improved and Deprecated Modules +File: python.info, Node: http client<4>, Next: unittest<6>, Prev: imaplib<3>, Up: New Improved and Deprecated Modules -1.8.9.32 http.client +1.7.9.32 http.client .................... There were a number of small API improvements in the *note http.client: -93. module. The old-style HTTP 0.9 simple responses are no longer +94. module. The old-style HTTP 0.9 simple responses are no longer supported and the `strict' parameter is deprecated in all classes. -The *note HTTPConnection: 49b. and *note HTTPSConnection: 49c. classes +The *note HTTPConnection: 383. and *note HTTPSConnection: 384. classes now have a `source_address' parameter for a (host, port) tuple indicating where the HTTP connection is made from. Support for certificate checking and HTTPS virtual hosts were added to -*note HTTPSConnection: 49c. +*note HTTPSConnection: 384. -The *note request(): 64b. method on connection objects allowed an -optional `body' argument so that a *note file object: c16. could be used +The *note request(): 53c. method on connection objects allowed an +optional `body' argument so that a *note file object: b22. could be used to supply the content of the request. Conveniently, the `body' argument -now also accepts an *note iterable: c7e. object so long as it includes +now also accepts an *note iterable: b8c. object so long as it includes an explicit ‘Content-Length’ header. This extended interface is much more flexible than before. To establish an HTTPS connection through a proxy server, there is a new -*note set_tunnel(): c7f. method that sets the host and port for HTTP +*note set_tunnel(): b8d. method that sets the host and port for HTTP Connect tunneling. -To match the behavior of *note http.server: 96, the HTTP client library +To match the behavior of *note http.server: 97, the HTTP client library now also encodes headers with ISO-8859-1 (Latin-1) encoding. It was already doing that for incoming headers, so now the behavior is consistent for both incoming and outgoing traffic. (See work by Armin @@ -33576,9 +30998,9 @@ Ronacher in bpo-10980(1).) (1) https://bugs.python.org/issue10980  -File: python.info, Node: unittest<6>, Next: random<3>, Prev: http client<4>, Up: New Improved and Deprecated Modules +File: python.info, Node: unittest<6>, Next: random<2>, Prev: http client<4>, Up: New Improved and Deprecated Modules -1.8.9.33 unittest +1.7.9.33 unittest ................. The unittest module has a number of improvements supporting test @@ -33607,8 +31029,8 @@ failures, and better method names. (Contributed by Michael Foord.) - * The *note unittest: 124. module has two new methods, *note - assertWarns(): b96. and *note assertWarnsRegex(): b97. to verify + * The *note unittest: 11c. module has two new methods, *note + assertWarns(): a9d. and *note assertWarnsRegex(): a9e. to verify that a given warning type is triggered by the code under test: with self.assertWarns(DeprecationWarning): @@ -33616,7 +31038,7 @@ failures, and better method names. (Contributed by Antoine Pitrou, bpo-9754(2).) - Another new method, *note assertCountEqual(): c81. is used to + Another new method, *note assertCountEqual(): b8f. is used to compare two iterables to determine if their element counts are equal (whether the same elements are present with the same number of occurrences regardless of order): @@ -33631,19 +31053,19 @@ failures, and better method names. failure is recorded along with a diff of the output. This is especially helpful for analyzing log files of failed test runs. However, since diffs can sometime be voluminous, there is a new - *note maxDiff: c82. attribute that sets maximum length of diffs + *note maxDiff: b90. attribute that sets maximum length of diffs displayed. * In addition, the method names in the module have undergone a number of clean-ups. - For example, *note assertRegex(): c83. is the new name for + For example, *note assertRegex(): b91. is the new name for ‘assertRegexpMatches()’ which was misnamed because the test uses - *note re.search(): c84, not *note re.match(): c85. Other methods + *note re.search(): b92, not *note re.match(): b93. Other methods using regular expressions are now named using short form “Regex” in preference to “Regexp” – this matches the names used in other unittest implementations, matches Python’s old name for the *note - re: dd. module, and it has unambiguous camel-casing. + re: de. module, and it has unambiguous camel-casing. (Contributed by Raymond Hettinger and implemented by Ezio Melotti.) @@ -33654,24 +31076,24 @@ failures, and better method names. ----------------------------------------------------------------------- - ‘assert_()’ *note assertTrue(): c86. + ‘assert_()’ *note assertTrue(): b94. - ‘assertEquals()’ *note assertEqual(): c87. + ‘assertEquals()’ *note assertEqual(): b95. - ‘assertNotEquals()’ *note assertNotEqual(): c88. + ‘assertNotEquals()’ *note assertNotEqual(): b96. - ‘assertAlmostEquals()’ *note assertAlmostEqual(): c89. + ‘assertAlmostEquals()’ *note assertAlmostEqual(): b97. - ‘assertNotAlmostEquals()’ *note assertNotAlmostEqual(): c8a. + ‘assertNotAlmostEquals()’ *note assertNotAlmostEqual(): b98. Likewise, the ‘TestCase.fail*’ methods deprecated in Python 3.1 are expected to be removed in Python 3.3. Also see the *note - Deprecated aliases: c8b. section in the *note unittest: 124. + Deprecated aliases: b99. section in the *note unittest: 11c. documentation. (Contributed by Ezio Melotti; bpo-9424(3).) @@ -33693,19 +31115,19 @@ failures, and better method names. (3) https://bugs.python.org/issue9424  -File: python.info, Node: random<3>, Next: poplib<4>, Prev: unittest<6>, Up: New Improved and Deprecated Modules +File: python.info, Node: random<2>, Next: poplib<3>, Prev: unittest<6>, Up: New Improved and Deprecated Modules -1.8.9.34 random +1.7.9.34 random ............... -The integer methods in the *note random: dc. module now do a better job +The integer methods in the *note random: dd. module now do a better job of producing uniform distributions. Previously, they computed selections with ‘int(n*random())’ which had a slight bias whenever `n' was not a power of two. Now, multiple selections are made from a range up to the next power of two and a selection is kept only when it falls within the range ‘0 <= x < n’. The functions and methods affected are -*note randrange(): c8d, *note randint(): c8e, *note choice(): c8f, *note -shuffle(): 212. and *note sample(): c90. +*note randrange(): b9b, *note randint(): b9c, *note choice(): b9d, *note +shuffle(): b9e. and *note sample(): b9f. (Contributed by Raymond Hettinger; bpo-9025(1).) @@ -33714,13 +31136,13 @@ shuffle(): 212. and *note sample(): c90. (1) https://bugs.python.org/issue9025  -File: python.info, Node: poplib<4>, Next: asyncore<2>, Prev: random<3>, Up: New Improved and Deprecated Modules +File: python.info, Node: poplib<3>, Next: asyncore<2>, Prev: random<2>, Up: New Improved and Deprecated Modules -1.8.9.35 poplib +1.7.9.35 poplib ............... -*note POP3_SSL: 1d6. class now accepts a `context' parameter, which is a -*note ssl.SSLContext: 4ec. object allowing bundling SSL configuration +*note POP3_SSL: ba1. class now accepts a `context' parameter, which is a +*note ssl.SSLContext: 3d5. object allowing bundling SSL configuration options, certificates and private keys into a single (potentially long-lived) structure. @@ -33731,16 +31153,16 @@ long-lived) structure. (1) https://bugs.python.org/issue8807  -File: python.info, Node: asyncore<2>, Next: tempfile<2>, Prev: poplib<4>, Up: New Improved and Deprecated Modules +File: python.info, Node: asyncore<2>, Next: tempfile<2>, Prev: poplib<3>, Up: New Improved and Deprecated Modules -1.8.9.36 asyncore +1.7.9.36 asyncore ................. -*note asyncore.dispatcher: c93. now provides a *note handle_accepted(): -c94. method returning a ‘(sock, addr)’ pair which is called when a +*note asyncore.dispatcher: ba3. now provides a *note handle_accepted(): +ba4. method returning a ‘(sock, addr)’ pair which is called when a connection has actually been established with a new remote endpoint. This is supposed to be used as a replacement for old *note -handle_accept(): c95. and avoids the user to call *note accept(): c96. +handle_accept(): ba5. and avoids the user to call *note accept(): ba6. directly. (Contributed by Giampaolo Rodolà; bpo-6706(1).) @@ -33750,13 +31172,13 @@ directly. (1) https://bugs.python.org/issue6706  -File: python.info, Node: tempfile<2>, Next: inspect<7>, Prev: asyncore<2>, Up: New Improved and Deprecated Modules +File: python.info, Node: tempfile<2>, Next: inspect<6>, Prev: asyncore<2>, Up: New Improved and Deprecated Modules -1.8.9.37 tempfile +1.7.9.37 tempfile ................. -The *note tempfile: 103. module has a new context manager, *note -TemporaryDirectory: c98. which provides easy deterministic cleanup of +The *note tempfile: 104. module has a new context manager, *note +TemporaryDirectory: ba8. which provides easy deterministic cleanup of temporary directories: with tempfile.TemporaryDirectory() as tmpdirname: @@ -33769,13 +31191,13 @@ temporary directories: (1) https://bugs.python.org/issue5178  -File: python.info, Node: inspect<7>, Next: pydoc<6>, Prev: tempfile<2>, Up: New Improved and Deprecated Modules +File: python.info, Node: inspect<6>, Next: pydoc<5>, Prev: tempfile<2>, Up: New Improved and Deprecated Modules -1.8.9.38 inspect +1.7.9.38 inspect ................ - * The *note inspect: a0. module has a new function *note - getgeneratorstate(): c9a. to easily identify the current state of a + * The *note inspect: a1. module has a new function *note + getgeneratorstate(): baa. to easily identify the current state of a generator-iterator: >>> from inspect import getgeneratorstate @@ -33795,8 +31217,8 @@ File: python.info, Node: inspect<7>, Next: pydoc<6>, Prev: tempfile<2>, Up: (Contributed by Rodolpho Eckhardt and Nick Coghlan, bpo-10220(1).) * To support lookups without the possibility of activating a dynamic - attribute, the *note inspect: a0. module has a new function, *note - getattr_static(): c9b. Unlike *note hasattr(): 54c, this is a true + attribute, the *note inspect: a1. module has a new function, *note + getattr_static(): bab. Unlike *note hasattr(): 437, this is a true read-only search, guaranteed not to change state while it is searching: @@ -33820,12 +31242,12 @@ File: python.info, Node: inspect<7>, Next: pydoc<6>, Prev: tempfile<2>, Up: (1) https://bugs.python.org/issue10220  -File: python.info, Node: pydoc<6>, Next: dis<3>, Prev: inspect<7>, Up: New Improved and Deprecated Modules +File: python.info, Node: pydoc<5>, Next: dis<3>, Prev: inspect<6>, Up: New Improved and Deprecated Modules -1.8.9.39 pydoc +1.7.9.39 pydoc .............. -The *note pydoc: d9. module now provides a much-improved Web server +The *note pydoc: da. module now provides a much-improved Web server interface, as well as a new command-line option ‘-b’ to automatically open a browser window to display that server: @@ -33838,13 +31260,13 @@ open a browser window to display that server: (1) https://bugs.python.org/issue2001  -File: python.info, Node: dis<3>, Next: dbm<6>, Prev: pydoc<6>, Up: New Improved and Deprecated Modules +File: python.info, Node: dis<3>, Next: dbm<6>, Prev: pydoc<5>, Up: New Improved and Deprecated Modules -1.8.9.40 dis +1.7.9.40 dis ............ -The *note dis: 37. module gained two new functions for inspecting code, -*note code_info(): c9e. and *note show_code(): 921. Both provide +The *note dis: 38. module gained two new functions for inspecting code, +*note code_info(): bae. and *note show_code(): 817. Both provide detailed code object information for the supplied function, method, source code string or code object. The former returns a string and the latter prints it: @@ -33871,7 +31293,7 @@ latter prints it: 1: seq 2: i -In addition, the *note dis(): 48d. function now accepts string arguments +In addition, the *note dis(): 375. function now accepts string arguments so that the common idiom ‘dis(compile(s, '', 'eval'))’ can be shortened to ‘dis(s)’: @@ -33906,7 +31328,7 @@ under-the-hood.  File: python.info, Node: dbm<6>, Next: ctypes<2>, Prev: dis<3>, Up: New Improved and Deprecated Modules -1.8.9.41 dbm +1.7.9.41 dbm ............ All database modules now support the ‘get()’ and ‘setdefault()’ methods. @@ -33920,28 +31342,28 @@ All database modules now support the ‘get()’ and ‘setdefault()’ methods.  File: python.info, Node: ctypes<2>, Next: site<2>, Prev: dbm<6>, Up: New Improved and Deprecated Modules -1.8.9.42 ctypes +1.7.9.42 ctypes ............... -A new type, *note ctypes.c_ssize_t: ca1. represents the C ‘ssize_t’ +A new type, *note ctypes.c_ssize_t: bb1. represents the C ‘ssize_t’ datatype.  File: python.info, Node: site<2>, Next: sysconfig<2>, Prev: ctypes<2>, Up: New Improved and Deprecated Modules -1.8.9.43 site +1.7.9.43 site ............. -The *note site: eb. module has three new functions useful for reporting +The *note site: ec. module has three new functions useful for reporting on the details of a given Python installation. - * *note getsitepackages(): ca3. lists all global site-packages + * *note getsitepackages(): bb3. lists all global site-packages directories. - * *note getuserbase(): ca4. reports on the user’s base directory + * *note getuserbase(): bb4. reports on the user’s base directory where data can be stored. - * *note getusersitepackages(): ca5. reveals the user-specific + * *note getusersitepackages(): bb5. reveals the user-specific site-packages directory path. >>> import site @@ -33969,33 +31391,33 @@ the command-line: (1) https://bugs.python.org/issue6693  -File: python.info, Node: sysconfig<2>, Next: pdb<6>, Prev: site<2>, Up: New Improved and Deprecated Modules +File: python.info, Node: sysconfig<2>, Next: pdb<5>, Prev: site<2>, Up: New Improved and Deprecated Modules -1.8.9.44 sysconfig +1.7.9.44 sysconfig .................. -The new *note sysconfig: fe. module makes it straightforward to discover +The new *note sysconfig: ff. module makes it straightforward to discover installation paths and configuration variables that vary across platforms and installations. The module offers access simple access functions for platform and version information: - * *note get_platform(): ca7. returning values like `linux-i586' or + * *note get_platform(): bb7. returning values like `linux-i586' or `macosx-10.6-ppc'. - * *note get_python_version(): ca8. returns a Python version string + * *note get_python_version(): bb8. returns a Python version string such as “3.2”. It also provides access to the paths and variables corresponding to one -of seven named schemes used by *note distutils: 38. Those include +of seven named schemes used by *note distutils: 39. Those include `posix_prefix', `posix_home', `posix_user', `nt', `nt_user', `os2', `os2_home': - * *note get_paths(): ca9. makes a dictionary containing installation + * *note get_paths(): bb9. makes a dictionary containing installation paths for the current installation scheme. - * *note get_config_vars(): a48. returns a dictionary of platform + * *note get_config_vars(): 946. returns a dictionary of platform specific variables. There is also a convenient command-line interface: @@ -34038,12 +31460,12 @@ There is also a convenient command-line interface: (Moved out of Distutils by Tarek Ziadé.)  -File: python.info, Node: pdb<6>, Next: configparser<2>, Prev: sysconfig<2>, Up: New Improved and Deprecated Modules +File: python.info, Node: pdb<5>, Next: configparser<2>, Prev: sysconfig<2>, Up: New Improved and Deprecated Modules -1.8.9.45 pdb +1.7.9.45 pdb ............ -The *note pdb: c9. debugger module gained a number of usability +The *note pdb: ca. debugger module gained a number of usability improvements: * ‘pdb.py’ now has a ‘-c’ option that executes commands as given in a @@ -34068,15 +31490,15 @@ improvements: (Contributed by Georg Brandl, Antonio Cuni and Ilya Sandler.)  -File: python.info, Node: configparser<2>, Next: urllib parse<4>, Prev: pdb<6>, Up: New Improved and Deprecated Modules +File: python.info, Node: configparser<2>, Next: urllib parse<3>, Prev: pdb<5>, Up: New Improved and Deprecated Modules -1.8.9.46 configparser +1.7.9.46 configparser ..................... -The *note configparser: 22. module was modified to improve usability and +The *note configparser: 23. module was modified to improve usability and predictability of the default parser and its supported INI syntax. The old ‘ConfigParser’ class was removed in favor of ‘SafeConfigParser’ -which has in turn been renamed to *note ConfigParser: 5a7. Support for +which has in turn been renamed to *note ConfigParser: 49b. Support for inline comments is now turned off by default and section or option duplicates are not allowed in a single configuration source. @@ -34117,7 +31539,7 @@ prefixes, change the name of the `DEFAULT' section or switch the interpolation syntax. There is support for pluggable interpolation including an additional -interpolation handler *note ExtendedInterpolation: cac.: +interpolation handler *note ExtendedInterpolation: bbc.: >>> parser = ConfigParser(interpolation=ExtendedInterpolation()) >>> parser.read_dict({'buildout': {'directory': '/home/ambv/zope9'}, @@ -34156,15 +31578,15 @@ get-functions, or reading directly from dictionaries and strings. (All changes contributed by Łukasz Langa.)  -File: python.info, Node: urllib parse<4>, Next: mailbox, Prev: configparser<2>, Up: New Improved and Deprecated Modules +File: python.info, Node: urllib parse<3>, Next: mailbox, Prev: configparser<2>, Up: New Improved and Deprecated Modules -1.8.9.47 urllib.parse +1.7.9.47 urllib.parse ..................... A number of usability improvements were made for the *note urllib.parse: -128. module. +120. module. -The *note urlparse(): 6f3. function now supports IPv6(1) addresses as +The *note urlparse(): 5e7. function now supports IPv6(1) addresses as described in RFC 2732(2): >>> import urllib.parse @@ -34176,8 +31598,8 @@ described in RFC 2732(2): query='', fragment='') -The *note urldefrag(): cae. function now returns a *note named tuple: -b7d.: +The *note urldefrag(): bbe. function now returns a *note named tuple: +a84.: >>> r = urllib.parse.urldefrag('http://python.org/about/#target') >>> r @@ -34187,10 +31609,10 @@ b7d.: >>> r.fragment 'target' -And, the *note urlencode(): 87c. function is now much more flexible, +And, the *note urlencode(): 770. function is now much more flexible, accepting either a string or bytes type for the `query' argument. If it is a string, then the `safe', `encoding', and `error' parameters are -sent to *note quote_plus(): caf. for encoding: +sent to *note quote_plus(): bbf. for encoding: >>> urllib.parse.urlencode([ ... ('type', 'telenovela'), @@ -34198,8 +31620,8 @@ sent to *note quote_plus(): caf. for encoding: ... encoding='latin-1') 'type=telenovela&name=%BFD%F3nde+Est%E1+Elisa%3F' -As detailed in *note Parsing ASCII Encoded Bytes: cb0, all the *note -urllib.parse: 128. functions now accept ASCII-encoded byte strings as +As detailed in *note Parsing ASCII Encoded Bytes: bc0, all the *note +urllib.parse: 120. functions now accept ASCII-encoded byte strings as input, so long as they are not mixed with regular strings. If ASCII-encoded byte strings are given as parameters, the return types will also be an ASCII-encoded byte strings: @@ -34224,37 +31646,37 @@ bpo-5468(4), and bpo-9873(5).) (5) https://bugs.python.org/issue9873  -File: python.info, Node: mailbox, Next: turtledemo, Prev: urllib parse<4>, Up: New Improved and Deprecated Modules +File: python.info, Node: mailbox, Next: turtledemo, Prev: urllib parse<3>, Up: New Improved and Deprecated Modules -1.8.9.48 mailbox +1.7.9.48 mailbox ................ -Thanks to a concerted effort by R. David Murray, the *note mailbox: ae. +Thanks to a concerted effort by R. David Murray, the *note mailbox: af. module has been fixed for Python 3.2. The challenge was that mailbox had been originally designed with a text interface, but email messages -are best represented with *note bytes: 172. because various parts of a +are best represented with *note bytes: 322. because various parts of a message may have different encodings. -The solution harnessed the *note email: 67. package’s binary support for +The solution harnessed the *note email: 69. package’s binary support for parsing arbitrary email messages. In addition, the solution required a number of API changes. -As expected, the *note add(): cb2. method for *note mailbox.Mailbox: -cb3. objects now accepts binary input. +As expected, the *note add(): bc2. method for *note mailbox.Mailbox: +bc3. objects now accepts binary input. -*note StringIO: 91c. and text file input are deprecated. Also, string +*note StringIO: 812. and text file input are deprecated. Also, string input will fail early if non-ASCII characters are used. Previously it would fail when the email was processed in a later step. -There is also support for binary output. The *note get_file(): cb4. +There is also support for binary output. The *note get_file(): bc4. method now returns a file in the binary mode (where it used to incorrectly set the file to text-mode). There is also a new *note -get_bytes(): cb5. method that returns a *note bytes: 172. representation +get_bytes(): bc5. method that returns a *note bytes: 322. representation of a message corresponding to a given `key'. It is still possible to get non-binary output using the old API’s *note -get_string(): cb6. method, but that approach is not very useful. -Instead, it is best to extract messages from a *note Message: cb7. +get_string(): bc6. method, but that approach is not very useful. +Instead, it is best to extract messages from a *note Message: bc7. object or to load them from binary input. (Contributed by R. David Murray, with efforts from Steffen Daode @@ -34267,12 +31689,12 @@ Nurpmeso and an initial patch by Victor Stinner in bpo-9124(1).)  File: python.info, Node: turtledemo, Prev: mailbox, Up: New Improved and Deprecated Modules -1.8.9.49 turtledemo +1.7.9.49 turtledemo ................... -The demonstration code for the *note turtle: 11f. module was moved from +The demonstration code for the *note turtle: 117. module was moved from the `Demo' directory to main library. It includes over a dozen sample -scripts with lively displays. Being on *note sys.path: 260, it can now +scripts with lively displays. Being on *note sys.path: 479, it can now be run directly from the command-line: $ python -m turtledemo @@ -34284,19 +31706,19 @@ be run directly from the command-line: (1) https://bugs.python.org/issue10199  -File: python.info, Node: Multi-threading, Next: Optimizations<7>, Prev: New Improved and Deprecated Modules, Up: What’s New In Python 3 2 +File: python.info, Node: Multi-threading, Next: Optimizations<6>, Prev: New Improved and Deprecated Modules, Up: What’s New In Python 3 2 -1.8.10 Multi-threading +1.7.10 Multi-threading ---------------------- * The mechanism for serializing execution of concurrently running - Python threads (generally known as the *note GIL: 20e. or Global + Python threads (generally known as the *note GIL: bca. or Global Interpreter Lock) has been rewritten. Among the objectives were more predictable switching intervals and reduced overhead due to lock contention and the number of ensuing system calls. The notion of a “check interval” to allow thread switches has been abandoned and replaced by an absolute duration expressed in seconds. This - parameter is tunable through *note sys.setswitchinterval(): 218. + parameter is tunable through *note sys.setswitchinterval(): bcb. It currently defaults to 5 milliseconds. Additional details about the implementation can be read from a @@ -34306,10 +31728,10 @@ File: python.info, Node: Multi-threading, Next: Optimizations<7>, Prev: New I (Contributed by Antoine Pitrou.) * Regular and recursive locks now accept an optional `timeout' - argument to their *note acquire(): 85d. method. (Contributed by + argument to their *note acquire(): 753. method. (Contributed by Antoine Pitrou; bpo-7316(2).) - * Similarly, *note threading.Semaphore.acquire(): cba. also gained a + * Similarly, *note threading.Semaphore.acquire(): bcc. also gained a `timeout' argument. (Contributed by Torsten Landschoff; bpo-850728(3).) @@ -34332,16 +31754,16 @@ https://mail.python.org/pipermail/python-dev/2009-October/093321.html (4) https://bugs.python.org/issue8844  -File: python.info, Node: Optimizations<7>, Next: Unicode, Prev: Multi-threading, Up: What’s New In Python 3 2 +File: python.info, Node: Optimizations<6>, Next: Unicode, Prev: Multi-threading, Up: What’s New In Python 3 2 -1.8.11 Optimizations +1.7.11 Optimizations -------------------- A number of small performance enhancements have been added: * Python’s peephole optimizer now recognizes patterns such ‘x in {1, 2, 3}’ as being a test for membership in a set of constants. The - optimizer recasts the *note set: 1f6. as a *note frozenset: 1f7. + optimizer recasts the *note set: b4f. as a *note frozenset: bce. and stores the pre-built constant. Now that the speed penalty is gone, it is practical to start @@ -34355,15 +31777,15 @@ A number of small performance enhancements have been added: (Patch and additional tests contributed by Dave Malcolm; bpo-6690(1)). - * Serializing and unserializing data using the *note pickle: ca. + * Serializing and unserializing data using the *note pickle: cb. module is now several times faster. (Contributed by Alexandre Vassalotti, Antoine Pitrou and the Unladen Swallow team in bpo-9410(2) and bpo-3873(3).) - * The Timsort algorithm(4) used in *note list.sort(): 54a. and *note - sorted(): 549. now runs faster and uses less memory when called - with a *note key function: 7d4. Previously, every element of a + * The Timsort algorithm(4) used in *note list.sort(): 435. and *note + sorted(): 434. now runs faster and uses less memory when called + with a *note key function: 6c7. Previously, every element of a list was wrapped with a temporary object that remembered the key value associated with each element. Now, two arrays of keys and values are sorted in parallel. This saves the memory consumed by @@ -34380,7 +31802,7 @@ A number of small performance enhancements have been added: (Contributed by Antoine Pitrou in bpo-7451(6) and by Raymond Hettinger and Antoine Pitrou in bpo-10314(7).) - * Recursive locks (created with the *note threading.RLock(): cbc. + * Recursive locks (created with the *note threading.RLock(): bcf. API) now benefit from a C implementation which makes them as fast as regular locks, and between 10x and 15x faster than their previous pure Python implementation. @@ -34389,7 +31811,7 @@ A number of small performance enhancements have been added: * The fast-search algorithm in stringlib is now used by the ‘split()’, ‘rsplit()’, ‘splitlines()’ and ‘replace()’ methods on - *note bytes: 172, *note bytearray: 173. and *note str: 205. + *note bytes: 322, *note bytearray: 323. and *note str: 321. objects. Likewise, the algorithm is also used by ‘rfind()’, ‘rindex()’, ‘rsplit()’ and ‘rpartition()’. @@ -34406,7 +31828,7 @@ faster when one operand is much larger than the other (patch by Andress Bennetts in bpo-8685(12)). The ‘array.repeat()’ method has a faster implementation (bpo-1569291(13) by Alexander Belopolsky). The ‘BaseHTTPRequestHandler’ has more efficient buffering (bpo-3709(14) by -Andrew Schaaf). The *note operator.attrgetter(): 80c. function has been +Andrew Schaaf). The *note operator.attrgetter(): 702. function has been sped-up (bpo-10160(15) by Christos Georgiou). And ‘ConfigParser’ loads multi-line arguments a bit faster (bpo-7113(16) by Łukasz Langa). @@ -34445,9 +31867,9 @@ multi-line arguments a bit faster (bpo-7113(16) by Łukasz Langa). (16) https://bugs.python.org/issue7113  -File: python.info, Node: Unicode, Next: Codecs, Prev: Optimizations<7>, Up: What’s New In Python 3 2 +File: python.info, Node: Unicode, Next: Codecs, Prev: Optimizations<6>, Up: What’s New In Python 3 2 -1.8.12 Unicode +1.7.12 Unicode -------------- Python has been updated to Unicode 6.0.0(1). The update to the standard @@ -34471,15 +31893,15 @@ Character Database Changes(3).  File: python.info, Node: Codecs, Next: Documentation, Prev: Unicode, Up: What’s New In Python 3 2 -1.8.13 Codecs +1.7.13 Codecs ------------- Support was added for `cp720' Arabic DOS encoding (bpo-1616979(1)). MBCS encoding no longer ignores the error handler argument. In the -default strict mode, it raises an *note UnicodeDecodeError: 32e. when it +default strict mode, it raises an *note UnicodeDecodeError: 1e9. when it encounters an undecodable byte sequence and an *note UnicodeEncodeError: -32d. for an unencodable character. +1e8. for an unencodable character. The MBCS codec supports ‘'strict'’ and ‘'ignore'’ error handlers for decoding, and ‘'strict'’ and ‘'replace'’ for encoding. @@ -34490,7 +31912,7 @@ decoding and the ‘'replace'’ handler for encoding. On Mac OS X, Python decodes command line arguments with ‘'utf-8'’ rather than the locale encoding. -By default, *note tarfile: 101. uses ‘'utf-8'’ encoding on Windows +By default, *note tarfile: 102. uses ‘'utf-8'’ encoding on Windows (instead of ‘'mbcs'’) and the ‘'surrogateescape'’ error handler on all operating systems. @@ -34501,21 +31923,21 @@ operating systems.  File: python.info, Node: Documentation, Next: IDLE, Prev: Codecs, Up: What’s New In Python 3 2 -1.8.14 Documentation +1.7.14 Documentation -------------------- The documentation continues to be improved. * A table of quick links has been added to the top of lengthy - sections such as *note Built-in Functions: cc0. In the case of - *note itertools: a3, the links are accompanied by tables of + sections such as *note Built-in Functions: bd3. In the case of + *note itertools: a4, the links are accompanied by tables of cheatsheet-style summaries to provide an overview and memory jog without having to read all of the docs. * In some cases, the pure Python source code can be a helpful adjunct to the documentation, so now many modules now feature quick links to the latest version of the source code. For example, the *note - functools: 83. module documentation has a quick link at the top + functools: 85. module documentation has a quick link at the top labeled: `Source code' Lib/functools.py(1). @@ -34523,12 +31945,12 @@ The documentation continues to be improved. (Contributed by Raymond Hettinger; see rationale(2).) * The docs now contain more examples and recipes. In particular, - *note re: dd. module has an extensive section, *note Regular - Expression Examples: cc1. Likewise, the *note itertools: a3. + *note re: de. module has an extensive section, *note Regular + Expression Examples: bd4. Likewise, the *note itertools: a4. module continues to be updated with new *note Itertools Recipes: - cc2. + bd5. - * The *note datetime: 30. module now has an auxiliary implementation + * The *note datetime: 31. module now has an auxiliary implementation in pure Python. No functionality was changed. This just provides an easier-to-read alternate implementation. @@ -34542,7 +31964,7 @@ The documentation continues to be improved. ---------- Footnotes ---------- - (1) https://github.com/python/cpython/tree/3.9/Lib/functools.py + (1) https://github.com/python/cpython/tree/3.8/Lib/functools.py (2) https://rhettinger.wordpress.com/2011/01/28/open-your-source-more/ @@ -34554,7 +31976,7 @@ https://rhettinger.wordpress.com/2011/01/28/open-your-source-more/  File: python.info, Node: IDLE, Next: Code Repository, Prev: Documentation, Up: What’s New In Python 3 2 -1.8.15 IDLE +1.7.15 IDLE ----------- * The format menu now has an option to clean source files by @@ -34577,7 +31999,7 @@ File: python.info, Node: IDLE, Next: Code Repository, Prev: Documentation, U  File: python.info, Node: Code Repository, Next: Build and C API Changes<5>, Prev: IDLE, Up: What’s New In Python 3 2 -1.8.16 Code Repository +1.7.16 Code Repository ---------------------- In addition to the existing Subversion code repository at @@ -34605,7 +32027,7 @@ or the Guide to Mercurial Workflows(4).  File: python.info, Node: Build and C API Changes<5>, Next: Porting to Python 3 2, Prev: Code Repository, Up: What’s New In Python 3 2 -1.8.17 Build and C API Changes +1.7.17 Build and C API Changes ------------------------------ Changes to Python’s build process and to the C API include: @@ -34617,8 +32039,8 @@ Changes to Python’s build process and to the C API include: return characters from the full Unicode range, even on narrow unicode builds (Py_UNICODE_TOLOWER, Py_UNICODE_ISDECIMAL, and others). A visible difference in Python is that *note - unicodedata.numeric(): cc6. now returns the correct value for large - code points, and *note repr(): 8bb. may consider more characters as + unicodedata.numeric(): bd9. now returns the correct value for large + code points, and *note repr(): 7b1. may consider more characters as printable. (Reported by Bupjoe Lee and fixed by Amaury Forgeot D’Arc; @@ -34638,8 +32060,8 @@ Changes to Python’s build process and to the C API include: * Hash values are now values of a new type, ‘Py_hash_t’, which is defined to be the same size as a pointer. Previously they were of type long, which on some 64-bit operating systems is still only 32 - bits long. As a result of this fix, *note set: 1f6. and *note - dict: 164. can now hold more than ‘2**32’ entries on builds with + bits long. As a result of this fix, *note set: b4f. and *note + dict: 1a4. can now hold more than ‘2**32’ entries on builds with 64-bit pointers (previously, they could grow to that size but their performance degraded catastrophically). @@ -34650,26 +32072,26 @@ Changes to Python’s build process and to the C API include: list. It is equivalent to C99 `va_copy' but available on all Python platforms (bpo-2443(6)). - * A new C API function *note PySys_SetArgvEx(): cc7. allows an - embedded interpreter to set *note sys.argv: cc8. without also - modifying *note sys.path: 260. (bpo-5753(7)). + * A new C API function *note PySys_SetArgvEx(): bda. allows an + embedded interpreter to set *note sys.argv: bdb. without also + modifying *note sys.path: 479. (bpo-5753(7)). * ‘PyEval_CallObject’ is now only available in macro form. The function declaration, which was kept for backwards compatibility reasons, is now removed – the macro was introduced in 1997 (bpo-8276(8)). - * There is a new function *note PyLong_AsLongLongAndOverflow(): cc9. - which is analogous to *note PyLong_AsLongAndOverflow(): cca. They - both serve to convert Python *note int: 204. into a native + * There is a new function *note PyLong_AsLongLongAndOverflow(): bdc. + which is analogous to *note PyLong_AsLongAndOverflow(): bdd. They + both serve to convert Python *note int: 171. into a native fixed-width type while providing detection of cases where the conversion won’t fit (bpo-7767(9)). - * The *note PyUnicode_CompareWithASCIIString(): ccb. function now + * The *note PyUnicode_CompareWithASCIIString(): bde. function now returns `not equal' if the Python string is `NUL' terminated. - * There is a new function *note PyErr_NewExceptionWithDoc(): ccc. - that is like *note PyErr_NewException(): ccd. but allows a + * There is a new function *note PyErr_NewExceptionWithDoc(): bdf. + that is like *note PyErr_NewException(): be0. but allows a docstring to be specified. This lets C exceptions have the same self-documenting capabilities as their pure Python counterparts (bpo-7033(10)). @@ -34720,40 +32142,40 @@ such as ActiveState Tcl/Tk 8.5.9(15). See (12) https://bugs.python.org/issue8837 - (13) https://github.com/python/cpython/tree/3.9/Misc/NEWS + (13) https://github.com/python/cpython/tree/3.8/Misc/NEWS (14) -https://github.com/python/cpython/tree/3.9/Mac/BuildScript/README.txt +https://github.com/python/cpython/tree/3.8/Mac/BuildScript/README.txt (15) https://www.activestate.com/activetcl/downloads  File: python.info, Node: Porting to Python 3 2, Prev: Build and C API Changes<5>, Up: What’s New In Python 3 2 -1.8.18 Porting to Python 3.2 +1.7.18 Porting to Python 3.2 ---------------------------- This section lists previously described changes and other bugfixes that may require changes to your code: - * The *note configparser: 22. module has a number of clean-ups. The + * The *note configparser: 23. module has a number of clean-ups. The major change is to replace the old ‘ConfigParser’ class with long-standing preferred alternative ‘SafeConfigParser’. In addition there are a number of smaller incompatibilities: - * The interpolation syntax is now validated on *note get(): ccf. - and *note set(): cd0. operations. In the default + * The interpolation syntax is now validated on *note get(): be2. + and *note set(): be3. operations. In the default interpolation scheme, only two tokens with percent signs are valid: ‘%(name)s’ and ‘%%’, the latter being an escaped percent sign. - * The *note set(): cd0. and *note add_section(): cd1. methods + * The *note set(): be3. and *note add_section(): be4. methods now verify that values are actual strings. Formerly, unsupported types could be introduced unintentionally. * Duplicate sections or options from a single source now raise - either *note DuplicateSectionError: cd2. or *note - DuplicateOptionError: cd3. Formerly, duplicates would + either *note DuplicateSectionError: be5. or *note + DuplicateOptionError: be6. Formerly, duplicates would silently overwrite a previous entry. * Inline comments are now disabled by default so now the `;' @@ -34768,11 +32190,11 @@ may require changes to your code: converted to an empty string. For empty strings, use ‘"option ="’ in a line. - * The *note nntplib: c0. module was reworked extensively, meaning + * The *note nntplib: c1. module was reworked extensively, meaning that its APIs are often incompatible with the 3.1 APIs. - * *note bytearray: 173. objects can no longer be used as filenames; - instead, they should be converted to *note bytes: 172. + * *note bytearray: 323. objects can no longer be used as filenames; + instead, they should be converted to *note bytes: 322. * The ‘array.tostring()’ and ‘array.fromstring()’ have been renamed to ‘array.tobytes()’ and ‘array.frombytes()’ for clarity. The old @@ -34785,7 +32207,7 @@ may require changes to your code: * “w” and “w#” formats has been removed: use “w*” instead * The ‘PyCObject’ type, deprecated in 3.1, has been removed. To wrap - opaque C pointers in Python objects, the *note PyCapsule: cd4. API + opaque C pointers in Python objects, the *note PyCapsule: be7. API should be used instead; the new type has a well-defined interface for passing typing safety information and a less complicated signature for calling a destructor. @@ -34793,24 +32215,24 @@ may require changes to your code: * The ‘sys.setfilesystemencoding()’ function was removed because it had a flawed design. - * The *note random.seed(): cd5. function and method now salt string + * The *note random.seed(): be8. function and method now salt string seeds with an sha512 hash function. To access the previous version of `seed' in order to reproduce Python 3.1 sequences, set the `version' argument to `1', ‘random.seed(s, version=1)’. * The previously deprecated ‘string.maketrans()’ function has been removed in favor of the static methods *note bytes.maketrans(): - cd6. and *note bytearray.maketrans(): cd7. This change solves the + be9. and *note bytearray.maketrans(): bea. This change solves the confusion around which types were supported by the *note string: - f6. module. Now, *note str: 205, *note bytes: 172, and *note - bytearray: 173. each have their own `maketrans' and `translate' + f7. module. Now, *note str: 321, *note bytes: 322, and *note + bytearray: 323. each have their own `maketrans' and `translate' methods with intermediate translation tables of the appropriate type. (Contributed by Georg Brandl; bpo-5675(2).) * The previously deprecated ‘contextlib.nested()’ function has been - removed in favor of a plain *note with: 7dc. statement which can + removed in favor of a plain *note with: 6d0. statement which can accept multiple context managers. The latter technique is faster (because it is built-in), and it does a better job finalizing multiple context managers when one of them raises an exception: @@ -34823,7 +32245,7 @@ may require changes to your code: (Contributed by Georg Brandl and Mattias Brändström; appspot issue 53094(3).) - * *note struct.pack(): cd8. now only allows bytes for the ‘s’ string + * *note struct.pack(): beb. now only allows bytes for the ‘s’ string pack code. Formerly, it would accept text arguments and implicitly encode them to bytes using UTF-8. This was problematic because it made assumptions about the correct encoding and because a @@ -34837,14 +32259,14 @@ may require changes to your code: (Discovered by David Beazley and fixed by Victor Stinner; bpo-10783(4).) - * The *note xml.etree.ElementTree: 140. class now raises an *note - xml.etree.ElementTree.ParseError: cd9. when a parse fails. - Previously it raised an *note xml.parsers.expat.ExpatError: cda. + * The *note xml.etree.ElementTree: 138. class now raises an *note + xml.etree.ElementTree.ParseError: bec. when a parse fails. + Previously it raised an *note xml.parsers.expat.ExpatError: bed. - * The new, longer *note str(): 205. value on floats may break + * The new, longer *note str(): 321. value on floats may break doctests which rely on the old output format. - * In *note subprocess.Popen: 3de, the default value for `close_fds' + * In *note subprocess.Popen: 2a4, the default value for `close_fds' is now ‘True’ under Unix; under Windows, it is ‘True’ if the three standard streams are set to ‘None’, ‘False’ otherwise. Previously, `close_fds' was always ‘False’ by default, which produced difficult @@ -34852,20 +32274,20 @@ may require changes to your code: leak into the child process. * Support for legacy HTTP 0.9 has been removed from *note - urllib.request: 129. and *note http.client: 93. Such support is - still present on the server side (in *note http.server: 96.). + urllib.request: 121. and *note http.client: 94. Such support is + still present on the server side (in *note http.server: 97.). (Contributed by Antoine Pitrou, bpo-10711(5).) - * SSL sockets in timeout mode now raise *note socket.timeout: cdb. - when a timeout occurs, rather than a generic *note SSLError: cdc. + * SSL sockets in timeout mode now raise *note socket.timeout: bee. + when a timeout occurs, rather than a generic *note SSLError: bef. (Contributed by Antoine Pitrou, bpo-10272(6).) - * The misleading functions *note PyEval_AcquireLock(): 3d7. and *note - PyEval_ReleaseLock(): cdd. have been officially deprecated. The - thread-state aware APIs (such as *note PyEval_SaveThread(): cde. - and *note PyEval_RestoreThread(): 3d9.) should be used instead. + * The misleading functions *note PyEval_AcquireLock(): 29d. and *note + PyEval_ReleaseLock(): bf0. have been officially deprecated. The + thread-state aware APIs (such as *note PyEval_SaveThread(): bf1. + and *note PyEval_RestoreThread(): 29f.) should be used instead. * Due to security risks, ‘asyncore.handle_accept()’ has been deprecated, and a new function, ‘asyncore.handle_accepted()’, was @@ -34873,9 +32295,9 @@ may require changes to your code: (Contributed by Giampaolo Rodola in bpo-6706(7).) - * Due to the new *note GIL: 20e. implementation, *note - PyEval_InitThreads(): 20c. cannot be called before *note - Py_Initialize(): 20f. anymore. + * Due to the new *note GIL: bca. implementation, *note + PyEval_InitThreads(): bf2. cannot be called before *note + Py_Initialize(): 429. anymore. ---------- Footnotes ---------- @@ -34896,7 +32318,7 @@ may require changes to your code:  File: python.info, Node: What’s New In Python 3 1, Next: What’s New In Python 3 0, Prev: What’s New In Python 3 2, Up: What’s New in Python -1.9 What’s New In Python 3.1 +1.8 What’s New In Python 3.1 ============================ @@ -34908,9 +32330,9 @@ This article explains the new features in Python 3.1, compared to 3.0. * PEP 372; Ordered Dictionaries: PEP 372 Ordered Dictionaries. * PEP 378; Format Specifier for Thousands Separator: PEP 378 Format Specifier for Thousands Separator. -* Other Language Changes: Other Language Changes<9>. +* Other Language Changes: Other Language Changes<8>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules<2>. -* Optimizations: Optimizations<8>. +* Optimizations: Optimizations<7>. * IDLE: IDLE<2>. * Build and C API Changes: Build and C API Changes<6>. * Porting to Python 3.1: Porting to Python 3 1. @@ -34918,14 +32340,14 @@ This article explains the new features in Python 3.1, compared to 3.0.  File: python.info, Node: PEP 372 Ordered Dictionaries, Next: PEP 378 Format Specifier for Thousands Separator, Up: What’s New In Python 3 1 -1.9.1 PEP 372: Ordered Dictionaries +1.8.1 PEP 372: Ordered Dictionaries ----------------------------------- Regular Python dictionaries iterate over key/value pairs in arbitrary order. Over the years, a number of authors have written alternative implementations that remember the order that the keys were originally inserted. Based on the experiences from those implementations, a new -*note collections.OrderedDict: 2ed. class has been introduced. +*note collections.OrderedDict: 1a5. class has been introduced. The OrderedDict API is substantially the same as regular dictionaries but will iterate over keys and values in a guaranteed order depending on @@ -34934,12 +32356,12 @@ entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end. The standard library now supports use of ordered dictionaries in several -modules. The *note configparser: 22. module uses them by default. This +modules. The *note configparser: 23. module uses them by default. This lets configuration files be read, modified, and then written back in their original order. The `_asdict()' method for *note -collections.namedtuple(): 1a1. now returns an ordered dictionary with +collections.namedtuple(): 1a3. now returns an ordered dictionary with the values appearing in the same order as the underlying tuple indices. -The *note json: a4. module is being built-out with an +The *note json: a5. module is being built-out with an `object_pairs_hook' to allow OrderedDicts to be built by the decoder. Support was also added for third-party tools like PyYAML(1). @@ -34958,13 +32380,13 @@ PEP 372(2) - Ordered Dictionaries (2) https://www.python.org/dev/peps/pep-0372  -File: python.info, Node: PEP 378 Format Specifier for Thousands Separator, Next: Other Language Changes<9>, Prev: PEP 372 Ordered Dictionaries, Up: What’s New In Python 3 1 +File: python.info, Node: PEP 378 Format Specifier for Thousands Separator, Next: Other Language Changes<8>, Prev: PEP 372 Ordered Dictionaries, Up: What’s New In Python 3 1 -1.9.2 PEP 378: Format Specifier for Thousands Separator +1.8.2 PEP 378: Format Specifier for Thousands Separator ------------------------------------------------------- -The built-in *note format(): 5d8. function and the *note str.format(): -5d7. method use a mini-language that now includes a simple, non-locale +The built-in *note format(): 4cc. function and the *note str.format(): +4cb. method use a mini-language that now includes a simple, non-locale aware way to format a number with a thousands separator. That provides a way to humanize a program’s output, improving its professional appearance and readability: @@ -34978,8 +32400,8 @@ appearance and readability: >>> format(Decimal('1234567.89'), ',f') '1,234,567.89' -The supported types are *note int: 204, *note float: 1fd, *note complex: -2c4. and *note decimal.Decimal: 2c3. +The supported types are *note int: 171, *note float: 174, *note complex: +176. and *note decimal.Decimal: 175. Discussions are underway about how to specify alternative separators like dots, spaces, apostrophes, or underscores. Locale-aware @@ -34999,9 +32421,9 @@ PEP 378(1) - Format Specifier for Thousands Separator (1) https://www.python.org/dev/peps/pep-0378  -File: python.info, Node: Other Language Changes<9>, Next: New Improved and Deprecated Modules<2>, Prev: PEP 378 Format Specifier for Thousands Separator, Up: What’s New In Python 3 1 +File: python.info, Node: Other Language Changes<8>, Next: New Improved and Deprecated Modules<2>, Prev: PEP 378 Format Specifier for Thousands Separator, Up: What’s New In Python 3 1 -1.9.3 Other Language Changes +1.8.3 Other Language Changes ---------------------------- Some smaller changes made to the core Python language are: @@ -35012,7 +32434,7 @@ Some smaller changes made to the core Python language are: in sys.path. (Suggestion and initial patch by Andy Chu; revised patch by Phillip J. Eby and Nick Coghlan; bpo-1739468(1).) - * The *note int(): 204. type gained a ‘bit_length’ method that + * The *note int(): 171. type gained a ‘bit_length’ method that returns the number of bits necessary to represent its argument in binary: @@ -35030,7 +32452,7 @@ Some smaller changes made to the core Python language are: (Contributed by Fredrik Johansson, Victor Stinner, Raymond Hettinger, and Mark Dickinson; bpo-3439(2).) - * The fields in *note format(): 5d8. strings can now be automatically + * The fields in *note format(): 4cc. strings can now be automatically numbered: >>> 'Sir {} of {}'.format('Gallahad', 'Camelot') @@ -35042,16 +32464,16 @@ Some smaller changes made to the core Python language are: (Contributed by Eric Smith; bpo-5237(3).) * The ‘string.maketrans()’ function is deprecated and is replaced by - new static methods, *note bytes.maketrans(): cd6. and *note - bytearray.maketrans(): cd7. This change solves the confusion - around which types were supported by the *note string: f6. module. - Now, *note str: 205, *note bytes: 172, and *note bytearray: 173. + new static methods, *note bytes.maketrans(): be9. and *note + bytearray.maketrans(): bea. This change solves the confusion + around which types were supported by the *note string: f7. module. + Now, *note str: 321, *note bytes: 322, and *note bytearray: 323. each have their own `maketrans' and `translate' methods with intermediate translation tables of the appropriate type. (Contributed by Georg Brandl; bpo-5675(4).) - * The syntax of the *note with: 7dc. statement now allows multiple + * The syntax of the *note with: 6d0. statement now allows multiple context managers in a single statement: >>> with open('mylog.txt') as infile, open('a.out', 'w') as outfile: @@ -35131,12 +32553,12 @@ Some smaller changes made to the core Python language are: (7) https://bugs.python.org/issue1580  -File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimizations<8>, Prev: Other Language Changes<9>, Up: What’s New In Python 3 1 +File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimizations<7>, Prev: Other Language Changes<8>, Up: What’s New In Python 3 1 -1.9.4 New, Improved, and Deprecated Modules +1.8.4 New, Improved, and Deprecated Modules ------------------------------------------- - * Added a *note collections.Counter: abb. class to support convenient + * Added a *note collections.Counter: 9bb. class to support convenient counting of unique items in a sequence or iterable: >>> Counter(['red', 'blue', 'red', 'green', 'blue', 'blue']) @@ -35144,14 +32566,14 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Raymond Hettinger; bpo-1696199(1).) - * Added a new module, *note tkinter.ttk: 118. for access to the Tk + * Added a new module, *note tkinter.ttk: 110. for access to the Tk themed widget set. The basic idea of ttk is to separate, to the extent possible, the code implementing a widget’s behavior from the code implementing its appearance. (Contributed by Guilherme Polo; bpo-2983(2).) - * The *note gzip.GzipFile: 206. and *note bz2.BZ2File: 224. classes + * The *note gzip.GzipFile: 6c4. and *note bz2.BZ2File: 912. classes now support the context management protocol: >>> # Automatically close file after writing @@ -35160,8 +32582,8 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Antoine Pitrou.) - * The *note decimal: 35. module now supports methods for creating a - decimal object from a binary *note float: 1fd. The conversion is + * The *note decimal: 36. module now supports methods for creating a + decimal object from a binary *note float: 174. The conversion is exact but can sometimes be surprising: >>> Decimal.from_float(1.1) @@ -35173,14 +32595,14 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Raymond Hettinger and Mark Dickinson.) - * The *note itertools: a3. module grew two new functions. The *note - itertools.combinations_with_replacement(): ce5. function is one of + * The *note itertools: a4. module grew two new functions. The *note + itertools.combinations_with_replacement(): bf9. function is one of four for generating combinatorics including permutations and - Cartesian products. The *note itertools.compress(): ce6. function + Cartesian products. The *note itertools.compress(): bfa. function mimics its namesake from APL. Also, the existing *note - itertools.count(): ce7. function now has an optional `step' + itertools.count(): bfb. function now has an optional `step' argument and can accept any type of counting sequence including - *note fractions.Fraction: 2c1. and *note decimal.Decimal: 2c3.: + *note fractions.Fraction: 172. and *note decimal.Decimal: 175.: >>> [p+q for p,q in combinations_with_replacement('LOVE', 2)] ['LL', 'LO', 'LV', 'LE', 'OO', 'OV', 'OE', 'VV', 'VE', 'EE'] @@ -35194,7 +32616,7 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Raymond Hettinger.) - * *note collections.namedtuple(): 1a1. now supports a keyword + * *note collections.namedtuple(): 1a3. now supports a keyword argument `rename' which lets invalid fieldnames be automatically converted to positional names in the form _0, _1, etc. This is useful when the field names are being created by an external source @@ -35213,13 +32635,13 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Raymond Hettinger; bpo-1818(3).) - * The *note re.sub(): 57c, *note re.subn(): 825. and *note - re.split(): 4d3. functions now accept a flags parameter. + * The *note re.sub(): 46c, *note re.subn(): 71b. and *note + re.split(): 3bb. functions now accept a flags parameter. (Contributed by Gregory Smith.) - * The *note logging: aa. module now implements a simple *note - logging.NullHandler: ce8. class for applications that are not using + * The *note logging: ab. module now implements a simple *note + logging.NullHandler: bfc. class for applications that are not using logging but are calling library code that does. Setting-up a null handler will suppress spurious warnings such as “No handlers could be found for logger foo”: @@ -35229,29 +32651,29 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Vinay Sajip; bpo-4384(4)). - * The *note runpy: e2. module which supports the ‘-m’ command line + * The *note runpy: e3. module which supports the ‘-m’ command line switch now supports the execution of packages by looking for and executing a ‘__main__’ submodule when a package name is supplied. (Contributed by Andi Vajda; bpo-4195(5).) - * The *note pdb: c9. module can now access and display source code - loaded via *note zipimport: 14c. (or any other conformant PEP + * The *note pdb: ca. module can now access and display source code + loaded via *note zipimport: 144. (or any other conformant PEP 302(6) loader). (Contributed by Alexander Belopolsky; bpo-4201(7).) - * *note functools.partial: 8b7. objects can now be pickled. + * *note functools.partial: 7ad. objects can now be pickled. (Suggested by Antoine Pitrou and Jesse Noller. Implemented by Jack Diederich; bpo-5228(8).) - * Add *note pydoc: d9. help topics for symbols so that ‘help('@')’ + * Add *note pydoc: da. help topics for symbols so that ‘help('@')’ works as expected in the interactive environment. (Contributed by David Laban; bpo-4739(9).) - * The *note unittest: 124. module now supports skipping individual + * The *note unittest: 11c. module now supports skipping individual tests or classes of tests. And it supports marking a test as an expected failure, a test that is known to be broken, but shouldn’t be counted as a failure on a TestResult: @@ -35267,7 +32689,7 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz ... Also, tests for exceptions have been builtout to work with context - managers using the *note with: 7dc. statement: + managers using the *note with: 6d0. statement: def test_division_by_zero(self): with self.assertRaises(ZeroDivisionError): @@ -35281,22 +32703,22 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Benjamin Peterson and Antoine Pitrou.) - * The *note io: a1. module has three new constants for the ‘seek()’ + * The *note io: a2. module has three new constants for the ‘seek()’ method ‘SEEK_SET’, ‘SEEK_CUR’, and ‘SEEK_END’. - * The *note sys.version_info: bef. tuple is now a named tuple: + * The *note sys.version_info: afb. tuple is now a named tuple: >>> sys.version_info sys.version_info(major=3, minor=1, micro=0, releaselevel='alpha', serial=2) (Contributed by Ross Light; bpo-4285(10).) - * The *note nntplib: c0. and *note imaplib: 97. modules now support + * The *note nntplib: c1. and *note imaplib: 98. modules now support IPv6. (Contributed by Derek Morr; bpo-1655(11) and bpo-1664(12).) - * The *note pickle: ca. module has been adapted for better + * The *note pickle: cb. module has been adapted for better interoperability with Python 2.x when used with protocol 2 or lower. The reorganization of the standard library changed the formal reference for many objects. For example, ‘__builtin__.set’ @@ -35322,10 +32744,10 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (Contributed by Alexandre Vassalotti and Antoine Pitrou, bpo-6137(13).) - * A new module, *note importlib: 9a. was added. It provides a + * A new module, *note importlib: 9b. was added. It provides a complete, portable, pure Python reference implementation of the - *note import: ce9. statement and its counterpart, the *note - __import__(): 16b. function. It represents a substantial step + *note import: bfd. statement and its counterpart, the *note + __import__(): 5fd. function. It represents a substantial step forward in documenting and defining the actions that take place during imports. @@ -35360,9 +32782,9 @@ File: python.info, Node: New Improved and Deprecated Modules<2>, Next: Optimiz (13) https://bugs.python.org/issue6137  -File: python.info, Node: Optimizations<8>, Next: IDLE<2>, Prev: New Improved and Deprecated Modules<2>, Up: What’s New In Python 3 1 +File: python.info, Node: Optimizations<7>, Next: IDLE<2>, Prev: New Improved and Deprecated Modules<2>, Up: What’s New In Python 3 1 -1.9.5 Optimizations +1.8.5 Optimizations ------------------- Major performance enhancements have been added: @@ -35399,9 +32821,9 @@ Major performance enhancements have been added: (Contributed by Antoine Pitrou and Amaury Forgeot d’Arc, bpo-4868(4).) - * The *note json: a4. module now has a C extension to substantially + * The *note json: a5. module now has a C extension to substantially improve its performance. In addition, the API was modified so that - json works only with *note str: 205, not with *note bytes: 172. + json works only with *note str: 321, not with *note bytes: 322. That change makes the module closely match the JSON specification(5) which is defined in terms of Unicode. @@ -35430,9 +32852,9 @@ Major performance enhancements have been added: (7) https://bugs.python.org/issue5084  -File: python.info, Node: IDLE<2>, Next: Build and C API Changes<6>, Prev: Optimizations<8>, Up: What’s New In Python 3 1 +File: python.info, Node: IDLE<2>, Next: Build and C API Changes<6>, Prev: Optimizations<7>, Up: What’s New In Python 3 1 -1.9.6 IDLE +1.8.6 IDLE ---------- * IDLE’s format menu now provides an option to strip trailing @@ -35447,7 +32869,7 @@ File: python.info, Node: IDLE<2>, Next: Build and C API Changes<6>, Prev: Opt  File: python.info, Node: Build and C API Changes<6>, Next: Porting to Python 3 1, Prev: IDLE<2>, Up: What’s New In Python 3 1 -1.9.7 Build and C API Changes +1.8.7 Build and C API Changes ----------------------------- Changes to Python’s build process and to the C API include: @@ -35463,7 +32885,7 @@ Changes to Python’s build process and to the C API include: Apart from the performance improvements this change should be invisible to end users, with one exception: for testing and - debugging purposes there’s a new *note sys.int_info: ced. that + debugging purposes there’s a new *note sys.int_info: c01. that provides information about the internal format, giving the number of bits per digit and the size in bytes of the C type used to store each digit: @@ -35474,24 +32896,24 @@ Changes to Python’s build process and to the C API include: (Contributed by Mark Dickinson; bpo-4258(1).) - * The *note PyLong_AsUnsignedLongLong(): cee. function now handles a - negative `pylong' by raising *note OverflowError: a43. instead of - *note TypeError: 1fe. + * The *note PyLong_AsUnsignedLongLong(): c02. function now handles a + negative `pylong' by raising *note OverflowError: 941. instead of + *note TypeError: 17f. (Contributed by Mark Dickinson and Lisandro Dalcrin; bpo-5175(2).) - * Deprecated ‘PyNumber_Int()’. Use *note PyNumber_Long(): 398. + * Deprecated ‘PyNumber_Int()’. Use *note PyNumber_Long(): 258. instead. (Contributed by Mark Dickinson; bpo-4910(3).) - * Added a new *note PyOS_string_to_double(): cef. function to replace + * Added a new *note PyOS_string_to_double(): c03. function to replace the deprecated functions ‘PyOS_ascii_strtod()’ and ‘PyOS_ascii_atof()’. (Contributed by Mark Dickinson; bpo-5914(4).) - * Added *note PyCapsule: cd4. as a replacement for the ‘PyCObject’ + * Added *note PyCapsule: be7. as a replacement for the ‘PyCObject’ API. The principal difference is that the new type has a well defined interface for passing typing safety information and a less complicated signature for calling a destructor. The old type had a @@ -35514,7 +32936,7 @@ Changes to Python’s build process and to the C API include:  File: python.info, Node: Porting to Python 3 1, Prev: Build and C API Changes<6>, Up: What’s New In Python 3 1 -1.9.8 Porting to Python 3.1 +1.8.8 Porting to Python 3.1 --------------------------- This section lists previously described changes and other bugfixes that @@ -35552,8 +32974,8 @@ may require changes to your code:  File: python.info, Node: What’s New In Python 3 0, Next: What’s New in Python 2 7, Prev: What’s New In Python 3 1, Up: What’s New in Python -1.10 What’s New In Python 3.0 -============================= +1.9 What’s New In Python 3.0 +============================ Author: Guido van Rossum @@ -35597,8 +33019,8 @@ every small thing that was changed.  File: python.info, Node: Common Stumbling Blocks, Next: Overview Of Syntax Changes, Up: What’s New In Python 3 0 -1.10.1 Common Stumbling Blocks ------------------------------- +1.9.1 Common Stumbling Blocks +----------------------------- This section lists those few changes that are most likely to trip you up if you’re used to Python 2.5. @@ -35614,10 +33036,10 @@ if you’re used to Python 2.5.  File: python.info, Node: Print Is A Function, Next: Views And Iterators Instead Of Lists, Up: Common Stumbling Blocks -1.10.1.1 Print Is A Function -............................ +1.9.1.1 Print Is A Function +........................... -The ‘print’ statement has been replaced with a *note print(): 973. +The ‘print’ statement has been replaced with a *note print(): 86b. function, with keyword arguments to replace most of the special syntax of the old ‘print’ statement ( PEP 3105(1)). Examples: @@ -35646,7 +33068,7 @@ which produces: Note: - * The *note print(): 973. function doesn’t support the “softspace” + * The *note print(): 86b. function doesn’t support the “softspace” feature of the old ‘print’ statement. For example, in Python 2.x, ‘print "A\n", "B"’ would write ‘"A\nB\n"’; but in Python 3.0, ‘print("A\n", "B")’ writes ‘"A\n B\n"’. @@ -35656,7 +33078,7 @@ Note: ‘print(x)’ instead! * When using the ‘2to3’ source-to-source conversion tool, all ‘print’ - statements are automatically converted to *note print(): 973. + statements are automatically converted to *note print(): 86b. function calls, so this is mostly a non-issue for larger projects. ---------- Footnotes ---------- @@ -35666,13 +33088,13 @@ Note:  File: python.info, Node: Views And Iterators Instead Of Lists, Next: Ordering Comparisons, Prev: Print Is A Function, Up: Common Stumbling Blocks -1.10.1.2 Views And Iterators Instead Of Lists -............................................. +1.9.1.2 Views And Iterators Instead Of Lists +............................................ Some well-known APIs no longer return lists: - * *note dict: 164. methods *note dict.keys(): cf6, *note - dict.items(): cf7. and *note dict.values(): cf8. return “views” + * *note dict: 1a4. methods *note dict.keys(): c0a, *note + dict.items(): c0b. and *note dict.values(): c0c. return “views” instead of lists. For example, this no longer works: ‘k = d.keys(); k.sort()’. Use ‘k = sorted(d)’ instead (this works in Python 2.5 too and is just as efficient). @@ -35680,35 +33102,35 @@ Some well-known APIs no longer return lists: * Also, the ‘dict.iterkeys()’, ‘dict.iteritems()’ and ‘dict.itervalues()’ methods are no longer supported. - * *note map(): cf9. and *note filter(): cfa. return iterators. If + * *note map(): c0d. and *note filter(): c0e. return iterators. If you really need a list and the input sequences are all of equal - length, a quick fix is to wrap *note map(): cf9. in *note list(): - 1f8, e.g. ‘list(map(...))’, but a better fix is often to use a + length, a quick fix is to wrap *note map(): c0d. in *note list(): + 24e, e.g. ‘list(map(...))’, but a better fix is often to use a list comprehension (especially when the original code uses *note - lambda: cfb.), or rewriting the code so it doesn’t need a list at - all. Particularly tricky is *note map(): cf9. invoked for the side + lambda: c0f.), or rewriting the code so it doesn’t need a list at + all. Particularly tricky is *note map(): c0d. invoked for the side effects of the function; the correct transformation is to use a - regular *note for: cfc. loop (since creating a list would just be + regular *note for: c10. loop (since creating a list would just be wasteful). - If the input sequences are not of equal length, *note map(): cf9. + If the input sequences are not of equal length, *note map(): c0d. will stop at the termination of the shortest of the sequences. For - full compatibility with *note map(): cf9. from Python 2.x, also - wrap the sequences in *note itertools.zip_longest(): cfd, e.g. + full compatibility with *note map(): c0d. from Python 2.x, also + wrap the sequences in *note itertools.zip_longest(): c11, e.g. ‘map(func, *sequences)’ becomes ‘list(map(func, itertools.zip_longest(*sequences)))’. - * *note range(): 1f5. now behaves like ‘xrange()’ used to behave, + * *note range(): 99f. now behaves like ‘xrange()’ used to behave, except it works with values of arbitrary size. The latter no longer exists. - * *note zip(): cfe. now returns an iterator. + * *note zip(): c12. now returns an iterator.  File: python.info, Node: Ordering Comparisons, Next: Integers, Prev: Views And Iterators Instead Of Lists, Up: Common Stumbling Blocks -1.10.1.3 Ordering Comparisons -............................. +1.9.1.3 Ordering Comparisons +............................ Python 3.0 has simplified the rules for ordering comparisons: @@ -35716,49 +33138,48 @@ Python 3.0 has simplified the rules for ordering comparisons: TypeError exception when the operands don’t have a meaningful natural ordering. Thus, expressions like ‘1 < ''’, ‘0 > None’ or ‘len <= len’ are no longer valid, and e.g. ‘None < None’ raises - *note TypeError: 1fe. instead of returning ‘False’. A corollary is + *note TypeError: 17f. instead of returning ‘False’. A corollary is that sorting a heterogeneous list no longer makes sense – all the elements must be comparable to each other. Note that this does not apply to the ‘==’ and ‘!=’ operators: objects of different incomparable types always compare unequal to each other. - * ‘builtin.sorted()’ and *note list.sort(): 54a. no longer accept the + * ‘builtin.sorted()’ and *note list.sort(): 435. no longer accept the `cmp' argument providing a comparison function. Use the `key' argument instead. N.B. the `key' and `reverse' arguments are now “keyword-only”. * The ‘cmp()’ function should be treated as gone, and the ‘__cmp__()’ - special method is no longer supported. Use *note __lt__(): d00. - for sorting, *note __eq__(): 44d. with *note __hash__(): 44e, and - other rich comparisons as needed. (If you really need the ‘cmp()’ - functionality, you could use the expression ‘(a > b) - (a < b)’ as - the equivalent for ‘cmp(a, b)’.) + special method is no longer supported. Use ‘__lt__()’ for sorting, + ‘__eq__()’ with ‘__hash__()’, and other rich comparisons as needed. + (If you really need the ‘cmp()’ functionality, you could use the + expression ‘(a > b) - (a < b)’ as the equivalent for ‘cmp(a, b)’.)  File: python.info, Node: Integers, Next: Text Vs Data Instead Of Unicode Vs 8-bit, Prev: Ordering Comparisons, Up: Common Stumbling Blocks -1.10.1.4 Integers -................. +1.9.1.4 Integers +................ - * PEP 237(1): Essentially, ‘long’ renamed to *note int: 204. That + * PEP 237(1): Essentially, ‘long’ renamed to *note int: 171. That is, there is only one built-in integral type, named *note int: - 204.; but it behaves mostly like the old ‘long’ type. + 171.; but it behaves mostly like the old ‘long’ type. * PEP 238(2): An expression like ‘1/2’ returns a float. Use ‘1//2’ to get the truncating behavior. (The latter syntax has existed for years, at least since Python 2.2.) * The ‘sys.maxint’ constant was removed, since there is no longer a - limit to the value of integers. However, *note sys.maxsize: c17. + limit to the value of integers. However, *note sys.maxsize: b23. can be used as an integer larger than any practical list or string index. It conforms to the implementation’s “natural” integer size and is typically the same as ‘sys.maxint’ in previous releases on the same platform (assuming the same build options). - * The *note repr(): 8bb. of a long integer doesn’t include the + * The *note repr(): 7b1. of a long integer doesn’t include the trailing ‘L’ anymore, so code that unconditionally strips that character will chop off the last digit instead. (Use *note str(): - 205. instead.) + 321. instead.) * Octal literals are no longer of the form ‘0720’; use ‘0o720’ instead. @@ -35772,8 +33193,8 @@ File: python.info, Node: Integers, Next: Text Vs Data Instead Of Unicode Vs 8-  File: python.info, Node: Text Vs Data Instead Of Unicode Vs 8-bit, Prev: Integers, Up: Common Stumbling Blocks -1.10.1.5 Text Vs. Data Instead Of Unicode Vs. 8-bit -................................................... +1.9.1.5 Text Vs. Data Instead Of Unicode Vs. 8-bit +.................................................. Everything you thought you knew about binary data and Unicode has changed. @@ -35781,13 +33202,13 @@ changed. * Python 3.0 uses the concepts of `text' and (binary) `data' instead of Unicode strings and 8-bit strings. All text is Unicode; however `encoded' Unicode is represented as binary data. The type used to - hold text is *note str: 205, the type used to hold data is *note - bytes: 172. The biggest difference with the 2.x situation is that + hold text is *note str: 321, the type used to hold data is *note + bytes: 322. The biggest difference with the 2.x situation is that any attempt to mix text and data in Python 3.0 raises *note - TypeError: 1fe, whereas if you were to mix Unicode and 8-bit + TypeError: 17f, whereas if you were to mix Unicode and 8-bit strings in Python 2.x, it would work if the 8-bit string happened to contain only 7-bit (ASCII) bytes, but you would get *note - UnicodeDecodeError: 32e. if it contained non-ASCII values. This + UnicodeDecodeError: 1e9. if it contained non-ASCII values. This value-specific behavior has caused numerous sad faces over the years. @@ -35796,23 +33217,23 @@ changed. change. The change is for the better, as in the 2.x world there were numerous bugs having to do with mixing encoded and unencoded text. To be prepared in Python 2.x, start using ‘unicode’ for all - unencoded text, and *note str: 205. for binary or encoded data + unencoded text, and *note str: 321. for binary or encoded data only. Then the ‘2to3’ tool will do most of the work for you. * You can no longer use ‘u"..."’ literals for Unicode text. However, you must use ‘b"..."’ literals for binary data. - * As the *note str: 205. and *note bytes: 172. types cannot be mixed, + * As the *note str: 321. and *note bytes: 322. types cannot be mixed, you must always explicitly convert between them. Use *note - str.encode(): 170. to go from *note str: 205. to *note bytes: 172, - and *note bytes.decode(): 171. to go from *note bytes: 172. to - *note str: 205. You can also use ‘bytes(s, encoding=...)’ and + str.encode(): c16. to go from *note str: 321. to *note bytes: 322, + and *note bytes.decode(): c17. to go from *note bytes: 322. to + *note str: 321. You can also use ‘bytes(s, encoding=...)’ and ‘str(b, encoding=...)’, respectively. - * Like *note str: 205, the *note bytes: 172. type is immutable. + * Like *note str: 321, the *note bytes: 322. type is immutable. There is a separate `mutable' type to hold buffered binary data, - *note bytearray: 173. Nearly all APIs that accept *note bytes: - 172. also accept *note bytearray: 173. The mutable API is based on + *note bytearray: 323. Nearly all APIs that accept *note bytes: + 322. also accept *note bytearray: 323. The mutable API is based on ‘collections.MutableSequence’. * All backslashes in raw string literals are interpreted literally. @@ -35823,13 +33244,13 @@ changed. string literals; the euro character is ‘'\u20ac'’ in Python 3.0.) * The built-in ‘basestring’ abstract type was removed. Use *note - str: 205. instead. The *note str: 205. and *note bytes: 172. types + str: 321. instead. The *note str: 321. and *note bytes: 322. types don’t have functionality enough in common to warrant a shared base class. The ‘2to3’ tool (see below) replaces every occurrence of - ‘basestring’ with *note str: 205. + ‘basestring’ with *note str: 321. * Files opened as text files (still the default mode for *note - open(): 16f.) always use an encoding to map between strings (in + open(): 4e1.) always use an encoding to map between strings (in memory) and bytes (on disk). Binary files (opened with a ‘b’ in the mode argument) always use bytes in memory. This means that if a file is opened using an incorrect mode or encoding, I/O will @@ -35843,36 +33264,36 @@ changed. UTF-8; you should never count on this default. Any application reading or writing more than pure ASCII text should probably have a way to override the encoding. There is no longer any need for - using the encoding-aware streams in the *note codecs: 1b. module. + using the encoding-aware streams in the *note codecs: 1c. module. - * The initial values of *note sys.stdin: 420, *note sys.stdout: 421. - and *note sys.stderr: 1ea. are now unicode-only text files (i.e., - they are instances of *note io.TextIOBase: d03.). To read and + * The initial values of *note sys.stdin: 301, *note sys.stdout: 302. + and *note sys.stderr: 303. are now unicode-only text files (i.e., + they are instances of *note io.TextIOBase: c18.). To read and write bytes data with these streams, you need to use their *note - io.TextIOBase.buffer: d04. attribute. + io.TextIOBase.buffer: c19. attribute. * Filenames are passed to and returned from APIs as (Unicode) strings. This can present platform-specific problems because on some platforms filenames are arbitrary byte strings. (On the other hand, on Windows filenames are natively stored as Unicode.) As a - work-around, most APIs (e.g. *note open(): 16f. and many functions - in the *note os: c4. module) that take filenames accept *note - bytes: 172. objects as well as strings, and a few APIs have a way - to ask for a *note bytes: 172. return value. Thus, *note - os.listdir(): b1e. returns a list of *note bytes: 172. instances if - the argument is a *note bytes: 172. instance, and *note - os.getcwdb(): 3dd. returns the current working directory as a *note - bytes: 172. instance. Note that when *note os.listdir(): b1e. + work-around, most APIs (e.g. *note open(): 4e1. and many functions + in the *note os: c5. module) that take filenames accept *note + bytes: 322. objects as well as strings, and a few APIs have a way + to ask for a *note bytes: 322. return value. Thus, *note + os.listdir(): a22. returns a list of *note bytes: 322. instances if + the argument is a *note bytes: 322. instance, and *note + os.getcwdb(): 2a3. returns the current working directory as a *note + bytes: 322. instance. Note that when *note os.listdir(): a22. returns a list of strings, filenames that cannot be decoded - properly are omitted rather than raising *note UnicodeError: d05. + properly are omitted rather than raising *note UnicodeError: c1a. - * Some system APIs like *note os.environ: c0b. and *note sys.argv: - cc8. can also present problems when the bytes made available by the + * Some system APIs like *note os.environ: b18. and *note sys.argv: + bdb. can also present problems when the bytes made available by the system is not interpretable using the default encoding. Setting the ‘LANG’ variable and rerunning the program is probably the best approach. - * PEP 3138(1): The *note repr(): 8bb. of a string no longer escapes + * PEP 3138(1): The *note repr(): 7b1. of a string no longer escapes non-ASCII characters. It still escapes control characters and code points with non-printable status in the Unicode standard, however. @@ -35883,10 +33304,10 @@ changed. exception of contributor names in comments.) * The ‘StringIO’ and ‘cStringIO’ modules are gone. Instead, import - the *note io: a1. module and use *note io.StringIO: 91c. or *note - io.BytesIO: 88c. for text and data respectively. + the *note io: a2. module and use *note io.StringIO: 812. or *note + io.BytesIO: 780. for text and data respectively. - * See also the *note Unicode HOWTO: d06, which was updated for Python + * See also the *note Unicode HOWTO: c1b, which was updated for Python 3.0. ---------- Footnotes ---------- @@ -35900,8 +33321,8 @@ changed.  File: python.info, Node: Overview Of Syntax Changes, Next: Changes Already Present In Python 2 6, Prev: Common Stumbling Blocks, Up: What’s New In Python 3 0 -1.10.2 Overview Of Syntax Changes ---------------------------------- +1.9.2 Overview Of Syntax Changes +-------------------------------- This section gives a brief overview of every `syntactic' change in Python 3.0. @@ -35915,8 +33336,8 @@ Python 3.0.  File: python.info, Node: New Syntax, Next: Changed Syntax, Up: Overview Of Syntax Changes -1.10.2.1 New Syntax -................... +1.9.2.1 New Syntax +.................. * PEP 3107(1): Function argument and return value annotations. This provides a standardized way of annotating a function’s parameters @@ -35936,7 +33357,7 @@ File: python.info, Node: New Syntax, Next: Changed Syntax, Up: Overview Of Sy specifying a metaclass (see next section), but can be used for other purposes as well, as long as the metaclass supports it. - * PEP 3104(3): *note nonlocal: d09. statement. Using ‘nonlocal x’ + * PEP 3104(3): *note nonlocal: c1e. statement. Using ‘nonlocal x’ you can now assign directly to a variable in an outer (but non-global) scope. ‘nonlocal’ is a new reserved word. @@ -35962,10 +33383,10 @@ File: python.info, Node: New Syntax, Next: Changed Syntax, Up: Overview Of Sy literals (‘0720’) are gone. * New binary literals, e.g. ‘0b1010’ (already in 2.6), and there is - a new corresponding built-in function, *note bin(): d0a. + a new corresponding built-in function, *note bin(): c1f. * Bytes literals are introduced with a leading ‘b’ or ‘B’, and there - is a new corresponding built-in function, *note bytes(): 172. + is a new corresponding built-in function, *note bytes(): 322. ---------- Footnotes ---------- @@ -35982,19 +33403,19 @@ File: python.info, Node: New Syntax, Next: Changed Syntax, Up: Overview Of Sy  File: python.info, Node: Changed Syntax, Next: Removed Syntax, Prev: New Syntax, Up: Overview Of Syntax Changes -1.10.2.2 Changed Syntax -....................... +1.9.2.2 Changed Syntax +...................... - * PEP 3109(1) and PEP 3134(2): new *note raise: d0c. statement + * PEP 3109(1) and PEP 3134(2): new *note raise: c21. statement syntax: ‘raise [`expr' [from `expr']]’. See below. - * ‘as’ and *note with: 7dc. are now reserved words. (Since 2.6, + * ‘as’ and *note with: 6d0. are now reserved words. (Since 2.6, actually.) * ‘True’, ‘False’, and ‘None’ are reserved words. (2.6 partially enforced the restrictions on ‘None’ already.) - * Change from *note except: c12. `exc', `var' to ‘except’ `exc' ‘as’ + * Change from *note except: b1e. `exc', `var' to ‘except’ `exc' ‘as’ `var'. See PEP 3110(3). * PEP 3115(4): New Metaclass Syntax. Instead of: @@ -36010,13 +33431,13 @@ File: python.info, Node: Changed Syntax, Next: Removed Syntax, Prev: New Synt The module-global ‘__metaclass__’ variable is no longer supported. (It was a crutch to make it easier to default to new-style classes - without deriving every class from *note object: 3d5.) + without deriving every class from *note object: 29b.) * List comprehensions no longer support the syntactic form ‘[... for `var' in `item1', `item2', ...]’. Use ‘[... for `var' in (`item1', `item2', ...)]’ instead. Also note that list comprehensions have different semantics: they are closer to syntactic sugar for a - generator expression inside a *note list(): 1f8. constructor, and + generator expression inside a *note list(): 24e. constructor, and in particular the loop control variables are no longer leaked into the surrounding scope. @@ -36038,20 +33459,20 @@ File: python.info, Node: Changed Syntax, Next: Removed Syntax, Prev: New Synt  File: python.info, Node: Removed Syntax, Prev: Changed Syntax, Up: Overview Of Syntax Changes -1.10.2.3 Removed Syntax -....................... +1.9.2.3 Removed Syntax +...................... * PEP 3113(1): Tuple parameter unpacking removed. You can no longer write ‘def foo(a, (b, c)): ...’. Use ‘def foo(a, b_c): b, c = b_c’ instead. - * Removed backticks (use *note repr(): 8bb. instead). + * Removed backticks (use *note repr(): 7b1. instead). * Removed ‘<>’ (use ‘!=’ instead). - * Removed keyword: *note exec(): d0e. is no longer a keyword; it + * Removed keyword: *note exec(): c23. is no longer a keyword; it remains as a function. (Fortunately the function syntax was also - accepted in 2.x.) Also note that *note exec(): d0e. no longer + accepted in 2.x.) Also note that *note exec(): c23. no longer takes a stream argument; instead of ‘exec(f)’ you can use ‘exec(f.read())’. @@ -36059,11 +33480,11 @@ File: python.info, Node: Removed Syntax, Prev: Changed Syntax, Up: Overview O * String literals no longer support a leading ‘u’ or ‘U’. - * The *note from: d0f. `module' *note import: ce9. ‘*’ syntax is only + * The *note from: c24. `module' *note import: bfd. ‘*’ syntax is only allowed at the module level, no longer inside functions. * The only acceptable syntax for relative imports is ‘from - .[`module'] import `name'’. All *note import: ce9. forms not + .[`module'] import `name'’. All *note import: bfd. forms not starting with ‘.’ are interpreted as absolute imports. ( PEP 328(2)) @@ -36078,87 +33499,87 @@ File: python.info, Node: Removed Syntax, Prev: Changed Syntax, Up: Overview O  File: python.info, Node: Changes Already Present In Python 2 6, Next: Library Changes, Prev: Overview Of Syntax Changes, Up: What’s New In Python 3 0 -1.10.3 Changes Already Present In Python 2.6 --------------------------------------------- +1.9.3 Changes Already Present In Python 2.6 +------------------------------------------- Since many users presumably make the jump straight from Python 2.5 to Python 3.0, this section reminds the reader of new features that were originally designed for Python 3.0 but that were back-ported to Python -2.6. The corresponding sections in *note What’s New in Python 2.6: d11. +2.6. The corresponding sections in *note What’s New in Python 2.6: c26. should be consulted for longer descriptions. - * *note PEP 343; The ‘with’ statement: d12. The *note with: 7dc. + * *note PEP 343; The ‘with’ statement: c27. The *note with: 6d0. statement is now a standard feature and no longer needs to be imported from the *note __future__: 0. Also check out *note - Writing Context Managers: d13. and *note The contextlib module: - d14. + Writing Context Managers: c28. and *note The contextlib module: + c29. - * *note PEP 366; Explicit Relative Imports From a Main Module: d15. - This enhances the usefulness of the *note -m: 445. option when the + * *note PEP 366; Explicit Relative Imports From a Main Module: c2a. + This enhances the usefulness of the *note -m: 328. option when the referenced module lives in a package. - * *note PEP 370; Per-user site-packages Directory: d16. + * *note PEP 370; Per-user site-packages Directory: c2b. - * *note PEP 371; The multiprocessing Package: d17. + * *note PEP 371; The multiprocessing Package: c2c. - * *note PEP 3101; Advanced String Formatting: d18. Note: the 2.6 - description mentions the *note format(): 5d8. method for both 8-bit - and Unicode strings. In 3.0, only the *note str: 205. type (text + * *note PEP 3101; Advanced String Formatting: c2d. Note: the 2.6 + description mentions the *note format(): 4cc. method for both 8-bit + and Unicode strings. In 3.0, only the *note str: 321. type (text strings with Unicode support) supports this method; the *note - bytes: 172. type does not. The plan is to eventually make this the + bytes: 322. type does not. The plan is to eventually make this the only API for string formatting, and to start deprecating the ‘%’ operator in Python 3.1. - * *note PEP 3105; print As a Function: d19. This is now a standard + * *note PEP 3105; print As a Function: c2e. This is now a standard feature and no longer needs to be imported from *note __future__: 0. More details were given above. - * *note PEP 3110; Exception-Handling Changes: d1a. The *note except: - c12. `exc' ‘as’ `var' syntax is now standard and ‘except’ `exc', + * *note PEP 3110; Exception-Handling Changes: c2f. The *note except: + b1e. `exc' ‘as’ `var' syntax is now standard and ‘except’ `exc', `var' is no longer supported. (Of course, the ‘as’ `var' part is still optional.) - * *note PEP 3112; Byte Literals: d1b. The ‘b"..."’ string literal + * *note PEP 3112; Byte Literals: c30. The ‘b"..."’ string literal notation (and its variants like ‘b'...'’, ‘b"""..."""’, and - ‘br"..."’) now produces a literal of type *note bytes: 172. + ‘br"..."’) now produces a literal of type *note bytes: 322. - * *note PEP 3116; New I/O Library: d1c. The *note io: a1. module is + * *note PEP 3116; New I/O Library: c31. The *note io: a2. module is now the standard way of doing file I/O. The built-in *note open(): - 16f. function is now an alias for *note io.open(): 74f. and has + 4e1. function is now an alias for *note io.open(): 643. and has additional keyword arguments `encoding', `errors', `newline' and `closefd'. Also note that an invalid `mode' argument now raises - *note ValueError: 16d, not *note IOError: a75. The binary file + *note ValueError: 1e7, not *note IOError: 973. The binary file object underlying a text file object can be accessed as ‘f.buffer’ (but beware that the text object maintains a buffer of itself in order to speed up the encoding and decoding operations). - * *note PEP 3118; Revised Buffer Protocol: d1d. The old builtin + * *note PEP 3118; Revised Buffer Protocol: c32. The old builtin ‘buffer()’ is now really gone; the new builtin *note memoryview(): - 389. provides (mostly) similar functionality. + 248. provides (mostly) similar functionality. - * *note PEP 3119; Abstract Base Classes: d1e. The *note abc: 3. - module and the ABCs defined in the *note collections: 1d. module + * *note PEP 3119; Abstract Base Classes: c33. The *note abc: 4. + module and the ABCs defined in the *note collections: 1e. module plays a somewhat more prominent role in the language now, and - built-in collection types like *note dict: 164. and *note list: - 1f8. conform to the ‘collections.MutableMapping’ and + built-in collection types like *note dict: 1a4. and *note list: + 24e. conform to the ‘collections.MutableMapping’ and ‘collections.MutableSequence’ ABCs, respectively. - * *note PEP 3127; Integer Literal Support and Syntax: d1f. As + * *note PEP 3127; Integer Literal Support and Syntax: c34. As mentioned above, the new octal literal notation is the only one supported, and binary literals have been added. - * *note PEP 3129; Class Decorators: d20. + * *note PEP 3129; Class Decorators: c35. - * *note PEP 3141; A Type Hierarchy for Numbers: d21. The *note - numbers: c1. module is another new use of ABCs, defining Python’s - “numeric tower”. Also note the new *note fractions: 81. module - which implements *note numbers.Rational: d22. + * *note PEP 3141; A Type Hierarchy for Numbers: c36. The *note + numbers: c2. module is another new use of ABCs, defining Python’s + “numeric tower”. Also note the new *note fractions: 83. module + which implements *note numbers.Rational: c37.  File: python.info, Node: Library Changes, Next: PEP 3101 A New Approach To String Formatting, Prev: Changes Already Present In Python 2 6, Up: What’s New In Python 3 0 -1.10.4 Library Changes ----------------------- +1.9.4 Library Changes +--------------------- Due to time constraints, this document does not exhaustively cover the very extensive changes to the standard library. PEP 3108(1) is the @@ -36166,7 +33587,7 @@ reference for the major changes to the library. Here’s a capsule review: * Many old modules were removed. Some, like ‘gopherlib’ (no longer - used) and ‘md5’ (replaced by *note hashlib: 8c.), were already + used) and ‘md5’ (replaced by *note hashlib: 8d.), were already deprecated by PEP 4(2). Others were removed as a result of the removal of support for various platforms such as Irix, BeOS and Mac OS 9 (see PEP 11(3)). Some modules were also selected for removal @@ -36213,37 +33634,37 @@ review: * A common pattern in Python 2.x is to have one version of a module implemented in pure Python, with an optional accelerated version - implemented as a C extension; for example, *note pickle: ca. and + implemented as a C extension; for example, *note pickle: cb. and ‘cPickle’. This places the burden of importing the accelerated version and falling back on the pure Python version on each user of these modules. In Python 3.0, the accelerated versions are considered implementation details of the pure Python versions. Users should always import the standard version, which attempts to import the accelerated version and falls back to the pure Python - version. The *note pickle: ca. / ‘cPickle’ pair received this - treatment. The *note profile: d3. module is on the list for 3.1. + version. The *note pickle: cb. / ‘cPickle’ pair received this + treatment. The *note profile: d4. module is on the list for 3.1. The ‘StringIO’ module has been turned into a class in the *note io: - a1. module. + a2. module. * Some related modules have been grouped into packages, and usually the submodule names have been simplified. The resulting new packages are: - * *note dbm: 31. (‘anydbm’, ‘dbhash’, *note dbm: 31, ‘dumbdbm’, + * *note dbm: 32. (‘anydbm’, ‘dbhash’, *note dbm: 32, ‘dumbdbm’, ‘gdbm’, ‘whichdb’). - * *note html: 8f. (‘HTMLParser’, ‘htmlentitydefs’). + * *note html: 90. (‘HTMLParser’, ‘htmlentitydefs’). - * *note http: 92. (‘httplib’, ‘BaseHTTPServer’, ‘CGIHTTPServer’, + * *note http: 93. (‘httplib’, ‘BaseHTTPServer’, ‘CGIHTTPServer’, ‘SimpleHTTPServer’, ‘Cookie’, ‘cookielib’). - * *note tkinter: 10e. (all ‘Tkinter’-related modules except - *note turtle: 11f.). The target audience of *note turtle: - 11f. doesn’t really care about *note tkinter: 10e. Also note - that as of Python 2.6, the functionality of *note turtle: 11f. + * *note tkinter: 10d. (all ‘Tkinter’-related modules except + *note turtle: 117.). The target audience of *note turtle: + 117. doesn’t really care about *note tkinter: 10d. Also note + that as of Python 2.6, the functionality of *note turtle: 117. has been greatly enhanced. - * *note urllib: 126. (*note urllib: 126, ‘urllib2’, ‘urlparse’, + * *note urllib: 11e. (*note urllib: 11e, ‘urllib2’, ‘urlparse’, ‘robotparse’). * ‘xmlrpc’ (‘xmlrpclib’, ‘DocXMLRPCServer’, @@ -36252,46 +33673,46 @@ review: Some other changes to standard library modules, not covered by PEP 3108(6): - * Killed ‘sets’. Use the built-in *note set(): 1f6. class. + * Killed ‘sets’. Use the built-in *note set(): b4f. class. - * Cleanup of the *note sys: fd. module: removed ‘sys.exitfunc()’, + * Cleanup of the *note sys: fe. module: removed ‘sys.exitfunc()’, ‘sys.exc_clear()’, ‘sys.exc_type’, ‘sys.exc_value’, - ‘sys.exc_traceback’. (Note that *note sys.last_type: d24. etc. + ‘sys.exc_traceback’. (Note that *note sys.last_type: c39. etc. remain.) - * Cleanup of the *note array.array: 216. type: the ‘read()’ and + * Cleanup of the *note array.array: 442. type: the ‘read()’ and ‘write()’ methods are gone; use ‘fromfile()’ and ‘tofile()’ instead. Also, the ‘'c'’ typecode for array is gone – use either ‘'b'’ for bytes or ‘'u'’ for Unicode characters. - * Cleanup of the *note operator: c2. module: removed + * Cleanup of the *note operator: c3. module: removed ‘sequenceIncludes()’ and ‘isCallable()’. * Cleanup of the ‘thread’ module: ‘acquire_lock()’ and ‘release_lock()’ are gone; use ‘acquire()’ and ‘release()’ instead. - * Cleanup of the *note random: dc. module: removed the ‘jumpahead()’ + * Cleanup of the *note random: dd. module: removed the ‘jumpahead()’ API. * The ‘new’ module is gone. * The functions ‘os.tmpnam()’, ‘os.tempnam()’ and ‘os.tmpfile()’ have - been removed in favor of the *note tempfile: 103. module. + been removed in favor of the *note tempfile: 104. module. - * The *note tokenize: 11a. module has been changed to work with - bytes. The main entry point is now *note tokenize.tokenize(): d25, + * The *note tokenize: 112. module has been changed to work with + bytes. The main entry point is now *note tokenize.tokenize(): c3a, instead of generate_tokens. * ‘string.letters’ and its friends (‘string.lowercase’ and - ‘string.uppercase’) are gone. Use *note string.ascii_letters: d26. + ‘string.uppercase’) are gone. Use *note string.ascii_letters: c3b. etc. instead. (The reason for the removal is that ‘string.letters’ and friends had locale-specific behavior, which is a bad idea for such attractively-named global “constants”.) - * Renamed module ‘__builtin__’ to *note builtins: 12. (removing the + * Renamed module ‘__builtin__’ to *note builtins: 13. (removing the underscores, adding an ‘s’). The ‘__builtins__’ variable found in most global namespaces is unchanged. To modify a builtin, you - should use *note builtins: 12, not ‘__builtins__’! + should use *note builtins: 13, not ‘__builtins__’! ---------- Footnotes ---------- @@ -36310,8 +33731,7 @@ Some other changes to standard library modules, not covered by PEP  File: python.info, Node: PEP 3101 A New Approach To String Formatting, Next: Changes To Exceptions, Prev: Library Changes, Up: What’s New In Python 3 0 -1.10.5 `PEP 3101': A New Approach To String Formatting ------------------------------------------------------- +`PEP 3101': A New Approach To String Formatting * A new system for built-in string formatting operations replaces the ‘%’ string formatting operator. (However, the ‘%’ operator is @@ -36326,26 +33746,26 @@ File: python.info, Node: PEP 3101 A New Approach To String Formatting, Next: C  File: python.info, Node: Changes To Exceptions, Next: Miscellaneous Other Changes, Prev: PEP 3101 A New Approach To String Formatting, Up: What’s New In Python 3 0 -1.10.6 Changes To Exceptions ----------------------------- +1.9.6 Changes To Exceptions +--------------------------- The APIs for raising and catching exception have been cleaned up and new powerful features added: * PEP 352(1): All exceptions must be derived (directly or indirectly) - from *note BaseException: 2de. This is the root of the exception + from *note BaseException: 194. This is the root of the exception hierarchy. This is not new as a recommendation, but the - `requirement' to inherit from *note BaseException: 2de. is new. + `requirement' to inherit from *note BaseException: 194. is new. (Python 2.6 still allowed classic classes to be raised, and placed no restriction on what you can catch.) As a consequence, string exceptions are finally truly and utterly dead. * Almost all exceptions should actually derive from *note Exception: - 2df.; *note BaseException: 2de. should only be used as a base class + 195.; *note BaseException: 194. should only be used as a base class for exceptions that should only be handled at the top level, such - as *note SystemExit: 6f5. or *note KeyboardInterrupt: 2cf. The + as *note SystemExit: 5e9. or *note KeyboardInterrupt: 184. The recommended idiom for handling all exceptions except for this - latter category is to use *note except: c12. *note Exception: 2df. + latter category is to use *note except: b1e. *note Exception: 195. * ‘StandardError’ was removed. @@ -36361,11 +33781,11 @@ powerful features added: * PEP 3110(3): Catching exceptions. You must now use ‘except `SomeException' as `variable'’ instead of ‘except `SomeException', `variable'’. Moreover, the `variable' is explicitly deleted when - the *note except: c12. block is left. + the *note except: b1e. block is left. * PEP 3134(4): Exception chaining. There are two cases: implicit chaining and explicit chaining. Implicit chaining happens when an - exception is raised in an *note except: c12. or *note finally: 2bf. + exception is raised in an *note except: b1e. or *note finally: 16f. handler block. This usually happens due to a bug in the handler block; we call this a `secondary' exception. In this case, the original exception (that was being handled) is saved as the @@ -36386,7 +33806,7 @@ powerful features added: * PEP 3134(5): Exception objects now store their traceback as the ‘__traceback__’ attribute. This means that an exception object now contains all the information pertaining to an exception, and there - are fewer reasons to use *note sys.exc_info(): d29. (though the + are fewer reasons to use *note sys.exc_info(): c3e. (though the latter is not removed). * A few exception messages are improved when Windows fails to load an @@ -36409,8 +33829,8 @@ powerful features added:  File: python.info, Node: Miscellaneous Other Changes, Next: Build and C API Changes<7>, Prev: Changes To Exceptions, Up: What’s New In Python 3 0 -1.10.7 Miscellaneous Other Changes ----------------------------------- +1.9.7 Miscellaneous Other Changes +--------------------------------- * Menu: @@ -36420,11 +33840,11 @@ File: python.info, Node: Miscellaneous Other Changes, Next: Build and C API Ch  File: python.info, Node: Operators And Special Methods, Next: Builtins, Up: Miscellaneous Other Changes -1.10.7.1 Operators And Special Methods -...................................... +1.9.7.1 Operators And Special Methods +..................................... * ‘!=’ now returns the opposite of ‘==’, unless ‘==’ returns *note - NotImplemented: 202. + NotImplemented: 831. * The concept of “unbound methods” has been removed from the language. When referencing a method as a class attribute, you now @@ -36432,16 +33852,16 @@ File: python.info, Node: Operators And Special Methods, Next: Builtins, Up: M * ‘__getslice__()’, ‘__setslice__()’ and ‘__delslice__()’ were killed. The syntax ‘a[i:j]’ now translates to - ‘a.__getitem__(slice(i, j))’ (or *note __setitem__(): d2c. or *note - __delitem__(): d2d, when used as an assignment or deletion target, + ‘a.__getitem__(slice(i, j))’ (or ‘__setitem__()’ or + ‘__delitem__()’, when used as an assignment or deletion target, respectively). - * PEP 3114(1): the standard *note next(): 777. method has been - renamed to *note __next__(): d2e. + * PEP 3114(1): the standard *note next(): 66b. method has been + renamed to *note __next__(): c41. * The ‘__oct__()’ and ‘__hex__()’ special methods are removed – *note - oct(): d2f. and *note hex(): d30. use *note __index__(): 2c5. now - to convert the argument to an integer. + oct(): c42. and *note hex(): c43. use ‘__index__()’ now to convert + the argument to an integer. * Removed support for ‘__members__’ and ‘__methods__’. @@ -36450,10 +33870,10 @@ File: python.info, Node: Operators And Special Methods, Next: Builtins, Up: M namespace for user-defined attributes. To wit, ‘func_closure’, ‘func_code’, ‘func_defaults’, ‘func_dict’, ‘func_doc’, ‘func_globals’, ‘func_name’ were renamed to ‘__closure__’, - ‘__code__’, ‘__defaults__’, *note __dict__: 5f8, ‘__doc__’, - ‘__globals__’, *note __name__: d31, respectively. + ‘__code__’, ‘__defaults__’, *note __dict__: 4ed, ‘__doc__’, + ‘__globals__’, *note __name__: c44, respectively. - * ‘__nonzero__()’ is now *note __bool__(): d32. + * ‘__nonzero__()’ is now ‘__bool__()’. ---------- Footnotes ---------- @@ -36462,26 +33882,26 @@ File: python.info, Node: Operators And Special Methods, Next: Builtins, Up: M  File: python.info, Node: Builtins, Prev: Operators And Special Methods, Up: Miscellaneous Other Changes -1.10.7.2 Builtins -................. +1.9.7.2 Builtins +................ - * PEP 3135(1): New *note super(): 5df. You can now invoke *note - super(): 5df. without arguments and (assuming this is in a regular - instance method defined inside a *note class: d34. statement) the + * PEP 3135(1): New *note super(): 4d3. You can now invoke *note + super(): 4d3. without arguments and (assuming this is in a regular + instance method defined inside a *note class: c46. statement) the right class and instance will automatically be chosen. With - arguments, the behavior of *note super(): 5df. is unchanged. + arguments, the behavior of *note super(): 4d3. is unchanged. - * PEP 3111(2): ‘raw_input()’ was renamed to *note input(): d35. That - is, the new *note input(): d35. function reads a line from *note - sys.stdin: 420. and returns it with the trailing newline stripped. - It raises *note EOFError: d36. if the input is terminated - prematurely. To get the old behavior of *note input(): d35, use + * PEP 3111(2): ‘raw_input()’ was renamed to *note input(): c47. That + is, the new *note input(): c47. function reads a line from *note + sys.stdin: 301. and returns it with the trailing newline stripped. + It raises *note EOFError: c48. if the input is terminated + prematurely. To get the old behavior of *note input(): c47, use ‘eval(input())’. - * A new built-in function *note next(): 777. was added to call the - *note __next__(): d2e. method on an object. + * A new built-in function *note next(): 66b. was added to call the + *note __next__(): c41. method on an object. - * The *note round(): d37. function rounding strategy and return type + * The *note round(): c49. function rounding strategy and return type have changed. Exact halfway cases are now rounded to the nearest even result instead of away from zero. (For example, ‘round(2.5)’ now returns ‘2’ rather than ‘3’.) ‘round(x[, n])’ now delegates to @@ -36489,11 +33909,11 @@ File: python.info, Node: Builtins, Prev: Operators And Special Methods, Up: M generally returns an integer when called with a single argument and a value of the same type as ‘x’ when called with two arguments. - * Moved ‘intern()’ to *note sys.intern(): d38. + * Moved ‘intern()’ to *note sys.intern(): c4a. * Removed: ‘apply()’. Instead of ‘apply(f, args)’ use ‘f(*args)’. - * Removed *note callable(): c18. Instead of ‘callable(f)’ you can + * Removed *note callable(): b24. Instead of ‘callable(f)’ you can use ‘isinstance(f, collections.Callable)’. The ‘operator.isCallable()’ function is also gone. @@ -36503,17 +33923,17 @@ File: python.info, Node: Builtins, Prev: Operators And Special Methods, Up: M * Removed ‘execfile()’. Instead of ‘execfile(fn)’ use ‘exec(open(fn).read())’. - * Removed the ‘file’ type. Use *note open(): 16f. There are now + * Removed the ‘file’ type. Use *note open(): 4e1. There are now several different kinds of streams that open can return in the - *note io: a1. module. + *note io: a2. module. - * Removed ‘reduce()’. Use *note functools.reduce(): d39. if you + * Removed ‘reduce()’. Use *note functools.reduce(): c4b. if you really need it; however, 99 percent of the time an explicit *note - for: cfc. loop is more readable. + for: c10. loop is more readable. - * Removed ‘reload()’. Use *note imp.reload(): d3a. + * Removed ‘reload()’. Use *note imp.reload(): c4c. - * Removed. ‘dict.has_key()’ – use the *note in: 179. operator + * Removed. ‘dict.has_key()’ – use the *note in: 788. operator instead. ---------- Footnotes ---------- @@ -36525,8 +33945,8 @@ File: python.info, Node: Builtins, Prev: Operators And Special Methods, Up: M  File: python.info, Node: Build and C API Changes<7>, Next: Performance, Prev: Miscellaneous Other Changes, Up: What’s New In Python 3 0 -1.10.8 Build and C API Changes ------------------------------- +1.9.8 Build and C API Changes +----------------------------- Due to time constraints, here is a `very' incomplete list of changes to the C API. @@ -36538,7 +33958,7 @@ the C API. * PEP 3121(2): Extension Module Initialization & Finalization. - * PEP 3123(3): Making *note PyObject_HEAD: d3c. conform to standard + * PEP 3123(3): Making *note PyObject_HEAD: c4e. conform to standard C. * No more C API support for restricted execution. @@ -36546,8 +33966,8 @@ the C API. * ‘PyNumber_Coerce()’, ‘PyNumber_CoerceEx()’, ‘PyMember_Get()’, and ‘PyMember_Set()’ C APIs are removed. - * New C API *note PyImport_ImportModuleNoBlock(): aa2, works like - *note PyImport_ImportModule(): d3d. but won’t block on the import + * New C API *note PyImport_ImportModuleNoBlock(): 9a2, works like + *note PyImport_ImportModule(): c4f. but won’t block on the import lock (returning an error instead). * Renamed the boolean conversion C-level slot and method: @@ -36566,8 +33986,8 @@ the C API.  File: python.info, Node: Performance, Next: Porting To Python 3 0, Prev: Build and C API Changes<7>, Up: What’s New In Python 3 0 -1.10.9 Performance ------------------- +1.9.9 Performance +----------------- The net result of the 3.0 generalizations is that Python 3.0 runs the pystone benchmark around 10% slower than Python 2.5. Most likely the @@ -36577,8 +33997,8 @@ There’s room for improvement, but it will happen after 3.0 is released!  File: python.info, Node: Porting To Python 3 0, Prev: Performance, Up: What’s New In Python 3 0 -1.10.10 Porting To Python 3.0 ------------------------------ +1.9.10 Porting To Python 3.0 +---------------------------- For porting existing Python 2.5 or 2.6 source code to Python 3.0, the best strategy is the following: @@ -36597,7 +34017,7 @@ best strategy is the following: 3. Run the ‘2to3’ source-to-source translator over your source code tree. (See *note 2to3 - Automated Python 2 to 3 code translation: - d40. for more on this tool.) Run the result of the translation + c52. for more on this tool.) Run the result of the translation under Python 3.0. Manually fix up any remaining issues, fixing problems until all tests pass again. @@ -36610,12 +34030,12 @@ the 2.6 version of the source code and running the ‘2to3’ translator again, rather than editing the 3.0 version of the source code. For porting C extensions to Python 3.0, please see *note Porting -Extension Modules to Python 3: d41. +Extension Modules to Python 3: c53.  File: python.info, Node: What’s New in Python 2 7, Next: What’s New in Python 2 6, Prev: What’s New In Python 3 0, Up: What’s New in Python -1.11 What’s New in Python 2.7 +1.10 What’s New in Python 2.7 ============================= @@ -36625,11 +34045,11 @@ This article explains the new features in Python 2.7. Python 2.7 was released on July 3, 2010. Numeric handling has been improved in many ways, for both floating-point -numbers and for the *note Decimal: 2c3. class. There are some useful +numbers and for the *note Decimal: 175. class. There are some useful additions to the standard library, such as a greatly enhanced *note -unittest: 124. module, the *note argparse: 5. module for parsing -command-line options, convenient *note OrderedDict: 2ed. and *note -Counter: abb. classes in the *note collections: 1d. module, and many +unittest: 11c. module, the *note argparse: 6. module for parsing +command-line options, convenient *note OrderedDict: 1a5. and *note +Counter: 9bb. classes in the *note collections: 1e. module, and many other improvements. Python 2.7 is planned to be the last of the 2.x releases, so we worked @@ -36657,7 +34077,7 @@ bug/patch item for each change. * PEP 391; Dictionary-Based Configuration For Logging: PEP 391 Dictionary-Based Configuration For Logging. * PEP 3106; Dictionary Views: PEP 3106 Dictionary Views. * PEP 3137; The memoryview Object: PEP 3137 The memoryview Object. -* Other Language Changes: Other Language Changes<10>. +* Other Language Changes: Other Language Changes<9>. * New and Improved Modules:: * Build and C API Changes: Build and C API Changes<8>. * Other Changes and Fixes:: @@ -36668,7 +34088,7 @@ bug/patch item for each change.  File: python.info, Node: The Future for Python 2 x, Next: Changes to the Handling of Deprecation Warnings, Up: What’s New in Python 2 7 -1.11.1 The Future for Python 2.x +1.10.1 The Future for Python 2.x -------------------------------- Python 2.7 is the last major release in the 2.x series, as the Python @@ -36719,14 +34139,14 @@ Some key consequences of the long-term significance of 2.7 are: case for adding new features directly to the Python 2 standard library. Any such additions, and the maintenance releases where they were added, will be noted in the *note New Features Added to - Python 2.7 Maintenance Releases: d46. section below. + Python 2.7 Maintenance Releases: c58. section below. For projects wishing to migrate from Python 2 to Python 3, or for library and framework developers wishing to support users on both Python 2 and Python 3, there are a variety of tools and guides available to help decide on a suitable approach and manage some of the technical details involved. The recommended starting point is the *note Porting -Python 2 Code to Python 3: d47. HOWTO guide. +Python 2 Code to Python 3: c59. HOWTO guide. ---------- Footnotes ---------- @@ -36737,29 +34157,29 @@ Python 2 Code to Python 3: d47. HOWTO guide.  File: python.info, Node: Changes to the Handling of Deprecation Warnings, Next: Python 3 1 Features, Prev: The Future for Python 2 x, Up: What’s New in Python 2 7 -1.11.2 Changes to the Handling of Deprecation Warnings +1.10.2 Changes to the Handling of Deprecation Warnings ------------------------------------------------------ For Python 2.7, a policy decision was made to silence warnings only of -interest to developers by default. *note DeprecationWarning: 15a. and +interest to developers by default. *note DeprecationWarning: 264. and its descendants are now ignored unless otherwise requested, preventing users from seeing warnings triggered by an application. This change was also made in the branch that became Python 3.2. (Discussed on stdlib-sig and carried out in bpo-7319(1).) -In previous releases, *note DeprecationWarning: 15a. messages were +In previous releases, *note DeprecationWarning: 264. messages were enabled by default, providing Python developers with a clear indication of where their code may break in a future major version of Python. However, there are increasingly many users of Python-based applications who are not directly involved in the development of those applications. -*note DeprecationWarning: 15a. messages are irrelevant to such users, +*note DeprecationWarning: 264. messages are irrelevant to such users, making them worry about an application that’s actually working correctly and burdening application developers with responding to these concerns. -You can re-enable display of *note DeprecationWarning: 15a. messages by -running Python with the *note -Wdefault: 15b. (short form: *note -Wd: -15b.) switch, or by setting the *note PYTHONWARNINGS: 51e. environment +You can re-enable display of *note DeprecationWarning: 264. messages by +running Python with the *note -Wdefault: 408. (short form: *note -Wd: +408.) switch, or by setting the *note PYTHONWARNINGS: 409. environment variable to ‘"default"’ (or ‘"d"’) before running Python. Python code can also re-enable them by calling ‘warnings.simplefilter('default')’. @@ -36773,7 +34193,7 @@ when running tests.  File: python.info, Node: Python 3 1 Features, Next: PEP 372 Adding an Ordered Dictionary to collections, Prev: Changes to the Handling of Deprecation Warnings, Up: What’s New in Python 2 7 -1.11.3 Python 3.1 Features +1.10.3 Python 3.1 Features -------------------------- Much as Python 2.6 incorporated features from Python 3.0, version 2.7 @@ -36786,35 +34206,35 @@ A partial list of 3.1 features that were backported to 2.7: * Dictionary and set comprehensions (‘{i: i*2 for i in range(3)}’). - * Multiple context managers in a single *note with: 7dc. statement. + * Multiple context managers in a single *note with: 6d0. statement. - * A new version of the *note io: a1. library, rewritten in C for + * A new version of the *note io: a2. library, rewritten in C for performance. * The ordered-dictionary type described in *note PEP 372; Adding an - Ordered Dictionary to collections: d4a. + Ordered Dictionary to collections: c5c. * The new ‘","’ format specifier described in *note PEP 378; Format - Specifier for Thousands Separator: d4b. + Specifier for Thousands Separator: c5d. - * The *note memoryview: 389. object. + * The *note memoryview: 248. object. - * A small subset of the *note importlib: 9a. module, *note described - below: d4c. + * A small subset of the *note importlib: 9b. module, *note described + below: c5e. - * The *note repr(): 8bb. of a float ‘x’ is shorter in many cases: + * The *note repr(): 7b1. of a float ‘x’ is shorter in many cases: it’s now based on the shortest decimal string that’s guaranteed to round back to ‘x’. As in previous versions of Python, it’s guaranteed that ‘float(repr(x))’ recovers ‘x’. * Float-to-string and string-to-float conversions are correctly - rounded. The *note round(): d37. function is also now correctly + rounded. The *note round(): c49. function is also now correctly rounded. - * The *note PyCapsule: cd4. type, used to provide a C API for + * The *note PyCapsule: be7. type, used to provide a C API for extension modules. - * The *note PyLong_AsLongAndOverflow(): cca. C API function. + * The *note PyLong_AsLongAndOverflow(): bdd. C API function. Other new Python3-mode warnings include: @@ -36828,17 +34248,17 @@ Other new Python3-mode warnings include:  File: python.info, Node: PEP 372 Adding an Ordered Dictionary to collections, Next: PEP 378 Format Specifier for Thousands Separator<2>, Prev: Python 3 1 Features, Up: What’s New in Python 2 7 -1.11.4 PEP 372: Adding an Ordered Dictionary to collections +1.10.4 PEP 372: Adding an Ordered Dictionary to collections ----------------------------------------------------------- Regular Python dictionaries iterate over key/value pairs in arbitrary order. Over the years, a number of authors have written alternative implementations that remember the order that the keys were originally inserted. Based on the experiences from those implementations, 2.7 -introduces a new *note OrderedDict: 2ed. class in the *note collections: -1d. module. +introduces a new *note OrderedDict: 1a5. class in the *note collections: +1e. module. -The *note OrderedDict: 2ed. API provides the same interface as regular +The *note OrderedDict: 1a5. API provides the same interface as regular dictionaries but iterates over keys and values in a guaranteed order depending on when a key was first inserted: @@ -36863,7 +34283,7 @@ Deleting an entry and reinserting it will move it to the end: >>> d.items() [('first', 1), ('third', 3), ('second', 5)] -The *note popitem(): d4e. method has an optional `last' argument that +The *note popitem(): c60. method has an optional `last' argument that defaults to ‘True’. If `last' is true, the most recently added key is returned and removed; if it’s false, the oldest key is selected: @@ -36893,10 +34313,10 @@ requires that the insertion order was the same: >>> od1 == od2 True -Comparing an *note OrderedDict: 2ed. with a regular dictionary ignores +Comparing an *note OrderedDict: 1a5. with a regular dictionary ignores the insertion order and just compares the keys and values. -How does the *note OrderedDict: 2ed. work? It maintains a doubly-linked +How does the *note OrderedDict: 1a5. work? It maintains a doubly-linked list of keys, appending new keys to the list as they’re inserted. A secondary dictionary maps keys to their corresponding list node, so deletion doesn’t have to traverse the entire linked list and therefore @@ -36909,12 +34329,12 @@ modules. configuration files can now be read, modified, and then written back in their original order. - * The *note _asdict(): 2ec. method for *note - collections.namedtuple(): 1a1. now returns an ordered dictionary + * The *note _asdict(): 1a2. method for *note + collections.namedtuple(): 1a3. now returns an ordered dictionary with the values appearing in the same order as the underlying tuple indices. - * The *note json: a4. module’s *note JSONDecoder: 700. class + * The *note json: a5. module’s *note JSONDecoder: 5f4. class constructor was extended with an `object_pairs_hook' parameter to allow ‘OrderedDict’ instances to be built by the decoder. Support was also added for third-party tools like PyYAML(1). @@ -36936,21 +34356,21 @@ PEP 372(2) - Adding an ordered dictionary to collections  File: python.info, Node: PEP 378 Format Specifier for Thousands Separator<2>, Next: PEP 389 The argparse Module for Parsing Command Lines, Prev: PEP 372 Adding an Ordered Dictionary to collections, Up: What’s New in Python 2 7 -1.11.5 PEP 378: Format Specifier for Thousands Separator +1.10.5 PEP 378: Format Specifier for Thousands Separator -------------------------------------------------------- To make program output more readable, it can be useful to add separators to large numbers, rendering them as 18,446,744,073,709,551,616 instead of 18446744073709551616. -The fully general solution for doing this is the *note locale: a9. +The fully general solution for doing this is the *note locale: aa. module, which can use different separators (“,” in North America, “.” in -Europe) and different grouping sizes, but *note locale: a9. is +Europe) and different grouping sizes, but *note locale: aa. is complicated to use and unsuitable for multi-threaded applications where different threads are producing output for different locales. Therefore, a simple comma-grouping mechanism has been added to the -mini-language used by the *note str.format(): 5d7. method. When +mini-language used by the *note str.format(): 4cb. method. When formatting a floating-point number, simply include a comma between the width and the precision: @@ -36964,7 +34384,7 @@ When formatting an integer, include the comma after the width: This mechanism is not adaptable at all; commas are always used as the separator and the grouping is always into three-digit groups. The -comma-formatting mechanism isn’t as general as the *note locale: a9. +comma-formatting mechanism isn’t as general as the *note locale: aa. module, but it’s easier to use. See also @@ -36981,26 +34401,26 @@ PEP 378(1) - Format Specifier for Thousands Separator  File: python.info, Node: PEP 389 The argparse Module for Parsing Command Lines, Next: PEP 391 Dictionary-Based Configuration For Logging, Prev: PEP 378 Format Specifier for Thousands Separator<2>, Up: What’s New in Python 2 7 -1.11.6 PEP 389: The argparse Module for Parsing Command Lines +1.10.6 PEP 389: The argparse Module for Parsing Command Lines ------------------------------------------------------------- -The *note argparse: 5. module for parsing command-line arguments was -added as a more powerful replacement for the *note optparse: c3. module. +The *note argparse: 6. module for parsing command-line arguments was +added as a more powerful replacement for the *note optparse: c4. module. This means Python now supports three different modules for parsing -command-line arguments: *note getopt: 85, *note optparse: c3, and *note -argparse: 5. The *note getopt: 85. module closely resembles the C +command-line arguments: *note getopt: 87, *note optparse: c4, and *note +argparse: 6. The *note getopt: 87. module closely resembles the C library’s ‘getopt()’ function, so it remains useful if you’re writing a Python prototype that will eventually be rewritten in C. *note optparse: -c3. becomes redundant, but there are no plans to remove it because there +c4. becomes redundant, but there are no plans to remove it because there are many scripts still using it, and there’s no automated way to update -these scripts. (Making the *note argparse: 5. API consistent with *note -optparse: c3.’s interface was discussed but rejected as too messy and +these scripts. (Making the *note argparse: 6. API consistent with *note +optparse: c4.’s interface was discussed but rejected as too messy and difficult.) In short, if you’re writing a new script and don’t need to worry about -compatibility with earlier versions of Python, use *note argparse: 5. -instead of *note optparse: c3. +compatibility with earlier versions of Python, use *note argparse: 6. +instead of *note optparse: c4. Here’s an example: @@ -37042,7 +34462,7 @@ added, and produce neatly formatted output: -o FILE direct output to FILE instead of stdout -C NUM display NUM lines of added context -As with *note optparse: c3, the command-line switches and arguments are +As with *note optparse: c4, the command-line switches and arguments are returned as an object with attributes named by the `dest' parameters: -> ./python.exe argparse-example.py -v @@ -37057,26 +34477,26 @@ returned as an object with attributes named by the `dest' parameters: 'context': 4, 'inputs': ['file1', 'file2']} -*note argparse: 5. has much fancier validation than *note optparse: c3.; +*note argparse: 6. has much fancier validation than *note optparse: c4.; you can specify an exact number of arguments as an integer, 0 or more arguments by passing ‘'*'’, 1 or more by passing ‘'+'’, or an optional argument with ‘'?'’. A top-level parser can contain sub-parsers to define subcommands that have different sets of switches, as in ‘svn commit’, ‘svn checkout’, etc. You can specify an argument’s type as -*note FileType: 90f, which will automatically open files for you and +*note FileType: 805, which will automatically open files for you and understands that ‘'-'’ means standard input or output. See also ........ -*note argparse: 5. documentation +*note argparse: 6. documentation The documentation page of the argparse module. -*note Upgrading optparse code: bfe. +*note Upgrading optparse code: b0a. Part of the Python documentation, describing how to convert code - that uses *note optparse: c3. + that uses *note optparse: c4. PEP 389(1) - argparse - New Command Line Parsing Module @@ -37089,17 +34509,17 @@ PEP 389(1) - argparse - New Command Line Parsing Module  File: python.info, Node: PEP 391 Dictionary-Based Configuration For Logging, Next: PEP 3106 Dictionary Views, Prev: PEP 389 The argparse Module for Parsing Command Lines, Up: What’s New in Python 2 7 -1.11.7 PEP 391: Dictionary-Based Configuration For Logging +1.10.7 PEP 391: Dictionary-Based Configuration For Logging ---------------------------------------------------------- -The *note logging: aa. module is very flexible; applications can define +The *note logging: ab. module is very flexible; applications can define a tree of logging subsystems, and each logger in this tree can filter out certain messages, format them differently, and direct messages to a varying number of handlers. All this flexibility can require a lot of configuration. You can write Python statements to create objects and set their properties, but a -complex set-up requires verbose but boring code. *note logging: aa. +complex set-up requires verbose but boring code. *note logging: ab. also supports a ‘fileConfig()’ function that parses a file, but the file format doesn’t support configuring filters, and it’s messier to generate programmatically. @@ -37108,7 +34528,7 @@ Python 2.7 adds a ‘dictConfig()’ function that uses a dictionary to configure logging. There are many ways to produce a dictionary from different sources: construct one with code; parse a file containing JSON; or use a YAML parsing library if one is installed. For more -information see *note Configuration functions: d52. +information see *note Configuration functions: c64. The following example configures two loggers, the root logger and a logger named “network”. Messages sent to the root logger will be sent @@ -37158,22 +34578,22 @@ rotated once the log reaches 1MB. netlogger = logging.getLogger('network') netlogger.error('Connection failed') -Three smaller enhancements to the *note logging: aa. module, all +Three smaller enhancements to the *note logging: ab. module, all implemented by Vinay Sajip, are: - * The *note SysLogHandler: afd. class now supports syslogging over + * The *note SysLogHandler: 9ff. class now supports syslogging over TCP. The constructor has a `socktype' parameter giving the type of - socket to use, either *note socket.SOCK_DGRAM: d53. for UDP or - *note socket.SOCK_STREAM: d54. for TCP. The default protocol + socket to use, either *note socket.SOCK_DGRAM: c65. for UDP or + *note socket.SOCK_STREAM: c66. for TCP. The default protocol remains UDP. - * *note Logger: 4b0. instances gained a *note getChild(): d55. method + * *note Logger: 398. instances gained a *note getChild(): c67. method that retrieves a descendant logger using a relative path. For example, once you retrieve a logger by doing ‘log = getLogger('app')’, calling ‘log.getChild('network.listen')’ is equivalent to ‘getLogger('app.network.listen')’. - * The *note LoggerAdapter: d56. class gained an ‘isEnabledFor()’ + * The *note LoggerAdapter: c68. class gained an ‘isEnabledFor()’ method that takes a `level' and returns whether the underlying logger would process a message of that level of importance. @@ -37191,15 +34611,15 @@ PEP 391(1) - Dictionary-Based Configuration For Logging  File: python.info, Node: PEP 3106 Dictionary Views, Next: PEP 3137 The memoryview Object, Prev: PEP 391 Dictionary-Based Configuration For Logging, Up: What’s New in Python 2 7 -1.11.8 PEP 3106: Dictionary Views +1.10.8 PEP 3106: Dictionary Views --------------------------------- -The dictionary methods *note keys(): cf6, *note values(): cf8, and *note -items(): cf7. are different in Python 3.x. They return an object called +The dictionary methods *note keys(): c0a, *note values(): c0c, and *note +items(): c0b. are different in Python 3.x. They return an object called a `view' instead of a fully materialized list. -It’s not possible to change the return values of *note keys(): cf6, -*note values(): cf8, and *note items(): cf7. in Python 2.7 because too +It’s not possible to change the return values of *note keys(): c0a, +*note values(): c0c, and *note items(): c0b. in Python 2.7 because too much code would break. Instead the 3.x versions were added under the new names ‘viewkeys()’, ‘viewvalues()’, and ‘viewitems()’. @@ -37240,8 +34660,8 @@ over the view: RuntimeError: dictionary changed size during iteration You can use the view methods in Python 2.x code, and the 2to3 converter -will change them to the standard *note keys(): cf6, *note values(): cf8, -and *note items(): cf7. methods. +will change them to the standard *note keys(): c0a, *note values(): c0c, +and *note items(): c0b. methods. See also ........ @@ -37258,13 +34678,13 @@ PEP 3106(1) - Revamping dict.keys(), .values() and .items() (2) https://bugs.python.org/issue1967  -File: python.info, Node: PEP 3137 The memoryview Object, Next: Other Language Changes<10>, Prev: PEP 3106 Dictionary Views, Up: What’s New in Python 2 7 +File: python.info, Node: PEP 3137 The memoryview Object, Next: Other Language Changes<9>, Prev: PEP 3106 Dictionary Views, Up: What’s New in Python 2 7 -1.11.9 PEP 3137: The memoryview Object +1.10.9 PEP 3137: The memoryview Object -------------------------------------- -The *note memoryview: 389. object provides a view of another object’s -memory content that matches the *note bytes: 172. type’s interface. +The *note memoryview: 248. object provides a view of another object’s +memory content that matches the *note bytes: 322. type’s interface. >>> import string >>> m = memoryview(string.letters) @@ -37287,7 +34707,7 @@ of integers: [97, 98, 99, 100, 101, 102, 103, ... 121, 122] >>> -*note memoryview: 389. objects allow modifying the underlying object if +*note memoryview: 248. objects allow modifying the underlying object if it’s a mutable object. >>> m2[0] = 75 @@ -37319,9 +34739,9 @@ PEP 3137(1) - Immutable Bytes and Mutable Buffer (2) https://bugs.python.org/issue2396  -File: python.info, Node: Other Language Changes<10>, Next: New and Improved Modules, Prev: PEP 3137 The memoryview Object, Up: What’s New in Python 2 7 +File: python.info, Node: Other Language Changes<9>, Next: New and Improved Modules, Prev: PEP 3137 The memoryview Object, Up: What’s New in Python 2 7 -1.11.10 Other Language Changes +1.10.10 Other Language Changes ------------------------------ Some smaller changes made to the core Python language are: @@ -37352,7 +34772,7 @@ Some smaller changes made to the core Python language are: Backported by Alexandre Vassalotti; bpo-2333(2). - * The *note with: 7dc. statement can now use multiple context + * The *note with: 6d0. statement can now use multiple context managers in one statement. Context managers are processed from left to right and each one is treated as beginning a new ‘with’ statement. This means that: @@ -37374,15 +34794,15 @@ Some smaller changes made to the core Python language are: * Conversions between floating-point numbers and strings are now correctly rounded on most platforms. These conversions occur in - many different places: *note str(): 205. on floats and complex - numbers; the *note float: 1fd. and *note complex: 2c4. + many different places: *note str(): 321. on floats and complex + numbers; the *note float: 174. and *note complex: 176. constructors; numeric formatting; serializing and deserializing - floats and complex numbers using the *note marshal: b0, *note - pickle: ca. and *note json: a4. modules; parsing of float and - imaginary literals in Python code; and *note Decimal: 2c3.-to-float + floats and complex numbers using the *note marshal: b1, *note + pickle: cb. and *note json: a5. modules; parsing of float and + imaginary literals in Python code; and *note Decimal: 175.-to-float conversion. - Related to this, the *note repr(): 8bb. of a floating-point number + Related to this, the *note repr(): 7b1. of a floating-point number `x' now returns a result based on the shortest decimal string that’s guaranteed to round back to `x' under correct rounding (with round-half-to-even rounding mode). Previously it gave a string @@ -37393,7 +34813,7 @@ Some smaller changes made to the core Python language are: compilers. There may be a small number of platforms where correct operation of this code cannot be guaranteed, so the code is not used on such systems. You can find out which code is being used by - checking *note sys.float_repr_style: d5a, which will be ‘short’ if + checking *note sys.float_repr_style: c6c, which will be ‘short’ if the new code is in use and ‘legacy’ if it isn’t. Implemented by Eric Smith and Mark Dickinson, using David Gay’s @@ -37431,9 +34851,9 @@ Some smaller changes made to the core Python language are: method on complex objects. (Removed by Meador Inge and Mark Dickinson; bpo-5211(6).) - * The *note str.format(): 5d7. method now supports automatic + * The *note str.format(): 4cb. method now supports automatic numbering of the replacement fields. This makes using *note - str.format(): 5d7. more closely resemble using ‘%s’ formatting: + str.format(): 4cb. more closely resemble using ‘%s’ formatting: >>> '{}:{}:{}'.format(2009, 04, 'Sunday') '2009:4:Sunday' @@ -37442,14 +34862,14 @@ Some smaller changes made to the core Python language are: The auto-numbering takes the fields from left to right, so the first ‘{...}’ specifier will use the first argument to *note - str.format(): 5d7, the next specifier will use the next argument, + str.format(): 4cb, the next specifier will use the next argument, and so on. You can’t mix auto-numbering and explicit numbering – either number all of your specifier fields or none of them – but you can mix auto-numbering and named fields, as in the second example above. (Contributed by Eric Smith; bpo-5237(7).) Complex numbers now correctly support usage with *note format(): - 5d8, and default to being right-aligned. Specifying a precision or + 4cc, and default to being right-aligned. Specifying a precision or comma-separation applies to both the real and imaginary parts of the number, but a specified field width and alignment is applied to the whole of the resulting ‘1.5+3j’ output. (Contributed by Eric @@ -37459,18 +34879,18 @@ Some smaller changes made to the core Python language are: characters, so it will now produce ‘INF’ and ‘NAN’. (Contributed by Eric Smith; bpo-3382(10).) - A low-level change: the *note object.__format__(): a31. method now - triggers a *note PendingDeprecationWarning: 15c. if it’s passed a - format string, because the *note __format__(): a31. method for - *note object: 3d5. converts the object to a string representation - and formats that. Previously the method silently applied the - format string to the string representation, but that could hide - mistakes in Python code. If you’re supplying formatting - information such as an alignment or precision, presumably you’re - expecting the formatting to be applied in some object-specific way. - (Fixed by Eric Smith; bpo-7994(11).) + A low-level change: the *note object.__format__(): 92f. method now + triggers a *note PendingDeprecationWarning: 265. if it’s passed a + format string, because the ‘__format__()’ method for *note object: + 29b. converts the object to a string representation and formats + that. Previously the method silently applied the format string to + the string representation, but that could hide mistakes in Python + code. If you’re supplying formatting information such as an + alignment or precision, presumably you’re expecting the formatting + to be applied in some object-specific way. (Fixed by Eric Smith; + bpo-7994(11).) - * The *note int(): 204. and ‘long()’ types gained a ‘bit_length’ + * The *note int(): 171. and ‘long()’ types gained a ‘bit_length’ method that returns the number of bits necessary to represent its argument in binary: @@ -37488,7 +34908,7 @@ Some smaller changes made to the core Python language are: (Contributed by Fredrik Johansson and Victor Stinner; bpo-3439(12).) - * The *note import: ce9. statement will no longer try an absolute + * The *note import: bfd. statement will no longer try an absolute import if a relative import (e.g. ‘from .os import sep’) fails. This fixes a bug, but could possibly break certain ‘import’ statements that were only working by accident. (Fixed by Meador @@ -37498,7 +34918,7 @@ Some smaller changes made to the core Python language are: override the ‘__unicode__()’ method. (Implemented by Victor Stinner; bpo-1583863(14).) - * The *note bytearray: 173. type’s *note translate(): d5b. method now + * The *note bytearray: 323. type’s *note translate(): c6d. method now accepts ‘None’ as its first argument. (Fixed by Georg Brandl; bpo-4759(15).) @@ -37509,7 +34929,7 @@ Some smaller changes made to the core Python language are: * When a restricted set of attributes were set using ‘__slots__’, deleting an unset attribute would not raise *note AttributeError: - 4a4. as you would expect. Fixed by Benjamin Peterson; + 38c. as you would expect. Fixed by Benjamin Peterson; bpo-7604(17).) * Two new encodings are now supported: “cp720”, used primarily for @@ -37519,14 +34939,14 @@ Some smaller changes made to the core Python language are: bpo-8016(19).) * The ‘file’ object will now set the ‘filename’ attribute on the - *note IOError: a75. exception when trying to open a directory on + *note IOError: 973. exception when trying to open a directory on POSIX platforms (noted by Jan Kaliszewski; bpo-4764(20)), and now explicitly checks for and forbids writing to read-only file objects instead of trusting the C library to catch and report the error (fixed by Stefan Krah; bpo-5677(21)). * The Python tokenizer now translates line endings itself, so the - *note compile(): 2ea. built-in function now accepts code using any + *note compile(): 1a0. built-in function now accepts code using any line-ending convention. Additionally, it no longer requires that the code end in a newline. @@ -37546,7 +34966,7 @@ Some smaller changes made to the core Python language are: * Menu: * Interpreter Changes:: -* Optimizations: Optimizations<9>. +* Optimizations: Optimizations<8>. ---------- Footnotes ---------- @@ -37599,14 +35019,14 @@ Some smaller changes made to the core Python language are: (24) https://bugs.python.org/issue7140  -File: python.info, Node: Interpreter Changes, Next: Optimizations<9>, Up: Other Language Changes<10> +File: python.info, Node: Interpreter Changes, Next: Optimizations<8>, Up: Other Language Changes<9> -1.11.10.1 Interpreter Changes +1.10.10.1 Interpreter Changes ............................. -A new environment variable, *note PYTHONWARNINGS: 51e, allows +A new environment variable, *note PYTHONWARNINGS: 409, allows controlling warnings. It should be set to a string containing warning -settings, equivalent to those used with the *note -W: 15b. switch, +settings, equivalent to those used with the *note -W: 408. switch, separated by commas. (Contributed by Brian Curtin; bpo-7301(1).) For example, the following setting will print warnings every time they @@ -37621,16 +35041,16 @@ systems and shells.) (1) https://bugs.python.org/issue7301  -File: python.info, Node: Optimizations<9>, Prev: Interpreter Changes, Up: Other Language Changes<10> +File: python.info, Node: Optimizations<8>, Prev: Interpreter Changes, Up: Other Language Changes<9> -1.11.10.2 Optimizations +1.10.10.2 Optimizations ....................... Several performance enhancements have been added: * A new opcode was added to perform the initial setup for *note with: - 7dc. statements, looking up the *note __enter__(): d5f. and *note - __exit__(): d60. methods. (Contributed by Benjamin Peterson.) + 6d0. statements, looking up the ‘__enter__()’ and ‘__exit__()’ + methods. (Contributed by Benjamin Peterson.) * The garbage collector now performs better for one common usage pattern: when many objects are being allocated without deallocating @@ -37703,12 +35123,12 @@ Several performance enhancements have been added: * The ‘split()’, ‘replace()’, ‘rindex()’, ‘rpartition()’, and ‘rsplit()’ methods of string-like types (strings, Unicode strings, - and *note bytearray: 173. objects) now use a fast reverse-search + and *note bytearray: 323. objects) now use a fast reverse-search algorithm instead of a character-by-character scan. This is sometimes faster by a factor of 10. (Added by Florent Xicluna; bpo-7462(10) and bpo-7622(11).) - * The *note pickle: ca. and ‘cPickle’ modules now automatically + * The *note pickle: cb. and ‘cPickle’ modules now automatically intern the strings used for attribute names, reducing memory usage of the objects resulting from unpickling. (Contributed by Jake McGuire; bpo-5084(12).) @@ -37746,9 +35166,9 @@ Several performance enhancements have been added: (13) https://bugs.python.org/issue5670  -File: python.info, Node: New and Improved Modules, Next: Build and C API Changes<8>, Prev: Other Language Changes<10>, Up: What’s New in Python 2 7 +File: python.info, Node: New and Improved Modules, Next: Build and C API Changes<8>, Prev: Other Language Changes<9>, Up: What’s New in Python 2 7 -1.11.11 New and Improved Modules +1.10.11 New and Improved Modules -------------------------------- As in every release, Python’s standard library received a number of @@ -37757,15 +35177,15 @@ changes, sorted alphabetically by module name. Consult the ‘Misc/NEWS’ file in the source tree for a more complete list of changes, or look through the Subversion logs for all the details. - * The *note bdb: e. module’s base debugging class *note Bdb: d62. + * The *note bdb: f. module’s base debugging class *note Bdb: c72. gained a feature for skipping modules. The constructor now takes an iterable containing glob-style patterns such as ‘django.*’; the debugger will not step into stack frames from a module that matches one of these patterns. (Contributed by Maru Newby after a suggestion by Senthil Kumaran; bpo-5142(1).) - * The *note binascii: f. module now supports the buffer API, so it - can be used with *note memoryview: 389. instances and other similar + * The *note binascii: 10. module now supports the buffer API, so it + can be used with *note memoryview: 248. instances and other similar buffer objects. (Backported from 3.x by Florent Xicluna; bpo-7703(2).) @@ -37776,15 +35196,15 @@ through the Subversion logs for all the details. by Jesús Cea Avión; bpo-8156(4). The pybsddb changelog can be read at ‘http://hg.jcea.es/pybsddb/file/tip/ChangeLog’.) - * The *note bz2: 13. module’s *note BZ2File: 224. now supports the + * The *note bz2: 14. module’s *note BZ2File: 912. now supports the context management protocol, so you can write ‘with bz2.BZ2File(...) as f:’. (Contributed by Hagen Fürstenau; bpo-3860(5).) - * New class: the *note Counter: abb. class in the *note collections: - 1d. module is useful for tallying data. *note Counter: abb. + * New class: the *note Counter: 9bb. class in the *note collections: + 1e. module is useful for tallying data. *note Counter: 9bb. instances behave mostly like dictionaries but return zero for - missing keys instead of raising a *note KeyError: 3ec.: + missing keys instead of raising a *note KeyError: 2b2.: >>> from collections import Counter >>> c = Counter() @@ -37800,11 +35220,11 @@ through the Subversion logs for all the details. >>> c['z'] 0 - There are three additional *note Counter: abb. methods. *note - most_common(): d63. returns the N most common elements and their - counts. *note elements(): d64. returns an iterator over the + There are three additional *note Counter: 9bb. methods. *note + most_common(): c73. returns the N most common elements and their + counts. *note elements(): c74. returns an iterator over the contained elements, repeating each element as many times as its - count. *note subtract(): c2e. takes an iterable and subtracts one + count. *note subtract(): b3a. takes an iterable and subtracts one for each element instead of adding; if the argument is a dictionary or another ‘Counter’, the counts are subtracted. @@ -37823,19 +35243,19 @@ through the Subversion logs for all the details. Contributed by Raymond Hettinger; bpo-1696199(6). - New class: *note OrderedDict: 2ed. is described in the earlier + New class: *note OrderedDict: 1a5. is described in the earlier section *note PEP 372; Adding an Ordered Dictionary to collections: - d4a. + c5c. - New method: The *note deque: 62d. data type now has a *note - count(): c30. method that returns the number of contained elements - equal to the supplied argument `x', and a *note reverse(): c31. + New method: The *note deque: 51e. data type now has a *note + count(): b3c. method that returns the number of contained elements + equal to the supplied argument `x', and a *note reverse(): b3d. method that reverses the elements of the deque in-place. *note - deque: 62d. also exposes its maximum length as the read-only *note - maxlen: d65. attribute. (Both features added by Raymond + deque: 51e. also exposes its maximum length as the read-only *note + maxlen: c75. attribute. (Both features added by Raymond Hettinger.) - The *note namedtuple: 1a1. class now has an optional `rename' + The *note namedtuple: 1a3. class now has an optional `rename' parameter. If `rename' is true, field names that are invalid because they’ve been repeated or aren’t legal Python identifiers will be renamed to legal names that are derived from the field’s @@ -37849,7 +35269,7 @@ through the Subversion logs for all the details. (Added by Raymond Hettinger; bpo-1818(7).) Finally, the ‘Mapping’ abstract base class now returns *note - NotImplemented: 202. if a mapping is compared to another type that + NotImplemented: 831. if a mapping is compared to another type that isn’t a ‘Mapping’. (Fixed by Daniel Stutzbach; bpo-8729(8).) * Constructors for the parsing classes in the ‘ConfigParser’ module @@ -37877,7 +35297,7 @@ through the Subversion logs for all the details. (Contributed by Mats Kindahl; bpo-7005(9).) * Deprecated function: ‘contextlib.nested()’, which allows handling - more than one context manager with a single *note with: 7dc. + more than one context manager with a single *note with: 6d0. statement, has been deprecated, because the ‘with’ statement now supports multiple context managers. @@ -37885,24 +35305,24 @@ through the Subversion logs for all the details. version field, one that doesn’t contain an integer value. (Fixed by John J. Lee; bpo-3924(10).) - * The *note copy: 25. module’s *note deepcopy(): 4d5. function will + * The *note copy: 26. module’s *note deepcopy(): 3bd. function will now correctly copy bound instance methods. (Implemented by Robert Collins; bpo-1515(11).) - * The *note ctypes: 2a. module now always converts ‘None’ to a C + * The *note ctypes: 2b. module now always converts ‘None’ to a C ‘NULL’ pointer for arguments declared as pointers. (Changed by Thomas Heller; bpo-4606(12).) The underlying libffi library(13) has been updated to version 3.0.9, containing various fixes for different platforms. (Updated by Matthias Klose; bpo-8142(14).) - * New method: the *note datetime: 30. module’s *note timedelta: 2cd. - class gained a *note total_seconds(): d66. method that returns the + * New method: the *note datetime: 31. module’s *note timedelta: 182. + class gained a *note total_seconds(): c76. method that returns the number of seconds in the duration. (Contributed by Brian Quinlan; bpo-5788(15).) - * New method: the *note Decimal: 2c3. class gained a *note - from_float(): c53. class method that performs an exact conversion - of a floating-point number to a *note Decimal: 2c3. This exact + * New method: the *note Decimal: 175. class gained a *note + from_float(): b60. class method that performs an exact conversion + of a floating-point number to a *note Decimal: 175. This exact conversion strives for the closest decimal approximation to the floating-point representation’s value; the resulting decimal value will therefore still include the inaccuracy, if any. For example, @@ -37910,29 +35330,29 @@ through the Subversion logs for all the details. ‘Decimal('0.1000000000000000055511151231257827021181583404541015625')’. (Implemented by Raymond Hettinger; bpo-4796(16).) - Comparing instances of *note Decimal: 2c3. with floating-point + Comparing instances of *note Decimal: 175. with floating-point numbers now produces sensible results based on the numeric values of the operands. Previously such comparisons would fall back to Python’s default rules for comparing objects, which produced arbitrary results based on their type. Note that you still cannot combine ‘Decimal’ and floating-point in other operations such as addition, since you should be explicitly choosing how to convert - between float and *note Decimal: 2c3. (Fixed by Mark Dickinson; + between float and *note Decimal: 175. (Fixed by Mark Dickinson; bpo-2531(17).) - The constructor for *note Decimal: 2c3. now accepts floating-point + The constructor for *note Decimal: 175. now accepts floating-point numbers (added by Raymond Hettinger; bpo-8257(18)) and non-European Unicode characters such as Arabic-Indic digits (contributed by Mark Dickinson; bpo-6595(19)). - Most of the methods of the *note Context: ad1. class now accept - integers as well as *note Decimal: 2c3. instances; the only - exceptions are the *note canonical(): d67. and *note - is_canonical(): d68. methods. (Patch by Juan José Conti; + Most of the methods of the *note Context: 9d1. class now accept + integers as well as *note Decimal: 175. instances; the only + exceptions are the *note canonical(): c77. and *note + is_canonical(): c78. methods. (Patch by Juan José Conti; bpo-7633(20).) - When using *note Decimal: 2c3. instances with a string’s *note - format(): 5d7. method, the default alignment was previously + When using *note Decimal: 175. instances with a string’s *note + format(): 4cb. method, the default alignment was previously left-alignment. This has been changed to right-alignment, which is more sensible for numeric types. (Changed by Mark Dickinson; bpo-6857(21).) @@ -37942,7 +35362,7 @@ through the Subversion logs for all the details. value depending on the comparison operator. Quiet NaN values (or ‘NaN’) are now hashable. (Fixed by Mark Dickinson; bpo-7279(22).) - * The *note difflib: 36. module now produces output that is more + * The *note difflib: 37. module now produces output that is more compatible with modern ‘diff’/‘patch’ tools through one small change, using a tab character instead of spaces as a separator in the header giving the filename. (Fixed by Anatoly Techtonik; @@ -37953,69 +35373,69 @@ through the Subversion logs for all the details. been modified, the user might have created some new files that should be included. (Fixed by Tarek Ziadé; bpo-8688(24).) - * The *note doctest: 66. module’s ‘IGNORE_EXCEPTION_DETAIL’ flag will + * The *note doctest: 67. module’s ‘IGNORE_EXCEPTION_DETAIL’ flag will now ignore the name of the module containing the exception being tested. (Patch by Lennart Regebro; bpo-7490(25).) - * The *note email: 67. module’s *note Message: 63d. class will now + * The *note email: 69. module’s *note Message: 52e. class will now accept a Unicode-valued payload, automatically converting the payload to the encoding specified by ‘output_charset’. (Added by R. David Murray; bpo-1368247(26).) - * The *note Fraction: 2c1. class now accepts a single float or *note - Decimal: 2c3. instance, or two rational numbers, as arguments to + * The *note Fraction: 172. class now accepts a single float or *note + Decimal: 175. instance, or two rational numbers, as arguments to its constructor. (Implemented by Mark Dickinson; rationals added in bpo-5812(27), and float/decimal in bpo-8294(28).) Ordering comparisons (‘<’, ‘<=’, ‘>’, ‘>=’) between fractions and - complex numbers now raise a *note TypeError: 1fe. This fixes an - oversight, making the *note Fraction: 2c1. match the other numeric + complex numbers now raise a *note TypeError: 17f. This fixes an + oversight, making the *note Fraction: 172. match the other numeric types. - * New class: *note FTP_TLS: 1a7. in the *note ftplib: 82. module + * New class: *note FTP_TLS: 9e4. in the *note ftplib: 84. module provides secure FTP connections using TLS encapsulation of authentication as well as subsequent control and data transfers. (Contributed by Giampaolo Rodola; bpo-2054(29).) - The *note storbinary(): d69. method for binary uploads can now + The *note storbinary(): c79. method for binary uploads can now restart uploads thanks to an added `rest' parameter (patch by Pablo Mouzo; bpo-6845(30).) - * New class decorator: *note total_ordering(): 93a. in the *note - functools: 83. module takes a class that defines an *note __eq__(): - 44d. method and one of *note __lt__(): d00, *note __le__(): d6a, - *note __gt__(): d6b, or *note __ge__(): d6c, and generates the - missing comparison methods. Since the ‘__cmp__()’ method is being - deprecated in Python 3.x, this decorator makes it easier to define - ordered classes. (Added by Raymond Hettinger; bpo-5479(31).) + * New class decorator: *note total_ordering(): 830. in the *note + functools: 85. module takes a class that defines an ‘__eq__()’ + method and one of ‘__lt__()’, ‘__le__()’, ‘__gt__()’, or + ‘__ge__()’, and generates the missing comparison methods. Since + the ‘__cmp__()’ method is being deprecated in Python 3.x, this + decorator makes it easier to define ordered classes. (Added by + Raymond Hettinger; bpo-5479(31).) - New function: *note cmp_to_key(): c2a. will take an old-style + New function: *note cmp_to_key(): b36. will take an old-style comparison function that expects two arguments and return a new callable that can be used as the `key' parameter to functions such - as *note sorted(): 549, *note min(): 8f8. and *note max(): 8f9, + as *note sorted(): 434, *note min(): 7ee. and *note max(): 7ef, etc. The primary intended use is to help with making code compatible with Python 3.x. (Added by Raymond Hettinger.) - * New function: the *note gc: 84. module’s *note is_tracked(): d6d. + * New function: the *note gc: 86. module’s *note is_tracked(): c7a. returns true if a given instance is tracked by the garbage collector, false otherwise. (Contributed by Antoine Pitrou; bpo-4688(32).) - * The *note gzip: 8b. module’s *note GzipFile: 206. now supports the + * The *note gzip: 8c. module’s *note GzipFile: 6c4. now supports the context management protocol, so you can write ‘with gzip.GzipFile(...) as f:’ (contributed by Hagen Fürstenau; bpo-3860(33)), and it now implements the *note io.BufferedIOBase: - 681. ABC, so you can wrap it with *note io.BufferedReader: c5d. for + 575. ABC, so you can wrap it with *note io.BufferedReader: b6a. for faster processing (contributed by Nir Aides; bpo-7471(34)). It’s also now possible to override the modification time recorded in a gzipped file by providing an optional timestamp to the constructor. (Contributed by Jacques Frechet; bpo-4272(35).) Files in gzip format can be padded with trailing zero bytes; the - *note gzip: 8b. module will now consume these trailing bytes. + *note gzip: 8c. module will now consume these trailing bytes. (Fixed by Tadek Pietraszek and Brian Curtin; bpo-2846(36).) - * New attribute: the *note hashlib: 8c. module now has an + * New attribute: the *note hashlib: 8d. module now has an ‘algorithms’ attribute containing a tuple naming the supported algorithms. In Python 2.7, ‘hashlib.algorithms’ contains ‘('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')’. (Contributed by @@ -38035,11 +35455,11 @@ through the Subversion logs for all the details. the ‘imputil’ module added in Python 2.0. (Relative import support added by Neil Schemenauer.) - * The *note imaplib: 97. module now supports IPv6 addresses. + * The *note imaplib: 98. module now supports IPv6 addresses. (Contributed by Derek Morr; bpo-1655(40).) - * New function: the *note inspect: a0. module’s *note getcallargs(): - 8a6. takes a callable and its positional and keyword arguments, and + * New function: the *note inspect: a1. module’s *note getcallargs(): + 79b. takes a callable and its positional and keyword arguments, and figures out which of the callable’s parameters will receive each argument, returning a dictionary mapping argument names to their values. For example: @@ -38058,20 +35478,20 @@ through the Subversion logs for all the details. Contributed by George Sakkis; bpo-3135(41). - * Updated module: The *note io: a1. library has been upgraded to the + * Updated module: The *note io: a2. library has been upgraded to the version shipped with Python 3.1. For 3.1, the I/O library was entirely rewritten in C and is 2 to 20 times faster depending on the task being performed. The original Python version was renamed to the ‘_pyio’ module. - One minor resulting change: the *note io.TextIOBase: d03. class now + One minor resulting change: the *note io.TextIOBase: c18. class now has an ‘errors’ attribute giving the error setting used for encoding and decoding errors (one of ‘'strict'’, ‘'replace'’, ‘'ignore'’). - The *note io.FileIO: d6e. class now raises an *note OSError: 307. + The *note io.FileIO: c7b. class now raises an *note OSError: 1bf. when passed an invalid file descriptor. (Implemented by Benjamin - Peterson; bpo-4991(42).) The *note truncate(): d6f. method now + Peterson; bpo-4991(42).) The *note truncate(): c7c. method now preserves the file position; previously it would change the file position to the end of the new file. (Fixed by Pascal Chambon; bpo-6939(43).) @@ -38085,7 +35505,7 @@ through the Subversion logs for all the details. New function: ‘itertools.combinations_with_replacement(iter, r)’ returns all the possible `r'-length combinations of elements from - the iterable `iter'. Unlike *note combinations(): d70, individual + the iterable `iter'. Unlike *note combinations(): c7d, individual elements can be repeated in the generated combinations: itertools.combinations_with_replacement('abc', 2) => @@ -38095,44 +35515,44 @@ through the Subversion logs for all the details. Note that elements are treated as unique depending on their position in the input, not their actual values. - The *note itertools.count(): ce7. function now has a `step' + The *note itertools.count(): bfb. function now has a `step' argument that allows incrementing by values other than 1. *note - count(): ce7. also now allows keyword arguments, and using - non-integer values such as floats or *note Decimal: 2c3. instances. + count(): bfb. also now allows keyword arguments, and using + non-integer values such as floats or *note Decimal: 175. instances. (Implemented by Raymond Hettinger; bpo-5032(44).) - *note itertools.combinations(): d70. and *note itertools.product(): - d71. previously raised *note ValueError: 16d. for values of `r' + *note itertools.combinations(): c7d. and *note itertools.product(): + c7e. previously raised *note ValueError: 1e7. for values of `r' larger than the input iterable. This was deemed a specification error, so they now return an empty iterator. (Fixed by Raymond Hettinger; bpo-4816(45).) - * Updated module: The *note json: a4. module was upgraded to version + * Updated module: The *note json: a5. module was upgraded to version 2.0.9 of the simplejson package, which includes a C extension that makes encoding and decoding faster. (Contributed by Bob Ippolito; bpo-4136(46).) - To support the new *note collections.OrderedDict: 2ed. type, *note - json.load(): 65b. now has an optional `object_pairs_hook' parameter + To support the new *note collections.OrderedDict: 1a5. type, *note + json.load(): 54c. now has an optional `object_pairs_hook' parameter that will be called with any object literal that decodes to a list of pairs. (Contributed by Raymond Hettinger; bpo-5381(47).) - * The *note mailbox: ae. module’s *note Maildir: d72. class now + * The *note mailbox: af. module’s *note Maildir: c7f. class now records the timestamp on the directories it reads, and only re-reads them if the modification time has subsequently changed. This improves performance by avoiding unneeded directory scans. (Fixed by A.M. Kuchling and Antoine Pitrou; bpo-1607951(48), bpo-6896(49).) - * New functions: the *note math: b1. module gained *note erf(): 556. - and *note erfc(): 557. for the error function and the complementary - error function, *note expm1(): c3c. which computes ‘e**x - 1’ with - more precision than using *note exp(): d73. and subtracting 1, - *note gamma(): c3d. for the Gamma function, and *note lgamma(): - c3e. for the natural log of the Gamma function. (Contributed by + * New functions: the *note math: b2. module gained *note erf(): 443. + and *note erfc(): 444. for the error function and the complementary + error function, *note expm1(): b48. which computes ‘e**x - 1’ with + more precision than using *note exp(): c80. and subtracting 1, + *note gamma(): b49. for the Gamma function, and *note lgamma(): + b4a. for the natural log of the Gamma function. (Contributed by Mark Dickinson and nirinA raseliarison; bpo-3366(50).) - * The *note multiprocessing: b7. module’s ‘Manager*’ classes can now + * The *note multiprocessing: b8. module’s ‘Manager*’ classes can now be passed a callable that will be called whenever a subprocess is started, along with a set of arguments that will be passed to the callable. (Contributed by lekma; bpo-5585(51).) @@ -38145,41 +35565,41 @@ through the Subversion logs for all the details. to become very large. (Contributed by Charles Cazabon; bpo-6963(52).) - * The *note nntplib: c0. module now supports IPv6 addresses. + * The *note nntplib: c1. module now supports IPv6 addresses. (Contributed by Derek Morr; bpo-1664(53).) - * New functions: the *note os: c4. module wraps the following POSIX - system calls: *note getresgid(): d74. and *note getresuid(): d75, + * New functions: the *note os: c5. module wraps the following POSIX + system calls: *note getresgid(): c81. and *note getresuid(): c82, which return the real, effective, and saved GIDs and UIDs; *note - setresgid(): d76. and *note setresuid(): d77, which set real, + setresgid(): c83. and *note setresuid(): c84, which set real, effective, and saved GIDs and UIDs to new values; *note - initgroups(): d78, which initialize the group access list for the + initgroups(): c85, which initialize the group access list for the current process. (GID/UID functions contributed by Travis H.; bpo-6508(54). Support for initgroups added by Jean-Paul Calderone; bpo-7333(55).) - The *note os.fork(): a44. function now re-initializes the import + The *note os.fork(): 942. function now re-initializes the import lock in the child process; this fixes problems on Solaris when - *note fork(): a44. is called from a thread. (Fixed by Zsolt + *note fork(): 942. is called from a thread. (Fixed by Zsolt Cserna; bpo-7242(56).) - * In the *note os.path: c5. module, the *note normpath(): d79. and - *note abspath(): d7a. functions now preserve Unicode; if their + * In the *note os.path: c6. module, the *note normpath(): c86. and + *note abspath(): c87. functions now preserve Unicode; if their input path is a Unicode string, the return value is also a Unicode - string. (*note normpath(): d79. fixed by Matt Giuca in - bpo-5827(57); *note abspath(): d7a. fixed by Ezio Melotti in + string. (*note normpath(): c86. fixed by Matt Giuca in + bpo-5827(57); *note abspath(): c87. fixed by Ezio Melotti in bpo-3426(58).) - * The *note pydoc: d9. module now has help for the various symbols + * The *note pydoc: da. module now has help for the various symbols that Python uses. You can now do ‘help('<<')’ or ‘help('@')’, for example. (Contributed by David Laban; bpo-4739(59).) - * The *note re: dd. module’s *note split(): 4d3, *note sub(): 57c, - and *note subn(): 825. now accept an optional `flags' argument, for + * The *note re: de. module’s *note split(): 3bb, *note sub(): 46c, + and *note subn(): 71b. now accept an optional `flags' argument, for consistency with the other functions in the module. (Added by Gregory P. Smith.) - * New function: *note run_path(): d7b. in the *note runpy: e2. module + * New function: *note run_path(): c88. in the *note runpy: e3. module will execute the code at a provided `path' argument. `path' can be the path of a Python source file (‘example.py’), a compiled bytecode file (‘example.pyc’), a directory (‘./package/’), or a zip @@ -38188,49 +35608,49 @@ through the Subversion logs for all the details. __main__: 1. will be imported. It’s expected that the directory or zip contains a ‘__main__.py’; if it doesn’t, some other ‘__main__.py’ might be imported from a location later in - ‘sys.path’. This makes more of the machinery of *note runpy: e2. + ‘sys.path’. This makes more of the machinery of *note runpy: e3. available to scripts that want to mimic the way Python’s command line processes an explicit path name. (Added by Nick Coghlan; bpo-6816(60).) - * New function: in the *note shutil: e9. module, *note - make_archive(): 34b. takes a filename, archive type (zip or + * New function: in the *note shutil: ea. module, *note + make_archive(): 207. takes a filename, archive type (zip or tar-format), and a directory path, and creates an archive containing the directory’s contents. (Added by Tarek Ziadé.) - *note shutil: e9.’s *note copyfile(): 385. and *note copytree(): - 34a. functions now raise a ‘SpecialFileError’ exception when asked + *note shutil: ea.’s *note copyfile(): 244. and *note copytree(): + 206. functions now raise a ‘SpecialFileError’ exception when asked to copy a named pipe. Previously the code would treat named pipes like a regular file by opening them for reading, and this would block indefinitely. (Fixed by Antoine Pitrou; bpo-3002(61).) - * The *note signal: ea. module no longer re-installs the signal + * The *note signal: eb. module no longer re-installs the signal handler unless this is truly necessary, which fixes a bug that could make it impossible to catch the EINTR signal robustly. (Fixed by Charles-Francois Natali; bpo-8354(62).) - * New functions: in the *note site: eb. module, three new functions + * New functions: in the *note site: ec. module, three new functions return various site- and user-specific paths. *note - getsitepackages(): ca3. returns a list containing all global - site-packages directories, *note getusersitepackages(): ca5. + getsitepackages(): bb3. returns a list containing all global + site-packages directories, *note getusersitepackages(): bb5. returns the path of the user’s site-packages directory, and *note - getuserbase(): ca4. returns the value of the ‘USER_BASE’ + getuserbase(): bb4. returns the value of the ‘USER_BASE’ environment variable, giving the path to a directory that can be used to store data. (Contributed by Tarek Ziadé; bpo-6693(63).) - The *note site: eb. module now reports exceptions occurring when + The *note site: ec. module now reports exceptions occurring when the ‘sitecustomize’ module is imported, and will no longer catch - and swallow the *note KeyboardInterrupt: 2cf. exception. (Fixed by + and swallow the *note KeyboardInterrupt: 184. exception. (Fixed by Victor Stinner; bpo-3137(64).) - * The *note create_connection(): c71. function gained a + * The *note create_connection(): b7e. function gained a `source_address' parameter, a ‘(host, port)’ 2-tuple giving the source address that will be used for the connection. (Contributed by Eldon Ziegler; bpo-3972(65).) - The *note recv_into(): d7c. and *note recvfrom_into(): d7d. methods + The *note recv_into(): c89. and *note recvfrom_into(): c8a. methods will now write into objects that support the buffer API, most - usefully the *note bytearray: 173. and *note memoryview: 389. + usefully the *note bytearray: 323. and *note memoryview: 248. objects. (Implemented by Antoine Pitrou; bpo-8104(66).) * The ‘SocketServer’ module’s ‘TCPServer’ class now supports socket @@ -38244,22 +35664,22 @@ through the Subversion logs for all the details. called and ‘handle_request()’ will return. (Contributed by Kristján Valur Jónsson; bpo-6192(67) and bpo-6267(68).) - * Updated module: the *note sqlite3: f2. module has been updated to + * Updated module: the *note sqlite3: f3. module has been updated to version 2.6.0 of the pysqlite package(69). Version 2.6.0 includes a number of bugfixes, and adds the ability to load SQLite extensions from shared libraries. Call the ‘enable_load_extension(True)’ method to enable extensions, and then - call *note load_extension(): c6d. to load a particular shared + call *note load_extension(): b7a. to load a particular shared library. (Updated by Gerhard Häring.) - * The *note ssl: f3. module’s *note SSLSocket: 192. objects now + * The *note ssl: f4. module’s *note SSLSocket: 3d3. objects now support the buffer API, which fixed a test suite failure (fix by Antoine Pitrou; bpo-7133(70)) and automatically set OpenSSL’s ‘SSL_MODE_AUTO_RETRY’, which will prevent an error code being returned from ‘recv()’ operations that trigger an SSL renegotiation (fix by Antoine Pitrou; bpo-8222(71)). - The *note ssl.wrap_socket(): 573. constructor function now takes a + The *note ssl.wrap_socket(): 460. constructor function now takes a `ciphers' argument that’s a string listing the encryption algorithms to be allowed; the format of the string is described in the OpenSSL documentation(72). (Added by Antoine Pitrou; @@ -38272,25 +35692,25 @@ through the Subversion logs for all the details. bpo-8484(74).) The version of OpenSSL being used is now available as the module - attributes *note ssl.OPENSSL_VERSION: c74. (a string), *note - ssl.OPENSSL_VERSION_INFO: c75. (a 5-tuple), and *note - ssl.OPENSSL_VERSION_NUMBER: c76. (an integer). (Added by Antoine + attributes *note ssl.OPENSSL_VERSION: b81. (a string), *note + ssl.OPENSSL_VERSION_INFO: b82. (a 5-tuple), and *note + ssl.OPENSSL_VERSION_NUMBER: b83. (an integer). (Added by Antoine Pitrou; bpo-8321(75).) - * The *note struct: f8. module will no longer silently ignore + * The *note struct: f9. module will no longer silently ignore overflow errors when a value is too large for a particular integer format code (one of ‘bBhHiIlLqQ’); it now always raises a *note - struct.error: d7e. exception. (Changed by Mark Dickinson; - bpo-1523(76).) The *note pack(): cd8. function will also attempt - to use *note __index__(): 2c5. to convert and pack non-integers - before trying the *note __int__(): 2c6. method or reporting an - error. (Changed by Mark Dickinson; bpo-8300(77).) + struct.error: c8b. exception. (Changed by Mark Dickinson; + bpo-1523(76).) The *note pack(): beb. function will also attempt + to use ‘__index__()’ to convert and pack non-integers before trying + the ‘__int__()’ method or reporting an error. (Changed by Mark + Dickinson; bpo-8300(77).) - * New function: the *note subprocess: f9. module’s *note - check_output(): 9c3. runs a command with a specified set of + * New function: the *note subprocess: fa. module’s *note + check_output(): 8be. runs a command with a specified set of arguments and returns the command’s output as a string when the command runs without error, or raises a *note CalledProcessError: - d7f. exception otherwise. + c8c. exception otherwise. >>> subprocess.check_output(['df', '-h', '.']) 'Filesystem Size Used Avail Capacity Mounted on\n @@ -38302,16 +35722,16 @@ through the Subversion logs for all the details. (Contributed by Gregory P. Smith.) - The *note subprocess: f9. module will now retry its internal system + The *note subprocess: fa. module will now retry its internal system calls on receiving an ‘EINTR’ signal. (Reported by several people; final patch by Gregory P. Smith in bpo-1068268(78).) - * New function: *note is_declared_global(): d80. in the *note - symtable: fc. module returns true for variables that are explicitly + * New function: *note is_declared_global(): c8d. in the *note + symtable: fd. module returns true for variables that are explicitly declared to be global, false for ones that are implicitly global. (Contributed by Jeremy Hylton.) - * The *note syslog: ff. module will now use the value of + * The *note syslog: 100. module will now use the value of ‘sys.argv[0]’ as the identifier instead of the previous default value of ‘'python'’. (Changed by Sean Reifschneider; bpo-8451(79).) @@ -38320,13 +35740,13 @@ through the Subversion logs for all the details. named ‘major’, ‘minor’, ‘micro’, ‘releaselevel’, and ‘serial’. (Contributed by Ross Light; bpo-4285(80).) - *note sys.getwindowsversion(): 68e. also returns a named tuple, + *note sys.getwindowsversion(): 582. also returns a named tuple, with attributes named ‘major’, ‘minor’, ‘build’, *note platform: - ce, ‘service_pack’, ‘service_pack_major’, ‘service_pack_minor’, + cf, ‘service_pack’, ‘service_pack_major’, ‘service_pack_minor’, ‘suite_mask’, and ‘product_type’. (Contributed by Brian Curtin; bpo-7766(81).) - * The *note tarfile: 101. module’s default error handling has + * The *note tarfile: 102. module’s default error handling has changed, to no longer suppress fatal errors. The default error level was previously 0, which meant that errors would only result in a message being written to the debug log, but because the debug @@ -38334,26 +35754,26 @@ through the Subversion logs for all the details. default error level is now 1, which raises an exception if there’s an error. (Changed by Lars Gustäbel; bpo-7357(82).) - *note tarfile: 101. now supports filtering the *note TarInfo: c60. - objects being added to a tar file. When you call *note add(): 57d, + *note tarfile: 102. now supports filtering the *note TarInfo: b6d. + objects being added to a tar file. When you call *note add(): 46d, you may supply an optional `filter' argument that’s a callable. - The `filter' callable will be passed the *note TarInfo: c60. for + The `filter' callable will be passed the *note TarInfo: b6d. for every file being added, and can modify and return it. If the callable returns ‘None’, the file will be excluded from the resulting archive. This is more powerful than the existing `exclude' argument, which has therefore been deprecated. (Added by - Lars Gustäbel; bpo-6856(83).) The *note TarFile: c5f. class also + Lars Gustäbel; bpo-6856(83).) The *note TarFile: b6c. class also now supports the context management protocol. (Added by Lars Gustäbel; bpo-7232(84).) - * The *note wait(): d81. method of the *note threading.Event: b87. + * The *note wait(): c8e. method of the *note threading.Event: a8e. class now returns the internal flag on exit. This means the method - will usually return true because *note wait(): d81. is supposed to + will usually return true because *note wait(): c8e. is supposed to block until the internal flag becomes true. The return value will only be false if a timeout was provided and the operation timed out. (Contributed by Tim Lesher; bpo-1674032(85).) - * The Unicode database provided by the *note unicodedata: 123. module + * The Unicode database provided by the *note unicodedata: 11b. module is now used internally to determine which characters are numeric, whitespace, or represent line breaks. The database also includes information from the ‘Unihan.txt’ data file (patch by Anders @@ -38390,7 +35810,7 @@ through the Subversion logs for all the details. ParseResult(scheme='http', netloc='[1080::8:800:200C:417A]', path='/foo', params='', query='', fragment='') - * New class: the *note WeakSet: d82. class in the *note weakref: 131. + * New class: the *note WeakSet: c8f. class in the *note weakref: 129. module is a set that only holds weak references to its elements; elements will be removed once there are no references pointing to them. (Originally implemented in Python 3.x by Raymond Hettinger, @@ -38411,24 +35831,24 @@ through the Subversion logs for all the details. responses larger than this will be compressed. (Contributed by Kristján Valur Jónsson; bpo-6267(92).) - * The *note zipfile: 14b. module’s *note ZipFile: 525. now supports + * The *note zipfile: 143. module’s *note ZipFile: 410. now supports the context management protocol, so you can write ‘with zipfile.ZipFile(...) as f:’. (Contributed by Brian Curtin; bpo-5511(93).) - *note zipfile: 14b. now also supports archiving empty directories + *note zipfile: 143. now also supports archiving empty directories and extracts them correctly. (Fixed by Kuba Wieczorek; bpo-4710(94).) Reading files out of an archive is faster, and - interleaving *note read(): d83. and ‘readline()’ now works + interleaving *note read(): c90. and ‘readline()’ now works correctly. (Contributed by Nir Aides; bpo-7610(95).) - The *note is_zipfile(): d84. function now accepts a file object, in + The *note is_zipfile(): c91. function now accepts a file object, in addition to the path names accepted in earlier versions. (Contributed by Gabriel Genellina; bpo-4756(96).) - The *note writestr(): d85. method now has an optional + The *note writestr(): c92. method now has an optional `compress_type' parameter that lets you override the default - compression method specified in the *note ZipFile: 525. + compression method specified in the *note ZipFile: 410. constructor. (Contributed by Ronald Oussoren; bpo-6003(97).) * Menu: @@ -38639,23 +36059,23 @@ https://www.openssl.org/docs/manmaster/man1/ciphers.html#CIPHER-LIST-FORMAT  File: python.info, Node: New module importlib, Next: New module sysconfig, Up: New and Improved Modules -1.11.11.1 New module: importlib +1.10.11.1 New module: importlib ............................... -Python 3.1 includes the *note importlib: 9a. package, a -re-implementation of the logic underlying Python’s *note import: ce9. -statement. *note importlib: 9a. is useful for implementors of Python +Python 3.1 includes the *note importlib: 9b. package, a +re-implementation of the logic underlying Python’s *note import: bfd. +statement. *note importlib: 9b. is useful for implementors of Python interpreters and to users who wish to write new importers that can participate in the import process. Python 2.7 doesn’t contain the -complete *note importlib: 9a. package, but instead has a tiny subset -that contains a single function, *note import_module(): be8. +complete *note importlib: 9b. package, but instead has a tiny subset +that contains a single function, *note import_module(): af4. ‘import_module(name, package=None)’ imports a module. `name' is a string containing the module or package’s name. It’s possible to do relative imports by providing a string that begins with a ‘.’ character, such as ‘..utils.errors’. For relative imports, the `package' argument must be provided and is the name of the package that will be used as the -anchor for the relative import. *note import_module(): be8. both +anchor for the relative import. *note import_module(): af4. both inserts the imported module into ‘sys.modules’ and returns the module object. @@ -38670,40 +36090,40 @@ Here are some examples: >>> file_util -*note importlib: 9a. was implemented by Brett Cannon and introduced in +*note importlib: 9b. was implemented by Brett Cannon and introduced in Python 3.1.  File: python.info, Node: New module sysconfig, Next: ttk Themed Widgets for Tk, Prev: New module importlib, Up: New and Improved Modules -1.11.11.2 New module: sysconfig +1.10.11.2 New module: sysconfig ............................... -The *note sysconfig: fe. module has been pulled out of the Distutils +The *note sysconfig: ff. module has been pulled out of the Distutils package, becoming a new top-level module in its own right. *note -sysconfig: fe. provides functions for getting information about Python’s +sysconfig: ff. provides functions for getting information about Python’s build process: compiler switches, installation paths, the platform name, and whether Python is running from its source directory. Some of the functions in the module are: - * *note get_config_var(): a47. returns variables from Python’s + * *note get_config_var(): 945. returns variables from Python’s Makefile and the ‘pyconfig.h’ file. - * *note get_config_vars(): a48. returns a dictionary containing all + * *note get_config_vars(): 946. returns a dictionary containing all of the configuration variables. - * *note get_path(): d88. returns the configured path for a particular + * *note get_path(): c95. returns the configured path for a particular type of module: the standard library, site-specific modules, platform-specific modules, etc. - * *note is_python_build(): d89. returns true if you’re running a + * *note is_python_build(): c96. returns true if you’re running a binary from a Python source tree, and false otherwise. -Consult the *note sysconfig: fe. documentation for more details and for +Consult the *note sysconfig: ff. documentation for more details and for a complete list of functions. -The Distutils package and *note sysconfig: fe. are now maintained by +The Distutils package and *note sysconfig: ff. are now maintained by Tarek Ziadé, who has also started a Distutils2 package (source repository at ‘https://hg.python.org/distutils2/’) for developing a next-generation version of Distutils. @@ -38711,7 +36131,7 @@ next-generation version of Distutils.  File: python.info, Node: ttk Themed Widgets for Tk, Next: Updated module unittest, Prev: New module sysconfig, Up: New and Improved Modules -1.11.11.3 ttk: Themed Widgets for Tk +1.10.11.3 ttk: Themed Widgets for Tk .................................... Tcl/Tk 8.5 includes a set of themed widgets that re-implement basic Tk @@ -38741,10 +36161,10 @@ comprehensive.  File: python.info, Node: Updated module unittest, Next: Updated module ElementTree 1 3, Prev: ttk Themed Widgets for Tk, Up: New and Improved Modules -1.11.11.4 Updated module: unittest +1.10.11.4 Updated module: unittest .................................. -The *note unittest: 124. module was greatly enhanced; many new features +The *note unittest: 11c. module was greatly enhanced; many new features were added. Most of these features were implemented by Michael Foord, unless otherwise noted. The enhanced version of the module is downloadable separately for use with Python versions 2.4 to 2.6, @@ -38759,17 +36179,17 @@ any importable test files named ‘test*.py’: python -m unittest discover -s test -Consult the *note unittest: 124. module documentation for more details. +Consult the *note unittest: 11c. module documentation for more details. (Developed in bpo-6001(3).) -The *note main(): 9ea. function supports some other new options: +The *note main(): 8e5. function supports some other new options: - * *note -b: d8d. or ‘--buffer’ will buffer the standard output and + * *note -b: c9a. or ‘--buffer’ will buffer the standard output and standard error streams during each test. If the test passes, any resulting output will be discarded; on failure, the buffered output will be displayed. - * *note -c: d8e. or ‘--catch’ will cause the control-C interrupt to + * *note -c: c9b. or ‘--catch’ will cause the control-C interrupt to be handled more gracefully. Instead of interrupting the test process immediately, the currently running test will be completed and then the partial results up to the interruption will be @@ -38780,10 +36200,10 @@ The *note main(): 9ea. function supports some other new options: code being tested or the tests being run have defined a signal handler of their own, by noticing that a signal handler was already set and calling it. If this doesn’t work for you, there’s a *note - removeHandler(): d8f. decorator that can be used to mark tests that + removeHandler(): c9c. decorator that can be used to mark tests that should have the control-C handling disabled. - * *note -f: d90. or ‘--failfast’ makes test execution stop + * *note -f: c9d. or ‘--failfast’ makes test execution stop immediately when a test fails instead of continuing to execute further tests. (Suggested by Cliff Dyer and implemented by Michael Foord; bpo-8074(4).) @@ -38792,17 +36212,17 @@ The progress messages now show ‘x’ for expected failures and ‘u’ for unexpected successes when run in verbose mode. (Contributed by Benjamin Peterson.) -Test cases can raise the *note SkipTest: 9eb. exception to skip a test +Test cases can raise the *note SkipTest: 8e6. exception to skip a test (bpo-1034053(5)). -The error messages for *note assertEqual(): c87, *note assertTrue(): -c86, and *note assertFalse(): d91. failures now provide more -information. If you set the *note longMessage: d92. attribute of your -*note TestCase: 9e7. classes to true, both the standard error message +The error messages for *note assertEqual(): b95, *note assertTrue(): +b94, and *note assertFalse(): c9e. failures now provide more +information. If you set the *note longMessage: c9f. attribute of your +*note TestCase: 8e2. classes to true, both the standard error message and any additional message you provide will be printed for failures. (Added by Michael Foord; bpo-5663(6).) -The *note assertRaises(): b94. method now returns a context handler when +The *note assertRaises(): a9b. method now returns a context handler when called without providing a callable object to run. For example, you can write this: @@ -38813,44 +36233,44 @@ write this: Module- and class-level setup and teardown fixtures are now supported. Modules can contain ‘setUpModule()’ and ‘tearDownModule()’ functions. -Classes can have *note setUpClass(): 379. and *note tearDownClass(): -d93. methods that must be defined as class methods (using ‘@classmethod’ +Classes can have *note setUpClass(): 238. and *note tearDownClass(): +ca0. methods that must be defined as class methods (using ‘@classmethod’ or equivalent). These functions and methods are invoked when the test runner switches to a test case in a different module or class. -The methods *note addCleanup(): 3c8. and *note doCleanups(): d94. were -added. *note addCleanup(): 3c8. lets you add cleanup functions that -will be called unconditionally (after *note setUp(): d95. if *note -setUp(): d95. fails, otherwise after *note tearDown(): d96.). This +The methods *note addCleanup(): 28d. and *note doCleanups(): ca1. were +added. *note addCleanup(): 28d. lets you add cleanup functions that +will be called unconditionally (after *note setUp(): ca2. if *note +setUp(): ca2. fails, otherwise after *note tearDown(): ca3.). This allows for much simpler resource allocation and deallocation during tests (bpo-5679(8)). A number of new methods were added that provide more specialized tests. Many of these methods were written by Google engineers for use in their test suites; Gregory P. Smith, Michael Foord, and GvR worked on merging -them into Python’s version of *note unittest: 124. +them into Python’s version of *note unittest: 11c. - * *note assertIsNone(): d97. and *note assertIsNotNone(): d98. take + * *note assertIsNone(): ca4. and *note assertIsNotNone(): ca5. take one expression and verify that the result is or is not ‘None’. - * *note assertIs(): d99. and *note assertIsNot(): d9a. take two + * *note assertIs(): ca6. and *note assertIsNot(): ca7. take two values and check whether the two values evaluate to the same object or not. (Added by Michael Foord; bpo-2578(9).) - * *note assertIsInstance(): d9b. and *note assertNotIsInstance(): - d9c. check whether the resulting object is an instance of a + * *note assertIsInstance(): ca8. and *note assertNotIsInstance(): + ca9. check whether the resulting object is an instance of a particular class, or of one of a tuple of classes. (Added by Georg Brandl; bpo-7031(10).) - * *note assertGreater(): d9d, *note assertGreaterEqual(): d9e, *note - assertLess(): d9f, and *note assertLessEqual(): da0. compare two + * *note assertGreater(): caa, *note assertGreaterEqual(): cab, *note + assertLess(): cac, and *note assertLessEqual(): cad. compare two quantities. - * *note assertMultiLineEqual(): da1. compares two strings, and if + * *note assertMultiLineEqual(): cae. compares two strings, and if they’re not equal, displays a helpful comparison that highlights the differences in the two strings. This comparison is now used by default when Unicode strings are compared with *note assertEqual(): - c87. + b95. * ‘assertRegexpMatches()’ and ‘assertNotRegexpMatches()’ checks whether the first argument is a string matching or not matching the @@ -38860,42 +36280,42 @@ them into Python’s version of *note unittest: 124. raised, and then also checks that the string representation of the exception matches the provided regular expression. - * *note assertIn(): da2. and *note assertNotIn(): da3. tests whether + * *note assertIn(): caf. and *note assertNotIn(): cb0. tests whether `first' is or is not in `second'. * ‘assertItemsEqual()’ tests whether two provided sequences contain the same elements. - * *note assertSetEqual(): da4. compares whether two sets are equal, + * *note assertSetEqual(): cb1. compares whether two sets are equal, and only reports the differences between the sets in case of error. - * Similarly, *note assertListEqual(): da5. and *note - assertTupleEqual(): da6. compare the specified types and explain + * Similarly, *note assertListEqual(): cb2. and *note + assertTupleEqual(): cb3. compare the specified types and explain any differences without necessarily printing their full values; these methods are now used by default when comparing lists and - tuples using *note assertEqual(): c87. More generally, *note - assertSequenceEqual(): da7. compares two sequences and can + tuples using *note assertEqual(): b95. More generally, *note + assertSequenceEqual(): cb4. compares two sequences and can optionally check whether both sequences are of a particular type. - * *note assertDictEqual(): da8. compares two dictionaries and reports + * *note assertDictEqual(): cb5. compares two dictionaries and reports the differences; it’s now used by default when you compare two - dictionaries using *note assertEqual(): c87. + dictionaries using *note assertEqual(): b95. ‘assertDictContainsSubset()’ checks whether all of the key/value pairs in `first' are found in `second'. - * *note assertAlmostEqual(): c89. and *note assertNotAlmostEqual(): - c8a. test whether `first' and `second' are approximately equal. + * *note assertAlmostEqual(): b97. and *note assertNotAlmostEqual(): + b98. test whether `first' and `second' are approximately equal. This method can either round their difference to an optionally-specified number of `places' (the default is 7) and compare it to zero, or require the difference to be smaller than a supplied `delta' value. - * *note loadTestsFromName(): da9. properly honors the *note - suiteClass: daa. attribute of the *note TestLoader: 873. (Fixed by + * *note loadTestsFromName(): cb6. properly honors the *note + suiteClass: cb7. attribute of the *note TestLoader: 769. (Fixed by Mark Roddy; bpo-6866(12).) - * A new hook lets you extend the *note assertEqual(): c87. method to - handle new data types. The *note addTypeEqualityFunc(): dab. + * A new hook lets you extend the *note assertEqual(): b95. method to + handle new data types. The *note addTypeEqualityFunc(): cb8. method takes a type object and a function. The function will be used when both of the objects being compared are of the specified type. This function should compare the two objects and raise an @@ -38903,13 +36323,13 @@ them into Python’s version of *note unittest: 124. provide additional information about why the two objects aren’t matching, much as the new sequence comparison methods do. -*note unittest.main(): 9ea. now takes an optional ‘exit’ argument. If -false, *note main(): 9ea. doesn’t call *note sys.exit(): dac, allowing -*note main(): 9ea. to be used from the interactive interpreter. +*note unittest.main(): 8e5. now takes an optional ‘exit’ argument. If +false, *note main(): 8e5. doesn’t call *note sys.exit(): cb9, allowing +*note main(): 8e5. to be used from the interactive interpreter. (Contributed by J. Pablo Fernández; bpo-3379(13).) -*note TestResult: b99. has new *note startTestRun(): dad. and *note -stopTestRun(): dae. methods that are called immediately before and after +*note TestResult: aa0. has new *note startTestRun(): cba. and *note +stopTestRun(): cbb. methods that are called immediately before and after a test run. (Contributed by Robert Collins; bpo-5728(14).) With all these changes, the ‘unittest.py’ was becoming awkwardly large, @@ -38958,14 +36378,14 @@ See also  File: python.info, Node: Updated module ElementTree 1 3, Prev: Updated module unittest, Up: New and Improved Modules -1.11.11.5 Updated module: ElementTree 1.3 +1.10.11.5 Updated module: ElementTree 1.3 ......................................... The version of the ElementTree library included with Python was updated to version 1.3. Some of the new features are: * The various parsing functions now take a `parser' keyword argument - giving an *note XMLParser: 37f. instance that will be used. This + giving an *note XMLParser: 23e. instance that will be used. This makes it possible to override the file’s internal encoding: p = ET.XMLParser(encoding='utf-8') @@ -38977,7 +36397,7 @@ to version 1.3. Some of the new features are: * ElementTree’s code for converting trees to a string has been significantly reworked, making it roughly twice as fast in many - cases. The *note ElementTree.write(): 9ff. and ‘Element.write()’ + cases. The *note ElementTree.write(): 8fb. and ‘Element.write()’ methods now have a `method' parameter that can be “xml” (the default), “html”, or “text”. HTML mode will output empty elements as ‘’ instead of ‘’, and text mode will skip @@ -38991,11 +36411,11 @@ to version 1.3. Some of the new features are: declarations are now output on the root element, not scattered throughout the resulting XML. You can set the default namespace for a tree by setting the ‘default_namespace’ attribute and can - register new prefixes with *note register_namespace(): c24. In XML + register new prefixes with *note register_namespace(): b30. In XML mode, you can use the true/false `xml_declaration' parameter to suppress the XML declaration. - * New *note Element: 21d. method: *note extend(): c25. appends the + * New *note Element: aa5. method: *note extend(): b31. appends the items from a sequence to the element’s children. Elements themselves behave like sequences, so it’s easy to move children from one element to another: @@ -39011,13 +36431,13 @@ to version 1.3. Some of the new features are: # Outputs 1... print ET.tostring(new) - * New ‘Element’ method: *note iter(): db1. yields the children of the + * New ‘Element’ method: *note iter(): cbe. yields the children of the element as a generator. It’s also possible to write ‘for child in elem:’ to loop over an element’s children. The existing method ‘getiterator()’ is now deprecated, as is ‘getchildren()’ which constructs and returns a list of children. - * New ‘Element’ method: *note itertext(): c27. yields all chunks of + * New ‘Element’ method: *note itertext(): b33. yields all chunks of text that are descendants of the element. For example: t = ET.XML(""" @@ -39031,7 +36451,7 @@ to version 1.3. Some of the new features are: return true if the element had any children, or false if there were no children. This behaviour is confusing – ‘None’ is false, but so is a childless element? – so it will now trigger a *note - FutureWarning: 437. In your code, you should be explicit: write + FutureWarning: 317. In your code, you should be explicit: write ‘len(elem) != 0’ if you’re interested in the number of children, or ‘elem is not None’. @@ -39048,7 +36468,7 @@ python-dev and in bpo-6472(1).)  File: python.info, Node: Build and C API Changes<8>, Next: Other Changes and Fixes, Prev: New and Improved Modules, Up: What’s New in Python 2 7 -1.11.12 Build and C API Changes +1.10.12 Build and C API Changes ------------------------------- Changes to Python’s build process and to the C API include: @@ -39068,49 +36488,49 @@ Changes to Python’s build process and to the C API include: debugged doesn’t hold the GIL; the macro now acquires it before printing. (Contributed by Victor Stinner; bpo-3632(3).) - * *note Py_AddPendingCall(): 25f. is now thread-safe, letting any + * *note Py_AddPendingCall(): cc0. is now thread-safe, letting any worker thread submit notifications to the main Python thread. This is particularly useful for asynchronous IO operations. (Contributed by Kristján Valur Jónsson; bpo-4293(4).) - * New function: *note PyCode_NewEmpty(): db3. creates an empty code + * New function: *note PyCode_NewEmpty(): cc1. creates an empty code object; only the filename, function name, and first line number are required. This is useful for extension modules that are attempting to construct a more useful traceback stack. Previously such - extensions needed to call *note PyCode_New(): 39e, which had many + extensions needed to call *note PyCode_New(): 25e, which had many more arguments. (Added by Jeffrey Yasskin.) - * New function: *note PyErr_NewExceptionWithDoc(): ccc. creates a new + * New function: *note PyErr_NewExceptionWithDoc(): bdf. creates a new exception class, just as the existing *note PyErr_NewException(): - ccd. does, but takes an extra ‘char *’ argument containing the + be0. does, but takes an extra ‘char *’ argument containing the docstring for the new exception class. (Added by ‘lekma’ on the Python bug tracker; bpo-7033(5).) - * New function: *note PyFrame_GetLineNumber(): 24b. takes a frame + * New function: *note PyFrame_GetLineNumber(): cc2. takes a frame object and returns the line number that the frame is currently executing. Previously code would need to get the index of the bytecode instruction currently executing, and then look up the line number corresponding to that address. (Added by Jeffrey Yasskin.) - * New functions: *note PyLong_AsLongAndOverflow(): cca. and *note - PyLong_AsLongLongAndOverflow(): cc9. approximates a Python long - integer as a C ‘long’ or ‘long long’. If the number is too large - to fit into the output type, an `overflow' flag is set and returned - to the caller. (Contributed by Case Van Horsen; bpo-7528(6) and + * New functions: *note PyLong_AsLongAndOverflow(): bdd. and *note + PyLong_AsLongLongAndOverflow(): bdc. approximates a Python long + integer as a C long or long long. If the number is too large to + fit into the output type, an `overflow' flag is set and returned to + the caller. (Contributed by Case Van Horsen; bpo-7528(6) and bpo-7767(7).) * New function: stemming from the rewrite of string-to-float - conversion, a new *note PyOS_string_to_double(): cef. function was + conversion, a new *note PyOS_string_to_double(): c03. function was added. The old ‘PyOS_ascii_strtod()’ and ‘PyOS_ascii_atof()’ functions are now deprecated. - * New function: *note PySys_SetArgvEx(): cc7. sets the value of + * New function: *note PySys_SetArgvEx(): bda. sets the value of ‘sys.argv’ and can optionally update ‘sys.path’ to include the directory containing the script named by ‘sys.argv[0]’ depending on the value of an `updatepath' parameter. This function was added to close a security hole for applications - that embed Python. The old function, *note PySys_SetArgv(): db4, + that embed Python. The old function, *note PySys_SetArgv(): cc3, would always update ‘sys.path’, and sometimes it would add the current directory. This meant that, if you ran an application embedding Python in a directory controlled by someone else, @@ -39119,9 +36539,9 @@ Changes to Python’s build process and to the C API include: run. If you maintain a C/C++ application that embeds Python, check - whether you’re calling *note PySys_SetArgv(): db4. and carefully + whether you’re calling *note PySys_SetArgv(): cc3. and carefully consider whether the application should be using *note - PySys_SetArgvEx(): cc7. with `updatepath' set to false. + PySys_SetArgvEx(): bda. with `updatepath' set to false. Security issue reported as CVE-2008-5983(8); discussed in bpo-5753(9), and fixed by Antoine Pitrou. @@ -39141,15 +36561,15 @@ Changes to Python’s build process and to the C API include: deleted by now. (Removed by Antoine Pitrou; bpo-8276(11).) * New format codes: the ‘PyFormat_FromString()’, - ‘PyFormat_FromStringV()’, and *note PyErr_Format(): 89a. functions - now accept ‘%lld’ and ‘%llu’ format codes for displaying C’s ‘long - long’ types. (Contributed by Mark Dickinson; bpo-7228(12).) + ‘PyFormat_FromStringV()’, and *note PyErr_Format(): 78f. functions + now accept ‘%lld’ and ‘%llu’ format codes for displaying C’s long + long types. (Contributed by Mark Dickinson; bpo-7228(12).) * The complicated interaction between threads and process forking has been changed. Previously, the child process created by *note - os.fork(): a44. might fail because the child is created with only a + os.fork(): 942. might fail because the child is created with only a single thread running, the thread performing the *note os.fork(): - a44. If other threads were holding a lock, such as Python’s import + 942. If other threads were holding a lock, such as Python’s import lock, when the fork was performed, the lock would still be marked as “held” in the new process. But in the child process nothing would ever release the lock, since the other threads weren’t @@ -39157,23 +36577,23 @@ Changes to Python’s build process and to the C API include: perform imports. Python 2.7 acquires the import lock before performing an *note - os.fork(): a44, and will also clean up any locks created using the - *note threading: 10b. module. C extension modules that have + os.fork(): 942, and will also clean up any locks created using the + *note threading: 10a. module. C extension modules that have internal locks, or that call ‘fork()’ themselves, will not benefit from this clean-up. (Fixed by Thomas Wouters; bpo-1590864(13).) - * The *note Py_Finalize(): db5. function now calls the internal + * The *note Py_Finalize(): cc4. function now calls the internal ‘threading._shutdown()’ function; this prevents some exceptions from being raised when an interpreter shuts down. (Patch by Adam Olsen; bpo-1722344(14).) - * When using the *note PyMemberDef: 52c. structure to define + * When using the *note PyMemberDef: 416. structure to define attributes of a type, Python will no longer let you try to delete or set a ‘T_STRING_INPLACE’ attribute. - * Global symbols defined by the *note ctypes: 2a. module are now + * Global symbols defined by the *note ctypes: 2b. module are now prefixed with ‘Py’, or with ‘_ctypes’. (Implemented by Thomas Heller; bpo-3102(15).) @@ -39264,14 +36684,14 @@ Changes to Python’s build process and to the C API include:  File: python.info, Node: Capsules, Next: Port-Specific Changes Windows, Up: Build and C API Changes<8> -1.11.12.1 Capsules +1.10.12.1 Capsules .................. -Python 3.1 adds a new C datatype, *note PyCapsule: cd4, for providing a +Python 3.1 adds a new C datatype, *note PyCapsule: be7, for providing a C API to an extension module. A capsule is essentially the holder of a C ‘void *’ pointer, and is made available as a module attribute; for -example, the *note socket: ef. module’s API is exposed as ‘socket.CAPI’, -and *note unicodedata: 123. exposes ‘ucnhash_CAPI’. Other extensions +example, the *note socket: f0. module’s API is exposed as ‘socket.CAPI’, +and *note unicodedata: 11b. exposes ‘ucnhash_CAPI’. Other extensions can import the module, access its dictionary to get the capsule object, and then get the ‘void *’ pointer, which will usually point to an array of pointers to the module’s various API functions. @@ -39292,16 +36712,16 @@ their own name, and getting the pointer requires providing the name: vtable = PyCapsule_GetPointer(capsule, "mymodule.CAPI"); You are assured that ‘vtable’ points to whatever you’re expecting. If a -different capsule was passed in, *note PyCapsule_IsValid(): db8. would +different capsule was passed in, *note PyCapsule_IsValid(): cc7. would detect the mismatched name and return false. Refer to *note Providing a -C API for an Extension Module: db9. for more information on using these +C API for an Extension Module: cc8. for more information on using these objects. Python 2.7 now uses capsules internally to provide various extension-module APIs, but the ‘PyCObject_AsVoidPtr()’ was modified to handle capsules, preserving compile-time compatibility with the ‘CObject’ interface. Use of ‘PyCObject_AsVoidPtr()’ will signal a *note -PendingDeprecationWarning: 15c, which is silent by default. +PendingDeprecationWarning: 265, which is silent by default. Implemented in Python 3.1 and backported to 2.7 by Larry Hastings; discussed in bpo-5630(1). @@ -39313,10 +36733,10 @@ discussed in bpo-5630(1).  File: python.info, Node: Port-Specific Changes Windows, Next: Port-Specific Changes Mac OS X, Prev: Capsules, Up: Build and C API Changes<8> -1.11.12.2 Port-Specific Changes: Windows +1.10.12.2 Port-Specific Changes: Windows ........................................ - * The *note msvcrt: b6. module now contains some constants from the + * The *note msvcrt: b7. module now contains some constants from the ‘crtassem.h’ header file: ‘CRT_ASSEMBLY_VERSION’, ‘VC_ASSEMBLY_PUBLICKEYTOKEN’, and ‘LIBRARIES_ASSEMBLY_NAME_PREFIX’. (Contributed by David Cournapeau; bpo-4365(1).) @@ -39332,14 +36752,14 @@ File: python.info, Node: Port-Specific Changes Windows, Next: Port-Specific Ch native thread-local storage functions are now used. (Contributed by Kristján Valur Jónsson; bpo-3582(3).) - * The *note os.kill(): dbb. function now works on Windows. The + * The *note os.kill(): cca. function now works on Windows. The signal value can be the constants ‘CTRL_C_EVENT’, ‘CTRL_BREAK_EVENT’, or any integer. The first two constants will send ‘Control-C’ and ‘Control-Break’ keystroke events to subprocesses; any other value will use the ‘TerminateProcess()’ API. (Contributed by Miki Tebeka; bpo-1220212(4).) - * The *note os.listdir(): b1e. function now correctly fails for an + * The *note os.listdir(): a22. function now correctly fails for an empty path. (Fixed by Hirokazu Yamamoto; bpo-5913(5).) * The ‘mimelib’ module will now read the MIME database from the @@ -39363,7 +36783,7 @@ File: python.info, Node: Port-Specific Changes Windows, Next: Port-Specific Ch  File: python.info, Node: Port-Specific Changes Mac OS X, Next: Port-Specific Changes FreeBSD, Prev: Port-Specific Changes Windows, Up: Build and C API Changes<8> -1.11.12.3 Port-Specific Changes: Mac OS X +1.10.12.3 Port-Specific Changes: Mac OS X ......................................... * The path ‘/Library/Python/2.7/site-packages’ is now appended to @@ -39391,12 +36811,12 @@ File: python.info, Node: Port-Specific Changes Mac OS X, Next: Port-Specific C  File: python.info, Node: Port-Specific Changes FreeBSD, Prev: Port-Specific Changes Mac OS X, Up: Build and C API Changes<8> -1.11.12.4 Port-Specific Changes: FreeBSD +1.10.12.4 Port-Specific Changes: FreeBSD ........................................ * FreeBSD 7.1’s ‘SO_SETFIB’ constant, used with ‘getsockopt()’/‘setsockopt()’ to select an alternate routing table, - is now available in the *note socket: ef. module. (Added by Kyle + is now available in the *note socket: f0. module. (Added by Kyle VanderBeek; bpo-8235(1).) ---------- Footnotes ---------- @@ -39406,12 +36826,12 @@ File: python.info, Node: Port-Specific Changes FreeBSD, Prev: Port-Specific Ch  File: python.info, Node: Other Changes and Fixes, Next: Porting to Python 2 7, Prev: Build and C API Changes<8>, Up: What’s New in Python 2 7 -1.11.13 Other Changes and Fixes +1.10.13 Other Changes and Fixes ------------------------------- * Two benchmark scripts, ‘iobench’ and ‘ccbench’, were added to the ‘Tools’ directory. ‘iobench’ measures the speed of the built-in - file I/O objects returned by *note open(): 16f. while performing + file I/O objects returned by *note open(): 4e1. while performing various operations, and ‘ccbench’ is a concurrency benchmark that tries to measure computing throughput, thread switching latency, and IO processing bandwidth when performing several tasks using a @@ -39461,55 +36881,55 @@ File: python.info, Node: Other Changes and Fixes, Next: Porting to Python 2 7,  File: python.info, Node: Porting to Python 2 7, Next: New Features Added to Python 2 7 Maintenance Releases, Prev: Other Changes and Fixes, Up: What’s New in Python 2 7 -1.11.14 Porting to Python 2.7 +1.10.14 Porting to Python 2.7 ----------------------------- This section lists previously described changes and other bugfixes that may require changes to your code: - * The *note range(): 1f5. function processes its arguments more - consistently; it will now call *note __int__(): 2c6. on non-float, + * The *note range(): 99f. function processes its arguments more + consistently; it will now call ‘__int__()’ on non-float, non-integer arguments that are supplied to it. (Fixed by Alexander Belopolsky; bpo-1533(1).) - * The string *note format(): 5d8. method changed the default + * The string *note format(): 4cc. method changed the default precision used for floating-point and complex numbers from 6 decimal places to 12, which matches the precision used by *note - str(): 205. (Changed by Eric Smith; bpo-5920(2).) + str(): 321. (Changed by Eric Smith; bpo-5920(2).) - * Because of an optimization for the *note with: 7dc. statement, the - special methods *note __enter__(): d5f. and *note __exit__(): d60. - must belong to the object’s type, and cannot be directly attached - to the object’s instance. This affects new-style classes (derived - from *note object: 3d5.) and C extension types. (bpo-6101(3).) + * Because of an optimization for the *note with: 6d0. statement, the + special methods ‘__enter__()’ and ‘__exit__()’ must belong to the + object’s type, and cannot be directly attached to the object’s + instance. This affects new-style classes (derived from *note + object: 29b.) and C extension types. (bpo-6101(3).) - * Due to a bug in Python 2.6, the `exc_value' parameter to *note - __exit__(): d60. methods was often the string representation of the + * Due to a bug in Python 2.6, the `exc_value' parameter to + ‘__exit__()’ methods was often the string representation of the exception, not an instance. This was fixed in 2.7, so `exc_value' will be an instance as expected. (Fixed by Florent Xicluna; bpo-7853(4).) * When a restricted set of attributes were set using ‘__slots__’, deleting an unset attribute would not raise *note AttributeError: - 4a4. as you would expect. Fixed by Benjamin Peterson; + 38c. as you would expect. Fixed by Benjamin Peterson; bpo-7604(5).) In the standard library: - * Operations with *note datetime: 1a0. instances that resulted in a + * Operations with *note datetime: 181. instances that resulted in a year falling outside the supported range didn’t always raise *note - OverflowError: a43. Such errors are now checked more carefully and + OverflowError: 941. Such errors are now checked more carefully and will now raise the exception. (Reported by Mark Leander, patch by Anand B. Pillai and Alexander Belopolsky; bpo-7150(6).) - * When using *note Decimal: 2c3. instances with a string’s *note - format(): 5d8. method, the default alignment was previously + * When using *note Decimal: 175. instances with a string’s *note + format(): 4cc. method, the default alignment was previously left-alignment. This has been changed to right-alignment, which might change the output of your programs. (Changed by Mark Dickinson; bpo-6857(7).) Comparisons involving a signaling NaN value (or ‘sNAN’) now signal - *note InvalidOperation: acc. instead of silently returning a true + *note InvalidOperation: 9cc. instead of silently returning a true or false value depending on the comparison operator. Quiet NaN values (or ‘NaN’) are now hashable. (Fixed by Mark Dickinson; bpo-7279(8).) @@ -39524,12 +36944,12 @@ In the standard library: a negative length is requested, as other file-like objects do. (bpo-7348(10)). - * The *note syslog: ff. module will now use the value of + * The *note syslog: 100. module will now use the value of ‘sys.argv[0]’ as the identifier instead of the previous default value of ‘'python'’. (Changed by Sean Reifschneider; bpo-8451(11).) - * The *note tarfile: 101. module’s default error handling has + * The *note tarfile: 102. module’s default error handling has changed, to no longer suppress fatal errors. The default error level was previously 0, which meant that errors would only result in a message being written to the debug log, but because the debug @@ -39561,21 +36981,21 @@ In the standard library: For C extensions: * C extensions that use integer format codes with the ‘PyArg_Parse*’ - family of functions will now raise a *note TypeError: 1fe. - exception instead of triggering a *note DeprecationWarning: 15a. + family of functions will now raise a *note TypeError: 17f. + exception instead of triggering a *note DeprecationWarning: 264. (bpo-5080(14)). - * Use the new *note PyOS_string_to_double(): cef. function instead of + * Use the new *note PyOS_string_to_double(): c03. function instead of the old ‘PyOS_ascii_strtod()’ and ‘PyOS_ascii_atof()’ functions, which are now deprecated. For applications that embed Python: - * The *note PySys_SetArgvEx(): cc7. function was added, letting + * The *note PySys_SetArgvEx(): bda. function was added, letting applications close a security hole when the existing *note - PySys_SetArgv(): db4. function was used. Check whether you’re - calling *note PySys_SetArgv(): db4. and carefully consider whether - the application should be using *note PySys_SetArgvEx(): cc7. with + PySys_SetArgv(): cc3. function was used. Check whether you’re + calling *note PySys_SetArgv(): cc3. and carefully consider whether + the application should be using *note PySys_SetArgvEx(): bda. with `updatepath' set to false. ---------- Footnotes ---------- @@ -39611,7 +37031,7 @@ For applications that embed Python:  File: python.info, Node: New Features Added to Python 2 7 Maintenance Releases, Next: Acknowledgements, Prev: Porting to Python 2 7, Up: What’s New in Python 2 7 -1.11.15 New Features Added to Python 2.7 Maintenance Releases +1.10.15 New Features Added to Python 2.7 Maintenance Releases ------------------------------------------------------------- New features may be added to Python 2.7 maintenance releases when the @@ -39639,7 +37059,7 @@ maintenance release.  File: python.info, Node: Two new environment variables for debug mode, Next: PEP 434 IDLE Enhancement Exception for All Branches, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.1 Two new environment variables for debug mode +1.10.15.1 Two new environment variables for debug mode ...................................................... In debug mode, the ‘[xxx refs]’ statistic is not written by default, the @@ -39663,7 +37083,7 @@ New in version 2.7.15.  File: python.info, Node: PEP 434 IDLE Enhancement Exception for All Branches, Next: PEP 466 Network Security Enhancements for Python 2 7, Prev: Two new environment variables for debug mode, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.2 PEP 434: IDLE Enhancement Exception for All Branches +1.10.15.2 PEP 434: IDLE Enhancement Exception for All Branches .............................................................. PEP 434(1) describes a general exemption for changes made to the IDLE @@ -39681,7 +37101,7 @@ release.  File: python.info, Node: PEP 466 Network Security Enhancements for Python 2 7, Next: PEP 477 Backport ensurepip PEP 453 to Python 2 7, Prev: PEP 434 IDLE Enhancement Exception for All Branches, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.3 PEP 466: Network Security Enhancements for Python 2.7 +1.10.15.3 PEP 466: Network Security Enhancements for Python 2.7 ............................................................... PEP 466(1) describes a number of network security enhancement proposals @@ -39691,7 +37111,7 @@ release. PEP 466(2) related features added in Python 2.7.7: - * *note hmac.compare_digest(): aec. was backported from Python 3 to + * *note hmac.compare_digest(): 9ed. was backported from Python 3 to make a timing attack resistant comparison operation available to Python 2 applications. (Contributed by Alex Gaynor; bpo-21306(3).) @@ -39701,7 +37121,7 @@ PEP 466(2) related features added in Python 2.7.7: PEP 466(5) related features added in Python 2.7.8: - * *note hashlib.pbkdf2_hmac(): 8d5. was backported from Python 3 to + * *note hashlib.pbkdf2_hmac(): 7cb. was backported from Python 3 to make a hashing algorithm suitable for secure password storage broadly available to Python 2 applications. (Contributed by Alex Gaynor; bpo-21304(6).) @@ -39712,21 +37132,21 @@ PEP 466(5) related features added in Python 2.7.8: PEP 466(8) related features added in Python 2.7.9: - * Most of Python 3.4’s *note ssl: f3. module was backported. This - means *note ssl: f3. now supports Server Name Indication, TLS1.x + * Most of Python 3.4’s *note ssl: f4. module was backported. This + means *note ssl: f4. now supports Server Name Indication, TLS1.x settings, access to the platform certificate store, the *note - SSLContext: 4ec. class, and other features. (Contributed by Alex + SSLContext: 3d5. class, and other features. (Contributed by Alex Gaynor and David Reid; bpo-21308(9).) Refer to the “Version added: 2.7.9” notes in the module documentation for specific details. - * *note os.urandom(): 5ce. was changed to cache a file descriptor to + * *note os.urandom(): 4c2. was changed to cache a file descriptor to ‘/dev/urandom’ instead of reopening ‘/dev/urandom’ on every call. (Contributed by Alex Gaynor; bpo-21305(10).) - * *note hashlib.algorithms_guaranteed: dc4. and *note - hashlib.algorithms_available: dc5. were backported from Python 3 to + * *note hashlib.algorithms_guaranteed: cd3. and *note + hashlib.algorithms_available: cd4. were backported from Python 3 to make it easier for Python 2 applications to select the strongest available hash algorithm. (Contributed by Alex Gaynor in bpo-21307(11)) @@ -39758,7 +37178,7 @@ PEP 466(8) related features added in Python 2.7.9:  File: python.info, Node: PEP 477 Backport ensurepip PEP 453 to Python 2 7, Next: PEP 476 Enabling certificate verification by default for stdlib http clients<2>, Prev: PEP 466 Network Security Enhancements for Python 2 7, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.4 PEP 477: Backport ensurepip (PEP 453) to Python 2.7 +1.10.15.4 PEP 477: Backport ensurepip (PEP 453) to Python 2.7 ............................................................. PEP 477(1) approves the inclusion of the PEP 453(2) ensurepip module and @@ -39779,10 +37199,10 @@ maintenance releases, appearing first in the Python 2.7.9 release.  File: python.info, Node: Bootstrapping pip By Default<2>, Next: Documentation Changes<2>, Up: PEP 477 Backport ensurepip PEP 453 to Python 2 7 -1.11.15.5 Bootstrapping pip By Default +1.10.15.5 Bootstrapping pip By Default ...................................... -The new *note ensurepip: 78. module (defined in PEP 453(1)) provides a +The new *note ensurepip: 7a. module (defined in PEP 453(1)) provides a standard cross-platform mechanism to bootstrap the pip installer into Python installations. The version of ‘pip’ included with Python 2.7.9 is ‘pip’ 1.5.6, and future 2.7.x maintenance releases will update the @@ -39793,7 +37213,7 @@ By default, the commands ‘pip’, ‘pipX’ and ‘pipX.Y’ will be installe all platforms (where X.Y stands for the version of the Python installation), along with the ‘pip’ Python package and its dependencies. -For CPython *note source builds on POSIX systems: 8e2, the ‘make +For CPython *note source builds on POSIX systems: 7d8, the ‘make install’ and ‘make altinstall’ commands do not bootstrap ‘pip’ by default. This behaviour can be controlled through configure options, and overridden through Makefile options. @@ -39820,11 +37240,11 @@ https://www.python.org/dev/peps/pep-0477/#disabling-ensurepip-by-downstream-dist  File: python.info, Node: Documentation Changes<2>, Prev: Bootstrapping pip By Default<2>, Up: PEP 477 Backport ensurepip PEP 453 to Python 2 7 -1.11.15.6 Documentation Changes +1.10.15.6 Documentation Changes ............................... -As part of this change, the *note Installing Python Modules: 8e4. and -*note Distributing Python Modules: 8e5. sections of the documentation +As part of this change, the *note Installing Python Modules: 7da. and +*note Distributing Python Modules: 7db. sections of the documentation have been completely redesigned as short getting started and FAQ documents. Most packaging documentation has now been moved out to the Python Packaging Authority maintained Python Packaging User Guide(1) and @@ -39832,8 +37252,8 @@ the documentation of the individual projects. However, as this migration is currently still incomplete, the legacy versions of those guides remaining available as *note Installing Python -Modules (Legacy version): 8e6. and *note Distributing Python Modules -(Legacy version): 8e7. +Modules (Legacy version): 7dc. and *note Distributing Python Modules +(Legacy version): 7dd. See also ........ @@ -39852,7 +37272,7 @@ PEP 453(2) – Explicit bootstrapping of pip in Python installations  File: python.info, Node: PEP 476 Enabling certificate verification by default for stdlib http clients<2>, Next: PEP 493 HTTPS verification migration tools for Python 2 7, Prev: PEP 477 Backport ensurepip PEP 453 to Python 2 7, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.7 PEP 476: Enabling certificate verification by default for stdlib http clients +1.10.15.7 PEP 476: Enabling certificate verification by default for stdlib http clients ....................................................................................... PEP 476(1) updated ‘httplib’ and modules which use it, such as ‘urllib2’ @@ -39884,7 +37304,7 @@ an alternate context:  File: python.info, Node: PEP 493 HTTPS verification migration tools for Python 2 7, Next: New make regen-all build target<3>, Prev: PEP 476 Enabling certificate verification by default for stdlib http clients<2>, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.8 PEP 493: HTTPS verification migration tools for Python 2.7 +1.10.15.8 PEP 493: HTTPS verification migration tools for Python 2.7 .................................................................... PEP 493(1) provides additional migration tools to support a more @@ -39914,7 +37334,7 @@ default behaviour at runtime.  File: python.info, Node: New make regen-all build target<3>, Next: Removal of make touch build target<3>, Prev: PEP 493 HTTPS verification migration tools for Python 2 7, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.9 New ‘make regen-all’ build target +1.10.15.9 New ‘make regen-all’ build target ........................................... To simplify cross-compilation, and to ensure that CPython can reliably @@ -39935,14 +37355,14 @@ New in version 2.7.14. ---------- Footnotes ---------- - (1) https://github.com/python/cpython/tree/3.9/Makefile.pre.in + (1) https://github.com/python/cpython/tree/3.8/Makefile.pre.in (2) https://bugs.python.org/issue23404  File: python.info, Node: Removal of make touch build target<3>, Prev: New make regen-all build target<3>, Up: New Features Added to Python 2 7 Maintenance Releases -1.11.15.10 Removal of ‘make touch’ build target +1.10.15.10 Removal of ‘make touch’ build target ............................................... The ‘make touch’ build target previously used to request implicit @@ -39962,7 +37382,7 @@ Changed in version 2.7.14.  File: python.info, Node: Acknowledgements, Prev: New Features Added to Python 2 7 Maintenance Releases, Up: What’s New in Python 2 7 -1.11.16 Acknowledgements +1.10.16 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -39973,7 +37393,7 @@ Secker-Walker.  File: python.info, Node: What’s New in Python 2 6, Next: What’s New in Python 2 5, Prev: What’s New in Python 2 7, Up: What’s New in Python -1.12 What’s New in Python 2.6 +1.11 What’s New in Python 2.6 ============================= @@ -39991,7 +37411,7 @@ compatibility functions in a ‘future_builtins’ module and a ‘-3’ switch to warn about usages that will become unsupported in 3.0. Some significant new packages have been added to the standard library, -such as the *note multiprocessing: b7. and *note json: a4. modules, but +such as the *note multiprocessing: b8. and *note json: a5. modules, but there aren’t many new features that aren’t related to Python 3.0 in some way. @@ -40025,7 +37445,7 @@ refer to the PEP for a particular new feature. Whenever possible, * PEP 3127; Integer Literal Support and Syntax: PEP 3127 Integer Literal Support and Syntax. * PEP 3129; Class Decorators: PEP 3129 Class Decorators. * PEP 3141; A Type Hierarchy for Numbers: PEP 3141 A Type Hierarchy for Numbers. -* Other Language Changes: Other Language Changes<11>. +* Other Language Changes: Other Language Changes<10>. * New and Improved Modules: New and Improved Modules<2>. * Deprecations and Removals:: * Build and C API Changes: Build and C API Changes<9>. @@ -40039,7 +37459,7 @@ refer to the PEP for a particular new feature. Whenever possible,  File: python.info, Node: Python 3 0, Next: Changes to the Development Process, Up: What’s New in Python 2 6 -1.12.1 Python 3.0 +1.11.1 Python 3.0 ----------------- The development cycle for Python versions 2.6 and 3.0 was synchronized, @@ -40054,18 +37474,18 @@ features won’t cause existing code to break, they’ve been backported to 2.6 and are described in this document in the appropriate place. Some of the 3.0-derived features are: - * A *note __complex__(): 2c8. method for converting objects to a - complex number. + * A ‘__complex__()’ method for converting objects to a complex + number. * Alternate syntax for catching exceptions: ‘except TypeError as exc’. - * The addition of *note functools.reduce(): d39. as a synonym for the + * The addition of *note functools.reduce(): c4b. as a synonym for the built-in ‘reduce()’ function. Python 3.0 adds several new built-in functions and changes the semantics of some existing builtins. Functions that are new in 3.0 such as *note -bin(): d0a. have simply been added to Python 2.6, but existing builtins +bin(): c1f. have simply been added to Python 2.6, but existing builtins haven’t been changed; instead, the ‘future_builtins’ module has versions with the new 3.0 semantics. Code written to be compatible with 3.0 can do ‘from future_builtins import hex, map’ as necessary. @@ -40093,7 +37513,7 @@ explore the higher-numbered PEPS that propose specific features.  File: python.info, Node: Changes to the Development Process, Next: PEP 343 The ‘with’ statement, Prev: Python 3 0, Up: What’s New in Python 2 6 -1.12.2 Changes to the Development Process +1.11.2 Changes to the Development Process ----------------------------------------- While 2.6 was being developed, the Python development process underwent @@ -40109,7 +37529,7 @@ from LaTeX to reStructuredText.  File: python.info, Node: New Issue Tracker Roundup, Next: New Documentation Format reStructuredText Using Sphinx, Up: Changes to the Development Process -1.12.2.1 New Issue Tracker: Roundup +1.11.2.1 New Issue Tracker: Roundup ................................... For a long time, the Python developers had been growing increasingly @@ -40174,7 +37594,7 @@ See also  File: python.info, Node: New Documentation Format reStructuredText Using Sphinx, Prev: New Issue Tracker Roundup, Up: Changes to the Development Process -1.12.2.2 New Documentation Format: reStructuredText Using Sphinx +1.11.2.2 New Documentation Format: reStructuredText Using Sphinx ................................................................ The Python documentation was written using LaTeX since the project @@ -40238,10 +37658,10 @@ Docutils(4)  File: python.info, Node: PEP 343 The ‘with’ statement, Next: PEP 366 Explicit Relative Imports From a Main Module, Prev: Changes to the Development Process, Up: What’s New in Python 2 6 -1.12.3 PEP 343: The ‘with’ statement +1.11.3 PEP 343: The ‘with’ statement ------------------------------------ -The previous version, Python 2.5, added the ‘*note with: 7dc.’ statement +The previous version, Python 2.5, added the ‘*note with: 6d0.’ statement as an optional feature, to be enabled by a ‘from __future__ import with_statement’ directive. In 2.6 the statement no longer needs to be specially enabled; this means that ‘with’ is now always a keyword. The @@ -40249,33 +37669,33 @@ rest of this section is a copy of the corresponding section from the “What’s New in Python 2.5” document; if you’re familiar with the ‘‘with’’ statement from Python 2.5, you can skip this section. -The ‘*note with: 7dc.’ statement clarifies code that previously would +The ‘*note with: 6d0.’ statement clarifies code that previously would use ‘try...finally’ blocks to ensure that clean-up code is executed. In this section, I’ll discuss the statement as it will commonly be used. In the next section, I’ll examine the implementation details and show how to write objects for use with this statement. -The ‘*note with: 7dc.’ statement is a control-flow structure whose basic +The ‘*note with: 6d0.’ statement is a control-flow structure whose basic structure is: with expression [as variable]: with-block The expression is evaluated, and it should result in an object that -supports the context management protocol (that is, has *note -__enter__(): d5f. and *note __exit__(): d60. methods). +supports the context management protocol (that is, has ‘__enter__()’ and +‘__exit__()’ methods). -The object’s *note __enter__(): d5f. is called before `with-block' is -executed and therefore can run set-up code. It also may return a value -that is bound to the name `variable', if given. (Note carefully that -`variable' is `not' assigned the result of `expression'.) +The object’s ‘__enter__()’ is called before `with-block' is executed and +therefore can run set-up code. It also may return a value that is bound +to the name `variable', if given. (Note carefully that `variable' is +`not' assigned the result of `expression'.) -After execution of the `with-block' is finished, the object’s *note -__exit__(): d60. method is called, even if the block raised an -exception, and can therefore run clean-up code. +After execution of the `with-block' is finished, the object’s +‘__exit__()’ method is called, even if the block raised an exception, +and can therefore run clean-up code. Some standard Python objects now support the context management protocol -and can be used with the ‘*note with: 7dc.’ statement. File objects are +and can be used with the ‘*note with: 6d0.’ statement. File objects are one example: with open('/etc/passwd', 'r') as f: @@ -40284,14 +37704,14 @@ one example: ... more processing code ... After this statement has executed, the file object in `f' will have been -automatically closed, even if the *note for: cfc. loop raised an +automatically closed, even if the *note for: c10. loop raised an exception part-way through the block. Note: In this case, `f' is the same object created by *note open(): - 16f, because ‘file.__enter__()’ returns `self'. + 4e1, because ‘file.__enter__()’ returns `self'. -The *note threading: 10b. module’s locks and condition variables also -support the ‘*note with: 7dc.’ statement: +The *note threading: 10a. module’s locks and condition variables also +support the ‘*note with: 6d0.’ statement: lock = threading.Lock() with lock: @@ -40301,7 +37721,7 @@ support the ‘*note with: 7dc.’ statement: The lock is acquired before the block is executed and always released once the block is complete. -The ‘localcontext()’ function in the *note decimal: 35. module makes it +The ‘localcontext()’ function in the *note decimal: 36. module makes it easy to save and restore the current decimal context, which encapsulates the desired precision and rounding characteristics for computations: @@ -40324,10 +37744,10 @@ the desired precision and rounding characteristics for computations:  File: python.info, Node: Writing Context Managers, Next: The contextlib module, Up: PEP 343 The ‘with’ statement -1.12.3.1 Writing Context Managers +1.11.3.1 Writing Context Managers ................................. -Under the hood, the ‘*note with: 7dc.’ statement is fairly complicated. +Under the hood, the ‘*note with: 6d0.’ statement is fairly complicated. Most people will only use ‘‘with’’ in company with existing objects and don’t need to know these details, so you can skip the rest of this section if you like. Authors of new objects will need to understand the @@ -40336,29 +37756,28 @@ details of the underlying implementation and should keep reading. A high-level explanation of the context management protocol is: * The expression is evaluated and should result in an object called a - “context manager”. The context manager must have *note - __enter__(): d5f. and *note __exit__(): d60. methods. + “context manager”. The context manager must have ‘__enter__()’ and + ‘__exit__()’ methods. - * The context manager’s *note __enter__(): d5f. method is called. - The value returned is assigned to `VAR'. If no ‘as VAR’ clause is - present, the value is simply discarded. + * The context manager’s ‘__enter__()’ method is called. The value + returned is assigned to `VAR'. If no ‘as VAR’ clause is present, + the value is simply discarded. * The code in `BLOCK' is executed. - * If `BLOCK' raises an exception, the context manager’s *note - __exit__(): d60. method is called with three arguments, the - exception details (‘type, value, traceback’, the same values - returned by *note sys.exc_info(): d29, which can also be ‘None’ if - no exception occurred). The method’s return value controls whether - an exception is re-raised: any false value re-raises the exception, - and ‘True’ will result in suppressing it. You’ll only rarely want - to suppress the exception, because if you do the author of the code - containing the ‘*note with: 7dc.’ statement will never realize - anything went wrong. + * If `BLOCK' raises an exception, the context manager’s ‘__exit__()’ + method is called with three arguments, the exception details + (‘type, value, traceback’, the same values returned by *note + sys.exc_info(): c3e, which can also be ‘None’ if no exception + occurred). The method’s return value controls whether an exception + is re-raised: any false value re-raises the exception, and ‘True’ + will result in suppressing it. You’ll only rarely want to suppress + the exception, because if you do the author of the code containing + the ‘*note with: 6d0.’ statement will never realize anything went + wrong. - * If `BLOCK' didn’t raise an exception, the *note __exit__(): d60. - method is still called, but `type', `value', and `traceback' are - all ‘None’. + * If `BLOCK' didn’t raise an exception, the ‘__exit__()’ method is + still called, but `type', `value', and `traceback' are all ‘None’. Let’s think through an example. I won’t present detailed code but will only sketch the methods necessary for a database that supports @@ -40392,11 +37811,11 @@ interface for ‘DatabaseConnection’ that I’ll assume: def rollback(self): "Rolls back current transaction" -The *note __enter__(): d5f. method is pretty easy, having only to start -a new transaction. For this application the resulting cursor object -would be a useful result, so the method will return it. The user can -then add ‘as cursor’ to their ‘*note with: 7dc.’ statement to bind the -cursor to a variable name. +The ‘__enter__()’ method is pretty easy, having only to start a new +transaction. For this application the resulting cursor object would be +a useful result, so the method will return it. The user can then add +‘as cursor’ to their ‘*note with: 6d0.’ statement to bind the cursor to +a variable name. class DatabaseConnection: ... @@ -40405,15 +37824,15 @@ cursor to a variable name. cursor = self.cursor() return cursor -The *note __exit__(): d60. method is the most complicated because it’s -where most of the work has to be done. The method has to check if an -exception occurred. If there was no exception, the transaction is -committed. The transaction is rolled back if there was an exception. +The ‘__exit__()’ method is the most complicated because it’s where most +of the work has to be done. The method has to check if an exception +occurred. If there was no exception, the transaction is committed. The +transaction is rolled back if there was an exception. In the code below, execution will just fall off the end of the function, returning the default value of ‘None’. ‘None’ is false, so the exception will be re-raised automatically. If you wished, you could be -more explicit and add a *note return: 2cb. statement at the marked +more explicit and add a *note return: 17d. statement at the marked location. class DatabaseConnection: @@ -40430,22 +37849,21 @@ location.  File: python.info, Node: The contextlib module, Prev: Writing Context Managers, Up: PEP 343 The ‘with’ statement -1.12.3.2 The contextlib module +1.11.3.2 The contextlib module .............................. -The *note contextlib: 23. module provides some functions and a decorator -that are useful when writing objects for use with the ‘*note with: 7dc.’ +The *note contextlib: 24. module provides some functions and a decorator +that are useful when writing objects for use with the ‘*note with: 6d0.’ statement. The decorator is called ‘contextmanager()’, and lets you write a single generator function instead of defining a new class. The generator -should yield exactly one value. The code up to the *note yield: 2ca. -will be executed as the *note __enter__(): d5f. method, and the value -yielded will be the method’s return value that will get bound to the -variable in the ‘*note with: 7dc.’ statement’s ‘as’ clause, if any. The -code after the ‘yield’ will be executed in the *note __exit__(): d60. -method. Any exception raised in the block will be raised by the ‘yield’ -statement. +should yield exactly one value. The code up to the *note yield: 17c. +will be executed as the ‘__enter__()’ method, and the value yielded will +be the method’s return value that will get bound to the variable in the +‘*note with: 6d0.’ statement’s ‘as’ clause, if any. The code after the +‘yield’ will be executed in the ‘__exit__()’ method. Any exception +raised in the block will be raised by the ‘yield’ statement. Using this decorator, our database example from the previous section could be written as: @@ -40467,9 +37885,9 @@ could be written as: with db_transaction(db) as cursor: ... -The *note contextlib: 23. module also has a ‘nested(mgr1, mgr2, ...)’ +The *note contextlib: 24. module also has a ‘nested(mgr1, mgr2, ...)’ function that combines a number of context managers so you don’t need to -write nested ‘*note with: 7dc.’ statements. In this example, the single +write nested ‘*note with: 6d0.’ statements. In this example, the single ‘‘with’’ statement both starts a database transaction and acquires a thread lock: @@ -40495,10 +37913,10 @@ PEP 343(1) - The “with” statement PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland, Guido van Rossum, and Neal Norwitz. The PEP shows the - code generated for a ‘*note with: 7dc.’ statement, which can be + code generated for a ‘*note with: 6d0.’ statement, which can be helpful in learning how the statement works. -The documentation for the *note contextlib: 23. module. +The documentation for the *note contextlib: 24. module. ---------- Footnotes ---------- @@ -40507,27 +37925,27 @@ The documentation for the *note contextlib: 23. module.  File: python.info, Node: PEP 366 Explicit Relative Imports From a Main Module, Next: PEP 370 Per-user site-packages Directory, Prev: PEP 343 The ‘with’ statement, Up: What’s New in Python 2 6 -1.12.4 PEP 366: Explicit Relative Imports From a Main Module +1.11.4 PEP 366: Explicit Relative Imports From a Main Module ------------------------------------------------------------ -Python’s *note -m: 445. switch allows running a module as a script. +Python’s *note -m: 328. switch allows running a module as a script. When you ran a module that was located inside a package, relative imports didn’t work correctly. -The fix for Python 2.6 adds a *note __package__: a38. attribute to +The fix for Python 2.6 adds a *note __package__: 936. attribute to modules. When this attribute is present, relative imports will be relative to the value of this attribute instead of the *note __name__: -dda. attribute. +ce9. attribute. -PEP 302-style importers can then set *note __package__: a38. as -necessary. The *note runpy: e2. module that implements the *note -m: -445. switch now does this, so relative imports will now work correctly +PEP 302-style importers can then set *note __package__: 936. as +necessary. The *note runpy: e3. module that implements the *note -m: +328. switch now does this, so relative imports will now work correctly in scripts running from inside a package.  File: python.info, Node: PEP 370 Per-user site-packages Directory, Next: PEP 371 The multiprocessing Package, Prev: PEP 366 Explicit Relative Imports From a Main Module, Up: What’s New in Python 2 6 -1.12.5 PEP 370: Per-user ‘site-packages’ Directory +1.11.5 PEP 370: Per-user ‘site-packages’ Directory -------------------------------------------------- When you run Python, the module search path ‘sys.path’ usually includes @@ -40547,14 +37965,14 @@ such as ‘lib/python2.6/site-packages’ on Unix/Mac OS and ‘Python26/site-packages’ on Windows. If you don’t like the default directory, it can be overridden by an -environment variable. *note PYTHONUSERBASE: ddc. sets the root +environment variable. *note PYTHONUSERBASE: ceb. sets the root directory used for all Python versions supporting this feature. On Windows, the directory for application-specific data can be changed by setting the ‘APPDATA’ environment variable. You can also modify the ‘site.py’ file for your Python installation. The feature can be disabled entirely by running Python with the *note --s: ddd. option or setting the *note PYTHONNOUSERSITE: dde. environment +-s: cec. option or setting the *note PYTHONNOUSERSITE: ced. environment variable. See also @@ -40571,17 +37989,17 @@ PEP 370(1) - Per-user ‘site-packages’ Directory  File: python.info, Node: PEP 371 The multiprocessing Package, Next: PEP 3101 Advanced String Formatting, Prev: PEP 370 Per-user site-packages Directory, Up: What’s New in Python 2 6 -1.12.6 PEP 371: The ‘multiprocessing’ Package +1.11.6 PEP 371: The ‘multiprocessing’ Package --------------------------------------------- -The new *note multiprocessing: b7. package lets Python programs create +The new *note multiprocessing: b8. package lets Python programs create new processes that will perform a computation and return a result to the parent. The parent and child processes can communicate using queues and pipes, synchronize their operations using locks and semaphores, and can share simple arrays of data. -The *note multiprocessing: b7. module started out as an exact emulation -of the *note threading: 10b. module using processes instead of threads. +The *note multiprocessing: b8. module started out as an exact emulation +of the *note threading: 10a. module using processes instead of threads. That goal was discarded along the path to Python 2.6, but the general approach of the module is still similar. The fundamental class is the ‘Process’, which is passed a callable object and a collection of @@ -40624,17 +38042,17 @@ significantly longer when the input argument is a multiple of 4. result = queue.get() print 'Factorial', N, '=', result -A *note Queue: de0. is used to communicate the result of the factorial. -The *note Queue: de0. object is stored in a global variable. The child +A *note Queue: cef. is used to communicate the result of the factorial. +The *note Queue: cef. object is stored in a global variable. The child process will use the value of the variable when the child was created; -because it’s a *note Queue: de0, parent and child can use the object to +because it’s a *note Queue: cef, parent and child can use the object to communicate. (If the parent were to change the value of the global variable, the child’s value would be unaffected, and vice versa.) Two other classes, ‘Pool’ and ‘Manager’, provide higher-level interfaces. ‘Pool’ will create a fixed number of worker processes, and requests can then be distributed to the workers by calling ‘apply()’ or -‘apply_async()’ to add a single request, and *note map(): cf9. or +‘apply_async()’ to add a single request, and *note map(): c0d. or ‘map_async()’ to add a number of requests. The following code uses a ‘Pool’ to spread requests across 5 worker processes and retrieve a list of results: @@ -40662,7 +38080,7 @@ The other high-level interface, the ‘Manager’ class, creates a separate server process that can hold master copies of Python data structures. Other processes can then access and modify these data structures using proxy objects. The following example creates a shared dictionary by -calling the *note dict(): 164. method; the worker processes then insert +calling the *note dict(): 1a4. method; the worker processes then insert values into the dictionary. (Locking is not done for you automatically, which doesn’t matter in this example. ‘Manager’’s methods also include ‘Lock()’, ‘RLock()’, and ‘Semaphore()’ to create shared locks.) @@ -40711,7 +38129,7 @@ This will produce the output: See also ........ -The documentation for the *note multiprocessing: b7. module. +The documentation for the *note multiprocessing: b8. module. PEP 371(1) - Addition of the multiprocessing package @@ -40725,12 +38143,12 @@ PEP 371(1) - Addition of the multiprocessing package  File: python.info, Node: PEP 3101 Advanced String Formatting, Next: PEP 3105 print As a Function, Prev: PEP 371 The multiprocessing Package, Up: What’s New in Python 2 6 -1.12.7 PEP 3101: Advanced String Formatting +1.11.7 PEP 3101: Advanced String Formatting ------------------------------------------- In Python 3.0, the ‘%’ operator is supplemented by a more powerful -string formatting method, *note format(): 5d8. Support for the *note -str.format(): 5d7. method has been backported to Python 2.6. +string formatting method, *note format(): 4cc. Support for the *note +str.format(): 4cb. method has been backported to Python 2.6. In 2.6, both 8-bit and Unicode strings have a ‘.format()’ method that treats the string as a template and takes the arguments to be formatted. @@ -40823,7 +38241,7 @@ formatted as a general number or in exponential notation: '3.750000e+00' A variety of presentation types are available. Consult the 2.6 -documentation for a *note complete list: de2.; here’s a sample: +documentation for a *note complete list: cf1.; here’s a sample: ‘b’ Binary. Outputs the number in base 2. @@ -40860,9 +38278,8 @@ documentation for a *note complete list: de2.; here’s a sample: format, followed by a percent sign. -Classes and types can define a *note __format__(): a31. method to -control how they’re formatted. It receives a single argument, the -format specifier: +Classes and types can define a ‘__format__()’ method to control how +they’re formatted. It receives a single argument, the format specifier: def __format__(self, format_spec): if isinstance(format_spec, unicode): @@ -40870,9 +38287,9 @@ format specifier: else: return str(self) -There’s also a *note format(): 5d8. builtin that will format a single -value. It calls the type’s *note __format__(): a31. method with the -provided specifier: +There’s also a *note format(): 4cc. builtin that will format a single +value. It calls the type’s ‘__format__()’ method with the provided +specifier: >>> format(75.6564, '.2f') '75.66' @@ -40880,7 +38297,7 @@ provided specifier: See also ........ -*note Format String Syntax: de2. +*note Format String Syntax: cf1. The reference documentation for format fields. @@ -40895,11 +38312,11 @@ PEP 3101(1) - Advanced String Formatting  File: python.info, Node: PEP 3105 print As a Function, Next: PEP 3110 Exception-Handling Changes, Prev: PEP 3101 Advanced String Formatting, Up: What’s New in Python 2 6 -1.12.8 PEP 3105: ‘print’ As a Function +1.11.8 PEP 3105: ‘print’ As a Function -------------------------------------- -The ‘print’ statement becomes the *note print(): 973. function in Python -3.0. Making *note print(): 973. a function makes it possible to replace +The ‘print’ statement becomes the *note print(): 86b. function in Python +3.0. Making *note print(): 86b. a function makes it possible to replace the function by doing ‘def print(...)’ or importing a new function from somewhere else. @@ -40938,7 +38355,7 @@ PEP 3105(1) - Make print a function  File: python.info, Node: PEP 3110 Exception-Handling Changes, Next: PEP 3112 Byte Literals, Prev: PEP 3105 print As a Function, Up: What’s New in Python 2 6 -1.12.9 PEP 3110: Exception-Handling Changes +1.11.9 PEP 3110: Exception-Handling Changes ------------------------------------------- One error that Python programmers occasionally make is writing the @@ -40949,11 +38366,11 @@ following code: except TypeError, ValueError: # Wrong! ... -The author is probably trying to catch both *note TypeError: 1fe. and -*note ValueError: 16d. exceptions, but this code actually does something -different: it will catch *note TypeError: 1fe. and bind the resulting +The author is probably trying to catch both *note TypeError: 17f. and +*note ValueError: 1e7. exceptions, but this code actually does something +different: it will catch *note TypeError: 17f. and bind the resulting exception object to the local name ‘"ValueError"’. The *note -ValueError: 16d. exception will not be caught at all. The correct code +ValueError: 1e7. exception will not be caught at all. The correct code specifies a tuple of exceptions: try: @@ -40994,26 +38411,26 @@ PEP 3110(1) - Catching Exceptions in Python 3000  File: python.info, Node: PEP 3112 Byte Literals, Next: PEP 3116 New I/O Library, Prev: PEP 3110 Exception-Handling Changes, Up: What’s New in Python 2 6 -1.12.10 PEP 3112: Byte Literals +1.11.10 PEP 3112: Byte Literals ------------------------------- Python 3.0 adopts Unicode as the language’s fundamental string type and denotes 8-bit literals differently, either as ‘b'string'’ or using a -*note bytes: 172. constructor. For future compatibility, Python 2.6 -adds *note bytes: 172. as a synonym for the *note str: 205. type, and it +*note bytes: 322. constructor. For future compatibility, Python 2.6 +adds *note bytes: 322. as a synonym for the *note str: 321. type, and it also supports the ‘b''’ notation. -The 2.6 *note str: 205. differs from 3.0’s *note bytes: 172. type in +The 2.6 *note str: 321. differs from 3.0’s *note bytes: 322. type in various ways; most notably, the constructor is completely different. In 3.0, ‘bytes([65, 66, 67])’ is 3 elements long, containing the bytes representing ‘ABC’; in 2.6, ‘bytes([65, 66, 67])’ returns the 12-byte -string representing the *note str(): 205. of the list. +string representing the *note str(): 321. of the list. -The primary use of *note bytes: 172. in 2.6 will be to write tests of +The primary use of *note bytes: 322. in 2.6 will be to write tests of object type such as ‘isinstance(x, bytes)’. This will help the 2to3 converter, which can’t tell whether 2.x code intends strings to contain either characters or 8-bit bytes; you can now use either *note bytes: -172. or *note str: 205. to represent your intention exactly, and the +322. or *note str: 321. to represent your intention exactly, and the resulting code will also be correct in Python 3.0. There’s also a ‘__future__’ import that causes all string literals to @@ -41028,14 +38445,14 @@ used to include Unicode characters: print len(s) # 12 Unicode characters At the C level, Python 3.0 will rename the existing 8-bit string type, -called ‘PyStringObject’ in Python 2.x, to *note PyBytesObject: de6. +called ‘PyStringObject’ in Python 2.x, to *note PyBytesObject: cf5. Python 2.6 uses ‘#define’ to support using the names *note -PyBytesObject(): de6, *note PyBytes_Check(): de7, *note -PyBytes_FromStringAndSize(): de8, and all the other functions and macros +PyBytesObject(): cf5, *note PyBytes_Check(): cf6, *note +PyBytes_FromStringAndSize(): cf7, and all the other functions and macros used with strings. -Instances of the *note bytes: 172. type are immutable just as strings -are. A new *note bytearray: 173. type stores a mutable sequence of +Instances of the *note bytes: 322. type are immutable just as strings +are. A new *note bytearray: 323. type stores a mutable sequence of bytes: >>> bytearray([65, 66, 67]) @@ -41060,7 +38477,7 @@ of lists, such as ‘append()’, ‘pop()’, and ‘reverse()’. bytearray(b'ABCde') There’s also a corresponding C API, with *note PyByteArray_FromObject(): -de9, *note PyByteArray_FromStringAndSize(): dea, and various other +cf8, *note PyByteArray_FromStringAndSize(): cf9, and various other functions. See also @@ -41078,19 +38495,19 @@ PEP 3112(1) - Bytes literals in Python 3000  File: python.info, Node: PEP 3116 New I/O Library, Next: PEP 3118 Revised Buffer Protocol, Prev: PEP 3112 Byte Literals, Up: What’s New in Python 2 6 -1.12.11 PEP 3116: New I/O Library +1.11.11 PEP 3116: New I/O Library --------------------------------- Python’s built-in file objects support a number of methods, but file-like objects don’t necessarily support all of them. Objects that imitate files usually support ‘read()’ and ‘write()’, but they may not -support *note readline(): de, for example. Python 3.0 introduces a -layered I/O library in the *note io: a1. module that separates buffering +support *note readline(): df, for example. Python 3.0 introduces a +layered I/O library in the *note io: a2. module that separates buffering and text-handling features from the fundamental read and write operations. There are three levels of abstract base classes provided by the *note -io: a1. module: +io: a2. module: * ‘RawIOBase’ defines raw I/O operations: ‘read()’, ‘readinto()’, ‘write()’, ‘seek()’, ‘tell()’, ‘truncate()’, and ‘close()’. Most @@ -41119,8 +38536,8 @@ io: a1. module: * ‘TextIOBase’: Provides functions for reading and writing strings (remember, strings will be Unicode in Python 3.0), and supporting - *note universal newlines: 6ed. ‘TextIOBase’ defines the *note - readline(): de. method and supports iteration upon objects. + *note universal newlines: 5e1. ‘TextIOBase’ defines the *note + readline(): df. method and supports iteration upon objects. There are two concrete implementations. ‘TextIOWrapper’ wraps a buffered I/O object, supporting all of the methods for text I/O and @@ -41128,15 +38545,15 @@ io: a1. module: ‘StringIO’ simply buffers everything in memory without ever writing anything to disk. - (In Python 2.6, *note io.StringIO: 91c. is implemented in pure + (In Python 2.6, *note io.StringIO: 812. is implemented in pure Python, so it’s pretty slow. You should therefore stick with the existing ‘StringIO’ module or ‘cStringIO’ for now. At some point - Python 3.0’s *note io: a1. module will be rewritten into C for + Python 3.0’s *note io: a2. module will be rewritten into C for speed, and perhaps the C implementation will be backported to the 2.x releases.) In Python 2.6, the underlying implementations haven’t been restructured -to build on top of the *note io: a1. module’s classes. The module is +to build on top of the *note io: a2. module’s classes. The module is being provided to make it easier to write code that’s forward-compatible with 3.0, and to save developers the effort of writing their own implementations of buffering and text I/O. @@ -41157,13 +38574,13 @@ PEP 3116(1) - New I/O  File: python.info, Node: PEP 3118 Revised Buffer Protocol, Next: PEP 3119 Abstract Base Classes, Prev: PEP 3116 New I/O Library, Up: What’s New in Python 2 6 -1.12.12 PEP 3118: Revised Buffer Protocol +1.11.12 PEP 3118: Revised Buffer Protocol ----------------------------------------- The buffer protocol is a C-level API that lets Python types exchange pointers into their internal representations. A memory-mapped file can be viewed as a buffer of characters, for example, and this lets another -module such as *note re: dd. treat memory-mapped files as a string of +module such as *note re: de. treat memory-mapped files as a string of characters to be searched. The primary users of the buffer protocol are numeric-processing packages @@ -41181,7 +38598,7 @@ memory in place while an external caller could be modifying the contents, so there’s a corresponding ‘PyBuffer_Release(Py_buffer *view)’ to indicate that the external caller is done. -The `flags' argument to *note PyObject_GetBuffer(): ded. specifies +The `flags' argument to *note PyObject_GetBuffer(): cfc. specifies constraints upon the memory returned. Some examples are: * ‘PyBUF_WRITABLE’ indicates that the memory must be writable. @@ -41194,7 +38611,7 @@ constraints upon the memory returned. Some examples are: Fortran-contiguous (first dimension varies the fastest) array layout. -Two new argument codes for *note PyArg_ParseTuple(): 396, ‘s*’ and ‘z*’, +Two new argument codes for *note PyArg_ParseTuple(): 256, ‘s*’ and ‘z*’, return locked buffer objects for a parameter. See also @@ -41212,15 +38629,15 @@ PEP 3118(1) - Revising the buffer protocol  File: python.info, Node: PEP 3119 Abstract Base Classes, Next: PEP 3127 Integer Literal Support and Syntax, Prev: PEP 3118 Revised Buffer Protocol, Up: What’s New in Python 2 6 -1.12.13 PEP 3119: Abstract Base Classes +1.11.13 PEP 3119: Abstract Base Classes --------------------------------------- Some object-oriented languages such as Java support interfaces, declaring that a class has a given set of methods or supports a given access protocol. Abstract Base Classes (or ABCs) are an equivalent -feature for Python. The ABC support consists of an *note abc: 3. module +feature for Python. The ABC support consists of an *note abc: 4. module containing a metaclass called ‘ABCMeta’, special handling of this -metaclass by the *note isinstance(): 554. and *note issubclass(): 555. +metaclass by the *note isinstance(): 440. and *note issubclass(): 441. builtins, and a collection of basic ABCs that the Python developers think will be widely useful. Future versions of Python will probably add more ABCs. @@ -41231,16 +38648,16 @@ vague, however. It probably means that accessing items with ‘obj[1]’ works. Does it imply that setting items with ‘obj[2] = value’ works? Or that the object will have ‘keys()’, ‘values()’, and ‘items()’ methods? What about the iterative variants such as ‘iterkeys()’? *note -copy(): 25. and ‘update()’? Iterating over the object with *note -iter(): def.? +copy(): 26. and ‘update()’? Iterating over the object with *note +iter(): cfe.? -The Python 2.6 *note collections: 1d. module includes a number of +The Python 2.6 *note collections: 1e. module includes a number of different ABCs that represent these distinctions. ‘Iterable’ indicates -that a class defines *note __iter__(): 60b, and ‘Container’ means the -class defines a *note __contains__(): df0. method and therefore supports -‘x in y’ expressions. The basic dictionary interface of getting items, -setting items, and ‘keys()’, ‘values()’, and ‘items()’, is defined by -the ‘MutableMapping’ ABC. +that a class defines ‘__iter__()’, and ‘Container’ means the class +defines a ‘__contains__()’ method and therefore supports ‘x in y’ +expressions. The basic dictionary interface of getting items, setting +items, and ‘keys()’, ‘values()’, and ‘items()’, is defined by the +‘MutableMapping’ ABC. You can derive your own classes from a particular ABC to indicate they support that ABC’s interface: @@ -41361,7 +38778,7 @@ PEP 3119(1) - Introducing Abstract Base Classes  File: python.info, Node: PEP 3127 Integer Literal Support and Syntax, Next: PEP 3129 Class Decorators, Prev: PEP 3119 Abstract Base Classes, Up: What’s New in Python 2 6 -1.12.14 PEP 3127: Integer Literal Support and Syntax +1.11.14 PEP 3127: Integer Literal Support and Syntax ---------------------------------------------------- Python 3.0 changes the syntax for octal (base-8) integer literals, @@ -41377,8 +38794,8 @@ number, but it does add support for “0o” and “0b”: >>> 0b101111 47 -The *note oct(): d2f. builtin still returns numbers prefixed with a -leading zero, and a new *note bin(): d0a. builtin returns the binary +The *note oct(): c42. builtin still returns numbers prefixed with a +leading zero, and a new *note bin(): c1f. builtin returns the binary representation for a number: >>> oct(42) @@ -41388,7 +38805,7 @@ representation for a number: >>> bin(173) '0b10101101' -The *note int(): 204. and ‘long()’ builtins will now accept the “0o” and +The *note int(): 171. and ‘long()’ builtins will now accept the “0o” and “0b” prefixes when base-8 or base-2 are requested, or when the `base' argument is zero (signalling that the base used should be determined from the string): @@ -41416,7 +38833,7 @@ PEP 3127(1) - Integer Literal Support and Syntax  File: python.info, Node: PEP 3129 Class Decorators, Next: PEP 3141 A Type Hierarchy for Numbers, Prev: PEP 3127 Integer Literal Support and Syntax, Up: What’s New in Python 2 6 -1.12.15 PEP 3129: Class Decorators +1.11.15 PEP 3129: Class Decorators ---------------------------------- Decorators have been extended from functions to classes. It’s now legal @@ -41446,14 +38863,14 @@ PEP 3129(1) - Class Decorators (1) https://www.python.org/dev/peps/pep-3129  -File: python.info, Node: PEP 3141 A Type Hierarchy for Numbers, Next: Other Language Changes<11>, Prev: PEP 3129 Class Decorators, Up: What’s New in Python 2 6 +File: python.info, Node: PEP 3141 A Type Hierarchy for Numbers, Next: Other Language Changes<10>, Prev: PEP 3129 Class Decorators, Up: What’s New in Python 2 6 -1.12.16 PEP 3141: A Type Hierarchy for Numbers +1.11.16 PEP 3141: A Type Hierarchy for Numbers ---------------------------------------------- Python 3.0 adds several abstract base classes for numeric types inspired by Scheme’s numeric tower. These classes were backported to 2.6 as the -*note numbers: c1. module. +*note numbers: c2. module. The most general ABC is ‘Number’. It defines no operations at all, and only exists to allow checking if an object is a number by doing @@ -41472,17 +38889,17 @@ remainder mod N, floor division, and comparisons. ‘Rational’ numbers derive from ‘Real’, have ‘numerator’ and ‘denominator’ properties, and can be converted to floats. Python 2.6 adds a simple rational-number class, ‘Fraction’, in the *note fractions: -81. module. (It’s called ‘Fraction’ instead of ‘Rational’ to avoid a -name clash with *note numbers.Rational: d22.) +83. module. (It’s called ‘Fraction’ instead of ‘Rational’ to avoid a +name clash with *note numbers.Rational: c37.) ‘Integral’ numbers derive from ‘Rational’, and can be shifted left and right with ‘<<’ and ‘>>’, combined using bitwise operations such as ‘&’ and ‘|’, and can be used as array indexes and slice boundaries. In Python 3.0, the PEP slightly redefines the existing builtins *note -round(): d37, *note math.floor(): df4, *note math.ceil(): df5, and adds -a new one, *note math.trunc(): df6, that’s been backported to Python -2.6. *note math.trunc(): df6. rounds toward zero, returning the closest +round(): c49, *note math.floor(): d02, *note math.ceil(): d03, and adds +a new one, *note math.trunc(): d04, that’s been backported to Python +2.6. *note math.trunc(): d04. rounds toward zero, returning the closest ‘Integral’ that’s between the function’s argument and zero. See also @@ -41513,10 +38930,10 @@ http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2  File: python.info, Node: The fractions Module, Up: PEP 3141 A Type Hierarchy for Numbers -1.12.16.1 The ‘fractions’ Module +1.11.16.1 The ‘fractions’ Module ................................ -To fill out the hierarchy of numeric types, the *note fractions: 81. +To fill out the hierarchy of numeric types, the *note fractions: 83. module provides a rational-number class. Rational numbers store their values as a numerator and denominator forming a fraction, and can exactly represent numbers such as ‘2/3’ that floating-point numbers can @@ -41552,15 +38969,15 @@ numbers, such as 1./3, are not simplified to the number being approximated; the fraction attempts to match the floating-point value `exactly'. -The *note fractions: 81. module is based upon an implementation by +The *note fractions: 83. module is based upon an implementation by Sjoerd Mullender that was in Python’s ‘Demo/classes/’ directory for a long time. This implementation was significantly updated by Jeffrey Yasskin.  -File: python.info, Node: Other Language Changes<11>, Next: New and Improved Modules<2>, Prev: PEP 3141 A Type Hierarchy for Numbers, Up: What’s New in Python 2 6 +File: python.info, Node: Other Language Changes<10>, Next: New and Improved Modules<2>, Prev: PEP 3141 A Type Hierarchy for Numbers, Up: What’s New in Python 2 6 -1.12.17 Other Language Changes +1.11.17 Other Language Changes ------------------------------ Some smaller changes made to the core Python language are: @@ -41572,13 +38989,13 @@ Some smaller changes made to the core Python language are: subsequently revised by Phillip J. Eby and Nick Coghlan; bpo-1739468(1).) - * The *note hasattr(): 54c. function was catching and ignoring all - errors, under the assumption that they meant a *note __getattr__(): - 42c. method was failing somehow and the return value of *note - hasattr(): 54c. would therefore be ‘False’. This logic shouldn’t - be applied to *note KeyboardInterrupt: 2cf. and *note SystemExit: - 6f5, however; Python 2.6 will no longer discard such exceptions - when *note hasattr(): 54c. encounters them. (Fixed by Benjamin + * The *note hasattr(): 437. function was catching and ignoring all + errors, under the assumption that they meant a ‘__getattr__()’ + method was failing somehow and the return value of *note hasattr(): + 437. would therefore be ‘False’. This logic shouldn’t be applied + to *note KeyboardInterrupt: 184. and *note SystemExit: 5e9, + however; Python 2.6 will no longer discard such exceptions when + *note hasattr(): 437. encounters them. (Fixed by Benjamin Peterson; bpo-2196(2).) * When calling a function using the ‘**’ syntax to provide keyword @@ -41611,7 +39028,7 @@ Some smaller changes made to the core Python language are: * A new builtin, ‘next(iterator, [default])’ returns the next item from the specified iterator. If the `default' argument is supplied, it will be returned if `iterator' has been exhausted; - otherwise, the *note StopIteration: 584. exception will be raised. + otherwise, the *note StopIteration: 477. exception will be raised. (Backported in bpo-2719(5).) * Tuples now have ‘index()’ and ‘count()’ methods matching the list @@ -41669,13 +39086,13 @@ Some smaller changes made to the core Python language are: (Contributed by Raymond Hettinger.) - * Many floating-point features were added. The *note float(): 1fd. + * Many floating-point features were added. The *note float(): 174. function will now turn the string ‘nan’ into an IEEE 754 Not A Number value, and ‘+inf’ and ‘-inf’ into positive or negative infinity. This works on any platform with IEEE 754 semantics. (Contributed by Christian Heimes; bpo-1635(6).) - Other functions in the *note math: b1. module, ‘isinf()’ and + Other functions in the *note math: b2. module, ‘isinf()’ and ‘isnan()’, return true if their floating-point argument is infinite or Not A Number. (bpo-1640(7)) @@ -41683,7 +39100,7 @@ Some smaller changes made to the core Python language are: into hexadecimal strings (bpo-3008(8)). These functions convert floats to and from a string representation without introducing rounding errors from the conversion between decimal and binary. - Floats have a *note hex(): d30. method that returns a string + Floats have a *note hex(): c43. method that returns a string representation, and the ‘float.fromhex()’ method converts a string back into a number: @@ -41698,40 +39115,38 @@ Some smaller changes made to the core Python language are: * A numerical nicety: when creating a complex number from two floats on systems that support signed zeros (-0 and +0), the *note - complex(): 2c4. constructor will now preserve the sign of the zero. + complex(): 176. constructor will now preserve the sign of the zero. (Fixed by Mark T. Dickinson; bpo-1507(9).) - * Classes that inherit a *note __hash__(): 44e. method from a parent - class can set ‘__hash__ = None’ to indicate that the class isn’t - hashable. This will make ‘hash(obj)’ raise a *note TypeError: 1fe. - and the class will not be indicated as implementing the ‘Hashable’ - ABC. + * Classes that inherit a ‘__hash__()’ method from a parent class can + set ‘__hash__ = None’ to indicate that the class isn’t hashable. + This will make ‘hash(obj)’ raise a *note TypeError: 17f. and the + class will not be indicated as implementing the ‘Hashable’ ABC. - You should do this when you’ve defined a ‘__cmp__()’ or *note - __eq__(): 44d. method that compares objects by their value rather - than by identity. All objects have a default hash method that uses + You should do this when you’ve defined a ‘__cmp__()’ or ‘__eq__()’ + method that compares objects by their value rather than by + identity. All objects have a default hash method that uses ‘id(obj)’ as the hash value. There’s no tidy way to remove the - *note __hash__(): 44e. method inherited from a parent class, so - assigning ‘None’ was implemented as an override. At the C level, - extensions can set ‘tp_hash’ to *note - PyObject_HashNotImplemented(): df9. (Fixed by Nick Coghlan and - Amaury Forgeot d’Arc; bpo-2235(10).) + ‘__hash__()’ method inherited from a parent class, so assigning + ‘None’ was implemented as an override. At the C level, extensions + can set ‘tp_hash’ to *note PyObject_HashNotImplemented(): d07. + (Fixed by Nick Coghlan and Amaury Forgeot d’Arc; bpo-2235(10).) - * The *note GeneratorExit: dfa. exception now subclasses *note - BaseException: 2de. instead of *note Exception: 2df. This means + * The *note GeneratorExit: d08. exception now subclasses *note + BaseException: 194. instead of *note Exception: 195. This means that an exception handler that does ‘except Exception:’ will not - inadvertently catch *note GeneratorExit: dfa. (Contributed by Chad + inadvertently catch *note GeneratorExit: d08. (Contributed by Chad Austin; bpo-1537(11).) * Generator objects now have a ‘gi_code’ attribute that refers to the original code object backing the generator. (Contributed by Collin Winter; bpo-1473257(12).) - * The *note compile(): 2ea. built-in function now accepts keyword + * The *note compile(): 1a0. built-in function now accepts keyword arguments as well as positional parameters. (Contributed by Thomas Wouters; bpo-1444529(13).) - * The *note complex(): 2c4. constructor now accepts strings + * The *note complex(): 176. constructor now accepts strings containing parenthesized complex numbers, meaning that ‘complex(repr(cplx))’ will now round-trip values. For example, ‘complex('(3+4j)')’ now returns the value (3+4j). @@ -41743,29 +39158,28 @@ Some smaller changes made to the core Python language are: only delete characters. (Contributed by Bengt Richter and implemented by Raymond Hettinger; bpo-1193128(15).) - * The built-in *note dir(): dfb. function now checks for a *note - __dir__(): 42d. method on the objects it receives. This method - must return a list of strings containing the names of valid - attributes for the object, and lets the object control the value - that *note dir(): dfb. produces. Objects that have *note - __getattr__(): 42c. or *note __getattribute__(): 54e. methods can - use this to advertise pseudo-attributes they will honor. - (bpo-1591665(16)) + * The built-in *note dir(): d09. function now checks for a + ‘__dir__()’ method on the objects it receives. This method must + return a list of strings containing the names of valid attributes + for the object, and lets the object control the value that *note + dir(): d09. produces. Objects that have ‘__getattr__()’ or + ‘__getattribute__()’ methods can use this to advertise + pseudo-attributes they will honor. (bpo-1591665(16)) * Instance method objects have new attributes for the object and function comprising the method; the new synonym for ‘im_self’ is ‘__self__’, and ‘im_func’ is also available as ‘__func__’. The old names are still supported in Python 2.6, but are gone in 3.0. - * An obscure change: when you use the *note locals(): 559. function - inside a *note class: d34. statement, the resulting dictionary no + * An obscure change: when you use the *note locals(): 446. function + inside a *note class: c46. statement, the resulting dictionary no longer returns free variables. (Free variables, in this case, are variables referenced in the ‘class’ statement that aren’t attributes of the class.) * Menu: -* Optimizations: Optimizations<10>. +* Optimizations: Optimizations<9>. * Interpreter Changes: Interpreter Changes<2>. ---------- Footnotes ---------- @@ -41803,12 +39217,12 @@ Some smaller changes made to the core Python language are: (16) https://bugs.python.org/issue1591665  -File: python.info, Node: Optimizations<10>, Next: Interpreter Changes<2>, Up: Other Language Changes<11> +File: python.info, Node: Optimizations<9>, Next: Interpreter Changes<2>, Up: Other Language Changes<10> -1.12.17.1 Optimizations +1.11.17.1 Optimizations ....................... - * The *note warnings: 12f. module has been rewritten in C. This makes + * The *note warnings: 127. module has been rewritten in C. This makes it possible to invoke warnings from the parser, and may also make the interpreter’s startup faster. (Contributed by Neal Norwitz and Brett Cannon; bpo-1631171(1).) @@ -41837,7 +39251,7 @@ File: python.info, Node: Optimizations<10>, Next: Interpreter Changes<2>, Up: full string comparison. (Contributed by Raymond Hettinger, after an initial implementation by Antoine Pitrou; bpo-1819(4).) - * All of the functions in the *note struct: f8. module have been + * All of the functions in the *note struct: f9. module have been rewritten in C, thanks to work at the Need For Speed sprint. (Contributed by Raymond Hettinger.) @@ -41850,8 +39264,8 @@ File: python.info, Node: Optimizations<10>, Next: Interpreter Changes<2>, Up: ‘splitlines()’ by 35%. (Contributed by Antoine Pitrou.) Memory usage is reduced by using pymalloc for the Unicode string’s data. - * The ‘with’ statement now stores the *note __exit__(): d60. method - on the stack, producing a small speedup. (Implemented by Jeffrey + * The ‘with’ statement now stores the ‘__exit__()’ method on the + stack, producing a small speedup. (Implemented by Jeffrey Yasskin.) * To reduce memory usage, the garbage collector will now clear @@ -41869,29 +39283,29 @@ File: python.info, Node: Optimizations<10>, Next: Interpreter Changes<2>, Up: (4) https://bugs.python.org/issue1819  -File: python.info, Node: Interpreter Changes<2>, Prev: Optimizations<10>, Up: Other Language Changes<11> +File: python.info, Node: Interpreter Changes<2>, Prev: Optimizations<9>, Up: Other Language Changes<10> -1.12.17.2 Interpreter Changes +1.11.17.2 Interpreter Changes ............................. Two command-line options have been reserved for use by other Python -implementations. The *note -J: dff. switch has been reserved for use by +implementations. The *note -J: d0d. switch has been reserved for use by Jython for Jython-specific options, such as switches that are passed to -the underlying JVM. *note -X: 293. has been reserved for options +the underlying JVM. *note -X: 156. has been reserved for options specific to a particular implementation of Python such as CPython, Jython, or IronPython. If either option is used with Python 2.6, the interpreter will report that the option isn’t currently used. Python can now be prevented from writing ‘.pyc’ or ‘.pyo’ files by -supplying the *note -B: e00. switch to the Python interpreter, or by -setting the *note PYTHONDONTWRITEBYTECODE: e01. environment variable +supplying the *note -B: d0e. switch to the Python interpreter, or by +setting the *note PYTHONDONTWRITEBYTECODE: d0f. environment variable before running the interpreter. This setting is available to Python programs as the ‘sys.dont_write_bytecode’ variable, and Python code can change the value to modify the interpreter’s behaviour. (Contributed by Neal Norwitz and Georg Brandl.) The encoding used for standard input, output, and standard error can be -specified by setting the *note PYTHONIOENCODING: a16. environment +specified by setting the *note PYTHONIOENCODING: 910. environment variable before running the interpreter. The value should be a string in the form ‘’ or ‘:’. The `encoding' part specifies the encoding’s name, e.g. ‘utf-8’ or ‘latin-1’; the @@ -41900,9 +39314,9 @@ can’t be handled by the encoding, and should be one of “error”, “ignore”, or “replace”. (Contributed by Martin von Löwis.)  -File: python.info, Node: New and Improved Modules<2>, Next: Deprecations and Removals, Prev: Other Language Changes<11>, Up: What’s New in Python 2 6 +File: python.info, Node: New and Improved Modules<2>, Next: Deprecations and Removals, Prev: Other Language Changes<10>, Up: What’s New in Python 2 6 -1.12.18 New and Improved Modules +1.11.18 New and Improved Modules -------------------------------- As in every release, Python’s standard library received a number of @@ -41911,7 +39325,7 @@ changes, sorted alphabetically by module name. Consult the ‘Misc/NEWS’ file in the source tree for a more complete list of changes, or look through the Subversion logs for all the details. - * The *note asyncore: a. and *note asynchat: 8. modules are being + * The *note asyncore: b. and *note asynchat: 9. modules are being actively maintained again, and a number of patches and bugfixes were applied. (Maintained by Josiah Carlson; see bpo-1736190(1) for one patch.) @@ -41927,19 +39341,19 @@ through the Subversion logs for all the details. available, instead of restricting itself to protocol 1. (Contributed by W. Barnes.) - * The *note cgi: 15. module will now read variables from the query + * The *note cgi: 16. module will now read variables from the query string of an HTTP POST request. This makes it possible to use form actions with URLs that include query strings such as “/cgi-bin/add.py?category=1”. (Contributed by Alexandre Fiori and Nubis; bpo-1817(3).) The ‘parse_qs()’ and ‘parse_qsl()’ functions have been relocated - from the *note cgi: 15. module to the ‘urlparse’ module. The - versions still available in the *note cgi: 15. module will trigger - *note PendingDeprecationWarning: 15c. messages in 2.6 + from the *note cgi: 16. module to the ‘urlparse’ module. The + versions still available in the *note cgi: 16. module will trigger + *note PendingDeprecationWarning: 265. messages in 2.6 (bpo-600362(4)). - * The *note cmath: 18. module underwent extensive revision, + * The *note cmath: 19. module underwent extensive revision, contributed by Mark Dickinson and Christian Heimes. Five new functions were added: @@ -41959,7 +39373,7 @@ through the Subversion logs for all the details. its argument is infinite. The revisions also improved the numerical soundness of the *note - cmath: 18. module. For all functions, the real and imaginary parts + cmath: 19. module. For all functions, the real and imaginary parts of the results are accurate to within a few units of least precision (ulps) whenever possible. See bpo-1381(5) for the details. The branch cuts for ‘asinh()’, ‘atanh()’: and ‘atan()’ @@ -41968,11 +39382,11 @@ through the Subversion logs for all the details. The tests for the module have been greatly expanded; nearly 2000 new test cases exercise the algebraic functions. - On IEEE 754 platforms, the *note cmath: 18. module now handles IEEE + On IEEE 754 platforms, the *note cmath: 19. module now handles IEEE 754 special values and floating-point exceptions in a manner consistent with Annex ‘G’ of the C99 standard. - * A new data type in the *note collections: 1d. module: + * A new data type in the *note collections: 1e. module: ‘namedtuple(typename, fieldnames)’ is a factory function that creates subclasses of the standard tuple whose fields are accessible by name as well as index. For example: @@ -42002,7 +39416,7 @@ through the Subversion logs for all the details. (Contributed by Raymond Hettinger.) - * Another change to the *note collections: 1d. module is that the + * Another change to the *note collections: 1e. module is that the ‘deque’ type now supports an optional `maxlen' parameter; if supplied, the deque’s size will be restricted to no more than `maxlen' items. Adding more items to a full deque causes old items @@ -42026,7 +39440,7 @@ through the Subversion logs for all the details. cannot be accessed or manipulated by JavaScript code. (Contributed by Arvin Schnell; bpo-1638033(6).) - * A new window method in the *note curses: 2b. module, ‘chgat()’, + * A new window method in the *note curses: 2c. module, ‘chgat()’, changes the display attributes for a certain number of characters on a single line. (Contributed by Fabian Kreutz.) @@ -42034,17 +39448,17 @@ through the Subversion logs for all the details. # and affecting the rest of the line. stdscr.chgat(0, 21, curses.A_BOLD) - The ‘Textbox’ class in the *note curses.textpad: 2e. module now + The ‘Textbox’ class in the *note curses.textpad: 2f. module now supports editing in insert mode as well as overwrite mode. Insert mode is enabled by supplying a true value for the `insert_mode' parameter when creating the ‘Textbox’ instance. - * The *note datetime: 30. module’s ‘strftime()’ methods now support a + * The *note datetime: 31. module’s ‘strftime()’ methods now support a ‘%f’ format code that expands to the number of microseconds in the object, zero-padded on the left to six places. (Contributed by Skip Montanaro; bpo-1158(7).) - * The *note decimal: 35. module was updated to version 1.66 of the + * The *note decimal: 36. module was updated to version 1.66 of the General Decimal Specification(8). New features include some methods for some basic mathematical functions such as ‘exp()’ and ‘log10()’: @@ -42062,12 +39476,12 @@ through the Subversion logs for all the details. (Implemented by Facundo Batista and Mark Dickinson. Named tuple support added by Raymond Hettinger.) - * The *note difflib: 36. module’s ‘SequenceMatcher’ class now returns + * The *note difflib: 37. module’s ‘SequenceMatcher’ class now returns named tuples representing matches, with ‘a’, ‘b’, and ‘size’ attributes. (Contributed by Raymond Hettinger.) * An optional ‘timeout’ parameter, specifying a timeout measured in - seconds, was added to the *note ftplib.FTP: 1a6. class constructor + seconds, was added to the *note ftplib.FTP: 2dc. class constructor as well as the ‘connect()’ method. (Added by Facundo Batista.) Also, the ‘FTP’ class’s ‘storbinary()’ and ‘storlines()’ now take an optional `callback' parameter that will be called with each @@ -42075,22 +39489,22 @@ through the Subversion logs for all the details. Schwartz; bpo-1221598(9).) * The ‘reduce()’ built-in function is also available in the *note - functools: 83. module. In Python 3.0, the builtin has been dropped - and ‘reduce()’ is only available from *note functools: 83.; + functools: 85. module. In Python 3.0, the builtin has been dropped + and ‘reduce()’ is only available from *note functools: 85.; currently there are no plans to drop the builtin in the 2.x series. (Patched by Christian Heimes; bpo-1739906(10).) - * When possible, the *note getpass: 86. module will now use + * When possible, the *note getpass: 88. module will now use ‘/dev/tty’ to print a prompt message and read the password, falling back to standard error and standard input. If the password may be echoed to the terminal, a warning is printed before the prompt is displayed. (Contributed by Gregory P. Smith.) - * The *note glob.glob(): 6bf. function can now return Unicode + * The *note glob.glob(): 5b3. function can now return Unicode filenames if a Unicode path was used and Unicode filenames are matched within the directory. (bpo-1001604(11)) - * A new function in the *note heapq: 8d. module, ‘merge(iter1, iter2, + * A new function in the *note heapq: 8e. module, ‘merge(iter1, iter2, ...)’, takes any number of iterables returning data in sorted order, and returns a new generator that returns the contents of all the iterators, also in sorted order. For example: @@ -42102,17 +39516,17 @@ through the Subversion logs for all the details. `heap', then pops off and returns the smallest item. This is more efficient than making a call to ‘heappush()’ and then ‘heappop()’. - *note heapq: 8d. is now implemented to only use less-than + *note heapq: 8e. is now implemented to only use less-than comparison, instead of the less-than-or-equal comparison it - previously used. This makes *note heapq: 8d.’s usage of a type - match the *note list.sort(): 54a. method. (Contributed by Raymond + previously used. This makes *note heapq: 8e.’s usage of a type + match the *note list.sort(): 435. method. (Contributed by Raymond Hettinger.) * An optional ‘timeout’ parameter, specifying a timeout measured in seconds, was added to the ‘httplib.HTTPConnection’ and ‘HTTPSConnection’ class constructors. (Added by Facundo Batista.) - * Most of the *note inspect: a0. module’s functions, such as + * Most of the *note inspect: a1. module’s functions, such as ‘getmoduleinfo()’ and ‘getargs()’, now return named tuples. In addition to behaving like tuples, the elements of the return value can also be accessed as attributes. (Contributed by Raymond @@ -42121,7 +39535,7 @@ through the Subversion logs for all the details. Some new functions in the module include ‘isgenerator()’, ‘isgeneratorfunction()’, and ‘isabstract()’. - * The *note itertools: a3. module gained several new functions. + * The *note itertools: a4. module gained several new functions. ‘izip_longest(iter1, iter2, ...[, fillvalue])’ makes tuples from each of the elements; if some of the iterables are shorter than @@ -42178,7 +39592,7 @@ through the Subversion logs for all the details. (4, 1), (4, 2), (4, 3)] ‘itertools.chain(*iterables)’ is an existing function in *note - itertools: a3. that gained a new constructor in Python 2.6. + itertools: a4. that gained a new constructor in Python 2.6. ‘itertools.chain.from_iterable(iterable)’ takes a single iterable that should return other iterables. ‘chain()’ will then return all the elements of the first iterable, then all the elements of the @@ -42189,7 +39603,7 @@ through the Subversion logs for all the details. (All contributed by Raymond Hettinger.) - * The *note logging: aa. module’s ‘FileHandler’ class and its + * The *note logging: ab. module’s ‘FileHandler’ class and its subclasses ‘WatchedFileHandler’, ‘RotatingFileHandler’, and ‘TimedRotatingFileHandler’ now have an optional `delay' parameter to their constructors. If `delay' is true, opening of the log file @@ -42201,59 +39615,59 @@ through the Subversion logs for all the details. midnight occurs and in generating filenames; otherwise local time will be used. - * Several new functions were added to the *note math: b1. module: + * Several new functions were added to the *note math: b2. module: - * *note isinf(): e03. and *note isnan(): e04. determine whether + * *note isinf(): d11. and *note isnan(): d12. determine whether a given float is a (positive or negative) infinity or a NaN (Not a Number), respectively. - * *note copysign(): e05. copies the sign bit of an IEEE 754 + * *note copysign(): d13. copies the sign bit of an IEEE 754 number, returning the absolute value of `x' combined with the sign bit of `y'. For example, ‘math.copysign(1, -0.0)’ returns -1.0. (Contributed by Christian Heimes.) - * *note factorial(): 1fc. computes the factorial of a number. + * *note factorial(): 1d6. computes the factorial of a number. (Contributed by Raymond Hettinger; bpo-2138(12).) - * *note fsum(): e06. adds up the stream of numbers from an + * *note fsum(): d14. adds up the stream of numbers from an iterable, and is careful to avoid loss of precision through using partial sums. (Contributed by Jean Brouwers, Raymond Hettinger, and Mark Dickinson; bpo-2819(13).) - * *note acosh(): e07, *note asinh(): e08. and *note atanh(): - e09. compute the inverse hyperbolic functions. + * *note acosh(): d15, *note asinh(): d16. and *note atanh(): + d17. compute the inverse hyperbolic functions. - * *note log1p(): e0a. returns the natural logarithm of `1+x' + * *note log1p(): d18. returns the natural logarithm of `1+x' (base `e'). * ‘trunc()’ rounds a number toward zero, returning the closest ‘Integral’ that’s between the function’s argument and zero. Added as part of the backport of *note PEP 3141’s type - hierarchy for numbers: d21. + hierarchy for numbers: c36. - * The *note math: b1. module has been improved to give more + * The *note math: b2. module has been improved to give more consistent behaviour across platforms, especially with respect to handling of floating-point exceptions and IEEE 754 special values. Whenever possible, the module follows the recommendations of the C99 standard about 754’s special values. For example, ‘sqrt(-1.)’ - should now give a *note ValueError: 16d. across almost all + should now give a *note ValueError: 1e7. across almost all platforms, while ‘sqrt(float('NaN'))’ should return a NaN on all IEEE 754 platforms. Where Annex ‘F’ of the C99 standard recommends signaling ‘divide-by-zero’ or ‘invalid’, Python will raise *note - ValueError: 16d. Where Annex ‘F’ of the C99 standard recommends - signaling ‘overflow’, Python will raise *note OverflowError: a43. + ValueError: 1e7. Where Annex ‘F’ of the C99 standard recommends + signaling ‘overflow’, Python will raise *note OverflowError: 941. (See bpo-711019(14) and bpo-1640(15).) (Contributed by Christian Heimes and Mark Dickinson.) - * *note mmap: 31f. objects now have a ‘rfind()’ method that searches + * *note mmap: 1d8. objects now have a ‘rfind()’ method that searches for a substring beginning at the end of the string and searching backwards. The ‘find()’ method also gained an `end' parameter giving an index at which to stop searching. (Contributed by John Lenton.) - * The *note operator: c2. module gained a ‘methodcaller()’ function + * The *note operator: c3. module gained a ‘methodcaller()’ function that takes a name and an optional set of arguments, returning a callable that will call the named function on any arguments passed to it. For example: @@ -42278,7 +39692,7 @@ through the Subversion logs for all the details. (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.) - * The *note os: c4. module now wraps several new system calls. + * The *note os: c5. module now wraps several new system calls. ‘fchmod(fd, mode)’ and ‘fchown(fd, uid, gid)’ change the mode and ownership of an opened file, and ‘lchmod(path, mode)’ changes the mode of a symlink. (Contributed by Georg Brandl and Christian @@ -42287,29 +39701,29 @@ through the Subversion logs for all the details. ‘chflags()’ and ‘lchflags()’ are wrappers for the corresponding system calls (where they’re available), changing the flags set on a file. Constants for the flag values are defined in the *note stat: - f4. module; some possible values include ‘UF_IMMUTABLE’ to signal + f5. module; some possible values include ‘UF_IMMUTABLE’ to signal the file may not be changed and ‘UF_APPEND’ to indicate that data can only be appended to the file. (Contributed by M. Levinson.) ‘os.closerange(low, high)’ efficiently closes all file descriptors from `low' to `high', ignoring any errors and not including `high' - itself. This function is now used by the *note subprocess: f9. + itself. This function is now used by the *note subprocess: fa. module to make starting processes faster. (Contributed by Georg Brandl; bpo-1663329(16).) * The ‘os.environ’ object’s ‘clear()’ method will now unset the - environment variables using *note os.unsetenv(): 1cc. in addition + environment variables using *note os.unsetenv(): d19. in addition to clearing the object’s keys. (Contributed by Martin Horcicka; bpo-1181(17).) - * The *note os.walk(): 749. function now has a ‘followlinks’ + * The *note os.walk(): 63d. function now has a ‘followlinks’ parameter. If set to True, it will follow symlinks pointing to directories and visit the directory’s contents. For backward compatibility, the parameter’s default value is false. Note that the function can fall into an infinite recursion if there’s a symlink that points to a parent directory. (bpo-1273829(18)) - * In the *note os.path: c5. module, the ‘splitext()’ function has + * In the *note os.path: c6. module, the ‘splitext()’ function has been changed to not split on leading period characters. This produces better results when operating on Unix’s dot-files. For example, ‘os.path.splitext('.ipython')’ now returns ‘('.ipython', @@ -42320,27 +39734,27 @@ through the Subversion logs for all the details. current working directory to the destination ‘path’. (Contributed by Richard Barran; bpo-1339796(20).) - On Windows, *note os.path.expandvars(): e0b. will now expand + On Windows, *note os.path.expandvars(): d1a. will now expand environment variables given in the form “%var%”, and “~user” will be expanded into the user’s home directory path. (Contributed by Josiah Carlson; bpo-957650(21).) - * The Python debugger provided by the *note pdb: c9. module gained a + * The Python debugger provided by the *note pdb: ca. module gained a new command: “run” restarts the Python program being debugged and can optionally take new command-line arguments for the program. (Contributed by Rocky Bernstein; bpo-1393667(22).) - * The *note pdb.post_mortem(): e0c. function, used to begin debugging + * The *note pdb.post_mortem(): d1b. function, used to begin debugging a traceback, will now use the traceback returned by *note - sys.exc_info(): d29. if no traceback is supplied. (Contributed by + sys.exc_info(): c3e. if no traceback is supplied. (Contributed by Facundo Batista; bpo-1106316(23).) - * The *note pickletools: cb. module now has an ‘optimize()’ function + * The *note pickletools: cc. module now has an ‘optimize()’ function that takes a string containing a pickle and removes some unused opcodes, returning a shorter pickle that contains the same data structure. (Contributed by Raymond Hettinger.) - * A ‘get_data()’ function was added to the *note pkgutil: cd. module + * A ‘get_data()’ function was added to the *note pkgutil: ce. module that returns the contents of resource files included with an installed Python package. For example: @@ -42368,7 +39782,7 @@ through the Subversion logs for all the details. meaning that it behaves like a stack. (Contributed by Raymond Hettinger.) - * The *note random: dc. module’s ‘Random’ objects can now be pickled + * The *note random: dd. module’s ‘Random’ objects can now be pickled on a 32-bit system and unpickled on a 64-bit system, and vice versa. Unfortunately, this change also means that Python 2.6’s ‘Random’ objects can’t be unpickled correctly on earlier versions @@ -42381,7 +39795,7 @@ through the Subversion logs for all the details. (Contributed by Wladmir van der Laan and Raymond Hettinger; bpo-1681432(27).) - * Long regular expression searches carried out by the *note re: dd. + * Long regular expression searches carried out by the *note re: de. module will check for signals being delivered, so time-consuming searches can now be interrupted. (Contributed by Josh Hoyt and Ralf Schmitt; bpo-846388(28).) @@ -42393,29 +39807,29 @@ through the Subversion logs for all the details. (Contributed by Guido van Rossum from work for Google App Engine; bpo-3487(29).) - * The *note rlcompleter: e1. module’s ‘Completer.complete()’ method + * The *note rlcompleter: e2. module’s ‘Completer.complete()’ method will now ignore exceptions triggered while evaluating a name. (Fixed by Lorenz Quack; bpo-2250(30).) - * The *note sched: e3. module’s ‘scheduler’ instances now have a - read-only *note queue: da. attribute that returns the contents of + * The *note sched: e4. module’s ‘scheduler’ instances now have a + read-only *note queue: db. attribute that returns the contents of the scheduler’s queue, represented as a list of named tuples with the fields ‘(time, priority, action, argument)’. (Contributed by Raymond Hettinger; bpo-1861(31).) - * The *note select: e5. module now has wrapper functions for the + * The *note select: e6. module now has wrapper functions for the Linux ‘epoll()’ and BSD ‘kqueue()’ system calls. ‘modify()’ method was added to the existing ‘poll’ objects; ‘pollobj.modify(fd, eventmask)’ takes a file descriptor or file object and an event mask, modifying the recorded event mask for that file. (Contributed by Christian Heimes; bpo-1657(32).) - * The *note shutil.copytree(): 34a. function now has an optional + * The *note shutil.copytree(): 206. function now has an optional `ignore' argument that takes a callable object. This callable will receive each directory path and a list of the directory’s contents, and returns a list of names that will be ignored, not copied. - The *note shutil: e9. module also provides an ‘ignore_patterns()’ + The *note shutil: ea. module also provides an ‘ignore_patterns()’ function for use with this new parameter. ‘ignore_patterns()’ takes an arbitrary number of glob-style patterns and returns a callable that will ignore any files and directories that match any @@ -42431,11 +39845,11 @@ through the Subversion logs for all the details. * Integrating signal handling with GUI handling event loops like those used by Tkinter or GTk+ has long been a problem; most software ends up polling, waking up every fraction of a second to - check if any GUI events have occurred. The *note signal: ea. + check if any GUI events have occurred. The *note signal: eb. module can now make this more efficient. Calling ‘signal.set_wakeup_fd(fd)’ sets a file descriptor to be used; when a signal is received, a byte is written to that file descriptor. - There’s also a C-level function, *note PySignal_SetWakeupFd(): e0d, + There’s also a C-level function, *note PySignal_SetWakeupFd(): d1c, for setting the descriptor. Event loops will use this by opening a pipe to create two @@ -42459,7 +39873,7 @@ through the Subversion logs for all the details. process time, or combined process+system time. (Contributed by Guilherme Polo; bpo-2240(35).) - * The *note smtplib: ed. module now supports SMTP over SSL thanks to + * The *note smtplib: ee. module now supports SMTP over SSL thanks to the addition of the ‘SMTP_SSL’ class. This class supports an interface identical to the existing ‘SMTP’ class. (Contributed by Monty Taylor.) Both class constructors also have an optional @@ -42477,7 +39891,7 @@ through the Subversion logs for all the details. negotiation itself. (Patch contributed by Bill Fenner; bpo-829951(39).) - * The *note socket: ef. module now supports TIPC + * The *note socket: f0. module now supports TIPC (‘http://tipc.sourceforge.net/’), a high-performance non-IP-based protocol designed for use in clustered environments. TIPC addresses are 4- or 5-tuples. (Contributed by Alberto Bertogli; @@ -42499,19 +39913,19 @@ through the Subversion logs for all the details. will check for a shutdown request. (Contributed by Pedro Werneck and Jeffrey Yasskin; bpo-742598(41), bpo-1193577(42).) - * The *note sqlite3: f2. module, maintained by Gerhard Häring, has + * The *note sqlite3: f3. module, maintained by Gerhard Häring, has been updated from version 2.3.2 in Python 2.5 to version 2.4.1. - * The *note struct: f8. module now supports the C99 ‘_Bool’ type, - using the format character ‘'?'’. (Contributed by David Remahl.) + * The *note struct: f9. module now supports the C99 _Bool type, using + the format character ‘'?'’. (Contributed by David Remahl.) - * The ‘Popen’ objects provided by the *note subprocess: f9. module + * The ‘Popen’ objects provided by the *note subprocess: fa. module now have ‘terminate()’, ‘kill()’, and ‘send_signal()’ methods. On Windows, ‘send_signal()’ only supports the ‘SIGTERM’ signal, and all these methods are aliases for the Win32 API function ‘TerminateProcess()’. (Contributed by Christian Heimes.) - * A new variable in the *note sys: fd. module, ‘float_info’, is an + * A new variable in the *note sys: fe. module, ‘float_info’, is an object containing information derived from the ‘float.h’ file about the platform’s floating-point support. Attributes of this object include ‘mant_dig’ (number of digits in the mantissa), ‘epsilon’ @@ -42523,8 +39937,8 @@ through the Subversion logs for all the details. Python writes any ‘.pyc’ or ‘.pyo’ files on importing a module. If this variable is true, the compiled files are not written. The variable is initially set on start-up by supplying the *note -B: - e00. switch to the Python interpreter, or by setting the *note - PYTHONDONTWRITEBYTECODE: e01. environment variable before running + d0e. switch to the Python interpreter, or by setting the *note + PYTHONDONTWRITEBYTECODE: d0f. environment variable before running the interpreter. Python code can subsequently change the value of this variable to control whether bytecode files are written or not. (Contributed by Neal Norwitz and Georg Brandl.) @@ -42543,10 +39957,10 @@ through the Subversion logs for all the details. size. (Contributed by Robert Schuppenies; bpo-2898(44).) It’s now possible to determine the current profiler and tracer - functions by calling *note sys.getprofile(): e0e. and *note - sys.gettrace(): e0f. (Contributed by Georg Brandl; bpo-1648(45).) + functions by calling *note sys.getprofile(): d1d. and *note + sys.gettrace(): d1e. (Contributed by Georg Brandl; bpo-1648(45).) - * The *note tarfile: 101. module now supports POSIX.1-2001 (pax) + * The *note tarfile: 102. module now supports POSIX.1-2001 (pax) tarfiles in addition to the POSIX.1-1988 (ustar) and GNU tar formats that were already supported. The default format is GNU tar; specify the ‘format’ parameter to open a file using a @@ -42573,10 +39987,10 @@ through the Subversion logs for all the details. (All changes contributed by Lars Gustäbel). * An optional ‘timeout’ parameter was added to the *note - telnetlib.Telnet: 690. class constructor, specifying a timeout + telnetlib.Telnet: 584. class constructor, specifying a timeout measured in seconds. (Added by Facundo Batista.) - * The *note tempfile.NamedTemporaryFile: e10. class usually deletes + * The *note tempfile.NamedTemporaryFile: d1f. class usually deletes the temporary file it created when the file is closed. This behaviour can now be changed by passing ‘delete=False’ to the constructor. (Contributed by Damien Miller; bpo-1537850(46).) @@ -42619,7 +40033,7 @@ through the Subversion logs for all the details. (Contributed by Brett Cannon.) - * The *note textwrap: 10a. module can now preserve existing + * The *note textwrap: 109. module can now preserve existing whitespace at the beginnings and ends of the newly-created lines by specifying ‘drop_whitespace=False’ as an argument: @@ -42639,7 +40053,7 @@ through the Subversion logs for all the details. (Contributed by Dwayne Bailey; bpo-1581073(49).) - * The *note threading: 10b. module API is being changed to use + * The *note threading: 10a. module API is being changed to use properties such as ‘daemon’ instead of ‘setDaemon()’ and ‘isDaemon()’ methods, and some methods have been renamed to use underscores instead of camel-case; for example, the ‘activeCount()’ @@ -42650,11 +40064,11 @@ through the Subversion logs for all the details. won’t be removed in any 2.x version. (Carried out by several people, most notably Benjamin Peterson.) - The *note threading: 10b. module’s ‘Thread’ objects gained an + The *note threading: 10a. module’s ‘Thread’ objects gained an ‘ident’ property that returns the thread’s identifier, a nonzero integer. (Contributed by Gregory P. Smith; bpo-2871(50).) - * The *note timeit: 10d. module now accepts callables as well as + * The *note timeit: 10c. module now accepts callables as well as strings for the statement being timed and for the setup code. Two convenience functions were added for creating ‘Timer’ instances: ‘repeat(stmt, setup, time, repeat, number)’ and ‘timeit(stmt, @@ -42665,7 +40079,7 @@ through the Subversion logs for all the details. separating the elements by spaces before passing the resulting value to Tcl/Tk. (Contributed by Guilherme Polo; bpo-2906(52).) - * The *note turtle: 11f. module for turtle graphics was greatly + * The *note turtle: 117. module for turtle graphics was greatly enhanced by Gregor Lingl. New features in the module include: * Better animation of turtle movement and rotation. @@ -42704,15 +40118,15 @@ through the Subversion logs for all the details. (Added by Facundo Batista.) - * The Unicode database provided by the *note unicodedata: 123. module + * The Unicode database provided by the *note unicodedata: 11b. module has been updated to version 5.1.0. (Updated by Martin von Löwis; bpo-3811(54).) - * The *note warnings: 12f. module’s ‘formatwarning()’ and + * The *note warnings: 127. module’s ‘formatwarning()’ and ‘showwarning()’ gained an optional `line' argument that can be used to supply the line of source code. (Added as part of bpo-1631171(55), which re-implemented part of the *note warnings: - 12f. module in C code.) + 127. module in C code.) A new function, ‘catch_warnings()’, is a context manager intended for testing purposes that lets you temporarily modify the warning @@ -42736,16 +40150,16 @@ through the Subversion logs for all the details. his project for Google’s Summer of Code 2007.) * The ‘xmlrpclib’ module no longer automatically converts *note - datetime.date: 19e. and *note datetime.time: 5ef. to the + datetime.date: 180. and *note datetime.time: 4e4. to the ‘xmlrpclib.DateTime’ type; the conversion semantics were not necessarily correct for all applications. Code using ‘xmlrpclib’ - should convert ‘date’ and *note time: 5ef. instances. + should convert ‘date’ and *note time: 4e4. instances. (bpo-1330538(58)) The code can also handle dates before 1900 (contributed by Ralf Schmitt; bpo-2014(59)) and 64-bit integers represented by using ‘’ in XML-RPC responses (contributed by Riku Lindblad; bpo-2985(60)). - * The *note zipfile: 14b. module’s ‘ZipFile’ class now has + * The *note zipfile: 143. module’s ‘ZipFile’ class now has ‘extract()’ and ‘extractall()’ methods that will unpack a single file or all the files in the archive to the current directory, or to a specified directory: @@ -42761,12 +40175,12 @@ through the Subversion logs for all the details. (Contributed by Alan McIntyre; bpo-467924(61).) - The *note open(): 16f, ‘read()’ and ‘extract()’ methods can now + The *note open(): 4e1, ‘read()’ and ‘extract()’ methods can now take either a filename or a ‘ZipInfo’ object. This is useful when an archive accidentally contains a duplicated filename. (Contributed by Graham Horler; bpo-1775025(62).) - Finally, *note zipfile: 14b. now supports using Unicode filenames + Finally, *note zipfile: 143. now supports using Unicode filenames for archived files. (Contributed by Alexey Borzenkov; bpo-1734346(63).) @@ -42910,10 +40324,10 @@ through the Subversion logs for all the details.  File: python.info, Node: The ast module, Next: The future_builtins module, Up: New and Improved Modules<2> -1.12.18.1 The ‘ast’ module +1.11.18.1 The ‘ast’ module .......................... -The *note ast: 7. module provides an Abstract Syntax Tree representation +The *note ast: 8. module provides an Abstract Syntax Tree representation of Python code, and Armin Ronacher contributed a set of helper functions that perform a variety of common tasks. These will be useful for HTML templating packages, code analyzers, and similar tools that process @@ -42971,7 +40385,7 @@ literal expression, parses and evaluates it, and returns the resulting value. A literal expression is a Python expression containing only strings, numbers, dictionaries, etc. but no statements or function calls. If you need to evaluate an expression but cannot accept the -security risk of using an *note eval(): c63. call, ‘literal_eval()’ will +security risk of using an *note eval(): b70. call, ‘literal_eval()’ will handle it safely: >>> literal = '("a", "b", {2:4, 3:8, 1:2})' @@ -42989,7 +40403,7 @@ transformations such as changing line numbers.  File: python.info, Node: The future_builtins module, Next: The json module JavaScript Object Notation, Prev: The ast module, Up: New and Improved Modules<2> -1.12.18.2 The ‘future_builtins’ module +1.11.18.2 The ‘future_builtins’ module ...................................... Python 3.0 makes many changes to the repertoire of built-in functions, @@ -43000,32 +40414,31 @@ writing 3.0-compatible code. The functions in this module currently include: - * ‘ascii(obj)’: equivalent to *note repr(): 8bb. In Python 3.0, - *note repr(): 8bb. will return a Unicode string, while *note - ascii(): e13. will return a pure ASCII bytestring. + * ‘ascii(obj)’: equivalent to *note repr(): 7b1. In Python 3.0, + *note repr(): 7b1. will return a Unicode string, while *note + ascii(): d22. will return a pure ASCII bytestring. * ‘filter(predicate, iterable)’, ‘map(func, iterable1, ...)’: the 3.0 versions return iterators, unlike the 2.x builtins which return lists. * ‘hex(value)’, ‘oct(value)’: instead of calling the ‘__hex__()’ or - ‘__oct__()’ methods, these versions will call the *note - __index__(): 2c5. method and convert the result to hexadecimal or - octal. *note oct(): d2f. will use the new ‘0o’ notation for its - result. + ‘__oct__()’ methods, these versions will call the ‘__index__()’ + method and convert the result to hexadecimal or octal. *note + oct(): c42. will use the new ‘0o’ notation for its result.  File: python.info, Node: The json module JavaScript Object Notation, Next: The plistlib module A Property-List Parser, Prev: The future_builtins module, Up: New and Improved Modules<2> -1.12.18.3 The ‘json’ module: JavaScript Object Notation +1.11.18.3 The ‘json’ module: JavaScript Object Notation ....................................................... -The new *note json: a4. module supports the encoding and decoding of +The new *note json: a5. module supports the encoding and decoding of Python types in JSON (Javascript Object Notation). JSON is a lightweight interchange format often used in web applications. For more information about JSON, see ‘http://www.json.org’. -*note json: a4. comes with support for decoding and encoding most +*note json: a5. comes with support for decoding and encoding most built-in Python types. The following example encodes and decodes a dictionary: @@ -43040,13 +40453,13 @@ dictionary: It’s also possible to write your own decoders and encoders to support more types. Pretty-printing of the JSON strings is also supported. -*note json: a4. (originally called simplejson) was written by Bob +*note json: a5. (originally called simplejson) was written by Bob Ippolito.  File: python.info, Node: The plistlib module A Property-List Parser, Next: ctypes Enhancements, Prev: The json module JavaScript Object Notation, Up: New and Improved Modules<2> -1.12.18.4 The ‘plistlib’ module: A Property-List Parser +1.11.18.4 The ‘plistlib’ module: A Property-List Parser ....................................................... The ‘.plist’ format is commonly used on Mac OS X to store basic data @@ -43056,7 +40469,7 @@ data types. Despite being primarily used on Mac OS X, the format has nothing Mac-specific about it and the Python implementation works on any -platform that Python supports, so the *note plistlib: cf. module has +platform that Python supports, so the *note plistlib: d0. module has been promoted to the standard library. Using the module is simple: @@ -43086,25 +40499,25 @@ Using the module is simple:  File: python.info, Node: ctypes Enhancements, Next: Improved SSL Support, Prev: The plistlib module A Property-List Parser, Up: New and Improved Modules<2> -1.12.18.5 ctypes Enhancements +1.11.18.5 ctypes Enhancements ............................. -Thomas Heller continued to maintain and enhance the *note ctypes: 2a. +Thomas Heller continued to maintain and enhance the *note ctypes: 2b. module. -*note ctypes: 2a. now supports a ‘c_bool’ datatype that represents the +*note ctypes: 2b. now supports a ‘c_bool’ datatype that represents the C99 ‘bool’ type. (Contributed by David Remahl; bpo-1649190(1).) -The *note ctypes: 2a. string, buffer and array types have improved +The *note ctypes: 2b. string, buffer and array types have improved support for extended slicing syntax, where various combinations of ‘(start, stop, step)’ are supplied. (Implemented by Thomas Wouters.) -All *note ctypes: 2a. data types now support ‘from_buffer()’ and +All *note ctypes: 2b. data types now support ‘from_buffer()’ and ‘from_buffer_copy()’ methods that create a ctypes instance based on a provided buffer object. ‘from_buffer_copy()’ copies the contents of the object, while ‘from_buffer()’ will share the same memory area. -A new calling convention tells *note ctypes: 2a. to clear the ‘errno’ or +A new calling convention tells *note ctypes: 2b. to clear the ‘errno’ or Win32 LastError variables at the outset of each wrapped call. (Implemented by Thomas Heller; bpo-1798(2).) @@ -43132,26 +40545,26 @@ added to the returned pointer.  File: python.info, Node: Improved SSL Support, Prev: ctypes Enhancements, Up: New and Improved Modules<2> -1.12.18.6 Improved SSL Support +1.11.18.6 Improved SSL Support .............................. Bill Janssen made extensive improvements to Python 2.6’s support for the -Secure Sockets Layer by adding a new module, *note ssl: f3, that’s built +Secure Sockets Layer by adding a new module, *note ssl: f4, that’s built atop the OpenSSL(1) library. This new module provides more control over the protocol negotiated, the X.509 certificates used, and has better support for writing SSL servers (as opposed to clients) in Python. The -existing SSL support in the *note socket: ef. module hasn’t been removed +existing SSL support in the *note socket: f0. module hasn’t been removed and continues to work, though it will be removed in Python 3.0. To use the new module, you must first create a TCP connection in the -usual way and then pass it to the *note ssl.wrap_socket(): 573. +usual way and then pass it to the *note ssl.wrap_socket(): 460. function. It’s possible to specify whether a certificate is required, and to obtain certificate info by calling the ‘getpeercert()’ method. See also ........ -The documentation for the *note ssl: f3. module. +The documentation for the *note ssl: f4. module. ---------- Footnotes ---------- @@ -43160,13 +40573,13 @@ The documentation for the *note ssl: f3. module.  File: python.info, Node: Deprecations and Removals, Next: Build and C API Changes<9>, Prev: New and Improved Modules<2>, Up: What’s New in Python 2 6 -1.12.19 Deprecations and Removals +1.11.19 Deprecations and Removals --------------------------------- * String exceptions have been removed. Attempting to use them raises - a *note TypeError: 1fe. + a *note TypeError: 17f. - * Changes to the *note Exception: 2df. interface as dictated by PEP + * Changes to the *note Exception: 195. interface as dictated by PEP 352(1) continue to be made. For 2.6, the ‘message’ attribute is being deprecated in favor of the ‘args’ attribute. @@ -43184,23 +40597,23 @@ File: python.info, Node: Deprecations and Removals, Next: Build and C API Chan * The ‘gopherlib’ module has been removed. * The ‘MimeWriter’ module and ‘mimify’ module have been deprecated; - use the *note email: 67. package instead. + use the *note email: 69. package instead. - * The ‘md5’ module has been deprecated; use the *note hashlib: 8c. + * The ‘md5’ module has been deprecated; use the *note hashlib: 8d. module instead. * The ‘posixfile’ module has been deprecated; *note fcntl.lockf(): - e19. provides better locking. + d28. provides better locking. * The ‘popen2’ module has been deprecated; use the *note subprocess: - f9. module. + fa. module. * The ‘rgbimg’ module has been removed. * The ‘sets’ module has been deprecated; it’s better to use the - built-in *note set: 1f6. and *note frozenset: 1f7. types. + built-in *note set: b4f. and *note frozenset: bce. types. - * The ‘sha’ module has been deprecated; use the *note hashlib: 8c. + * The ‘sha’ module has been deprecated; use the *note hashlib: 8d. module instead. ---------- Footnotes ---------- @@ -43210,7 +40623,7 @@ File: python.info, Node: Deprecations and Removals, Next: Build and C API Chan  File: python.info, Node: Build and C API Changes<9>, Next: Porting to Python 2 6, Prev: Deprecations and Removals, Up: What’s New in Python 2 6 -1.12.20 Build and C API Changes +1.11.20 Build and C API Changes ------------------------------- Changes to Python’s build process and to the C API include: @@ -43237,8 +40650,8 @@ Changes to Python’s build process and to the C API include: (Contributed by Duncan Grisby.) * The new buffer interface, previously described in *note the PEP - 3118 section: dec, adds *note PyObject_GetBuffer(): ded. and *note - PyBuffer_Release(): e1b, as well as a few other functions. + 3118 section: cfb, adds *note PyObject_GetBuffer(): cfc. and *note + PyBuffer_Release(): d2a, as well as a few other functions. * Python’s use of the C stdio library is now thread-safe, or at least as thread-safe as the underlying library is. A long-standing @@ -43254,29 +40667,28 @@ Changes to Python’s build process and to the C API include: Gregory P. Smith.) * Importing modules simultaneously in two different threads no longer - deadlocks; it will now raise an *note ImportError: 16c. A new API - function, *note PyImport_ImportModuleNoBlock(): aa2, will look for + deadlocks; it will now raise an *note ImportError: 325. A new API + function, *note PyImport_ImportModuleNoBlock(): 9a2, will look for a module in ‘sys.modules’ first, then try to import it after acquiring an import lock. If the import lock is held by another - thread, an *note ImportError: 16c. is raised. (Contributed by + thread, an *note ImportError: 325. is raised. (Contributed by Christian Heimes.) * Several functions return information about the platform’s - floating-point support. *note PyFloat_GetMax(): e1c. returns the + floating-point support. *note PyFloat_GetMax(): d2b. returns the maximum representable floating point value, and *note - PyFloat_GetMin(): e1d. returns the minimum positive value. *note - PyFloat_GetInfo(): e1e. returns an object containing more + PyFloat_GetMin(): d2c. returns the minimum positive value. *note + PyFloat_GetInfo(): d2d. returns an object containing more information from the ‘float.h’ file, such as ‘"mant_dig"’ (number of digits in the mantissa), ‘"epsilon"’ (smallest difference between 1.0 and the next largest value representable), and several others. (Contributed by Christian Heimes; bpo-1534(1).) - * C functions and methods that use *note PyComplex_AsCComplex(): e1f. - will now accept arguments that have a *note __complex__(): 2c8. - method. In particular, the functions in the *note cmath: 18. - module will now accept objects with this method. This is a - backport of a Python 3.0 change. (Contributed by Mark Dickinson; - bpo-1675423(2).) + * C functions and methods that use *note PyComplex_AsCComplex(): d2e. + will now accept arguments that have a ‘__complex__()’ method. In + particular, the functions in the *note cmath: 19. module will now + accept objects with this method. This is a backport of a Python + 3.0 change. (Contributed by Mark Dickinson; bpo-1675423(2).) * Python’s C API now includes two functions for case-insensitive string comparisons, ‘PyOS_stricmp(char*, char*)’ and @@ -43286,14 +40698,15 @@ Changes to Python’s build process and to the C API include: * Many C extensions define their own little macro for adding integers and strings to the module’s dictionary in the ‘init*’ function. Python 2.6 finally defines standard macros for adding values to a - module, *note PyModule_AddStringMacro: e20. and - ‘PyModule_AddIntMacro()’. (Contributed by Christian Heimes.) + module, *note PyModule_AddStringMacro: d2f. and *note + PyModule_AddIntMacro(): d30. (Contributed by Christian Heimes.) * Some macros were renamed in both 3.0 and 2.6 to make it clearer - that they are macros, not functions. ‘Py_Size()’ became - ‘Py_SIZE()’, ‘Py_Type()’ became ‘Py_TYPE()’, and ‘Py_Refcnt()’ - became ‘Py_REFCNT()’. The mixed-case macros are still available in - Python 2.6 for backward compatibility. (bpo-1629(4)) + that they are macros, not functions. ‘Py_Size()’ became *note + Py_SIZE(): d31, ‘Py_Type()’ became *note Py_TYPE(): d32, and + ‘Py_Refcnt()’ became *note Py_REFCNT(): d33. The mixed-case macros + are still available in Python 2.6 for backward compatibility. + (bpo-1629(4)) * Distutils now places C extensions it builds in a different directory when running on a debug version of Python. (Contributed @@ -43339,7 +40752,7 @@ Changes to Python’s build process and to the C API include:  File: python.info, Node: Port-Specific Changes Windows<2>, Next: Port-Specific Changes Mac OS X<2>, Up: Build and C API Changes<9> -1.12.20.1 Port-Specific Changes: Windows +1.11.20.1 Port-Specific Changes: Windows ........................................ * The support for Windows 95, 98, ME and NT4 has been dropped. @@ -43353,18 +40766,18 @@ File: python.info, Node: Port-Specific Changes Windows<2>, Next: Port-Specific roughly 10% faster than normal builds. (Contributed by Christian Heimes with help from Amaury Forgeot d’Arc and Martin von Löwis.) - * The *note msvcrt: b6. module now supports both the normal and wide + * The *note msvcrt: b7. module now supports both the normal and wide char variants of the console I/O API. The ‘getwch()’ function reads a keypress and returns a Unicode value, as does the ‘getwche()’ function. The ‘putwch()’ function takes a Unicode character and writes it to the console. (Contributed by Christian Heimes.) - * *note os.path.expandvars(): e0b. will now expand environment + * *note os.path.expandvars(): d1a. will now expand environment variables in the form “%var%”, and “~user” will be expanded into the user’s home directory path. (Contributed by Josiah Carlson; bpo-957650(1).) - * The *note socket: ef. module’s socket objects now have an ‘ioctl()’ + * The *note socket: f0. module’s socket objects now have an ‘ioctl()’ method that provides a limited interface to the ‘WSAIoctl()’ system interface. @@ -43372,7 +40785,7 @@ File: python.info, Node: Port-Specific Changes Windows<2>, Next: Port-Specific ‘ExpandEnvironmentStrings()’, that expands environment variable references such as ‘%NAME%’ in an input string. The handle objects provided by this module now support the context protocol, so they - can be used in *note with: 7dc. statements. (Contributed by + can be used in *note with: 6d0. statements. (Contributed by Christian Heimes.) ‘_winreg’ also has better support for x64 systems, exposing the @@ -43381,7 +40794,7 @@ File: python.info, Node: Port-Specific Changes Windows<2>, Next: Port-Specific reflection for 32-bit processes running on 64-bit systems. (bpo-1753245(2)) - * The *note msilib: b5. module’s ‘Record’ object gained + * The *note msilib: b6. module’s ‘Record’ object gained ‘GetInteger()’ and ‘GetString()’ methods that return field values as an integer or a string. (Contributed by Floris Bruynooghe; bpo-2125(3).) @@ -43397,7 +40810,7 @@ File: python.info, Node: Port-Specific Changes Windows<2>, Next: Port-Specific  File: python.info, Node: Port-Specific Changes Mac OS X<2>, Next: Port-Specific Changes IRIX, Prev: Port-Specific Changes Windows<2>, Up: Build and C API Changes<9> -1.12.20.2 Port-Specific Changes: Mac OS X +1.11.20.2 Port-Specific Changes: Mac OS X ......................................... * When compiling a framework build of Python, you can now specify the @@ -43425,7 +40838,7 @@ File: python.info, Node: Port-Specific Changes Mac OS X<2>, Next: Port-Specifi  File: python.info, Node: Port-Specific Changes IRIX, Prev: Port-Specific Changes Mac OS X<2>, Up: Build and C API Changes<9> -1.12.20.3 Port-Specific Changes: IRIX +1.11.20.3 Port-Specific Changes: IRIX ..................................... A number of old IRIX-specific modules were deprecated and will be @@ -43437,7 +40850,7 @@ removed in Python 3.0: ‘al’ and ‘AL’, ‘cd’, ‘cddb’, ‘cdplayer  File: python.info, Node: Porting to Python 2 6, Next: Acknowledgements<2>, Prev: Build and C API Changes<9>, Up: What’s New in Python 2 6 -1.12.21 Porting to Python 2.6 +1.11.21 Porting to Python 2.6 ----------------------------- This section lists previously described changes and other bugfixes that @@ -43447,20 +40860,18 @@ may require changes to your code: None’ in their definitions to indicate the fact. * String exceptions have been removed. Attempting to use them raises - a *note TypeError: 1fe. + a *note TypeError: 17f. - * The *note __init__(): e25. method of *note collections.deque: 62d. - now clears any existing contents of the deque before adding - elements from the iterable. This change makes the behavior match - ‘list.__init__()’. + * The ‘__init__()’ method of *note collections.deque: 51e. now clears + any existing contents of the deque before adding elements from the + iterable. This change makes the behavior match ‘list.__init__()’. - * *note object.__init__(): e25. previously accepted arbitrary + * *note object.__init__(): d38. previously accepted arbitrary arguments and keyword arguments, ignoring them. In Python 2.6, this is no longer allowed and will result in a *note TypeError: - 1fe. This will affect *note __init__(): e25. methods that end up - calling the corresponding method on *note object: 3d5. (perhaps - through using *note super(): 5df.). See bpo-1683368(1) for - discussion. + 17f. This will affect ‘__init__()’ methods that end up calling the + corresponding method on *note object: 29b. (perhaps through using + *note super(): 4d3.). See bpo-1683368(1) for discussion. * The ‘Decimal’ constructor now accepts leading and trailing whitespace when passed a string. Previously it would raise an @@ -43469,35 +40880,35 @@ may require changes to your code: disallows extra whitespace, raising a ‘ConversionSyntax’ exception. * Due to an implementation accident, if you passed a file path to the - built-in *note __import__(): 16b. function, it would actually + built-in *note __import__(): 5fd. function, it would actually import the specified file. This was never intended to work, however, and the implementation now explicitly checks for this case - and raises an *note ImportError: 16c. + and raises an *note ImportError: 325. - * C API: the *note PyImport_Import(): e26. and *note - PyImport_ImportModule(): d3d. functions now default to absolute + * C API: the *note PyImport_Import(): d39. and *note + PyImport_ImportModule(): c4f. functions now default to absolute imports, not relative imports. This will affect C extensions that import other modules. * C API: extension data types that shouldn’t be hashable should define their ‘tp_hash’ slot to *note PyObject_HashNotImplemented(): - df9. + d07. - * The *note socket: ef. module exception *note socket.error: a78. now - inherits from *note IOError: a75. Previously it wasn’t a subclass - of ‘StandardError’ but now it is, through *note IOError: a75. + * The *note socket: f0. module exception *note socket.error: 976. now + inherits from *note IOError: 973. Previously it wasn’t a subclass + of ‘StandardError’ but now it is, through *note IOError: 973. (Implemented by Gregory P. Smith; bpo-1706815(2).) * The ‘xmlrpclib’ module no longer automatically converts *note - datetime.date: 19e. and *note datetime.time: 5ef. to the + datetime.date: 180. and *note datetime.time: 4e4. to the ‘xmlrpclib.DateTime’ type; the conversion semantics were not necessarily correct for all applications. Code using ‘xmlrpclib’ - should convert ‘date’ and *note time: 5ef. instances. + should convert ‘date’ and *note time: 4e4. instances. (bpo-1330538(3)) - * (3.0-warning mode) The *note Exception: 2df. class now warns when + * (3.0-warning mode) The *note Exception: 195. class now warns when accessed using slicing or index access; having *note Exception: - 2df. behave like a tuple is being phased out. + 195. behave like a tuple is being phased out. * (3.0-warning mode) inequality comparisons between two dictionaries or two objects that don’t implement comparison methods are reported @@ -43519,7 +40930,7 @@ may require changes to your code:  File: python.info, Node: Acknowledgements<2>, Prev: Porting to Python 2 6, Up: What’s New in Python 2 6 -1.12.22 Acknowledgements +1.11.22 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -43531,7 +40942,7 @@ Brian Warner.  File: python.info, Node: What’s New in Python 2 5, Next: What’s New in Python 2 4, Prev: What’s New in Python 2 6, Up: What’s New in Python -1.13 What’s New in Python 2.5 +1.12 What’s New in Python 2.5 ============================= @@ -43546,20 +40957,20 @@ improvements. The library enhancements will be more important to Python’s user community, I think, because several widely-useful packages were added. New modules include ElementTree for XML processing (‘xml.etree’), the SQLite database module (‘sqlite’), and the *note -ctypes: 2a. module for calling C functions. +ctypes: 2b. module for calling C functions. The language changes are of middling significance. Some pleasant new features were added, but most of them aren’t features that you’ll use every day. Conditional expressions were finally added to the language using a novel syntax; see section *note PEP 308; Conditional -Expressions: e2b. The new ‘*note with: 7dc.’ statement will make +Expressions: d3e. The new ‘*note with: 6d0.’ statement will make writing cleanup code easier (section *note PEP 343; The ‘with’ -statement: e2c.). Values can now be passed into generators (section -*note PEP 342; New Generator Features: e2d.). Imports are now visible +statement: d3f.). Values can now be passed into generators (section +*note PEP 342; New Generator Features: d40.). Imports are now visible as either absolute or relative (section *note PEP 328; Absolute and -Relative Imports: e2e.). Some corner cases of exception handling are +Relative Imports: d41.). Some corner cases of exception handling are handled better (section *note PEP 341; Unified try/except/finally: -e2f.). All these improvements are worthwhile, but they’re improvements +d42.). All these improvements are worthwhile, but they’re improvements to one specific language feature or another; none of them are broad modifications to Python’s semantics. @@ -43593,7 +41004,7 @@ tracker. * PEP 352; Exceptions as New-Style Classes: PEP 352 Exceptions as New-Style Classes. * PEP 353; Using ssize_t as the index type: PEP 353 Using ssize_t as the index type. * PEP 357; The ‘__index__’ method: PEP 357 The ‘__index__’ method. -* Other Language Changes: Other Language Changes<12>. +* Other Language Changes: Other Language Changes<11>. * New, Improved, and Removed Modules: New Improved and Removed Modules. * Build and C API Changes: Build and C API Changes<10>. * Porting to Python 2.5: Porting to Python 2 5. @@ -43606,7 +41017,7 @@ tracker.  File: python.info, Node: PEP 308 Conditional Expressions, Next: PEP 309 Partial Function Application, Up: What’s New in Python 2 5 -1.13.1 PEP 308: Conditional Expressions +1.12.1 PEP 308: Conditional Expressions --------------------------------------- For a long time, people have been requesting a way to write conditional @@ -43695,10 +41106,10 @@ PEP 308(2) - Conditional Expressions  File: python.info, Node: PEP 309 Partial Function Application, Next: PEP 314 Metadata for Python Software Packages v1 1, Prev: PEP 308 Conditional Expressions, Up: What’s New in Python 2 5 -1.13.2 PEP 309: Partial Function Application +1.12.2 PEP 309: Partial Function Application -------------------------------------------- -The *note functools: 83. module is intended to contain tools for +The *note functools: 85. module is intended to contain tools for functional-style programming. One useful tool in this module is the ‘partial()’ function. For @@ -43737,7 +41148,7 @@ the ‘open_item()’ method, where the first argument has been provided. open_func = functools.partial(self.open_item, item_path) popup_menu.append( ("Open", open_func, 1) ) -Another function in the *note functools: 83. module is the +Another function in the *note functools: 85. module is the ‘update_wrapper(wrapper, wrapped)’ function that helps you write well-behaved decorators. ‘update_wrapper()’ copies the name, module, and docstring attribute to a wrapper function so that tracebacks inside @@ -43777,7 +41188,7 @@ PEP 309(1) - Partial Function Application  File: python.info, Node: PEP 314 Metadata for Python Software Packages v1 1, Next: PEP 328 Absolute and Relative Imports, Prev: PEP 309 Partial Function Application, Up: What’s New in Python 2 5 -1.13.3 PEP 314: Metadata for Python Software Packages v1.1 +1.12.3 PEP 314: Metadata for Python Software Packages v1.1 ---------------------------------------------------------- Some simple dependency support was added to Distutils. The ‘setup()’ @@ -43828,7 +41239,7 @@ PEP 314(1) - Metadata for Python Software Packages v1.1  File: python.info, Node: PEP 328 Absolute and Relative Imports, Next: PEP 338 Executing Modules as Scripts, Prev: PEP 314 Metadata for Python Software Packages v1 1, Up: What’s New in Python 2 5 -1.13.4 PEP 328: Absolute and Relative Imports +1.12.4 PEP 328: Absolute and Relative Imports --------------------------------------------- The simpler part of PEP 328(1) was implemented in Python 2.4: @@ -43859,7 +41270,7 @@ module, and that module is bound to the name ‘string’ in the ‘pkg.main’ module’s namespace. That’s fine if ‘pkg.string’ was what you wanted. But what if you wanted -Python’s standard *note string: f6. module? There’s no clean way to +Python’s standard *note string: f7. module? There’s no clean way to ignore ‘pkg.string’ and look for the standard module; generally you had to look at the contents of ‘sys.modules’, which is slightly unclean. Holger Krekel’s ‘py.std’ package provides a tidier way to perform @@ -43867,14 +41278,14 @@ imports from the standard library, ‘import py; py.std.string.join()’, but that package isn’t available on all Python installations. Reading code which relies on relative imports is also less clear, -because a reader may be confused about which module, *note string: f6. +because a reader may be confused about which module, *note string: f7. or ‘pkg.string’, is intended to be used. Python users soon learned not to duplicate the names of standard library modules in the names of their packages’ submodules, but you can’t protect against having your submodule’s name being used for a new module added in a future version of Python. -In Python 2.5, you can switch *note import: ce9.’s behaviour to absolute +In Python 2.5, you can switch *note import: bfd.’s behaviour to absolute imports using a ‘from __future__ import absolute_import’ directive. This absolute-import behaviour will become the default in a future version (probably Python 2.7). Once absolute imports are the default, @@ -43891,7 +41302,7 @@ module name when using the ‘from ... import’ form: # Import pkg.string from . import string -This imports the *note string: f6. module relative to the current +This imports the *note string: f7. module relative to the current package, so in ‘pkg.main’ this will import `name1' and `name2' from ‘pkg.string’. Additional leading periods perform the relative import starting from the parent of the current package. For example, code in @@ -43925,19 +41336,19 @@ PEP 328(2) - Imports: Multi-Line and Absolute/Relative  File: python.info, Node: PEP 338 Executing Modules as Scripts, Next: PEP 341 Unified try/except/finally, Prev: PEP 328 Absolute and Relative Imports, Up: What’s New in Python 2 5 -1.13.5 PEP 338: Executing Modules as Scripts +1.12.5 PEP 338: Executing Modules as Scripts -------------------------------------------- -The *note -m: 445. switch added in Python 2.4 to execute a module as a +The *note -m: 328. switch added in Python 2.4 to execute a module as a script gained a few more abilities. Instead of being implemented in C code inside the Python interpreter, the switch now uses an -implementation in a new module, *note runpy: e2. +implementation in a new module, *note runpy: e3. -The *note runpy: e2. module implements a more sophisticated import +The *note runpy: e3. module implements a more sophisticated import mechanism so that it’s now possible to run modules in a package such as ‘pychecker.checker’. The module also supports alternative import -mechanisms such as the *note zipimport: 14c. module. This means you can -add a .zip archive’s path to ‘sys.path’ and then use the *note -m: 445. +mechanisms such as the *note zipimport: 144. module. This means you can +add a .zip archive’s path to ‘sys.path’ and then use the *note -m: 328. switch to execute code from the archive. See also @@ -43954,20 +41365,20 @@ PEP 338(1) - Executing modules as scripts  File: python.info, Node: PEP 341 Unified try/except/finally, Next: PEP 342 New Generator Features, Prev: PEP 338 Executing Modules as Scripts, Up: What’s New in Python 2 5 -1.13.6 PEP 341: Unified try/except/finally +1.12.6 PEP 341: Unified try/except/finally ------------------------------------------ -Until Python 2.5, the *note try: e39. statement came in two flavours. -You could use a *note finally: 2bf. block to ensure that code is always -executed, or one or more *note except: c12. blocks to catch specific +Until Python 2.5, the *note try: d4c. statement came in two flavours. +You could use a *note finally: 16f. block to ensure that code is always +executed, or one or more *note except: b1e. blocks to catch specific exceptions. You couldn’t combine both ‘except’ blocks and a ‘finally’ block, because generating the right bytecode for the combined version was complicated and it wasn’t clear what the semantics of the combined statement should be. Guido van Rossum spent some time working with Java, which does support -the equivalent of combining *note except: c12. blocks and a *note -finally: 2bf. block, and this clarified what the statement should mean. +the equivalent of combining *note except: b1e. blocks and a *note +finally: 16f. block, and this clarified what the statement should mean. In Python 2.5, you can now write: try: @@ -43982,7 +41393,7 @@ In Python 2.5, you can now write: final-block The code in `block-1' is executed. If the code raises an exception, the -various *note except: c12. blocks are tested: if the exception is of +various *note except: b1e. blocks are tested: if the exception is of class ‘Exception1’, `handler-1' is executed; otherwise if it’s of class ‘Exception2’, `handler-2' is executed, and so forth. If no exception is raised, the `else-block' is executed. @@ -44006,7 +41417,7 @@ PEP 341(1) - Unifying try-except and try-finally  File: python.info, Node: PEP 342 New Generator Features, Next: PEP 343 The ‘with’ statement<2>, Prev: PEP 341 Unified try/except/finally, Up: What’s New in Python 2 5 -1.13.7 PEP 342: New Generator Features +1.12.7 PEP 342: New Generator Features -------------------------------------- Python 2.5 adds a simple way to pass values `into' a generator. As @@ -44027,34 +41438,34 @@ To refresh your memory of basic generators, here’s a simple example: i += 1 When you call ‘counter(10)’, the result is an iterator that returns the -values from 0 up to 9. On encountering the *note yield: 2ca. statement, +values from 0 up to 9. On encountering the *note yield: 17c. statement, the iterator returns the provided value and suspends the function’s execution, preserving the local variables. Execution resumes on the -following call to the iterator’s *note next(): 777. method, picking up +following call to the iterator’s *note next(): 66b. method, picking up after the ‘yield’ statement. -In Python 2.3, *note yield: 2ca. was a statement; it didn’t return any +In Python 2.3, *note yield: 17c. was a statement; it didn’t return any value. In 2.5, ‘yield’ is now an expression, returning a value that can be assigned to a variable or otherwise operated on: val = (yield i) -I recommend that you always put parentheses around a *note yield: 2ca. +I recommend that you always put parentheses around a *note yield: 17c. expression when you’re doing something with the returned value, as in the above example. The parentheses aren’t always necessary, but it’s easier to always add them instead of having to remember when they’re needed. ( PEP 342(1) explains the exact rules, which are that a *note yield: -2ca.-expression must always be parenthesized except when it occurs at +17c.-expression must always be parenthesized except when it occurs at the top-level expression on the right-hand side of an assignment. This means you can write ‘val = yield i’ but have to use parentheses when there’s an operation, as in ‘val = (yield i) + 12’.) Values are sent into a generator by calling its ‘send(value)’ method. -The generator’s code is then resumed and the *note yield: 2ca. +The generator’s code is then resumed and the *note yield: 17c. expression returns the specified `value'. If the regular *note next(): -777. method is called, the ‘yield’ returns *note None: 203. +66b. method is called, the ‘yield’ returns *note None: 158. Here’s the previous example, modified to allow changing the value of the internal counter. @@ -44086,7 +41497,7 @@ And here’s an example of changing the counter: print it.next() StopIteration -*note yield: 2ca. will usually return *note None: 203, so you should +*note yield: 17c. will usually return *note None: 158, so you should always check for this case. Don’t just use its value in expressions unless you’re sure that the ‘send()’ method will be the only method used to resume your generator function. @@ -44095,31 +41506,31 @@ In addition to ‘send()’, there are two other new methods on generators: * ‘throw(type, value=None, traceback=None)’ is used to raise an exception inside the generator; the exception is raised by the - *note yield: 2ca. expression where the generator’s execution is + *note yield: 17c. expression where the generator’s execution is paused. - * ‘close()’ raises a new *note GeneratorExit: dfa. exception inside + * ‘close()’ raises a new *note GeneratorExit: d08. exception inside the generator to terminate the iteration. On receiving this exception, the generator’s code must either raise *note - GeneratorExit: dfa. or *note StopIteration: 584. Catching the - *note GeneratorExit: dfa. exception and returning a value is - illegal and will trigger a *note RuntimeError: 3df.; if the + GeneratorExit: d08. or *note StopIteration: 477. Catching the + *note GeneratorExit: d08. exception and returning a value is + illegal and will trigger a *note RuntimeError: 2a5.; if the function raises some other exception, that exception is propagated to the caller. ‘close()’ will also be called by Python’s garbage collector when the generator is garbage-collected. - If you need to run cleanup code when a *note GeneratorExit: dfa. + If you need to run cleanup code when a *note GeneratorExit: d08. occurs, I suggest using a ‘try: ... finally:’ suite instead of - catching *note GeneratorExit: dfa. + catching *note GeneratorExit: d08. The cumulative effect of these changes is to turn generators from one-way producers of information into both producers and consumers. Generators also become `coroutines', a more generalized form of subroutines. Subroutines are entered at one point and exited at another -point (the top of the function, and a *note return: 2cb. statement), but +point (the top of the function, and a *note return: 17d. statement), but coroutines can be entered, exited, and resumed at many different points -(the *note yield: 2ca. statements). We’ll have to figure out patterns +(the *note yield: 17c. statements). We’ll have to figure out patterns for using coroutines effectively in Python. The addition of the ‘close()’ method has one side effect that isn’t @@ -44127,11 +41538,11 @@ obvious. ‘close()’ is called when a generator is garbage-collected, so this means the generator’s code gets one last chance to run before the generator is destroyed. This last chance means that ‘try...finally’ statements in generators can now be guaranteed to work; the *note -finally: 2bf. clause will now always get a chance to run. The syntactic -restriction that you couldn’t mix *note yield: 2ca. statements with a +finally: 16f. clause will now always get a chance to run. The syntactic +restriction that you couldn’t mix *note yield: 17c. statements with a ‘try...finally’ suite has therefore been removed. This seems like a minor bit of language trivia, but using generators and ‘try...finally’ -is actually necessary in order to implement the *note with: 7dc. +is actually necessary in order to implement the *note with: 6d0. statement described by PEP 343(2). I’ll look at this new statement in the following section. @@ -44176,33 +41587,33 @@ PEP 342(3) - Coroutines via Enhanced Generators  File: python.info, Node: PEP 343 The ‘with’ statement<2>, Next: PEP 352 Exceptions as New-Style Classes, Prev: PEP 342 New Generator Features, Up: What’s New in Python 2 5 -1.13.8 PEP 343: The ‘with’ statement +1.12.8 PEP 343: The ‘with’ statement ------------------------------------ -The ‘*note with: 7dc.’ statement clarifies code that previously would +The ‘*note with: 6d0.’ statement clarifies code that previously would use ‘try...finally’ blocks to ensure that clean-up code is executed. In this section, I’ll discuss the statement as it will commonly be used. In the next section, I’ll examine the implementation details and show how to write objects for use with this statement. -The ‘*note with: 7dc.’ statement is a new control-flow structure whose +The ‘*note with: 6d0.’ statement is a new control-flow structure whose basic structure is: with expression [as variable]: with-block The expression is evaluated, and it should result in an object that -supports the context management protocol (that is, has *note -__enter__(): d5f. and *note __exit__(): d60. methods. +supports the context management protocol (that is, has ‘__enter__()’ and +‘__exit__()’ methods. -The object’s *note __enter__(): d5f. is called before `with-block' is -executed and therefore can run set-up code. It also may return a value -that is bound to the name `variable', if given. (Note carefully that -`variable' is `not' assigned the result of `expression'.) +The object’s ‘__enter__()’ is called before `with-block' is executed and +therefore can run set-up code. It also may return a value that is bound +to the name `variable', if given. (Note carefully that `variable' is +`not' assigned the result of `expression'.) -After execution of the `with-block' is finished, the object’s *note -__exit__(): d60. method is called, even if the block raised an -exception, and can therefore run clean-up code. +After execution of the `with-block' is finished, the object’s +‘__exit__()’ method is called, even if the block raised an exception, +and can therefore run clean-up code. To enable the statement in Python 2.5, you need to add the following directive to your module: @@ -44212,7 +41623,7 @@ directive to your module: The statement will always be enabled in Python 2.6. Some standard Python objects now support the context management protocol -and can be used with the ‘*note with: 7dc.’ statement. File objects are +and can be used with the ‘*note with: 6d0.’ statement. File objects are one example: with open('/etc/passwd', 'r') as f: @@ -44221,14 +41632,14 @@ one example: ... more processing code ... After this statement has executed, the file object in `f' will have been -automatically closed, even if the *note for: cfc. loop raised an +automatically closed, even if the *note for: c10. loop raised an exception part-way through the block. Note: In this case, `f' is the same object created by *note open(): - 16f, because ‘file.__enter__()’ returns `self'. + 4e1, because ‘file.__enter__()’ returns `self'. -The *note threading: 10b. module’s locks and condition variables also -support the ‘*note with: 7dc.’ statement: +The *note threading: 10a. module’s locks and condition variables also +support the ‘*note with: 6d0.’ statement: lock = threading.Lock() with lock: @@ -44238,7 +41649,7 @@ support the ‘*note with: 7dc.’ statement: The lock is acquired before the block is executed and always released once the block is complete. -The new ‘localcontext()’ function in the *note decimal: 35. module makes +The new ‘localcontext()’ function in the *note decimal: 36. module makes it easy to save and restore the current decimal context, which encapsulates the desired precision and rounding characteristics for computations: @@ -44262,10 +41673,10 @@ computations:  File: python.info, Node: Writing Context Managers<2>, Next: The contextlib module<2>, Up: PEP 343 The ‘with’ statement<2> -1.13.8.1 Writing Context Managers +1.12.8.1 Writing Context Managers ................................. -Under the hood, the ‘*note with: 7dc.’ statement is fairly complicated. +Under the hood, the ‘*note with: 6d0.’ statement is fairly complicated. Most people will only use ‘‘with’’ in company with existing objects and don’t need to know these details, so you can skip the rest of this section if you like. Authors of new objects will need to understand the @@ -44274,27 +41685,26 @@ details of the underlying implementation and should keep reading. A high-level explanation of the context management protocol is: * The expression is evaluated and should result in an object called a - “context manager”. The context manager must have *note - __enter__(): d5f. and *note __exit__(): d60. methods. + “context manager”. The context manager must have ‘__enter__()’ and + ‘__exit__()’ methods. - * The context manager’s *note __enter__(): d5f. method is called. - The value returned is assigned to `VAR'. If no ‘'as VAR'’ clause is - present, the value is simply discarded. + * The context manager’s ‘__enter__()’ method is called. The value + returned is assigned to `VAR'. If no ‘'as VAR'’ clause is present, + the value is simply discarded. * The code in `BLOCK' is executed. * If `BLOCK' raises an exception, the ‘__exit__(type, value, traceback)’ is called with the exception details, the same values - returned by *note sys.exc_info(): d29. The method’s return value + returned by *note sys.exc_info(): c3e. The method’s return value controls whether the exception is re-raised: any false value re-raises the exception, and ‘True’ will result in suppressing it. You’ll only rarely want to suppress the exception, because if you - do the author of the code containing the ‘*note with: 7dc.’ + do the author of the code containing the ‘*note with: 6d0.’ statement will never realize anything went wrong. - * If `BLOCK' didn’t raise an exception, the *note __exit__(): d60. - method is still called, but `type', `value', and `traceback' are - all ‘None’. + * If `BLOCK' didn’t raise an exception, the ‘__exit__()’ method is + still called, but `type', `value', and `traceback' are all ‘None’. Let’s think through an example. I won’t present detailed code but will only sketch the methods necessary for a database that supports @@ -44328,11 +41738,11 @@ interface for ‘DatabaseConnection’ that I’ll assume: def rollback (self): "Rolls back current transaction" -The *note __enter__(): d5f. method is pretty easy, having only to start -a new transaction. For this application the resulting cursor object -would be a useful result, so the method will return it. The user can -then add ‘as cursor’ to their ‘*note with: 7dc.’ statement to bind the -cursor to a variable name. +The ‘__enter__()’ method is pretty easy, having only to start a new +transaction. For this application the resulting cursor object would be +a useful result, so the method will return it. The user can then add +‘as cursor’ to their ‘*note with: 6d0.’ statement to bind the cursor to +a variable name. class DatabaseConnection: ... @@ -44341,15 +41751,15 @@ cursor to a variable name. cursor = self.cursor() return cursor -The *note __exit__(): d60. method is the most complicated because it’s -where most of the work has to be done. The method has to check if an -exception occurred. If there was no exception, the transaction is -committed. The transaction is rolled back if there was an exception. +The ‘__exit__()’ method is the most complicated because it’s where most +of the work has to be done. The method has to check if an exception +occurred. If there was no exception, the transaction is committed. The +transaction is rolled back if there was an exception. In the code below, execution will just fall off the end of the function, returning the default value of ‘None’. ‘None’ is false, so the exception will be re-raised automatically. If you wished, you could be -more explicit and add a *note return: 2cb. statement at the marked +more explicit and add a *note return: 17d. statement at the marked location. class DatabaseConnection: @@ -44366,22 +41776,21 @@ location.  File: python.info, Node: The contextlib module<2>, Prev: Writing Context Managers<2>, Up: PEP 343 The ‘with’ statement<2> -1.13.8.2 The contextlib module +1.12.8.2 The contextlib module .............................. -The new *note contextlib: 23. module provides some functions and a +The new *note contextlib: 24. module provides some functions and a decorator that are useful for writing objects for use with the ‘*note -with: 7dc.’ statement. +with: 6d0.’ statement. The decorator is called ‘contextmanager()’, and lets you write a single generator function instead of defining a new class. The generator -should yield exactly one value. The code up to the *note yield: 2ca. -will be executed as the *note __enter__(): d5f. method, and the value -yielded will be the method’s return value that will get bound to the -variable in the ‘*note with: 7dc.’ statement’s ‘as’ clause, if any. The -code after the *note yield: 2ca. will be executed in the *note -__exit__(): d60. method. Any exception raised in the block will be -raised by the ‘yield’ statement. +should yield exactly one value. The code up to the *note yield: 17c. +will be executed as the ‘__enter__()’ method, and the value yielded will +be the method’s return value that will get bound to the variable in the +‘*note with: 6d0.’ statement’s ‘as’ clause, if any. The code after the +*note yield: 17c. will be executed in the ‘__exit__()’ method. Any +exception raised in the block will be raised by the ‘yield’ statement. Our database example from the previous section could be written using this decorator as: @@ -44403,9 +41812,9 @@ this decorator as: with db_transaction(db) as cursor: ... -The *note contextlib: 23. module also has a ‘nested(mgr1, mgr2, ...)’ +The *note contextlib: 24. module also has a ‘nested(mgr1, mgr2, ...)’ function that combines a number of context managers so you don’t need to -write nested ‘*note with: 7dc.’ statements. In this example, the single +write nested ‘*note with: 6d0.’ statements. In this example, the single ‘‘with’’ statement both starts a database transaction and acquires a thread lock: @@ -44431,10 +41840,10 @@ PEP 343(1) - The “with” statement PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland, Guido van Rossum, and Neal Norwitz. The PEP shows the - code generated for a ‘*note with: 7dc.’ statement, which can be + code generated for a ‘*note with: 6d0.’ statement, which can be helpful in learning how the statement works. -The documentation for the *note contextlib: 23. module. +The documentation for the *note contextlib: 24. module. ---------- Footnotes ---------- @@ -44443,13 +41852,13 @@ The documentation for the *note contextlib: 23. module.  File: python.info, Node: PEP 352 Exceptions as New-Style Classes, Next: PEP 353 Using ssize_t as the index type, Prev: PEP 343 The ‘with’ statement<2>, Up: What’s New in Python 2 5 -1.13.9 PEP 352: Exceptions as New-Style Classes +1.12.9 PEP 352: Exceptions as New-Style Classes ----------------------------------------------- Exception classes can now be new-style classes, not just classic -classes, and the built-in *note Exception: 2df. class and all the -standard built-in exceptions (*note NameError: e42, *note ValueError: -16d, etc.) are now new-style classes. +classes, and the built-in *note Exception: 195. class and all the +standard built-in exceptions (*note NameError: d55, *note ValueError: +1e7, etc.) are now new-style classes. The inheritance hierarchy for exceptions has been rearranged a bit. In 2.5, the inheritance relationships are: @@ -44461,12 +41870,12 @@ The inheritance hierarchy for exceptions has been rearranged a bit. In |- (all other current built-in exceptions) This rearrangement was done because people often want to catch all -exceptions that indicate program errors. *note KeyboardInterrupt: 2cf. -and *note SystemExit: 6f5. aren’t errors, though, and usually represent +exceptions that indicate program errors. *note KeyboardInterrupt: 184. +and *note SystemExit: 5e9. aren’t errors, though, and usually represent an explicit action such as the user hitting ‘Control-C’ or code calling -*note sys.exit(): dac. A bare ‘except:’ will catch all exceptions, so -you commonly need to list *note KeyboardInterrupt: 2cf. and *note -SystemExit: 6f5. in order to re-raise them. The usual pattern is: +*note sys.exit(): cb9. A bare ‘except:’ will catch all exceptions, so +you commonly need to list *note KeyboardInterrupt: 184. and *note +SystemExit: 5e9. in order to re-raise them. The usual pattern is: try: ... @@ -44478,14 +41887,14 @@ SystemExit: 6f5. in order to re-raise them. The usual pattern is: In Python 2.5, you can now write ‘except Exception’ to achieve the same result, catching all the exceptions that usually indicate errors but -leaving *note KeyboardInterrupt: 2cf. and *note SystemExit: 6f5. alone. +leaving *note KeyboardInterrupt: 184. and *note SystemExit: 5e9. alone. As in previous versions, a bare ‘except:’ still catches all exceptions. The goal for Python 3.0 is to require any class raised as an exception -to derive from *note BaseException: 2de. or some descendant of *note -BaseException: 2de, and future releases in the Python 2.x series may +to derive from *note BaseException: 194. or some descendant of *note +BaseException: 194, and future releases in the Python 2.x series may begin to enforce this constraint. Therefore, I suggest you begin making -all your exception classes derive from *note Exception: 2df. now. It’s +all your exception classes derive from *note Exception: 195. now. It’s been suggested that the bare ‘except:’ form should be removed in Python 3.0, but Guido van Rossum hasn’t decided whether to do this or not. @@ -44509,48 +41918,48 @@ PEP 352(1) - Required Superclass for Exceptions  File: python.info, Node: PEP 353 Using ssize_t as the index type, Next: PEP 357 The ‘__index__’ method, Prev: PEP 352 Exceptions as New-Style Classes, Up: What’s New in Python 2 5 -1.13.10 PEP 353: Using ssize_t as the index type +1.12.10 PEP 353: Using ssize_t as the index type ------------------------------------------------ A wide-ranging change to Python’s C API, using a new ‘Py_ssize_t’ type -definition instead of ‘int’, will permit the interpreter to handle more +definition instead of int, will permit the interpreter to handle more data on 64-bit platforms. This change doesn’t affect Python’s capacity on 32-bit platforms. -Various pieces of the Python interpreter used C’s ‘int’ type to store +Various pieces of the Python interpreter used C’s int type to store sizes or counts; for example, the number of items in a list or tuple -were stored in an ‘int’. The C compilers for most 64-bit platforms -still define ‘int’ as a 32-bit type, so that meant that lists could only -hold up to ‘2**31 - 1’ = 2147483647 items. (There are actually a few -different programming models that 64-bit C compilers can use – see +were stored in an int. The C compilers for most 64-bit platforms still +define int as a 32-bit type, so that meant that lists could only hold up +to ‘2**31 - 1’ = 2147483647 items. (There are actually a few different +programming models that 64-bit C compilers can use – see ‘http://www.unix.org/version2/whatsnew/lp64_wp.html’ for a discussion – -but the most commonly available model leaves ‘int’ as 32 bits.) +but the most commonly available model leaves int as 32 bits.) A limit of 2147483647 items doesn’t really matter on a 32-bit platform because you’ll run out of memory before hitting the length limit. Each list item requires space for a pointer, which is 4 bytes, plus space for -a *note PyObject: 5b7. representing the item. 2147483647*4 is already +a *note PyObject: 4ab. representing the item. 2147483647*4 is already more bytes than a 32-bit address space can contain. It’s possible to address that much memory on a 64-bit platform, however. The pointers for a list that size would only require 16 GiB of space, so it’s not unreasonable that Python programmers might construct lists that large. Therefore, the Python interpreter had to be changed to use some -type other than ‘int’, and this will be a 64-bit type on 64-bit -platforms. The change will cause incompatibilities on 64-bit machines, -so it was deemed worth making the transition now, while the number of -64-bit users is still relatively small. (In 5 or 10 years, we may `all' -be on 64-bit machines, and the transition would be more painful then.) +type other than int, and this will be a 64-bit type on 64-bit platforms. +The change will cause incompatibilities on 64-bit machines, so it was +deemed worth making the transition now, while the number of 64-bit users +is still relatively small. (In 5 or 10 years, we may `all' be on 64-bit +machines, and the transition would be more painful then.) This change most strongly affects authors of C extension modules. Python strings and container types such as lists and tuples now use ‘Py_ssize_t’ to store their size. Functions such as *note -PyList_Size(): e45. now return ‘Py_ssize_t’. Code in extension modules +PyList_Size(): d58. now return ‘Py_ssize_t’. Code in extension modules may therefore need to have some variables changed to ‘Py_ssize_t’. -The *note PyArg_ParseTuple(): 396. and *note Py_BuildValue(): 3f3. +The *note PyArg_ParseTuple(): 256. and *note Py_BuildValue(): 2b9. functions have a new conversion code, ‘n’, for ‘Py_ssize_t’. *note -PyArg_ParseTuple(): 396.’s ‘s#’ and ‘t#’ still output ‘int’ by default, +PyArg_ParseTuple(): 256.’s ‘s#’ and ‘t#’ still output int by default, but you can define the macro ‘PY_SSIZE_T_CLEAN’ before including ‘Python.h’ to make them return ‘Py_ssize_t’. @@ -44571,27 +41980,27 @@ PEP 353(2) - Using ssize_t as the index type (2) https://www.python.org/dev/peps/pep-0353  -File: python.info, Node: PEP 357 The ‘__index__’ method, Next: Other Language Changes<12>, Prev: PEP 353 Using ssize_t as the index type, Up: What’s New in Python 2 5 +File: python.info, Node: PEP 357 The ‘__index__’ method, Next: Other Language Changes<11>, Prev: PEP 353 Using ssize_t as the index type, Up: What’s New in Python 2 5 -1.13.11 PEP 357: The ‘__index__’ method +1.12.11 PEP 357: The ‘__index__’ method --------------------------------------- The NumPy developers had a problem that could only be solved by adding a -new special method, *note __index__(): 2c5. When using slice notation, -as in ‘[start:stop:step]’, the values of the `start', `stop', and `step' +new special method, ‘__index__()’. When using slice notation, as in +‘[start:stop:step]’, the values of the `start', `stop', and `step' indexes must all be either integers or long integers. NumPy defines a variety of specialized integer types corresponding to unsigned and signed integers of 8, 16, 32, and 64 bits, but there was no way to signal that these types could be used as slice indexes. -Slicing can’t just use the existing *note __int__(): 2c6. method because -that method is also used to implement coercion to integers. If slicing -used *note __int__(): 2c6, floating-point numbers would also become -legal slice indexes and that’s clearly an undesirable behaviour. +Slicing can’t just use the existing ‘__int__()’ method because that +method is also used to implement coercion to integers. If slicing used +‘__int__()’, floating-point numbers would also become legal slice +indexes and that’s clearly an undesirable behaviour. -Instead, a new special method called *note __index__(): 2c5. was added. -It takes no arguments and returns an integer giving the slice index to -use. For example: +Instead, a new special method called ‘__index__()’ was added. It takes +no arguments and returns an integer giving the slice index to use. For +example: class C: def __index__ (self): @@ -44599,12 +42008,12 @@ use. For example: The return value must be either a Python integer or long integer. The interpreter will check that the type returned is correct, and raises a -*note TypeError: 1fe. if this requirement isn’t met. +*note TypeError: 17f. if this requirement isn’t met. A corresponding ‘nb_index’ slot was added to the C-level *note -PyNumberMethods: e48. structure to let C extensions implement this +PyNumberMethods: d5b. structure to let C extensions implement this protocol. ‘PyNumber_Index(obj)’ can be used in extension code to call -the *note __index__(): 2c5. function and retrieve its result. +the ‘__index__()’ function and retrieve its result. See also ........ @@ -44618,19 +42027,19 @@ PEP 357(1) - Allowing Any Object to be Used for Slicing (1) https://www.python.org/dev/peps/pep-0357  -File: python.info, Node: Other Language Changes<12>, Next: New Improved and Removed Modules, Prev: PEP 357 The ‘__index__’ method, Up: What’s New in Python 2 5 +File: python.info, Node: Other Language Changes<11>, Next: New Improved and Removed Modules, Prev: PEP 357 The ‘__index__’ method, Up: What’s New in Python 2 5 -1.13.12 Other Language Changes +1.12.12 Other Language Changes ------------------------------ Here are all of the changes that Python 2.5 makes to the core Python language. - * The *note dict: 164. type has a new hook for letting subclasses + * The *note dict: 1a4. type has a new hook for letting subclasses provide a default value when a key isn’t contained in the dictionary. When a key isn’t found, the dictionary’s ‘__missing__(key)’ method will be called. This hook is used to - implement the new ‘defaultdict’ class in the *note collections: 1d. + implement the new ‘defaultdict’ class in the *note collections: 1e. module. The following example defines a dictionary that returns zero for any missing key: @@ -44680,11 +42089,11 @@ language. (Implemented by Georg Brandl following a suggestion by Tom Lynn.) - * The *note min(): 8f8. and *note max(): 8f9. built-in functions + * The *note min(): 7ee. and *note max(): 7ef. built-in functions gained a ‘key’ keyword parameter analogous to the ‘key’ argument for ‘sort()’. This parameter supplies a function that takes a single argument and is called for every value in the list; *note - min(): 8f8./*note max(): 8f9. will return the element with the + min(): 7ee./*note max(): 7ef. will return the element with the smallest/largest return value from this function. For example, to find the longest string in a list, you can do: @@ -44696,21 +42105,21 @@ language. (Contributed by Steven Bethard and Raymond Hettinger.) - * Two new built-in functions, *note any(): e4b. and *note all(): e4c, + * Two new built-in functions, *note any(): d5e. and *note all(): d5f, evaluate whether an iterator contains any true or false values. - *note any(): e4b. returns *note True: 596. if any value returned by - the iterator is true; otherwise it will return *note False: 491. - *note all(): e4c. returns *note True: 596. only if all of the + *note any(): d5e. returns *note True: 48a. if any value returned by + the iterator is true; otherwise it will return *note False: 379. + *note all(): d5f. returns *note True: 48a. only if all of the values returned by the iterator evaluate as true. (Suggested by Guido van Rossum, and implemented by Raymond Hettinger.) - * The result of a class’s *note __hash__(): 44e. method can now be - either a long integer or a regular integer. If a long integer is - returned, the hash of that value is taken. In earlier versions the - hash value was required to be a regular integer, but in 2.5 the - *note id(): e4d. built-in was changed to always return non-negative - numbers, and users often seem to use ‘id(self)’ in *note - __hash__(): 44e. methods (though this is discouraged). + * The result of a class’s ‘__hash__()’ method can now be either a + long integer or a regular integer. If a long integer is returned, + the hash of that value is taken. In earlier versions the hash + value was required to be a regular integer, but in 2.5 the *note + id(): d60. built-in was changed to always return non-negative + numbers, and users often seem to use ‘id(self)’ in ‘__hash__()’ + methods (though this is discouraged). * ASCII is now the default encoding for modules. It’s now a syntax error if a module contains string literals with 8-bit characters @@ -44721,7 +42130,7 @@ language. # -*- coding: latin1 -*- - * A new warning, *note UnicodeWarning: e4e, is triggered when you + * A new warning, *note UnicodeWarning: d61, is triggered when you attempt to compare a Unicode string and an 8-bit string that can’t be converted to Unicode using the default ASCII encoding. The result of the comparison is false: @@ -44734,28 +42143,28 @@ language. >>> chr(127) == unichr(127) # chr(127) can be converted True - Previously this would raise a *note UnicodeDecodeError: 32e. + Previously this would raise a *note UnicodeDecodeError: 1e9. exception, but in 2.5 this could result in puzzling problems when accessing a dictionary. If you looked up ‘unichr(128)’ and ‘chr(128)’ was being used as a key, you’d get a *note - UnicodeDecodeError: 32e. exception. Other changes in 2.5 resulted + UnicodeDecodeError: 1e9. exception. Other changes in 2.5 resulted in this exception being raised instead of suppressed by the code in ‘dictobject.c’ that implements dictionaries. Raising an exception for such a comparison is strictly correct, but the change might have broken code, so instead *note UnicodeWarning: - e4e. was introduced. + d61. was introduced. (Implemented by Marc-André Lemburg.) * One error that Python programmers sometimes make is forgetting to include an ‘__init__.py’ module in a package directory. Debugging this mistake can be confusing, and usually requires running Python - with the *note -v: e4f. switch to log all the paths searched. In - Python 2.5, a new *note ImportWarning: 6d1. warning is triggered + with the *note -v: d62. switch to log all the paths searched. In + Python 2.5, a new *note ImportWarning: 5c5. warning is triggered when an import would have picked up a directory as a package but no ‘__init__.py’ was found. This warning is silently ignored by - default; provide the *note -Wd: 15b. option when running the Python + default; provide the *note -Wd: 408. option when running the Python executable to display the warning message. (Implemented by Thomas Wouters.) @@ -44770,16 +42179,16 @@ language. * Menu: * Interactive Interpreter Changes:: -* Optimizations: Optimizations<11>. +* Optimizations: Optimizations<10>. ---------- Footnotes ---------- (1) https://www.python.org/dev/peps/pep-0263  -File: python.info, Node: Interactive Interpreter Changes, Next: Optimizations<11>, Up: Other Language Changes<12> +File: python.info, Node: Interactive Interpreter Changes, Next: Optimizations<10>, Up: Other Language Changes<11> -1.13.12.1 Interactive Interpreter Changes +1.12.12.1 Interactive Interpreter Changes ......................................... In the interactive interpreter, ‘quit’ and ‘exit’ have long been strings @@ -44794,14 +42203,14 @@ who try ‘quit()’ or ‘exit()’ will now exit the interpreter as they expect. (Implemented by Georg Brandl.) The Python executable now accepts the standard long options *note –help: -e52. and *note –version: 6ca.; on Windows, it also accepts the *note /?: -e53. option for displaying a help message. (Implemented by Georg +d65. and *note –version: 5be.; on Windows, it also accepts the *note /?: +d66. option for displaying a help message. (Implemented by Georg Brandl.)  -File: python.info, Node: Optimizations<11>, Prev: Interactive Interpreter Changes, Up: Other Language Changes<12> +File: python.info, Node: Optimizations<10>, Prev: Interactive Interpreter Changes, Up: Other Language Changes<11> -1.13.12.2 Optimizations +1.12.12.2 Optimizations ....................... Several of the optimizations were developed at the NeedForSpeed sprint, @@ -44812,7 +42221,7 @@ optimizations added at this sprint are specially marked in the following list. * When they were introduced in Python 2.4, the built-in *note set: - 1f6. and *note frozenset: 1f7. types were built on top of Python’s + b4f. and *note frozenset: bce. types were built on top of Python’s dictionary type. In 2.5 the internal data structure has been customized for implementing sets, and as a result sets will use a third less memory and are somewhat faster. (Implemented by Raymond @@ -44833,19 +42242,19 @@ list. * It’s now illegal to mix iterating over a file with ‘for line in file’ and calling the file object’s ‘read()’/*note readline(): - de./‘readlines()’ methods. Iteration uses an internal buffer and + df./‘readlines()’ methods. Iteration uses an internal buffer and the ‘read*()’ methods don’t use that buffer. Instead they would return the data following the buffer, causing the data to appear out of order. Mixing iteration and these methods will now trigger - a *note ValueError: 16d. from the ‘read*()’ method. (Implemented + a *note ValueError: 1e7. from the ‘read*()’ method. (Implemented by Thomas Wouters.) - * The *note struct: f8. module now compiles structure format strings + * The *note struct: f9. module now compiles structure format strings into an internal representation and caches this representation, yielding a 20% speedup. (Contributed by Bob Ippolito at the NeedForSpeed sprint.) - * The *note re: dd. module got a 1 or 2% speedup by switching to + * The *note re: de. module got a 1 or 2% speedup by switching to Python’s allocator functions instead of the system’s ‘malloc()’ and ‘free()’. (Contributed by Jack Diederich at the NeedForSpeed sprint.) @@ -44877,9 +42286,9 @@ list. Brandl.)  -File: python.info, Node: New Improved and Removed Modules, Next: Build and C API Changes<10>, Prev: Other Language Changes<12>, Up: What’s New in Python 2 5 +File: python.info, Node: New Improved and Removed Modules, Next: Build and C API Changes<10>, Prev: Other Language Changes<11>, Up: What’s New in Python 2 5 -1.13.13 New, Improved, and Removed Modules +1.12.13 New, Improved, and Removed Modules ------------------------------------------ The standard library received many enhancements and bug fixes in Python @@ -44888,11 +42297,11 @@ alphabetically by module name. Consult the ‘Misc/NEWS’ file in the source tree for a more complete list of changes, or look through the SVN logs for all the details. - * The *note audioop: c. module now supports the a-LAW encoding, and + * The *note audioop: d. module now supports the a-LAW encoding, and the code for u-LAW encoding has been improved. (Contributed by Lars Immisch.) - * The *note codecs: 1b. module gained support for incremental codecs. + * The *note codecs: 1c. module gained support for incremental codecs. The ‘codec.lookup()’ function now returns a ‘CodecInfo’ instance instead of a tuple. ‘CodecInfo’ instances behave like a 4-tuple to preserve backward compatibility but also have the attributes @@ -44900,11 +42309,11 @@ logs for all the details. ‘streamwriter’, and ‘streamreader’. Incremental codecs can receive input and produce output in multiple chunks; the output is the same as if the entire input was fed to the non-incremental codec. See - the *note codecs: 1b. module documentation for details. (Designed + the *note codecs: 1c. module documentation for details. (Designed and implemented by Walter Dörwald.) - * The *note collections: 1d. module gained a new type, ‘defaultdict’, - that subclasses the standard *note dict: 164. type. The new type + * The *note collections: 1e. module gained a new type, ‘defaultdict’, + that subclasses the standard *note dict: 1a4. type. The new type mostly behaves like a dictionary but constructs a default value when a key isn’t present, automatically adding it to the dictionary for the requested key value. @@ -44912,8 +42321,8 @@ logs for all the details. The first argument to ‘defaultdict’’s constructor is a factory function that gets called whenever a key is requested but not found. This factory function receives no arguments, so you can use - built-in type constructors such as *note list(): 1f8. or *note - int(): 204. For example, you can make an index of words based on + built-in type constructors such as *note list(): 24e. or *note + int(): 171. For example, you can make an index of words based on their initial letter like this: words = """Nel mezzo del cammin di nostra vita @@ -44937,32 +42346,32 @@ logs for all the details. (Contributed by Guido van Rossum.) * The ‘deque’ double-ended queue type supplied by the *note - collections: 1d. module now has a ‘remove(value)’ method that + collections: 1e. module now has a ‘remove(value)’ method that removes the first occurrence of `value' in the queue, raising *note - ValueError: 16d. if the value isn’t found. (Contributed by Raymond + ValueError: 1e7. if the value isn’t found. (Contributed by Raymond Hettinger.) - * New module: The *note contextlib: 23. module contains helper - functions for use with the new ‘*note with: 7dc.’ statement. See - section *note The contextlib module: e3e. for more about this + * New module: The *note contextlib: 24. module contains helper + functions for use with the new ‘*note with: 6d0.’ statement. See + section *note The contextlib module: d51. for more about this module. - * New module: The *note cProfile: 27. module is a C implementation of - the existing *note profile: d3. module that has much lower + * New module: The *note cProfile: 28. module is a C implementation of + the existing *note profile: d4. module that has much lower overhead. The module’s interface is the same as *note profile: - d3.: you run ‘cProfile.run('main()')’ to profile a function, can + d4.: you run ‘cProfile.run('main()')’ to profile a function, can save profile data to a file, etc. It’s not yet known if the Hotshot profiler, which is also written in C but doesn’t match the - *note profile: d3. module’s interface, will continue to be + *note profile: d4. module’s interface, will continue to be maintained in future versions of Python. (Contributed by Armin Rigo.) - Also, the *note pstats: d4. module for analyzing the data measured + Also, the *note pstats: d5. module for analyzing the data measured by the profiler now supports directing the output to any file object by supplying a `stream' argument to the ‘Stats’ constructor. (Contributed by Skip Montanaro.) - * The *note csv: 29. module, which parses files in comma-separated + * The *note csv: 2a. module, which parses files in comma-separated value format, received several enhancements and a number of bugfixes. You can now set the maximum size in bytes of a field by calling the ‘csv.field_size_limit(new_limit)’ function; omitting @@ -44984,11 +42393,11 @@ logs for all the details. (Contributed by Skip Montanaro and Andrew McNamara.) - * The *note datetime: 1a0. class in the *note datetime: 30. module + * The *note datetime: 181. class in the *note datetime: 31. module now has a ‘strptime(string, format)’ method for parsing date strings, contributed by Josh Spoerri. It uses the same format - characters as *note time.strptime(): e58. and *note - time.strftime(): c39.: + characters as *note time.strptime(): d6b. and *note + time.strftime(): b45.: from datetime import datetime @@ -44996,12 +42405,12 @@ logs for all the details. '%H:%M:%S %Y-%m-%d') * The ‘SequenceMatcher.get_matching_blocks()’ method in the *note - difflib: 36. module now guarantees to return a minimal list of + difflib: 37. module now guarantees to return a minimal list of blocks describing matching subsequences. Previously, the algorithm would occasionally break a block of matching elements into two list entries. (Enhancement by Tim Peters.) - * The *note doctest: 66. module gained a ‘SKIP’ option that keeps an + * The *note doctest: 67. module gained a ‘SKIP’ option that keeps an example from being executed at all. This is intended for code snippets that are usage examples intended for the reader and aren’t actually test cases. @@ -45011,31 +42420,31 @@ logs for all the details. makes it easier to use non-ASCII characters in tests contained within a docstring. (Contributed by Bjorn Tillenius.) - * The *note email: 67. package has been updated to version 4.0. + * The *note email: 69. package has been updated to version 4.0. (Contributed by Barry Warsaw.) - * The *note fileinput: 7e. module was made more flexible. Unicode + * The *note fileinput: 80. module was made more flexible. Unicode filenames are now supported, and a `mode' parameter that defaults - to ‘"r"’ was added to the *note input(): d35. function to allow - opening files in binary or *note universal newlines: 6ed. mode. + to ‘"r"’ was added to the *note input(): c47. function to allow + opening files in binary or *note universal newlines: 5e1. mode. Another new parameter, `openhook', lets you use a function other - than *note open(): 16f. to open the input files. Once you’re + than *note open(): 4e1. to open the input files. Once you’re iterating over the set of files, the ‘FileInput’ object’s new ‘fileno()’ returns the file descriptor for the currently opened file. (Contributed by Georg Brandl.) - * In the *note gc: 84. module, the new ‘get_count()’ function returns + * In the *note gc: 86. module, the new ‘get_count()’ function returns a 3-tuple containing the current collection counts for the three GC generations. This is accounting information for the garbage collector; when these counts reach a specified threshold, a garbage collection sweep will be made. The existing *note gc.collect(): - 35e. function now takes an optional `generation' argument of 0, 1, + 21a. function now takes an optional `generation' argument of 0, 1, or 2 to specify which generation to collect. (Contributed by Barry Warsaw.) * The ‘nsmallest()’ and ‘nlargest()’ functions in the *note heapq: - 8d. module now support a ‘key’ keyword parameter similar to the one - provided by the *note min(): 8f8./*note max(): 8f9. functions and + 8e. module now support a ‘key’ keyword parameter similar to the one + provided by the *note min(): 7ee./*note max(): 7ef. functions and the ‘sort()’ methods. For example: >>> import heapq @@ -45047,7 +42456,7 @@ logs for all the details. (Contributed by Raymond Hettinger.) - * The *note itertools.islice(): 4ab. function now accepts ‘None’ for + * The *note itertools.islice(): 393. function now accepts ‘None’ for the start and step arguments. This makes it more compatible with the attributes of slice objects, so that you can now write the following: @@ -45057,11 +42466,11 @@ logs for all the details. (Contributed by Raymond Hettinger.) - * The *note format(): 5d8. function in the *note locale: a9. module + * The *note format(): 4cc. function in the *note locale: aa. module has been modified and two new functions were added, ‘format_string()’ and ‘currency()’. - The *note format(): 5d8. function’s `val' parameter could + The *note format(): 4cc. function’s `val' parameter could previously be a string as long as no more than one %char specifier appeared; now the parameter must be exactly one %char specifier with no surrounding text. An optional `monetary' parameter was @@ -45070,7 +42479,7 @@ logs for all the details. digits. To format strings with multiple %char specifiers, use the new - ‘format_string()’ function that works like *note format(): 5d8. but + ‘format_string()’ function that works like *note format(): 4cc. but also supports mixing %char specifiers with arbitrary text. A new ‘currency()’ function was also added that formats a number @@ -45078,7 +42487,7 @@ logs for all the details. (Contributed by Georg Brandl.) - * The *note mailbox: ae. module underwent a massive rewrite to add + * The *note mailbox: af. module underwent a massive rewrite to add the capability to modify mailboxes in addition to reading them. A new set of classes that include ‘mbox’, ‘MH’, and ‘Maildir’ are used to read mailboxes, and have an ‘add(message)’ method to add @@ -45099,40 +42508,40 @@ logs for all the details. (Contributed by Gregory K. Johnson. Funding was provided by Google’s 2005 Summer of Code.) - * New module: the *note msilib: b5. module allows creating Microsoft + * New module: the *note msilib: b6. module allows creating Microsoft Installer ‘.msi’ files and CAB files. Some support for reading the ‘.msi’ database is also included. (Contributed by Martin von Löwis.) - * The *note nis: bf. module now supports accessing domains other than + * The *note nis: c0. module now supports accessing domains other than the system default domain by supplying a `domain' argument to the - *note nis.match(): e59. and *note nis.maps(): e5a. functions. + *note nis.match(): d6c. and *note nis.maps(): d6d. functions. (Contributed by Ben Bell.) - * The *note operator: c2. module’s ‘itemgetter()’ and ‘attrgetter()’ + * The *note operator: c3. module’s ‘itemgetter()’ and ‘attrgetter()’ functions now support multiple fields. A call such as ‘operator.attrgetter('a', 'b')’ will return a function that retrieves the ‘a’ and ‘b’ attributes. Combining this new feature with the ‘sort()’ method’s ‘key’ parameter lets you easily sort lists using multiple fields. (Contributed by Raymond Hettinger.) - * The *note optparse: c3. module was updated to version 1.5.1 of the + * The *note optparse: c4. module was updated to version 1.5.1 of the Optik library. The ‘OptionParser’ class gained an ‘epilog’ attribute, a string that will be printed after the help message, and a ‘destroy()’ method to break reference cycles created by the object. (Contributed by Greg Ward.) - * The *note os: c4. module underwent several changes. The + * The *note os: c5. module underwent several changes. The ‘stat_float_times’ variable now defaults to true, meaning that - *note os.stat(): 324. will now return time values as floats. (This - doesn’t necessarily mean that *note os.stat(): 324. will return + *note os.stat(): 1dd. will now return time values as floats. (This + doesn’t necessarily mean that *note os.stat(): 1dd. will return times that are precise to fractions of a second; not all systems support such precision.) - Constants named *note os.SEEK_SET: e5b, *note os.SEEK_CUR: e5c, and - *note os.SEEK_END: e5d. have been added; these are the parameters - to the *note os.lseek(): b3b. function. Two new constants for - locking are *note os.O_SHLOCK: e5e. and *note os.O_EXLOCK: e5f. + Constants named *note os.SEEK_SET: d6e, *note os.SEEK_CUR: d6f, and + *note os.SEEK_END: d70. have been added; these are the parameters + to the *note os.lseek(): a3f. function. Two new constants for + locking are *note os.O_SHLOCK: d71. and *note os.O_EXLOCK: d72. Two new functions, ‘wait3()’ and ‘wait4()’, were added. They’re similar the ‘waitpid()’ function which waits for a child process to @@ -45141,16 +42550,16 @@ logs for all the details. doesn’t take a process ID as input, so it waits for any child process to exit and returns a 3-tuple of `process-id', `exit-status', `resource-usage' as returned from the *note - resource.getrusage(): e60. function. ‘wait4(pid)’ does take a + resource.getrusage(): d73. function. ‘wait4(pid)’ does take a process ID. (Contributed by Chad J. Schroeder.) - On FreeBSD, the *note os.stat(): 324. function now returns times + On FreeBSD, the *note os.stat(): 1dd. function now returns times with nanosecond resolution, and the returned object now has ‘st_gen’ and ‘st_birthtime’. The ‘st_flags’ attribute is also available, if the platform supports it. (Contributed by Antti Louko and Diego Pettenò.) - * The Python debugger provided by the *note pdb: c9. module can now + * The Python debugger provided by the *note pdb: ca. module can now store lists of commands to execute when a breakpoint is reached and execution stops. Once breakpoint #1 has been created, enter ‘commands 1’ and enter a series of commands to be executed, @@ -45158,13 +42567,13 @@ logs for all the details. commands that resume execution, such as ‘continue’ or ‘next’. (Contributed by Grégoire Dooms.) - * The *note pickle: ca. and ‘cPickle’ modules no longer accept a - return value of ‘None’ from the *note __reduce__(): 2d3. method; - the method must return a tuple of arguments instead. The ability - to return ‘None’ was deprecated in Python 2.4, so this completes - the removal of the feature. + * The *note pickle: cb. and ‘cPickle’ modules no longer accept a + return value of ‘None’ from the ‘__reduce__()’ method; the method + must return a tuple of arguments instead. The ability to return + ‘None’ was deprecated in Python 2.4, so this completes the removal + of the feature. - * The *note pkgutil: cd. module, containing various utility functions + * The *note pkgutil: ce. module, containing various utility functions for finding packages, was enhanced to support PEP 302(1)’s import hooks and now also works for packages stored in ZIP-format archives. (Contributed by Phillip J. Eby.) @@ -45181,7 +42590,7 @@ logs for all the details. * The ‘pyexpat’ module now uses version 2.0 of the Expat parser. (Contributed by Trent Mick.) - * The *note Queue: de0. class provided by the ‘Queue’ module gained + * The *note Queue: cef. class provided by the ‘Queue’ module gained two new methods. ‘join()’ blocks until all items in the queue have been retrieved and all processing work on the items have been completed. Worker threads call the other new method, @@ -45198,8 +42607,8 @@ logs for all the details. the directory to ‘sys.path’, this removal shouldn’t affect your code. - * The *note rlcompleter: e1. module is no longer dependent on - importing the *note readline: de. module and therefore now works on + * The *note rlcompleter: e2. module is no longer dependent on + importing the *note readline: df. module and therefore now works on non-Unix platforms. (Patch from Robert Kiendl.) * The ‘SimpleXMLRPCServer’ and ‘DocXMLRPCServer’ classes now have a @@ -45208,7 +42617,7 @@ logs for all the details. ‘'/RPC2'’. Setting ‘rpc_paths’ to ‘None’ or an empty tuple disables this path checking. - * The *note socket: ef. module now supports ‘AF_NETLINK’ sockets on + * The *note socket: f0. module now supports ‘AF_NETLINK’ sockets on Linux, thanks to a patch from Philippe Biondi. Netlink sockets are a Linux-specific mechanism for communications between a user-space process and kernel code; an introductory article about them is at @@ -45226,13 +42635,13 @@ logs for all the details. ‘getproto()’ accessor methods to retrieve the family, type, and protocol values for the socket. - * New module: the *note spwd: f1. module provides functions for + * New module: the *note spwd: f2. module provides functions for accessing the shadow password database on systems that support shadow passwords. - * The *note struct: f8. is now faster because it compiles format + * The *note struct: f9. is now faster because it compiles format strings into ‘Struct’ objects with ‘pack()’ and ‘unpack()’ methods. - This is similar to how the *note re: dd. module lets you create + This is similar to how the *note re: de. module lets you create compiled regular expression objects. You can still use the module-level ‘pack()’ and ‘unpack()’ functions; they’ll create ‘Struct’ objects and cache them. Or you can use ‘Struct’ instances @@ -45260,17 +42669,17 @@ logs for all the details. 'trunk', '45313:45315')’. This information is also available to C extensions via the *note - Py_GetBuildInfo(): e61. function that returns a string of build + Py_GetBuildInfo(): d74. function that returns a string of build information like this: ‘"trunk:45355:45356M, Apr 13 2006, 07:42:19"’. (Contributed by Barry Warsaw.) - * Another new function, *note sys._current_frames(): e62, returns the + * Another new function, *note sys._current_frames(): d75, returns the current stack frames for all running threads as a dictionary mapping thread identifiers to the topmost stack frame currently active in that thread at the time the function is called. (Contributed by Tim Peters.) - * The ‘TarFile’ class in the *note tarfile: 101. module now has an + * The ‘TarFile’ class in the *note tarfile: 102. module now has an ‘extractall()’ method that extracts all members from the archive into the current working directory. It’s also possible to set a different directory as the extraction target, and to unpack only a @@ -45280,19 +42689,19 @@ logs for all the details. autodetected using the mode ‘'r|*'’. (Contributed by Lars Gustäbel.) - * The *note threading: 10b. module now lets you set the stack size + * The *note threading: 10a. module now lets you set the stack size used when new threads are created. The ‘stack_size([*size*])’ function returns the currently configured stack size, and supplying the optional `size' parameter sets a new value. Not all platforms support changing the stack size, but Windows, POSIX threading, and OS/2 all do. (Contributed by Andrew MacIntyre.) - * The *note unicodedata: 123. module has been updated to use version + * The *note unicodedata: 11b. module has been updated to use version 4.1.0 of the Unicode character database. Version 3.2.0 is required by some specifications, so it’s still available as *note - unicodedata.ucd_3_2_0: e63. + unicodedata.ucd_3_2_0: d76. - * New module: the *note uuid: 12d. module generates universally + * New module: the *note uuid: 125. module generates universally unique identifiers (UUIDs) according to RFC 4122(2). The RFC defines several different UUID versions that are generated from a starting string, from system properties, or purely randomly. This @@ -45320,37 +42729,37 @@ logs for all the details. (Contributed by Ka-Ping Yee.) - * The *note weakref: 131. module’s ‘WeakKeyDictionary’ and + * The *note weakref: 129. module’s ‘WeakKeyDictionary’ and ‘WeakValueDictionary’ types gained new methods for iterating over the weak references contained in the dictionary. ‘iterkeyrefs()’ and ‘keyrefs()’ methods were added to ‘WeakKeyDictionary’, and ‘itervaluerefs()’ and ‘valuerefs()’ were added to ‘WeakValueDictionary’. (Contributed by Fred L. Drake, Jr.) - * The *note webbrowser: 132. module received a number of + * The *note webbrowser: 12a. module received a number of enhancements. It’s now usable as a script with ‘python -m webbrowser’, taking a URL as the argument; there are a number of switches to control the behaviour (‘-n’ for a new browser window, ‘-t’ for a new tab). New module-level functions, ‘open_new()’ and ‘open_new_tab()’, were added to support this. The module’s *note - open(): 16f. function supports an additional feature, an + open(): 4e1. function supports an additional feature, an `autoraise' parameter that signals whether to raise the open window when possible. A number of additional browsers were added to the supported list such as Firefox, Opera, Konqueror, and elinks. (Contributed by Oleg Broytmann and Georg Brandl.) - * The ‘xmlrpclib’ module now supports returning *note datetime: 1a0. + * The ‘xmlrpclib’ module now supports returning *note datetime: 181. objects for the XML-RPC date type. Supply ‘use_datetime=True’ to the ‘loads()’ function or the ‘Unmarshaller’ class to enable this feature. (Contributed by Skip Montanaro.) - * The *note zipfile: 14b. module now supports the ZIP64 version of + * The *note zipfile: 143. module now supports the ZIP64 version of the format, meaning that a .zip archive can now be larger than 4 GiB and can contain individual files larger than 4 GiB. (Contributed by Ronald Oussoren.) - * The *note zlib: 14d. module’s ‘Compress’ and ‘Decompress’ objects - now support a *note copy(): 25. method that makes a copy of the + * The *note zlib: 145. module’s ‘Compress’ and ‘Decompress’ objects + now support a *note copy(): 26. method that makes a copy of the object’s internal state and returns a new ‘Compress’ or ‘Decompress’ object. (Contributed by Chris AtLee.) @@ -45373,14 +42782,14 @@ logs for all the details.  File: python.info, Node: The ctypes package, Next: The ElementTree package, Up: New Improved and Removed Modules -1.13.13.1 The ctypes package +1.12.13.1 The ctypes package ............................ -The *note ctypes: 2a. package, written by Thomas Heller, has been added -to the standard library. *note ctypes: 2a. lets you call arbitrary +The *note ctypes: 2b. package, written by Thomas Heller, has been added +to the standard library. *note ctypes: 2b. lets you call arbitrary functions in shared libraries or DLLs. Long-time users may remember the ‘dl’ module, which provides functions for loading shared libraries and -calling functions in them. The *note ctypes: 2a. package is much +calling functions in them. The *note ctypes: 2b. package is much fancier. To load a shared library or DLL, you must create an instance of the @@ -45394,7 +42803,7 @@ attributes of the ‘CDLL’ object. result = libc.printf("Line of output\n") Type constructors for the various C types are provided: ‘c_int()’, -‘c_float()’, ‘c_double()’, ‘c_char_p()’ (equivalent to ‘char *’), and so +‘c_float()’, ‘c_double()’, ‘c_char_p()’ (equivalent to char*), and so forth. Unlike Python’s types, the C versions are all mutable; you can assign to their ‘value’ attribute to change the wrapped value. Python integers and strings will be automatically converted to the @@ -45420,11 +42829,11 @@ C functions are assumed to return integers, but you can set the >>> libc.atof('2.71828') 2.71828 -*note ctypes: 2a. also provides a wrapper for Python’s C API as the +*note ctypes: 2b. also provides a wrapper for Python’s C API as the ‘ctypes.pythonapi’ object. This object does `not' release the global interpreter lock before calling a function, because the lock must be held when calling into the interpreter’s code. There’s a ‘py_object()’ -type constructor that will create a *note PyObject *: 5b7. pointer. A +type constructor that will create a *note PyObject: 4ab.* pointer. A simple usage: import ctypes @@ -45437,11 +42846,11 @@ simple usage: Don’t forget to use ‘py_object()’; if it’s omitted you end up with a segmentation fault. -*note ctypes: 2a. has been around for a while, but people still write +*note ctypes: 2b. has been around for a while, but people still write and distribution hand-coded extension modules because you can’t rely on -*note ctypes: 2a. being present. Perhaps developers will begin to write -Python wrappers atop a library accessed through *note ctypes: 2a. -instead of extension modules, now that *note ctypes: 2a. is included +*note ctypes: 2b. being present. Perhaps developers will begin to write +Python wrappers atop a library accessed through *note ctypes: 2b. +instead of extension modules, now that *note ctypes: 2b. is included with core Python. See also @@ -45451,12 +42860,12 @@ See also The ctypes web page, with a tutorial, reference, and FAQ. -The documentation for the *note ctypes: 2a. module. +The documentation for the *note ctypes: 2b. module.  File: python.info, Node: The ElementTree package, Next: The hashlib package, Prev: The ctypes package, Up: New Improved and Removed Modules -1.13.13.2 The ElementTree package +1.12.13.2 The ElementTree package ................................. A subset of Fredrik Lundh’s ElementTree library for processing XML has @@ -45586,11 +42995,11 @@ See also  File: python.info, Node: The hashlib package, Next: The sqlite3 package, Prev: The ElementTree package, Up: New Improved and Removed Modules -1.13.13.3 The hashlib package +1.12.13.3 The hashlib package ............................. -A new *note hashlib: 8c. module, written by Gregory P. Smith, has been -added to replace the ‘md5’ and ‘sha’ modules. *note hashlib: 8c. adds +A new *note hashlib: 8d. module, written by Gregory P. Smith, has been +added to replace the ‘md5’ and ‘sha’ modules. *note hashlib: 8d. adds support for additional secure hashes (SHA-224, SHA-256, SHA-384, and SHA-512). When available, the module uses OpenSSL for fast platform optimized implementations of algorithms. @@ -45627,23 +43036,23 @@ new hashing objects are named differently. Once a hash object has been created, its methods are the same as before: ‘update(string)’ hashes the specified string into the current digest state, ‘digest()’ and ‘hexdigest()’ return the digest value as a binary -string or a string of hex digits, and *note copy(): 25. returns a new +string or a string of hex digits, and *note copy(): 26. returns a new hashing object with the same digest state. See also ........ -The documentation for the *note hashlib: 8c. module. +The documentation for the *note hashlib: 8d. module.  File: python.info, Node: The sqlite3 package, Next: The wsgiref package, Prev: The hashlib package, Up: New Improved and Removed Modules -1.13.13.4 The sqlite3 package +1.12.13.4 The sqlite3 package ............................. The pysqlite module (‘http://www.pysqlite.org’), a wrapper for the SQLite embedded database, has been added to the standard library under -the package name *note sqlite3: f2. +the package name *note sqlite3: f3. SQLite is a C library that provides a lightweight disk-based database that doesn’t require a separate server process and allows accessing the @@ -45743,7 +43152,7 @@ See also The SQLite web page; the documentation describes the syntax and the available data types for the supported SQL dialect. -The documentation for the *note sqlite3: f2. module. +The documentation for the *note sqlite3: f3. module. PEP 249(2) - Database API Specification 2.0 @@ -45758,12 +43167,12 @@ PEP 249(2) - Database API Specification 2.0  File: python.info, Node: The wsgiref package, Prev: The sqlite3 package, Up: New Improved and Removed Modules -1.13.13.5 The wsgiref package +1.12.13.5 The wsgiref package ............................. The Web Server Gateway Interface (WSGI) v1.0 defines a standard interface between web servers and Python web applications and is -described in PEP 333(1). The *note wsgiref: 135. package is a reference +described in PEP 333(1). The *note wsgiref: 12d. package is a reference implementation of the WSGI specification. The package includes a basic HTTP server that will run a WSGI @@ -45799,7 +43208,7 @@ PEP 333(2) - Python Web Server Gateway Interface v1.0  File: python.info, Node: Build and C API Changes<10>, Next: Porting to Python 2 5, Prev: New Improved and Removed Modules, Up: What’s New in Python 2 5 -1.13.14 Build and C API Changes +1.12.14 Build and C API Changes ------------------------------- Changes to Python’s build process and to the C API include: @@ -45818,8 +43227,8 @@ Changes to Python’s build process and to the C API include: * The largest change to the C API came from PEP 353(2), which modifies the interpreter to use a ‘Py_ssize_t’ type definition - instead of ‘int’. See the earlier section *note PEP 353; Using - ssize_t as the index type: e43. for a discussion of this change. + instead of int. See the earlier section *note PEP 353; Using + ssize_t as the index type: d56. for a discussion of this change. * The design of the bytecode compiler has changed a great deal, no longer generating bytecode by traversing the parse tree. Instead @@ -45828,7 +43237,7 @@ Changes to Python’s build process and to the C API include: bytecode. It’s possible for Python code to obtain AST objects by using the - *note compile(): 2ea. built-in and specifying ‘_ast.PyCF_ONLY_AST’ + *note compile(): 1a0. built-in and specifying ‘_ast.PyCF_ONLY_AST’ as the value of the `flags' parameter: from _ast import PyCF_ONLY_AST @@ -45870,29 +43279,29 @@ Changes to Python’s build process and to the C API include: Note that this change means extension modules must be more careful when allocating memory. Python’s API has many different functions for allocating memory that are grouped into families. For example, - *note PyMem_Malloc(): 601, *note PyMem_Realloc(): a52, and *note - PyMem_Free(): e70. are one family that allocates raw memory, while - *note PyObject_Malloc(): 604, *note PyObject_Realloc(): e71, and - *note PyObject_Free(): 600. are another family that’s supposed to + *note PyMem_Malloc(): 4f6, *note PyMem_Realloc(): 950, and *note + PyMem_Free(): d83. are one family that allocates raw memory, while + *note PyObject_Malloc(): 4f8, *note PyObject_Realloc(): d84, and + *note PyObject_Free(): 4f5. are another family that’s supposed to be used for creating Python objects. Previously these different families all reduced to the platform’s ‘malloc()’ and ‘free()’ functions. This meant it didn’t matter if you got things wrong and allocated memory with the ‘PyMem()’ - function but freed it with the *note PyObject(): 5b7. function. + function but freed it with the *note PyObject(): 4ab. function. With 2.5’s changes to obmalloc, these families now do different things and mismatches will probably result in a segfault. You should carefully test your C extension modules with Python 2.5. * The built-in set types now have an official C API. Call *note - PySet_New(): e72. and *note PyFrozenSet_New(): e73. to create a new - set, *note PySet_Add(): e74. and *note PySet_Discard(): e75. to add - and remove elements, and *note PySet_Contains(): e76. and *note - PySet_Size(): e77. to examine the set’s state. (Contributed by + PySet_New(): d85. and *note PyFrozenSet_New(): d86. to create a new + set, *note PySet_Add(): d87. and *note PySet_Discard(): d88. to add + and remove elements, and *note PySet_Contains(): d89. and *note + PySet_Size(): d8a. to examine the set’s state. (Contributed by Raymond Hettinger.) * C code can now obtain information about the exact revision of the - Python interpreter by calling the *note Py_GetBuildInfo(): e61. + Python interpreter by calling the *note Py_GetBuildInfo(): d74. function that returns a string of build information like this: ‘"trunk:45355:45356M, Apr 13 2006, 07:42:19"’. (Contributed by Barry Warsaw.) @@ -45916,7 +43325,7 @@ Changes to Python’s build process and to the C API include: in favour of ‘PyErr_WarnEx(category, message, stacklevel)’ which lets you specify the number of stack frames separating this function and the caller. A `stacklevel' of 1 is the function - calling *note PyErr_WarnEx(): e78, 2 is the function above that, + calling *note PyErr_WarnEx(): d8b, 2 is the function above that, and so forth. (Added by Neal Norwitz.) * The CPython interpreter is still written in C, but the code can now @@ -45946,7 +43355,7 @@ Changes to Python’s build process and to the C API include:  File: python.info, Node: Port-Specific Changes, Up: Build and C API Changes<10> -1.13.14.1 Port-Specific Changes +1.12.14.1 Port-Specific Changes ............................... * MacOS X (10.3 and higher): dynamic loading of modules now uses the @@ -45968,7 +43377,7 @@ File: python.info, Node: Port-Specific Changes, Up: Build and C API Changes<10  File: python.info, Node: Porting to Python 2 5, Next: Acknowledgements<3>, Prev: Build and C API Changes<10>, Up: What’s New in Python 2 5 -1.13.15 Porting to Python 2.5 +1.12.15 Porting to Python 2.5 ----------------------------- This section lists previously described changes that may require changes @@ -45981,30 +43390,29 @@ to your code: * Previously, the ‘gi_frame’ attribute of a generator was always a frame object. Because of the PEP 342(1) changes described in - section *note PEP 342; New Generator Features: e2d, it’s now + section *note PEP 342; New Generator Features: d40, it’s now possible for ‘gi_frame’ to be ‘None’. - * A new warning, *note UnicodeWarning: e4e, is triggered when you + * A new warning, *note UnicodeWarning: d61, is triggered when you attempt to compare a Unicode string and an 8-bit string that can’t be converted to Unicode using the default ASCII encoding. Previously such comparisons would raise a *note UnicodeDecodeError: - 32e. exception. + 1e9. exception. - * Library: the *note csv: 29. module is now stricter about multi-line + * Library: the *note csv: 2a. module is now stricter about multi-line quoted fields. If your files contain newlines embedded within fields, the input should be split into lines in a manner which preserves the newline characters. - * Library: the *note locale: a9. module’s *note format(): 5d8. + * Library: the *note locale: aa. module’s *note format(): 4cc. function’s would previously accept any string as long as no more than one %char specifier appeared. In Python 2.5, the argument must be exactly one %char specifier with no surrounding text. - * Library: The *note pickle: ca. and ‘cPickle’ modules no longer - accept a return value of ‘None’ from the *note __reduce__(): 2d3. - method; the method must return a tuple of arguments instead. The - modules also no longer accept the deprecated `bin' keyword - parameter. + * Library: The *note pickle: cb. and ‘cPickle’ modules no longer + accept a return value of ‘None’ from the ‘__reduce__()’ method; the + method must return a tuple of arguments instead. The modules also + no longer accept the deprecated `bin' keyword parameter. * Library: The ‘SimpleXMLRPCServer’ and ‘DocXMLRPCServer’ classes now have a ‘rpc_paths’ attribute that constrains XML-RPC operations to @@ -46012,16 +43420,16 @@ to your code: ‘'/RPC2'’. Setting ‘rpc_paths’ to ‘None’ or an empty tuple disables this path checking. - * C API: Many functions now use ‘Py_ssize_t’ instead of ‘int’ to - allow processing more data on 64-bit machines. Extension code may - need to make the same change to avoid warnings and to support - 64-bit machines. See the earlier section *note PEP 353; Using - ssize_t as the index type: e43. for a discussion of this change. + * C API: Many functions now use ‘Py_ssize_t’ instead of int to allow + processing more data on 64-bit machines. Extension code may need + to make the same change to avoid warnings and to support 64-bit + machines. See the earlier section *note PEP 353; Using ssize_t as + the index type: d56. for a discussion of this change. * C API: The obmalloc changes mean that you must be careful to not - mix usage of the ‘PyMem_*()’ and ‘PyObject_*()’ families of - functions. Memory allocated with one family’s ‘*_Malloc()’ must be - freed with the corresponding family’s ‘*_Free()’ function. + mix usage of the PyMem_* and PyObject_* families of functions. + Memory allocated with one family’s *_Malloc must be freed with the + corresponding family’s *_Free function. ---------- Footnotes ---------- @@ -46030,7 +43438,7 @@ to your code:  File: python.info, Node: Acknowledgements<3>, Prev: Porting to Python 2 5, Up: What’s New in Python 2 5 -1.13.16 Acknowledgements +1.12.16 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -46044,7 +43452,7 @@ Barry Warsaw, Thomas Wouters.  File: python.info, Node: What’s New in Python 2 4, Next: What’s New in Python 2 3, Prev: What’s New in Python 2 5, Up: What’s New in Python -1.14 What’s New in Python 2.4 +1.13 What’s New in Python 2.4 ============================= @@ -46083,7 +43491,7 @@ rationale. * PEP 327; Decimal Data Type: PEP 327 Decimal Data Type. * PEP 328; Multi-line Imports: PEP 328 Multi-line Imports. * PEP 331; Locale-Independent Float/String Conversions: PEP 331 Locale-Independent Float/String Conversions. -* Other Language Changes: Other Language Changes<13>. +* Other Language Changes: Other Language Changes<12>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules<3>. * Build and C API Changes: Build and C API Changes<11>. * Porting to Python 2.4: Porting to Python 2 4. @@ -46092,7 +43500,7 @@ rationale.  File: python.info, Node: PEP 218 Built-In Set Objects, Next: PEP 237 Unifying Long Integers and Integers, Up: What’s New in Python 2 4 -1.14.1 PEP 218: Built-In Set Objects +1.13.1 PEP 218: Built-In Set Objects ------------------------------------ Python 2.3 introduced the ‘sets’ module. C implementations of set data @@ -46128,8 +43536,8 @@ differences, and symmetric differences. >>> a set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'z']) -The *note frozenset(): 1f7. type is an immutable version of *note set(): -1f6. Since it is immutable and hashable, it may be used as a dictionary +The *note frozenset(): bce. type is an immutable version of *note set(): +b4f. Since it is immutable and hashable, it may be used as a dictionary key or as a member of another set. The ‘sets’ module remains in the standard library, and may be useful if @@ -46151,13 +43559,13 @@ PEP 218(1) - Adding a Built-In Set Object Type  File: python.info, Node: PEP 237 Unifying Long Integers and Integers, Next: PEP 289 Generator Expressions, Prev: PEP 218 Built-In Set Objects, Up: What’s New in Python 2 4 -1.14.2 PEP 237: Unifying Long Integers and Integers +1.13.2 PEP 237: Unifying Long Integers and Integers --------------------------------------------------- The lengthy transition process for this PEP, begun in Python 2.2, takes another step forward in Python 2.4. In 2.3, certain integer operations that would behave differently after int/long unification triggered *note -FutureWarning: 437. warnings and returned values limited to 32 or 64 +FutureWarning: 317. warnings and returned values limited to 32 or 64 bits (depending on your platform). In 2.4, these expressions no longer produce a warning and instead produce a different result that’s usually a long integer. @@ -46182,11 +43590,11 @@ PEP 237(1) - Unifying Long Integers and Integers  File: python.info, Node: PEP 289 Generator Expressions, Next: PEP 292 Simpler String Substitutions, Prev: PEP 237 Unifying Long Integers and Integers, Up: What’s New in Python 2 4 -1.14.3 PEP 289: Generator Expressions +1.13.3 PEP 289: Generator Expressions ------------------------------------- The iterator feature introduced in Python 2.2 and the *note itertools: -a3. module make it easier to write programs that loop through large data +a4. module make it easier to write programs that loop through large data sets without having the entire data set in memory at one time. List comprehensions don’t fit into this picture very well because they produce a Python list object containing all of the items. This @@ -46247,7 +43655,7 @@ PEP 289(1) - Generator Expressions  File: python.info, Node: PEP 292 Simpler String Substitutions, Next: PEP 318 Decorators for Functions and Methods, Prev: PEP 289 Generator Expressions, Up: What’s New in Python 2 4 -1.14.4 PEP 292: Simpler String Substitutions +1.13.4 PEP 292: Simpler String Substitutions -------------------------------------------- Some new classes in the standard library provide an alternative @@ -46263,14 +43671,14 @@ The usual way of substituting variables by name is the ‘%’ operator: When writing the template string, it can be easy to forget the ‘i’ or ‘s’ after the closing parenthesis. This isn’t a big problem if the template is in a Python module, because you run the code, get an -“Unsupported format character” *note ValueError: 16d, and fix the +“Unsupported format character” *note ValueError: 1e7, and fix the problem. However, consider an application such as Mailman where template strings or translations are being edited by users who aren’t aware of the Python language. The format string’s syntax is complicated to explain to such users, and if they make a mistake, it’s difficult to provide helpful feedback to them. -PEP 292 adds a ‘Template’ class to the *note string: f6. module that +PEP 292 adds a ‘Template’ class to the *note string: f7. module that uses ‘$’ to indicate a substitution: >>> import string @@ -46279,7 +43687,7 @@ uses ‘$’ to indicate a substitution: '2: The Best of Times' If a key is missing from the dictionary, the ‘substitute()’ method will -raise a *note KeyError: 3ec. There’s also a ‘safe_substitute()’ method +raise a *note KeyError: 2b2. There’s also a ‘safe_substitute()’ method that ignores missing keys: >>> t = string.Template('$page: $title') @@ -46300,14 +43708,14 @@ PEP 292(1) - Simpler String Substitutions  File: python.info, Node: PEP 318 Decorators for Functions and Methods, Next: PEP 322 Reverse Iteration, Prev: PEP 292 Simpler String Substitutions, Up: What’s New in Python 2 4 -1.14.5 PEP 318: Decorators for Functions and Methods +1.13.5 PEP 318: Decorators for Functions and Methods ---------------------------------------------------- Python 2.2 extended Python’s object model by adding static methods and class methods, but it didn’t extend Python’s syntax to provide any new way of defining static or class methods. Instead, you had to write a -*note def: e85. statement in the usual way, and pass the resulting -method to a *note staticmethod(): 30d. or *note classmethod(): 30c. +*note def: d98. statement in the usual way, and pass the resulting +method to a *note staticmethod(): 1c5. or *note classmethod(): 1c4. function that would wrap up the function as a method of the new type. Your code would look like this: @@ -46318,7 +43726,7 @@ Your code would look like this: meth = classmethod(meth) # Rebind name to wrapped-up class method If the method was very long, it would be easy to miss or forget the -*note classmethod(): 30c. invocation after the function body. +*note classmethod(): 1c4. invocation after the function body. The intention was always to add some syntax to make such definitions more readable, but at the time of 2.2’s release a good syntax was not @@ -46327,7 +43735,7 @@ for easier access to the feature; a new syntactic feature has been added to meet this need. The new feature is called “function decorators”. The name comes from -the idea that *note classmethod(): 30c, *note staticmethod(): 30d, and +the idea that *note classmethod(): 1c4, *note staticmethod(): 1c5, and friends are storing additional information on a function object; they’re `decorating' functions with more details. @@ -46442,7 +43850,7 @@ PEP 318(2) - Decorators for Functions, Methods and Classes  File: python.info, Node: PEP 322 Reverse Iteration, Next: PEP 324 New subprocess Module, Prev: PEP 318 Decorators for Functions and Methods, Up: What’s New in Python 2 4 -1.14.6 PEP 322: Reverse Iteration +1.13.6 PEP 322: Reverse Iteration --------------------------------- A new built-in function, ‘reversed(seq)’, takes a sequence and returns @@ -46457,12 +43865,12 @@ order. 1 Compared to extended slicing, such as ‘range(1,4)[::-1]’, *note -reversed(): 2c9. is easier to read, runs faster, and uses substantially +reversed(): 17b. is easier to read, runs faster, and uses substantially less memory. -Note that *note reversed(): 2c9. only accepts sequences, not arbitrary +Note that *note reversed(): 17b. only accepts sequences, not arbitrary iterators. If you want to reverse an iterator, first convert it to a -list with *note list(): 1f8. +list with *note list(): 24e. >>> input = open('/etc/passwd', 'r') >>> for line in reversed(list(input)): @@ -46485,7 +43893,7 @@ PEP 322(1) - Reverse Iteration  File: python.info, Node: PEP 324 New subprocess Module, Next: PEP 327 Decimal Data Type, Prev: PEP 322 Reverse Iteration, Up: What’s New in Python 2 4 -1.14.7 PEP 324: New subprocess Module +1.13.7 PEP 324: New subprocess Module ------------------------------------- The standard library provides a number of ways to execute a subprocess, @@ -46494,11 +43902,11 @@ offering different features and different levels of complexity. which executes the command) and dangerous (you have to be careful about escaping the shell’s metacharacters). The ‘popen2’ module offers classes that can capture standard output and standard error from the -subprocess, but the naming is confusing. The *note subprocess: f9. +subprocess, but the naming is confusing. The *note subprocess: fa. module cleans this up, providing a unified interface that offers all the features you might need. -Instead of ‘popen2’’s collection of classes, *note subprocess: f9. +Instead of ‘popen2’’s collection of classes, *note subprocess: fa. contains a single class called ‘Popen’ whose constructor supports a number of different keyword arguments. @@ -46511,7 +43919,7 @@ number of different keyword arguments. `args' is commonly a sequence of strings that will be the arguments to the program executed as the subprocess. (If the `shell' argument is true, `args' can be a string which will then be passed on to the shell -for interpretation, just as *note os.system(): e88. does.) +for interpretation, just as *note os.system(): d9b. does.) `stdin', `stdout', and `stderr' specify what the subprocess’s input, output, and error streams will be. You can provide a file object or a @@ -46533,7 +43941,7 @@ The constructor has a number of handy options: started. * `universal_newlines' opens the child’s input and output using - Python’s *note universal newlines: 6ed. feature. + Python’s *note universal newlines: 5e1. feature. Once you’ve created the ‘Popen’ instance, you can call its ‘wait()’ method to pause until the subprocess has exited, ‘poll()’ to check if @@ -46545,7 +43953,7 @@ standard error, returning a tuple ‘(stdout_data, stderr_data)’. ‘call()’ is a shortcut that passes its arguments along to the ‘Popen’ constructor, waits for the command to complete, and returns the status code of the subprocess. It can serve as a safer analog to *note -os.system(): e88.: +os.system(): d9b.: sts = subprocess.call(['dpkg', '-i', '/tmp/new-package.deb']) if sts == 0: @@ -46562,7 +43970,7 @@ provide a string instead of a sequence: sts = subprocess.call('dpkg -i /tmp/new-package.deb', shell=True) The PEP takes various examples of shell and Python code and shows how -they’d be translated into Python code that uses *note subprocess: f9. +they’d be translated into Python code that uses *note subprocess: fa. Reading this section of the PEP is highly recommended. See also @@ -46580,11 +43988,11 @@ PEP 324(1) - subprocess - New process module  File: python.info, Node: PEP 327 Decimal Data Type, Next: PEP 328 Multi-line Imports, Prev: PEP 324 New subprocess Module, Up: What’s New in Python 2 4 -1.14.8 PEP 327: Decimal Data Type +1.13.8 PEP 327: Decimal Data Type --------------------------------- Python has always supported floating-point (FP) numbers, based on the -underlying C ‘double’ type, as a data type. However, while most +underlying C double type, as a data type. However, while most programming languages provide a floating-point type, many people (even programmers) are unaware that floating-point numbers don’t represent certain decimal fractions accurately. The new ‘Decimal’ type can @@ -46600,7 +44008,7 @@ limit.  File: python.info, Node: Why is Decimal needed?, Next: The Decimal type, Up: PEP 327 Decimal Data Type -1.14.8.1 Why is Decimal needed? +1.13.8.1 Why is Decimal needed? ............................... The limitations arise from the representation used for floating-point @@ -46622,7 +44030,7 @@ is 2 because the mantissa is multiplied by 4 (2 to the power of the exponent 2); 1.25 * 4 equals 5. Modern systems usually provide floating-point support that conforms to a -standard called IEEE 754. C’s ‘double’ type is usually implemented as a +standard called IEEE 754. C’s double type is usually implemented as a 64-bit IEEE 754 number, which uses 52 bits of space for the mantissa. This means that numbers can only be specified to 52 bits of precision. If you’re trying to represent numbers whose expansion repeats endlessly, @@ -46657,10 +44065,10 @@ Hence, the ‘Decimal’ type was created.  File: python.info, Node: The Decimal type, Next: The Context type, Prev: Why is Decimal needed?, Up: PEP 327 Decimal Data Type -1.14.8.2 The ‘Decimal’ type +1.13.8.2 The ‘Decimal’ type ........................... -A new module, *note decimal: 35, was added to Python’s standard library. +A new module, *note decimal: 36, was added to Python’s standard library. It contains two classes, ‘Decimal’ and ‘Context’. ‘Decimal’ instances represent numbers, and ‘Context’ instances are used to wrap up various settings such as the precision and default rounding mode. @@ -46731,8 +44139,8 @@ floating-point numbers: TypeError: You can interact Decimal only with int, long or Decimal data types. >>> -‘Decimal’ numbers can be used with the *note math: b1. and *note cmath: -18. modules, but note that they’ll be immediately converted to +‘Decimal’ numbers can be used with the *note math: b2. and *note cmath: +19. modules, but note that they’ll be immediately converted to floating-point numbers before the operation is performed, resulting in a possible loss of precision and accuracy. You’ll also get back a regular floating-point number and not a ‘Decimal’. @@ -46754,7 +44162,7 @@ implement them.  File: python.info, Node: The Context type, Prev: The Decimal type, Up: PEP 327 Decimal Data Type -1.14.8.3 The ‘Context’ type +1.13.8.3 The ‘Context’ type ........................... Instances of the ‘Context’ class encapsulate several settings for @@ -46762,7 +44170,7 @@ decimal operations: * ‘prec’ is the precision, the number of decimal places. - * ‘rounding’ specifies the rounding mode. The *note decimal: 35. + * ‘rounding’ specifies the rounding mode. The *note decimal: 36. module has constants for the various possibilities: ‘ROUND_DOWN’, ‘ROUND_CEILING’, ‘ROUND_HALF_EVEN’, and various others. @@ -46801,7 +44209,7 @@ exceptions can be raised: The ‘Context’ instance also has various methods for formatting numbers such as ‘to_eng_string()’ and ‘to_sci_string()’. -For more information, see the documentation for the *note decimal: 35. +For more information, see the documentation for the *note decimal: 36. module, which includes a quick-start tutorial and a reference. See also @@ -46831,7 +44239,7 @@ PEP 327(1) - Decimal Data Type  File: python.info, Node: PEP 328 Multi-line Imports, Next: PEP 331 Locale-Independent Float/String Conversions, Prev: PEP 327 Decimal Data Type, Up: What’s New in Python 2 4 -1.14.9 PEP 328: Multi-line Imports +1.13.9 PEP 328: Multi-line Imports ---------------------------------- One language change is a small syntactic tweak aimed at making it easier @@ -46855,7 +44263,7 @@ expression, so the backslashes are no longer needed: CGIXMLRPCRequestHandler, resolve_dotted_attribute) -The PEP also proposes that all *note import: ce9. statements be absolute +The PEP also proposes that all *note import: bfd. statements be absolute imports, with a leading ‘.’ character to indicate a relative import. This part of the PEP was not implemented for Python 2.4, but was completed for Python 2.5. @@ -46873,12 +44281,12 @@ PEP 328(1) - Imports: Multi-Line and Absolute/Relative (1) https://www.python.org/dev/peps/pep-0328  -File: python.info, Node: PEP 331 Locale-Independent Float/String Conversions, Next: Other Language Changes<13>, Prev: PEP 328 Multi-line Imports, Up: What’s New in Python 2 4 +File: python.info, Node: PEP 331 Locale-Independent Float/String Conversions, Next: Other Language Changes<12>, Prev: PEP 328 Multi-line Imports, Up: What’s New in Python 2 4 -1.14.10 PEP 331: Locale-Independent Float/String Conversions +1.13.10 PEP 331: Locale-Independent Float/String Conversions ------------------------------------------------------------ -The *note locale: a9. modules lets Python software select various +The *note locale: aa. modules lets Python software select various conversions and display conventions that are localized to a particular country or language. However, the module was careful to not change the numeric locale because various functions in Python’s implementation @@ -46895,15 +44303,15 @@ Python API that perform ASCII-only conversions, ignoring the locale setting: * ‘PyOS_ascii_strtod(str, ptr)’ and ‘PyOS_ascii_atof(str, ptr)’ both - convert a string to a C ‘double’. + convert a string to a C double. - * ‘PyOS_ascii_formatd(buffer, buf_len, format, d)’ converts a - ‘double’ to an ASCII string. + * ‘PyOS_ascii_formatd(buffer, buf_len, format, d)’ converts a double + to an ASCII string. The code for these functions came from the GLib library (‘https://developer.gnome.org/glib/stable/’), whose developers kindly relicensed the relevant functions and donated them to the Python -Software Foundation. The *note locale: a9. module can now change the +Software Foundation. The *note locale: aa. module can now change the numeric locale, letting extensions such as GTK+ produce the correct results. @@ -46919,9 +44327,9 @@ PEP 331(1) - Locale-Independent Float/String Conversions (1) https://www.python.org/dev/peps/pep-0331  -File: python.info, Node: Other Language Changes<13>, Next: New Improved and Deprecated Modules<3>, Prev: PEP 331 Locale-Independent Float/String Conversions, Up: What’s New in Python 2 4 +File: python.info, Node: Other Language Changes<12>, Next: New Improved and Deprecated Modules<3>, Prev: PEP 331 Locale-Independent Float/String Conversions, Up: What’s New in Python 2 4 -1.14.11 Other Language Changes +1.13.11 Other Language Changes ------------------------------ Here are all of the changes that Python 2.4 makes to the core Python @@ -46929,7 +44337,7 @@ language. * Decorators for functions and methods were added ( PEP 318(1)). - * Built-in *note set(): 1f6. and *note frozenset(): 1f7. types were + * Built-in *note set(): b4f. and *note frozenset(): bce. types were added ( PEP 218(2)). Other new built-ins include the ‘reversed(seq)’ function ( PEP 322(3)). @@ -46941,8 +44349,8 @@ language. * You can now put parentheses around the list of names in a ‘from module import names’ statement ( PEP 328(6)). - * The *note dict.update(): e90. method now accepts the same argument - forms as the *note dict: 164. constructor. This includes any + * The *note dict.update(): da3. method now accepts the same argument + forms as the *note dict: 1a4. constructor. This includes any mapping, any iterable of key/value pairs, and keyword arguments. (Contributed by Raymond Hettinger.) @@ -46995,7 +44403,7 @@ language. ‘lower()’ method. For simple key functions and comparison functions, it is often - possible to avoid a *note lambda: cfb. expression by using an + possible to avoid a *note lambda: c0f. expression by using an unbound method instead. For example, the above case-insensitive sort is best written as: @@ -47017,7 +44425,7 @@ language. (All changes to ‘sort()’ contributed by Raymond Hettinger.) * There is a new built-in function ‘sorted(iterable)’ that works like - the in-place *note list.sort(): 54a. method but can be used in + the in-place *note list.sort(): 435. method but can be used in expressions. The differences are: * the input may be any iterable; @@ -47050,7 +44458,7 @@ language. * Integer operations will no longer trigger an ‘OverflowWarning’. The ‘OverflowWarning’ warning will disappear in Python 2.5. - * The interpreter gained a new switch, *note -m: 445, that takes a + * The interpreter gained a new switch, *note -m: 328, that takes a name, searches for the corresponding module on ‘sys.path’, and runs the module as a script. For example, you can now run the Python profiler with ‘python -m profile’. (Contributed by Nick Coghlan.) @@ -47060,9 +44468,9 @@ language. type for the `locals' parameter. Previously this had to be a regular Python dictionary. (Contributed by Raymond Hettinger.) - * The *note zip(): cfe. built-in function and ‘itertools.izip()’ now + * The *note zip(): c12. built-in function and ‘itertools.izip()’ now return an empty list if called with no arguments. Previously they - raised a *note TypeError: 1fe. exception. This makes them more + raised a *note TypeError: 17f. exception. This makes them more suitable for use with variable length argument lists: >>> def transpose(array): @@ -47081,13 +44489,13 @@ language. the same module into succeeding, leading to confusing errors. (Fixed by Tim Peters.) - * *note None: 203. is now a constant; code that binds a new value to + * *note None: 158. is now a constant; code that binds a new value to the name ‘None’ is now a syntax error. (Contributed by Raymond Hettinger.) * Menu: -* Optimizations: Optimizations<12>. +* Optimizations: Optimizations<11>. ---------- Footnotes ---------- @@ -47104,9 +44512,9 @@ language. (6) https://www.python.org/dev/peps/pep-0328  -File: python.info, Node: Optimizations<12>, Up: Other Language Changes<13> +File: python.info, Node: Optimizations<11>, Up: Other Language Changes<12> -1.14.11.1 Optimizations +1.13.11.1 Optimizations ....................... * The inner loops for list and tuple slicing were optimized and now @@ -47123,10 +44531,10 @@ File: python.info, Node: Optimizations<12>, Up: Other Language Changes<13> its argument into a temporary list before extending the base list. (Contributed by Raymond Hettinger.) - * *note list(): 1f8, *note tuple(): 1a2, *note map(): cf9, *note - filter(): cfa, and *note zip(): cfe. now run several times faster - with non-sequence arguments that supply a *note __len__(): e92. - method. (Contributed by Raymond Hettinger.) + * *note list(): 24e, *note tuple(): 46f, *note map(): c0d, *note + filter(): c0e, and *note zip(): c12. now run several times faster + with non-sequence arguments that supply a ‘__len__()’ method. + (Contributed by Raymond Hettinger.) * The methods ‘list.__getitem__()’, ‘dict.__getitem__()’, and ‘dict.__contains__()’ are now implemented as ‘method_descriptor’ @@ -47158,9 +44566,9 @@ most commonly used measurement of Python’s performance. Your own applications may show greater or smaller benefits from Python 2.4.)  -File: python.info, Node: New Improved and Deprecated Modules<3>, Next: Build and C API Changes<11>, Prev: Other Language Changes<13>, Up: What’s New in Python 2 4 +File: python.info, Node: New Improved and Deprecated Modules<3>, Next: Build and C API Changes<11>, Prev: Other Language Changes<12>, Up: What’s New in Python 2 4 -1.14.12 New, Improved, and Deprecated Modules +1.13.12 New, Improved, and Deprecated Modules --------------------------------------------- As usual, Python’s standard library received a number of enhancements @@ -47169,16 +44577,16 @@ sorted alphabetically by module name. Consult the ‘Misc/NEWS’ file in the source tree for a more complete list of changes, or look through the CVS logs for all the details. - * The *note asyncore: a. module’s ‘loop()’ function now has a `count' + * The *note asyncore: b. module’s ‘loop()’ function now has a `count' parameter that lets you perform a limited number of passes through the polling loop. The default is still to loop forever. - * The *note base64: d. module now has more complete RFC 3548(1) + * The *note base64: e. module now has more complete RFC 3548(1) support for Base64, Base32, and Base16 encoding and decoding, including optional case folding and optional alternative alphabets. (Contributed by Barry Warsaw.) - * The *note bisect: 11. module now has an underlying C implementation + * The *note bisect: 12. module now has an underlying C implementation for improved performance. (Contributed by Dmitry Vasiliev.) * The CJKCodecs collections of East Asian codecs, maintained by @@ -47206,7 +44614,7 @@ CVS logs for all the details. calls will resume decoding where previous ones left off. (Implemented by Walter Dörwald.) - * There is a new *note collections: 1d. module for various + * There is a new *note collections: 1e. module for various specialized collection datatypes. Currently it contains just one type, ‘deque’, a double-ended queue that supports efficiently adding and removing elements from either end: @@ -47226,26 +44634,26 @@ CVS logs for all the details. >>> 'h' in d # search the deque True - Several modules, such as the ‘Queue’ and *note threading: 10b. - modules, now take advantage of *note collections.deque: 62d. for + Several modules, such as the ‘Queue’ and *note threading: 10a. + modules, now take advantage of *note collections.deque: 51e. for improved performance. (Contributed by Raymond Hettinger.) * The ‘ConfigParser’ classes have been enhanced slightly. The ‘read()’ method now returns a list of the files that were - successfully parsed, and the *note set(): 1f6. method raises *note - TypeError: 1fe. if passed a `value' argument that isn’t a string. + successfully parsed, and the *note set(): b4f. method raises *note + TypeError: 17f. if passed a `value' argument that isn’t a string. (Contributed by John Belmonte and David Goodger.) - * The *note curses: 2b. module now supports the ncurses extension + * The *note curses: 2c. module now supports the ncurses extension ‘use_default_colors()’. On platforms where the terminal supports transparency, this makes it possible to use a transparent background. (Contributed by Jörg Lehmann.) - * The *note difflib: 36. module now includes an ‘HtmlDiff’ class that + * The *note difflib: 37. module now includes an ‘HtmlDiff’ class that creates an HTML table showing a side by side comparison of two versions of a text. (Contributed by Dan Gass.) - * The *note email: 67. package was updated to version 3.0, which + * The *note email: 69. package was updated to version 3.0, which dropped various deprecated APIs and removes support for Python versions earlier than 2.3. The 3.0 version of the package uses a new incremental parser for MIME messages, available in the @@ -47255,7 +44663,7 @@ CVS logs for all the details. ‘defect’ attribute of the message. (Developed by Anthony Baxter, Barry Warsaw, Thomas Wouters, and others.) - * The *note heapq: 8d. module has been converted to C. The resulting + * The *note heapq: 8e. module has been converted to C. The resulting tenfold improvement in speed makes the module suitable for handling high volumes of data. In addition, the module has two new functions ‘nlargest()’ and ‘nsmallest()’ that use heaps to find the @@ -47267,11 +44675,11 @@ CVS logs for all the details. names such as ‘OK’, ‘CREATED’, ‘CONTINUE’, and ‘MOVED_PERMANENTLY’; use pydoc to get a full list. (Contributed by Andrew Eland.) - * The *note imaplib: 97. module now supports IMAP’s THREAD command + * The *note imaplib: 98. module now supports IMAP’s THREAD command (contributed by Yves Dionne) and new ‘deleteacl()’ and ‘myrights()’ methods (contributed by Arnaud Mazin). - * The *note itertools: a3. module gained a ‘groupby(iterable[, + * The *note itertools: a4. module gained a ‘groupby(iterable[, *func*])’ function. `iterable' is something that can be iterated over to return a stream of elements, and the optional `func' parameter is a function that takes an element and returns a key @@ -47321,7 +44729,7 @@ CVS logs for all the details. (Contributed by Hye-Shik Chang.) - * *note itertools: a3. also gained a function named ‘tee(iterator, + * *note itertools: a4. also gained a function named ‘tee(iterator, N)’ that returns `N' independent iterators that replicate `iterator'. If `N' is omitted, the default is 2. @@ -47339,18 +44747,18 @@ CVS logs for all the details. should therefore be used carefully if the leading iterator can run far ahead of the trailing iterator in a long stream of inputs. If the separation is large, then you might as well use *note list(): - 1f8. instead. When the iterators track closely with one another, + 24e. instead. When the iterators track closely with one another, ‘tee()’ is ideal. Possible applications include bookmarking, windowing, or lookahead iterators. (Contributed by Raymond Hettinger.) - * A number of functions were added to the *note locale: a9. module, + * A number of functions were added to the *note locale: aa. module, such as ‘bind_textdomain_codeset()’ to specify a particular encoding and a family of ‘l*gettext()’ functions that return messages in the chosen encoding. (Contributed by Gustavo Niemeyer.) - * Some keyword arguments were added to the *note logging: aa. + * Some keyword arguments were added to the *note logging: ab. package’s ‘basicConfig()’ function to simplify log configuration. The default behavior is to log messages to standard error, but various keyword arguments can be specified to log to a particular @@ -47362,7 +44770,7 @@ CVS logs for all the details. level=0, # Log all messages format='%(levelname):%(process):%(thread):%(message)') - Other additions to the *note logging: aa. package include a + Other additions to the *note logging: ab. package include a ‘log(level, msg)’ convenience method, as well as a ‘TimedRotatingFileHandler’ class that rotates its log files at a timed interval. The module already had ‘RotatingFileHandler’, @@ -47372,21 +44780,21 @@ CVS logs for all the details. (Changes implemented by Vinay Sajip.) - * The *note marshal: b0. module now shares interned strings on + * The *note marshal: b1. module now shares interned strings on unpacking a data structure. This may shrink the size of certain pickle strings, but the primary effect is to make ‘.pyc’ files significantly smaller. (Contributed by Martin von Löwis.) - * The *note nntplib: c0. module’s ‘NNTP’ class gained ‘description()’ + * The *note nntplib: c1. module’s ‘NNTP’ class gained ‘description()’ and ‘descriptions()’ methods to retrieve newsgroup descriptions for a single group or for a range of groups. (Contributed by Jürgen A. Erhard.) - * Two new functions were added to the *note operator: c2. module, + * Two new functions were added to the *note operator: c3. module, ‘attrgetter(attr)’ and ‘itemgetter(index)’. Both functions return callables that take a single argument and return the corresponding attribute or item; these callables make excellent data extractors - when used with *note map(): cf9. or *note sorted(): 549. For + when used with *note map(): c0d. or *note sorted(): 434. For example: >>> L = [('c', 2), ('d', 1), ('a', 4), ('b', 3)] @@ -47399,21 +44807,21 @@ CVS logs for all the details. (Contributed by Raymond Hettinger.) - * The *note optparse: c3. module was updated in various ways. The + * The *note optparse: c4. module was updated in various ways. The module now passes its messages through *note gettext.gettext(): - e94, making it possible to internationalize Optik’s help and error + da6, making it possible to internationalize Optik’s help and error messages. Help messages for options can now include the string ‘'%default'’, which will be replaced by the option’s default value. (Contributed by Greg Ward.) * The long-term plan is to deprecate the ‘rfc822’ module in some - future Python release in favor of the *note email: 67. package. To + future Python release in favor of the *note email: 69. package. To this end, the ‘email.Utils.formatdate()’ function has been changed to make it usable as a replacement for ‘rfc822.formatdate()’. You may want to write new e-mail processing code with this in mind. (Change implemented by Anthony Baxter.) - * A new ‘urandom(n)’ function was added to the *note os: c4. module, + * A new ‘urandom(n)’ function was added to the *note os: c5. module, returning a string containing `n' bytes of random data. This function provides access to platform-specific sources of randomness such as ‘/dev/urandom’ on Linux or the Windows CryptoAPI. @@ -47426,23 +44834,23 @@ CVS logs for all the details. a destination that doesn’t exist. (Contributed by Beni Cherniavsky.) - * A new ‘getsid()’ function was added to the *note posix: d1. module - that underlies the *note os: c4. module. (Contributed by J. + * A new ‘getsid()’ function was added to the *note posix: d2. module + that underlies the *note os: c5. module. (Contributed by J. Raynor.) - * The *note poplib: d0. module now supports POP over SSL. + * The *note poplib: d1. module now supports POP over SSL. (Contributed by Hector Urtubia.) - * The *note profile: d3. module can now profile C extension + * The *note profile: d4. module can now profile C extension functions. (Contributed by Nick Bastin.) - * The *note random: dc. module has a new method called + * The *note random: dd. module has a new method called ‘getrandbits(N)’ that returns a long integer `N' bits in length. The existing ‘randrange()’ method now uses ‘getrandbits()’ where appropriate, making generation of arbitrarily large random numbers more efficient. (Contributed by Raymond Hettinger.) - * The regular expression language accepted by the *note re: dd. + * The regular expression language accepted by the *note re: de. module was extended with simple conditional expressions, written as ‘(?(group)A|B)’. `group' is either a numeric group ID or a group name defined with ‘(?P...)’ earlier in the expression. If @@ -47451,39 +44859,39 @@ CVS logs for all the details. pattern `B' will be used instead. (Contributed by Gustavo Niemeyer.) - * The *note re: dd. module is also no longer recursive, thanks to a + * The *note re: de. module is also no longer recursive, thanks to a massive amount of work by Gustavo Niemeyer. In a recursive regular expression engine, certain patterns result in a large amount of C stack space being consumed, and it was possible to overflow the stack. For example, if you matched a 30000-byte string of ‘a’ characters against the expression ‘(a|b)+’, one stack frame was consumed per character. Python 2.3 tried to check for stack - overflow and raise a *note RuntimeError: 3df. exception, but + overflow and raise a *note RuntimeError: 2a5. exception, but certain patterns could sidestep the checking and if you were unlucky Python could segfault. Python 2.4’s regular expression engine can match this pattern without problems. - * The *note signal: ea. module now performs tighter error-checking on - the parameters to the *note signal.signal(): b5a. function. For + * The *note signal: eb. module now performs tighter error-checking on + the parameters to the *note signal.signal(): a5e. function. For example, you can’t set a handler on the ‘SIGKILL’ signal; previous versions of Python would quietly accept this, but 2.4 will raise a - *note RuntimeError: 3df. exception. + *note RuntimeError: 2a5. exception. - * Two new functions were added to the *note socket: ef. module. + * Two new functions were added to the *note socket: f0. module. ‘socketpair()’ returns a pair of connected sockets and ‘getservbyport(port)’ looks up the service name for a given port number. (Contributed by Dave Cole and Barry Warsaw.) * The ‘sys.exitfunc()’ function has been deprecated. Code should be - using the existing *note atexit: b. module, which correctly handles + using the existing *note atexit: c. module, which correctly handles calling multiple exit functions. Eventually ‘sys.exitfunc()’ will become a purely internal interface, accessed only by *note atexit: - b. + c. - * The *note tarfile: 101. module now generates GNU-format tar files + * The *note tarfile: 102. module now generates GNU-format tar files by default. (Contributed by Lars Gustäbel.) - * The *note threading: 10b. module now has an elegantly simple way to + * The *note threading: 10a. module now has an elegantly simple way to support thread-local data. The module contains a ‘local’ class whose attribute values are local to different threads. @@ -47498,12 +44906,12 @@ CVS logs for all the details. initialize attributes or to add methods. (Contributed by Jim Fulton.) - * The *note timeit: 10d. module now automatically disables periodic + * The *note timeit: 10c. module now automatically disables periodic garbage collection during the timing loop. This change makes consecutive timings more comparable. (Contributed by Raymond Hettinger.) - * The *note weakref: 131. module now supports a wider variety of + * The *note weakref: 129. module now supports a wider variety of objects including Python functions, class instances, sets, frozensets, deques, arrays, files, sockets, and regular expression pattern objects. (Contributed by Raymond Hettinger.) @@ -47526,7 +44934,7 @@ CVS logs for all the details.  File: python.info, Node: cookielib, Next: doctest<3>, Up: New Improved and Deprecated Modules<3> -1.14.12.1 cookielib +1.13.12.1 cookielib ................... The ‘cookielib’ library supports client-side handling for HTTP cookies, @@ -47550,12 +44958,12 @@ This module was contributed by John J. Lee.  File: python.info, Node: doctest<3>, Prev: cookielib, Up: New Improved and Deprecated Modules<3> -1.14.12.2 doctest +1.13.12.2 doctest ................. -The *note doctest: 66. module underwent considerable refactoring thanks +The *note doctest: 67. module underwent considerable refactoring thanks to Edward Loper and Tim Peters. Testing can still be as simple as -running *note doctest.testmod(): e97, but the refactorings allow +running *note doctest.testmod(): da9, but the refactorings allow customizing the module’s operation in various ways The new ‘DocTestFinder’ class extracts the tests from a given object’s @@ -47597,7 +45005,7 @@ of different flags that customize its behaviour; ambitious users can also write a completely new subclass of ‘OutputChecker’. The default output checker provides a number of handy features. For -example, with the *note doctest.ELLIPSIS: e98. option flag, an ellipsis +example, with the *note doctest.ELLIPSIS: daa. option flag, an ellipsis (‘...’) in the expected output matches any substring, making it easier to accommodate outputs that vary in minor ways: @@ -47616,9 +45024,9 @@ Another special string, ‘’, matches a blank line: """ Another new capability is producing a diff-style display of the output -by specifying the *note doctest.REPORT_UDIFF: e99. (unified diffs), -*note doctest.REPORT_CDIFF: e9a. (context diffs), or *note -doctest.REPORT_NDIFF: e9b. (delta-style) option flags. For example: +by specifying the *note doctest.REPORT_UDIFF: dab. (unified diffs), +*note doctest.REPORT_CDIFF: dac. (context diffs), or *note +doctest.REPORT_NDIFF: dad. (delta-style) option flags. For example: def g (n): """>>> g(4) @@ -47631,7 +45039,7 @@ doctest.REPORT_NDIFF: e9b. (delta-style) option flags. For example: for word in L[:n]: print word -Running the above function’s tests with *note doctest.REPORT_UDIFF: e99. +Running the above function’s tests with *note doctest.REPORT_UDIFF: dab. specified, you get the following output: ********************************************************************** @@ -47649,19 +45057,19 @@ specified, you get the following output:  File: python.info, Node: Build and C API Changes<11>, Next: Porting to Python 2 4, Prev: New Improved and Deprecated Modules<3>, Up: What’s New in Python 2 4 -1.14.13 Build and C API Changes +1.13.13 Build and C API Changes ------------------------------- Some of the changes to Python’s build process and to the C API are: * Three new convenience macros were added for common return values - from extension functions: *note Py_RETURN_NONE: e9d, *note - Py_RETURN_TRUE: e9e, and *note Py_RETURN_FALSE: e9f. (Contributed + from extension functions: *note Py_RETURN_NONE: daf, *note + Py_RETURN_TRUE: db0, and *note Py_RETURN_FALSE: db1. (Contributed by Brett Cannon.) - * Another new macro, ‘Py_CLEAR(obj)’, decreases the reference count - of `obj' and sets `obj' to the null pointer. (Contributed by Jim - Fulton.) + * Another new macro, *note Py_CLEAR: db2.(obj), decreases the + reference count of `obj' and sets `obj' to the null pointer. + (Contributed by Jim Fulton.) * A new function, ‘PyTuple_Pack(N, obj1, obj2, ..., objN)’, constructs tuples from a variable length argument list of Python @@ -47671,21 +45079,21 @@ Some of the changes to Python’s build process and to the C API are: lookups without masking exceptions raised during the look-up process. (Contributed by Raymond Hettinger.) - * The ‘Py_IS_NAN(X)’ macro returns 1 if its float or double argument + * The Py_IS_NAN(X) macro returns 1 if its float or double argument `X' is a NaN. (Contributed by Tim Peters.) * C code can avoid unnecessary locking by using the new *note - PyEval_ThreadsInitialized(): 20d. function to tell if any thread + PyEval_ThreadsInitialized(): db3. function to tell if any thread operations have been performed. If this function returns false, no lock operations are needed. (Contributed by Nick Coghlan.) - * A new function, *note PyArg_VaParseTupleAndKeywords(): ea0, is the - same as *note PyArg_ParseTupleAndKeywords(): 6c3. but takes a + * A new function, *note PyArg_VaParseTupleAndKeywords(): db4, is the + same as *note PyArg_ParseTupleAndKeywords(): 5b7. but takes a ‘va_list’ instead of a number of arguments. (Contributed by Greg Chapman.) * A new method flag, ‘METH_COEXISTS’, allows a function defined in - slots to co-exist with a *note PyCFunction: ea1. having the same + slots to co-exist with a *note PyCFunction: db5. having the same name. This can halve the access time for a method such as ‘set.__contains__()’. (Contributed by Raymond Hettinger.) @@ -47709,7 +45117,7 @@ Some of the changes to Python’s build process and to the C API are:  File: python.info, Node: Port-Specific Changes<2>, Up: Build and C API Changes<11> -1.14.13.1 Port-Specific Changes +1.13.13.1 Port-Specific Changes ............................... * The Windows port now builds under MSVC++ 7.1 as well as version 6. @@ -47718,27 +45126,27 @@ File: python.info, Node: Port-Specific Changes<2>, Up: Build and C API Changes  File: python.info, Node: Porting to Python 2 4, Next: Acknowledgements<4>, Prev: Build and C API Changes<11>, Up: What’s New in Python 2 4 -1.14.14 Porting to Python 2.4 +1.13.14 Porting to Python 2.4 ----------------------------- This section lists previously described changes that may require changes to your code: * Left shifts and hexadecimal/octal constants that are too large no - longer trigger a *note FutureWarning: 437. and return a value + longer trigger a *note FutureWarning: 317. and return a value limited to 32 or 64 bits; instead they return a long integer. * Integer operations will no longer trigger an ‘OverflowWarning’. The ‘OverflowWarning’ warning will disappear in Python 2.5. - * The *note zip(): cfe. built-in function and ‘itertools.izip()’ now - return an empty list instead of raising a *note TypeError: 1fe. + * The *note zip(): c12. built-in function and ‘itertools.izip()’ now + return an empty list instead of raising a *note TypeError: 17f. exception if called with no arguments. - * You can no longer compare the ‘date’ and *note datetime: 1a0. - instances provided by the *note datetime: 30. module. Two + * You can no longer compare the ‘date’ and *note datetime: 181. + instances provided by the *note datetime: 31. module. Two instances of different classes will now always be unequal, and - relative comparisons (‘<’, ‘>’) will raise a *note TypeError: 1fe. + relative comparisons (‘<’, ‘>’) will raise a *note TypeError: 17f. * ‘dircache.listdir()’ now passes exceptions to the caller instead of returning empty lists. @@ -47747,27 +45155,27 @@ to your code: IDs in the wrong order. This has been corrected; applications relying on the wrong order need to be fixed. - * *note fcntl.ioctl(): ea4. now warns if the `mutate' argument is + * *note fcntl.ioctl(): db8. now warns if the `mutate' argument is omitted and relevant. - * The *note tarfile: 101. module now generates GNU-format tar files + * The *note tarfile: 102. module now generates GNU-format tar files by default. * Encountering a failure while importing a module no longer leaves a partially-initialized module object in ‘sys.modules’. - * *note None: 203. is now a constant; code that binds a new value to + * *note None: 158. is now a constant; code that binds a new value to the name ‘None’ is now a syntax error. * The ‘signals.signal()’ function now raises a *note RuntimeError: - 3df. exception for certain illegal values; previously these errors + 2a5. exception for certain illegal values; previously these errors would pass silently. For example, you can no longer set a handler on the ‘SIGKILL’ signal.  File: python.info, Node: Acknowledgements<4>, Prev: Porting to Python 2 4, Up: What’s New in Python 2 4 -1.14.15 Acknowledgements +1.13.15 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -47779,7 +45187,7 @@ Rejeb.  File: python.info, Node: What’s New in Python 2 3, Next: What’s New in Python 2 2, Prev: What’s New in Python 2 4, Up: What’s New in Python -1.15 What’s New in Python 2.3 +1.14 What’s New in Python 2.3 ============================= @@ -47794,9 +45202,9 @@ language, and expanding the standard library. The new object model introduced in the previous version has benefited from 18 months of bugfixes and from optimization efforts that have improved the performance of new-style classes. A few new built-in functions have -been added such as *note sum(): 319. and *note enumerate(): ea9. The -*note in: 179. operator can now be used for substring searches (e.g. -‘"ab" in "abc"’ returns *note True: 596.). +been added such as *note sum(): 1d1. and *note enumerate(): dbd. The +*note in: 788. operator can now be used for substring searches (e.g. +‘"ab" in "abc"’ returns *note True: 48a.). Some of the many new library features include Boolean, set, heap, and date/time data types, the ability to import modules from ZIP-format @@ -47829,7 +45237,7 @@ refer to the PEP for a particular new feature. * PEP 305; Comma-separated Files: PEP 305 Comma-separated Files. * PEP 307; Pickle Enhancements: PEP 307 Pickle Enhancements. * Extended Slices:: -* Other Language Changes: Other Language Changes<14>. +* Other Language Changes: Other Language Changes<13>. * New, Improved, and Deprecated Modules: New Improved and Deprecated Modules<4>. * Pymalloc; A Specialized Object Allocator: Pymalloc A Specialized Object Allocator. * Build and C API Changes: Build and C API Changes<12>. @@ -47840,7 +45248,7 @@ refer to the PEP for a particular new feature.  File: python.info, Node: PEP 218 A Standard Set Datatype, Next: PEP 255 Simple Generators, Up: What’s New in Python 2 3 -1.15.1 PEP 218: A Standard Set Datatype +1.14.1 PEP 218: A Standard Set Datatype --------------------------------------- The new ‘sets’ module contains an implementation of a set datatype. The @@ -47929,20 +45337,20 @@ PEP 218(1) - Adding a Built-In Set Object Type  File: python.info, Node: PEP 255 Simple Generators, Next: PEP 263 Source Code Encodings, Prev: PEP 218 A Standard Set Datatype, Up: What’s New in Python 2 3 -1.15.2 PEP 255: Simple Generators +1.14.2 PEP 255: Simple Generators --------------------------------- In Python 2.2, generators were added as an optional feature, to be enabled by a ‘from __future__ import generators’ directive. In 2.3 generators no longer need to be specially enabled, and are now always -present; this means that *note yield: 2ca. is now always a keyword. The +present; this means that *note yield: 17c. is now always a keyword. The rest of this section is a copy of the description of generators from the “What’s New in Python 2.2” document; if you read it back when Python 2.2 came out, you can skip the rest of this section. You’re doubtless familiar with how function calls work in Python or C. When you call a function, it gets a private namespace where its local -variables are created. When the function reaches a *note return: 2cb. +variables are created. When the function reaches a *note return: 17d. statement, the local variables are destroyed and the resulting value is returned to the caller. A later call to the same function will get a fresh new set of local variables. But, what if the local variables @@ -47956,21 +45364,21 @@ Here’s the simplest example of a generator function: for i in range(N): yield i -A new keyword, *note yield: 2ca, was introduced for generators. Any +A new keyword, *note yield: 17c, was introduced for generators. Any function containing a ‘yield’ statement is a generator function; this is detected by Python’s bytecode compiler which compiles the function specially as a result. When you call a generator function, it doesn’t return a single value; instead it returns a generator object that supports the iterator -protocol. On executing the *note yield: 2ca. statement, the generator -outputs the value of ‘i’, similar to a *note return: 2cb. statement. +protocol. On executing the *note yield: 17c. statement, the generator +outputs the value of ‘i’, similar to a *note return: 17d. statement. The big difference between ‘yield’ and a ‘return’ statement is that on reaching a ‘yield’ the generator’s state of execution is suspended and local variables are preserved. On the next call to the generator’s ‘.next()’ method, the function will resume executing immediately after the ‘yield’ statement. (For complicated reasons, the ‘yield’ statement -isn’t allowed inside the *note try: e39. block of a ‘try’…‘finally’ +isn’t allowed inside the *note try: d4c. block of a ‘try’…‘finally’ statement; read PEP 255(1) for a full explanation of the interaction between ‘yield’ and exceptions.) @@ -47994,18 +45402,18 @@ Here’s a sample usage of the ‘generate_ints()’ generator: You could equally write ‘for i in generate_ints(5)’, or ‘a,b,c = generate_ints(3)’. -Inside a generator function, the *note return: 2cb. statement can only +Inside a generator function, the *note return: 17d. statement can only be used without a value, and signals the end of the procession of values; afterwards the generator cannot return any further values. ‘return’ with a value, such as ‘return 5’, is a syntax error inside a generator function. The end of the generator’s results can also be -indicated by raising *note StopIteration: 584. manually, or by just +indicated by raising *note StopIteration: 477. manually, or by just letting the flow of execution fall off the bottom of the function. You could achieve the effect of generators manually by writing your own class and storing all the local variables of the generator as instance variables. For example, returning a list of integers could be done by -setting ‘self.count’ to 0, and having the *note next(): 777. method +setting ‘self.count’ to 0, and having the *note next(): 66b. method increment ‘self.count’ and return it. However, for a moderately complicated generator, writing a corresponding class would be much messier. ‘Lib/test/test_generators.py’ contains a number of more @@ -48039,7 +45447,7 @@ this looks like: if (i := find("or", sentence)) > 5 then write(i) In Icon the ‘find()’ function returns the indexes at which the substring -“or” is found: 3, 23, 33. In the *note if: ead. statement, ‘i’ is first +“or” is found: 3, 23, 33. In the *note if: dc1. statement, ‘i’ is first assigned a value of 3, but 3 is less than 5, so the comparison fails, and Icon retries it with the second value of 23. 23 is greater than 5, so the comparison now succeeds, and the code prints the value 23 to the @@ -48072,7 +45480,7 @@ PEP 255(2) - Simple Generators  File: python.info, Node: PEP 263 Source Code Encodings, Next: PEP 273 Importing Modules from ZIP Archives, Prev: PEP 255 Simple Generators, Up: What’s New in Python 2 3 -1.15.3 PEP 263: Source Code Encodings +1.14.3 PEP 263: Source Code Encodings ------------------------------------- Python source files can now be declared as being in different character @@ -48086,7 +45494,7 @@ example, a UTF-8 file can be declared with: Without such an encoding declaration, the default encoding used is 7-bit ASCII. Executing or importing modules that contain string literals with 8-bit characters and have no encoding declaration will result in a *note -DeprecationWarning: 15a. being signalled by Python 2.3; in 2.4 this will +DeprecationWarning: 264. being signalled by Python 2.3; in 2.4 this will be a syntax error. The encoding declaration only affects Unicode string literals, which @@ -48110,10 +45518,10 @@ PEP 263(1) - Defining Python Source Code Encodings  File: python.info, Node: PEP 273 Importing Modules from ZIP Archives, Next: PEP 277 Unicode file name support for Windows NT, Prev: PEP 263 Source Code Encodings, Up: What’s New in Python 2 3 -1.15.4 PEP 273: Importing Modules from ZIP Archives +1.14.4 PEP 273: Importing Modules from ZIP Archives --------------------------------------------------- -The new *note zipimport: 14c. module adds support for importing modules +The new *note zipimport: 144. module adds support for importing modules from a ZIP-format archive. You don’t need to import the module explicitly; it will be automatically imported if a ZIP archive’s filename is added to ‘sys.path’. For example: @@ -48154,7 +45562,7 @@ PEP 273(1) - Import Modules from Zip Archives Python 2.3 follows the specification in PEP 273(2), but uses an implementation written by Just van Rossum that uses the import hooks described in PEP 302(3). See section *note PEP 302; New - Import Hooks: eb1. for a description of the new import hooks. + Import Hooks: dc5. for a description of the new import hooks. ---------- Footnotes ---------- @@ -48167,7 +45575,7 @@ PEP 273(1) - Import Modules from Zip Archives  File: python.info, Node: PEP 277 Unicode file name support for Windows NT, Next: PEP 278 Universal Newline Support, Prev: PEP 273 Importing Modules from ZIP Archives, Up: What’s New in Python 2 3 -1.15.5 PEP 277: Unicode file name support for Windows NT +1.14.5 PEP 277: Unicode file name support for Windows NT -------------------------------------------------------- On Windows NT, 2000, and XP, the system stores file names as Unicode @@ -48177,8 +45585,8 @@ inaccessible. Python now allows using arbitrary Unicode strings (within the limitations of the file system) for all functions that expect file -names, most notably the *note open(): 16f. built-in function. If a -Unicode string is passed to *note os.listdir(): b1e, Python now returns +names, most notably the *note open(): 4e1. built-in function. If a +Unicode string is passed to *note os.listdir(): a22, Python now returns a list of Unicode strings. A new function, ‘os.getcwdu()’, returns the current directory as a Unicode string. @@ -48187,11 +45595,11 @@ transparently convert them to Unicode using the ‘mbcs’ encoding. Other systems also allow Unicode strings as file names but convert them to byte strings before passing them to the system, which can cause a -*note UnicodeError: d05. to be raised. Applications can test whether +*note UnicodeError: c1a. to be raised. Applications can test whether arbitrary Unicode strings are supported as file names by checking *note -os.path.supports_unicode_filenames: eb3, a Boolean value. +os.path.supports_unicode_filenames: dc7, a Boolean value. -Under MacOS, *note os.listdir(): b1e. may now return Unicode filenames. +Under MacOS, *note os.listdir(): a22. may now return Unicode filenames. See also ........ @@ -48208,7 +45616,7 @@ PEP 277(1) - Unicode file name support for Windows NT  File: python.info, Node: PEP 278 Universal Newline Support, Next: PEP 279 enumerate, Prev: PEP 277 Unicode file name support for Windows NT, Up: What’s New in Python 2 3 -1.15.6 PEP 278: Universal Newline Support +1.14.6 PEP 278: Universal Newline Support ----------------------------------------- The three major operating systems used today are Microsoft Windows, @@ -48222,9 +45630,9 @@ return plus a newline. Python’s file objects can now support end of line conventions other than the one followed by the platform on which Python is running. Opening a file with the mode ‘'U'’ or ‘'rU'’ will open a file for reading in *note -universal newlines: 6ed. mode. All three line ending conventions will +universal newlines: 5e1. mode. All three line ending conventions will be translated to a ‘'\n'’ in the strings returned by the various file -methods such as ‘read()’ and *note readline(): de. +methods such as ‘read()’ and *note readline(): df. Universal newline support is also used when importing modules and when executing a file with the ‘execfile()’ function. This means that Python @@ -48249,10 +45657,10 @@ PEP 278(1) - Universal Newline Support  File: python.info, Node: PEP 279 enumerate, Next: PEP 282 The logging Package, Prev: PEP 278 Universal Newline Support, Up: What’s New in Python 2 3 -1.15.7 PEP 279: enumerate() +1.14.7 PEP 279: enumerate() --------------------------- -A new built-in function, *note enumerate(): ea9, will make certain loops +A new built-in function, *note enumerate(): dbd, will make certain loops a bit clearer. ‘enumerate(thing)’, where `thing' is either an iterator or a sequence, returns an iterator that will return ‘(0, thing[0])’, ‘(1, thing[1])’, ‘(2, thing[2])’, and so forth. @@ -48264,7 +45672,7 @@ A common idiom to change every element of a list looks like this: # ... compute some result based on item ... L[i] = result -This can be rewritten using *note enumerate(): ea9. as: +This can be rewritten using *note enumerate(): dbd. as: for i, item in enumerate(L): # ... compute some result based on item ... @@ -48284,10 +45692,10 @@ PEP 279(1) - The enumerate() built-in function  File: python.info, Node: PEP 282 The logging Package, Next: PEP 285 A Boolean Type, Prev: PEP 279 enumerate, Up: What’s New in Python 2 3 -1.15.8 PEP 282: The logging Package +1.14.8 PEP 282: The logging Package ----------------------------------- -A standard package for writing logs, *note logging: aa, has been added +A standard package for writing logs, *note logging: ab, has been added to Python 2.3. It provides a powerful and flexible mechanism for generating logging output which can then be filtered and processed in various ways. A configuration file written in a standard format can be @@ -48309,7 +45717,7 @@ handler, the changes will also apply to records logged to ‘server.auth’ and ‘server.network’. There’s also a root ‘Logger’ that’s the parent of all other loggers. -For simple uses, the *note logging: aa. package contains some +For simple uses, the *note logging: ab. package contains some convenience functions that always use the root log: import logging @@ -48367,9 +45775,9 @@ logger. Log records are usually propagated up the hierarchy, so a message logged to ‘server.auth’ is also seen by ‘server’ and ‘root’, but a ‘Logger’ can -prevent this by setting its ‘propagate’ attribute to *note False: 491. +prevent this by setting its ‘propagate’ attribute to *note False: 379. -There are more classes provided by the *note logging: aa. package that +There are more classes provided by the *note logging: ab. package that can be customized. When a ‘Logger’ instance is told to log a message, it creates a ‘LogRecord’ instance that is sent to any number of different ‘Handler’ instances. Loggers and handlers can also have an @@ -48379,7 +45787,7 @@ they’re finally output, ‘LogRecord’ instances are converted to text by a ‘Formatter’ class. All of these classes can be replaced by your own specially-written classes. -With all of these features the *note logging: aa. package should provide +With all of these features the *note logging: ab. package should provide enough flexibility for even the most complicated applications. This is only an incomplete overview of its features, so please see the package’s reference documentation for all of the details. Reading PEP 282(1) will @@ -48401,18 +45809,18 @@ PEP 282(2) - A Logging System  File: python.info, Node: PEP 285 A Boolean Type, Next: PEP 293 Codec Error Handling Callbacks, Prev: PEP 282 The logging Package, Up: What’s New in Python 2 3 -1.15.9 PEP 285: A Boolean Type +1.14.9 PEP 285: A Boolean Type ------------------------------ A Boolean type was added to Python 2.3. Two new constants were added to -the ‘__builtin__’ module, *note True: 596. and *note False: 491. (*note -True: 596. and *note False: 491. constants were added to the built-ins +the ‘__builtin__’ module, *note True: 48a. and *note False: 379. (*note +True: 48a. and *note False: 379. constants were added to the built-ins in Python 2.2.1, but the 2.2.1 versions are simply set to integer values of 1 and 0 and aren’t a different type.) -The type object for this new type is named *note bool: 2c0.; the +The type object for this new type is named *note bool: 170.; the constructor for it takes any Python value and converts it to *note True: -596. or *note False: 491. +48a. or *note False: 379. >>> bool(1) True @@ -48444,11 +45852,11 @@ of the return value is quite clear. Python’s Booleans were `not' added for the sake of strict type-checking. A very strict language such as Pascal would also prevent you performing arithmetic with Booleans, and would require that the expression in an -*note if: ead. statement always evaluate to a Boolean result. Python is +*note if: dc1. statement always evaluate to a Boolean result. Python is not this strict and never will be, as PEP 285(1) explicitly says. This means you can still use any expression in an ‘if’ statement, even ones that evaluate to a list or tuple or some random object. The Boolean -type is a subclass of the *note int: 204. class so that arithmetic using +type is a subclass of the *note int: 171. class so that arithmetic using a Boolean still works. >>> True + 1 @@ -48460,9 +45868,9 @@ a Boolean still works. >>> True * 75 75 -To sum up *note True: 596. and *note False: 491. in a sentence: they’re +To sum up *note True: 48a. and *note False: 379. in a sentence: they’re alternative ways to spell the integer values 1 and 0, with the single -difference that *note str(): 205. and *note repr(): 8bb. return the +difference that *note str(): 321. and *note repr(): 7b1. return the strings ‘'True'’ and ‘'False'’ instead of ‘'1'’ and ‘'0'’. See also @@ -48481,13 +45889,13 @@ PEP 285(2) - Adding a bool type  File: python.info, Node: PEP 293 Codec Error Handling Callbacks, Next: PEP 301 Package Index and Metadata for Distutils, Prev: PEP 285 A Boolean Type, Up: What’s New in Python 2 3 -1.15.10 PEP 293: Codec Error Handling Callbacks +1.14.10 PEP 293: Codec Error Handling Callbacks ----------------------------------------------- When encoding a Unicode string into a byte string, unencodable characters may be encountered. So far, Python has allowed specifying the error processing as either “strict” (raising *note UnicodeError: -d05.), “ignore” (skipping the character), or “replace” (using a question +c1a.), “ignore” (skipping the character), or “replace” (using a question mark in the output string), with “strict” being the default behavior. It may be desirable to specify alternative processing of such errors, such as inserting an XML character reference or HTML entity reference @@ -48495,8 +45903,8 @@ into the converted string. Python now has a flexible framework to add different processing strategies. New error handlers can be added with *note -codecs.register_error(): ebb, and codecs then can access the error -handler with *note codecs.lookup_error(): ebc. An equivalent C API has +codecs.register_error(): dcf, and codecs then can access the error +handler with *note codecs.lookup_error(): dd0. An equivalent C API has been added for codecs written in C. The error handler gets the necessary state information such as the string being converted, the position in the string where the error was detected, and the target encoding. The @@ -48522,7 +45930,7 @@ PEP 293(1) - Codec Error Handling Callbacks  File: python.info, Node: PEP 301 Package Index and Metadata for Distutils, Next: PEP 302 New Import Hooks, Prev: PEP 293 Codec Error Handling Callbacks, Up: What’s New in Python 2 3 -1.15.11 PEP 301: Package Index and Metadata for Distutils +1.14.11 PEP 301: Package Index and Metadata for Distutils --------------------------------------------------------- Support for the long-requested Python catalog makes its first appearance @@ -48577,7 +45985,7 @@ PEP 301(2) - Package Index and Metadata for Distutils  File: python.info, Node: PEP 302 New Import Hooks, Next: PEP 305 Comma-separated Files, Prev: PEP 301 Package Index and Metadata for Distutils, Up: What’s New in Python 2 3 -1.15.12 PEP 302: New Import Hooks +1.14.12 PEP 302: New Import Hooks --------------------------------- While it’s been possible to write custom import hooks ever since the @@ -48588,13 +45996,13 @@ messy. There have been various proposed alternatives such as the acceptance, and none of them were easily usable from C code. PEP 302(1) borrows ideas from its predecessors, especially from Gordon -McMillan’s ‘iu’ module. Three new items are added to the *note sys: fd. +McMillan’s ‘iu’ module. Three new items are added to the *note sys: fe. module: * ‘sys.path_hooks’ is a list of callable objects; most often they’ll be classes. Each callable takes a string containing a path and either returns an importer object that will handle imports from - this path or raises an *note ImportError: 16c. exception if it + this path or raises an *note ImportError: 325. exception if it can’t handle this path. * ‘sys.path_importer_cache’ caches importer objects for each path, so @@ -48652,7 +46060,7 @@ PEP 302(3) - New Import Hooks  File: python.info, Node: PEP 305 Comma-separated Files, Next: PEP 307 Pickle Enhancements, Prev: PEP 302 New Import Hooks, Up: What’s New in Python 2 3 -1.15.13 PEP 305: Comma-separated Files +1.14.13 PEP 305: Comma-separated Files -------------------------------------- Comma-separated files are a format frequently used for exporting data @@ -48669,7 +46077,7 @@ in string data that can contain commas, and things get more complicated: "Costs",150,200,3.95,"Includes taxes, shipping, and sundry items" A big ugly regular expression can parse this, but using the new *note -csv: 29. package is much simpler: +csv: 2a. package is much simpler: import csv @@ -48684,7 +46092,7 @@ character, and so can the quoting and line-ending characters. Different dialects of comma-separated files can be defined and registered; currently there are two dialects, both used by Microsoft -Excel. A separate *note csv.writer: ec2. class will generate +Excel. A separate *note csv.writer: dd6. class will generate comma-separated files from a succession of tuples or lists, quoting strings that contain the delimiter. @@ -48703,35 +46111,34 @@ PEP 305(1) - CSV File API  File: python.info, Node: PEP 307 Pickle Enhancements, Next: Extended Slices, Prev: PEP 305 Comma-separated Files, Up: What’s New in Python 2 3 -1.15.14 PEP 307: Pickle Enhancements +1.14.14 PEP 307: Pickle Enhancements ------------------------------------ -The *note pickle: ca. and ‘cPickle’ modules received some attention +The *note pickle: cb. and ‘cPickle’ modules received some attention during the 2.3 development cycle. In 2.2, new-style classes could be pickled without difficulty, but they weren’t pickled very compactly; PEP 307(1) quotes a trivial example where a new-style class results in a pickled string three times longer than that for a classic class. The solution was to invent a new pickle protocol. The *note -pickle.dumps(): ec5. function has supported a text-or-binary flag for a +pickle.dumps(): dd9. function has supported a text-or-binary flag for a long time. In 2.3, this flag is redefined from a Boolean to an integer: 0 is the old text-mode pickle format, 1 is the old binary format, and now 2 is a new 2.3-specific format. A new constant, *note -pickle.HIGHEST_PROTOCOL: ec6, can be used to select the fanciest +pickle.HIGHEST_PROTOCOL: dda, can be used to select the fanciest protocol available. Unpickling is no longer considered a safe operation. 2.2’s *note -pickle: ca. provided hooks for trying to prevent unsafe classes from +pickle: cb. provided hooks for trying to prevent unsafe classes from being unpickled (specifically, a ‘__safe_for_unpickling__’ attribute), but none of this code was ever audited and therefore it’s all been ripped out in 2.3. You should not unpickle untrusted data in any version of Python. To reduce the pickling overhead for new-style classes, a new interface -for customizing pickling was added using three special methods: *note -__getstate__(): ec7, *note __setstate__(): 2d4, and *note -__getnewargs__(): 7a3. Consult PEP 307(2) for the full semantics of -these methods. +for customizing pickling was added using three special methods: +‘__getstate__()’, ‘__setstate__()’, and ‘__getnewargs__()’. Consult PEP +307(2) for the full semantics of these methods. As a way to compress pickles yet further, it’s now possible to use integer codes instead of long strings to identify pickled classes. The @@ -48755,9 +46162,9 @@ PEP 307(3) - Extensions to the pickle protocol (3) https://www.python.org/dev/peps/pep-0307  -File: python.info, Node: Extended Slices, Next: Other Language Changes<14>, Prev: PEP 307 Pickle Enhancements, Up: What’s New in Python 2 3 +File: python.info, Node: Extended Slices, Next: Other Language Changes<13>, Prev: PEP 307 Pickle Enhancements, Up: What’s New in Python 2 3 -1.15.15 Extended Slices +1.14.15 Extended Slices ----------------------- Ever since Python 1.4, the slicing syntax has supported an optional @@ -48766,7 +46173,7 @@ Python syntax: ‘L[1:10:2]’, ‘L[:-1:1]’, ‘L[::-1]’. This was added t Python at the request of the developers of Numerical Python, which uses the third argument extensively. However, Python’s built-in list, tuple, and string sequence types have never supported this feature, raising a -*note TypeError: 1fe. if you tried it. Michael Hudson contributed a +*note TypeError: 17f. if you tried it. Michael Hudson contributed a patch to fix this shortcoming. For example, you can now easily extract the elements of a list that have @@ -48830,8 +46237,8 @@ Deletion is more straightforward: >>> a [1, 3] -One can also now pass slice objects to the *note __getitem__(): 3a5. -methods of the built-in sequences: +One can also now pass slice objects to the ‘__getitem__()’ methods of +the built-in sequences: >>> range(10).__getitem__(slice(0, 5, 2)) [0, 2, 4] @@ -48844,7 +46251,7 @@ Or use slice objects directly in subscripts: To simplify implementing sequences that support extended slicing, slice objects now have a method ‘indices(length)’ which, given the length of a sequence, returns a ‘(start, stop, step)’ tuple that can be passed -directly to *note range(): 1f5. ‘indices()’ handles omitted and +directly to *note range(): 99f. ‘indices()’ handles omitted and out-of-bounds indices in a manner consistent with regular slices (and this innocuous phrase hides a welter of confusing details!). The method is intended to be used like this: @@ -48860,45 +46267,45 @@ is intended to be used like this: else: return self.calc_item(i) -From this example you can also see that the built-in *note slice: eca. +From this example you can also see that the built-in *note slice: ddd. object is now the type object for the slice type, and is no longer a -function. This is consistent with Python 2.2, where *note int: 204, -*note str: 205, etc., underwent the same change. +function. This is consistent with Python 2.2, where *note int: 171, +*note str: 321, etc., underwent the same change.  -File: python.info, Node: Other Language Changes<14>, Next: New Improved and Deprecated Modules<4>, Prev: Extended Slices, Up: What’s New in Python 2 3 +File: python.info, Node: Other Language Changes<13>, Next: New Improved and Deprecated Modules<4>, Prev: Extended Slices, Up: What’s New in Python 2 3 -1.15.16 Other Language Changes +1.14.16 Other Language Changes ------------------------------ Here are all of the changes that Python 2.3 makes to the core Python language. - * The *note yield: 2ca. statement is now always a keyword, as - described in section *note PEP 255; Simple Generators: eac. of this + * The *note yield: 17c. statement is now always a keyword, as + described in section *note PEP 255; Simple Generators: dc0. of this document. - * A new built-in function *note enumerate(): ea9. was added, as - described in section *note PEP 279; enumerate(): eb6. of this + * A new built-in function *note enumerate(): dbd. was added, as + described in section *note PEP 279; enumerate(): dca. of this document. - * Two new constants, *note True: 596. and *note False: 491. were - added along with the built-in *note bool: 2c0. type, as described - in section *note PEP 285; A Boolean Type: eb9. of this document. + * Two new constants, *note True: 48a. and *note False: 379. were + added along with the built-in *note bool: 170. type, as described + in section *note PEP 285; A Boolean Type: dcd. of this document. - * The *note int(): 204. type constructor will now return a long - integer instead of raising an *note OverflowError: a43. when a + * The *note int(): 171. type constructor will now return a long + integer instead of raising an *note OverflowError: 941. when a string or floating-point number is too large to fit into an integer. This can lead to the paradoxical result that ‘isinstance(int(expression), int)’ is false, but that seems unlikely to cause problems in practice. * Built-in types now support the extended slicing syntax, as - described in section *note Extended Slices: ec9. of this document. + described in section *note Extended Slices: ddc. of this document. * A new built-in function, ‘sum(iterable, start=0)’, adds up the numeric items in the iterable object and returns their sum. *note - sum(): 319. only accepts numbers, meaning that you can’t use it to + sum(): 1d1. only accepts numbers, meaning that you can’t use it to concatenate a bunch of strings. (Contributed by Alex Martelli.) * ‘list.insert(pos, value)’ used to insert `value' at the front of @@ -48914,7 +46321,7 @@ language. returns the value corresponding to `key' and removes that key/value pair from the dictionary. If the requested key isn’t present in the dictionary, `default' is returned if it’s specified and *note - KeyError: 3ec. raised if it isn’t. + KeyError: 2b2. raised if it isn’t. >>> d = {1:2} >>> d @@ -48940,7 +46347,7 @@ language. (Patches contributed by Raymond Hettinger.) - Also, the *note dict(): 164. constructor now accepts keyword + Also, the *note dict(): 1a4. constructor now accepts keyword arguments to simplify creating small dictionaries: >>> dict(red=1, blue=2, green=3, black=4) @@ -48948,16 +46355,16 @@ language. (Contributed by Just van Rossum.) - * The *note assert: 23f. statement no longer checks the ‘__debug__’ + * The *note assert: ddf. statement no longer checks the ‘__debug__’ flag, so you can no longer disable assertions by assigning to - ‘__debug__’. Running Python with the *note -O: 780. switch will + ‘__debug__’. Running Python with the *note -O: 674. switch will still generate code that doesn’t execute any assertions. * Most type objects are now callable, so you can use them to create new objects such as functions, classes, and modules. (This means that the ‘new’ module can be deprecated in a future Python version, because you can now use the type objects available in the *note - types: 121. module.) For example, you can create a new module + types: 119. module.) For example, you can create a new module object with the following code: >>> import types @@ -48967,19 +46374,19 @@ language. >>> m.__doc__ 'docstring' - * A new warning, *note PendingDeprecationWarning: 15c. was added to + * A new warning, *note PendingDeprecationWarning: 265. was added to indicate features which are in the process of being deprecated. The warning will `not' be printed by default. To check for use of features that will be deprecated in the future, supply *note - -Walways;;PendingDeprecationWarning;;: 15b. on the command line or - use *note warnings.filterwarnings(): ecc. + -Walways;;PendingDeprecationWarning;;: 408. on the command line or + use *note warnings.filterwarnings(): de0. * The process of deprecating string-based exceptions, as in ‘raise "Error occurred"’, has begun. Raising a string will now trigger - *note PendingDeprecationWarning: 15c. + *note PendingDeprecationWarning: 265. * Using ‘None’ as a variable name will now result in a *note - SyntaxWarning: 2cc. warning. In a future version of Python, ‘None’ + SyntaxWarning: 17e. warning. In a future version of Python, ‘None’ may finally become a keyword. * The ‘xreadlines()’ method of file objects, introduced in Python @@ -49011,7 +46418,7 @@ language. multithreaded applications may suffer slower response time, but that’s easily fixed by setting the limit back to a lower number using ‘sys.setcheckinterval(N)’. The limit can be retrieved with - the new ‘sys.getcheckinterval()’ function. + the new *note sys.getcheckinterval(): de1. function. * One minor but far-reaching change is that the names of extension types defined by the modules included with Python now contain the @@ -49030,15 +46437,15 @@ language. * One of the noted incompatibilities between old- and new-style classes has been removed: you can now assign to the *note __name__: - d31. and *note __bases__: ecd. attributes of new-style classes. + c44. and *note __bases__: de2. attributes of new-style classes. There are some restrictions on what can be assigned to *note - __bases__: ecd. along the lines of those relating to assigning to - an instance’s *note __class__: ece. attribute. + __bases__: de2. along the lines of those relating to assigning to + an instance’s *note __class__: de3. attribute. * Menu: * String Changes:: -* Optimizations: Optimizations<13>. +* Optimizations: Optimizations<12>. ---------- Footnotes ---------- @@ -49047,17 +46454,17 @@ language. (2) http://www.phyast.pitt.edu/~micheles/mro.html  -File: python.info, Node: String Changes, Next: Optimizations<13>, Up: Other Language Changes<14> +File: python.info, Node: String Changes, Next: Optimizations<12>, Up: Other Language Changes<13> -1.15.16.1 String Changes +1.14.16.1 String Changes ........................ - * The *note in: 179. operator now works differently for strings. + * The *note in: 788. operator now works differently for strings. Previously, when evaluating ‘X in Y’ where `X' and `Y' are strings, `X' could only be a single character. That’s now changed; `X' can be a string of any length, and ‘X in Y’ will return *note True: - 596. if `X' is a substring of `Y'. If `X' is the empty string, the - result is always *note True: 596. + 48a. if `X' is a substring of `Y'. If `X' is the empty string, the + result is always *note True: 48a. >>> 'ab' in 'abcd' True @@ -49089,7 +46496,7 @@ File: python.info, Node: String Changes, Next: Optimizations<13>, Up: Other L negative numbers for the `start' and `end' parameters. * Another new string method is ‘zfill()’, originally a function in - the *note string: f6. module. ‘zfill()’ pads a numeric string with + the *note string: f7. module. ‘zfill()’ pads a numeric string with zeros on the left until it’s the specified width. Note that the ‘%’ operator is still more flexible and powerful than ‘zfill()’. @@ -49104,7 +46511,7 @@ File: python.info, Node: String Changes, Next: Optimizations<13>, Up: Other L * A new type object, ‘basestring’, has been added. Both 8-bit strings and Unicode strings inherit from this type, so - ‘isinstance(obj, basestring)’ will return *note True: 596. for + ‘isinstance(obj, basestring)’ will return *note True: 48a. for either kind of string. It’s a completely abstract type, so you can’t create ‘basestring’ instances. @@ -49114,9 +46521,9 @@ File: python.info, Node: String Changes, Next: Optimizations<13>, Up: Other L by Oren Tirosh.)  -File: python.info, Node: Optimizations<13>, Prev: String Changes, Up: Other Language Changes<14> +File: python.info, Node: Optimizations<12>, Prev: String Changes, Up: Other Language Changes<13> -1.15.16.2 Optimizations +1.14.16.2 Optimizations ....................... * The creation of new-style class instances has been made much @@ -49133,7 +46540,7 @@ File: python.info, Node: Optimizations<13>, Prev: String Changes, Up: Other L * The ‘SET_LINENO’ opcode is now gone. This may provide a small speed increase, depending on your compiler’s idiosyncrasies. See - section *note Other Changes and Fixes: ed1. for a longer + section *note Other Changes and Fixes: de6. for a longer explanation. (Removed by Michael Hudson.) * ‘xrange()’ objects now have their own iterator, making ‘for i in @@ -49149,9 +46556,9 @@ The net result of the 2.3 optimizations is that Python 2.3 runs the pystone benchmark around 25% faster than Python 2.2.  -File: python.info, Node: New Improved and Deprecated Modules<4>, Next: Pymalloc A Specialized Object Allocator, Prev: Other Language Changes<14>, Up: What’s New in Python 2 3 +File: python.info, Node: New Improved and Deprecated Modules<4>, Next: Pymalloc A Specialized Object Allocator, Prev: Other Language Changes<13>, Up: What’s New in Python 2 3 -1.15.17 New, Improved, and Deprecated Modules +1.14.17 New, Improved, and Deprecated Modules --------------------------------------------- As usual, Python’s standard library received a number of enhancements @@ -49160,7 +46567,7 @@ sorted alphabetically by module name. Consult the ‘Misc/NEWS’ file in the source tree for a more complete list of changes, or look through the CVS logs for all the details. - * The *note array: 6. module now supports arrays of Unicode + * The *note array: 7. module now supports arrays of Unicode characters using the ‘'u'’ format character. Arrays also now support using the ‘+=’ assignment operator to add another array’s contents, and the ‘*=’ assignment operator to repeat an array. @@ -49184,13 +46591,13 @@ CVS logs for all the details. PyBSDDB package and importing it as ‘bsddb3’, you will have to change your ‘import’ statements to import it as ‘bsddb’. - * The new *note bz2: 13. module is an interface to the bz2 data + * The new *note bz2: 14. module is an interface to the bz2 data compression library. bz2-compressed data is usually smaller than - corresponding *note zlib: 14d.-compressed data. (Contributed by + corresponding *note zlib: 145.-compressed data. (Contributed by Gustavo Niemeyer.) * A set of standard date/time types has been added in the new *note - datetime: 30. module. See the following section for more details. + datetime: 31. module. See the following section for more details. * The Distutils ‘Extension’ class now supports an extra constructor argument named `depends' for listing additional source files that @@ -49211,19 +46618,19 @@ CVS logs for all the details. using them to override the settings in Python’s configuration (contributed by Robert Weber). - * Previously the *note doctest: 66. module would only search the + * Previously the *note doctest: 67. module would only search the docstrings of public methods and functions for test cases, but it now also examines private ones as well. The ‘DocTestSuite()’ - function creates a *note unittest.TestSuite: 7c3. object from a set - of *note doctest: 66. tests. + function creates a *note unittest.TestSuite: 6b5. object from a set + of *note doctest: 67. tests. * The new ‘gc.get_referents(object)’ function returns a list of all the objects referenced by `object'. - * The *note getopt: 85. module gained a new function, ‘gnu_getopt()’, + * The *note getopt: 87. module gained a new function, ‘gnu_getopt()’, that supports the same arguments as the existing *note getopt(): - 85. function but uses GNU-style scanning mode. The existing *note - getopt(): 85. stops processing options as soon as a non-option + 87. function but uses GNU-style scanning mode. The existing *note + getopt(): 87. stops processing options as soon as a non-option argument is encountered, but in GNU-style mode processing continues, meaning that options and arguments can be mixed. For example: @@ -49235,7 +46642,7 @@ CVS logs for all the details. (Contributed by Peter Åstrand.) - * The *note grp: 8a, *note pwd: d6, and *note resource: e0. modules + * The *note grp: 8b, *note pwd: d7, and *note resource: e1. modules now return enhanced tuples: >>> import grp @@ -49243,9 +46650,9 @@ CVS logs for all the details. >>> g.gr_name, g.gr_gid ('amk', 500) - * The *note gzip: 8b. module can now handle files exceeding 2 GiB. + * The *note gzip: 8c. module can now handle files exceeding 2 GiB. - * The new *note heapq: 8d. module contains an implementation of a + * The new *note heapq: 8e. module contains an implementation of a heap queue algorithm. A heap is an array-like data structure that keeps items in a partially sorted order such that, for every index `k', ‘heap[k] <= heap[2*k+1]’ and ‘heap[k] <= heap[2*k+2]’. This @@ -49254,7 +46661,7 @@ CVS logs for all the details. ‘https://xlinux.nist.gov/dads//HTML/priorityque.html’ for more information about the priority queue data structure.) - The *note heapq: 8d. module provides ‘heappush()’ and ‘heappop()’ + The *note heapq: 8e. module provides ‘heappush()’ and ‘heappop()’ functions for adding and removing items while maintaining the heap property on top of some other mutable Python sequence type. Here’s an example that uses a Python list: @@ -49283,38 +46690,38 @@ CVS logs for all the details. operations. IDLE’s core code has been incorporated into the standard library as the ‘idlelib’ package. - * The *note imaplib: 97. module now supports IMAP over SSL. + * The *note imaplib: 98. module now supports IMAP over SSL. (Contributed by Piers Lauder and Tino Lange.) - * The *note itertools: a3. contains a number of useful functions for + * The *note itertools: a4. contains a number of useful functions for use with iterators, inspired by various functions provided by the ML and Haskell languages. For example, ‘itertools.ifilter(predicate, iterator)’ returns all elements in the iterator for which the function ‘predicate()’ returns *note - True: 596, and ‘itertools.repeat(obj, N)’ returns ‘obj’ `N' times. + True: 48a, and ‘itertools.repeat(obj, N)’ returns ‘obj’ `N' times. There are a number of other functions in the module; see the package’s reference documentation for details. (Contributed by Raymond Hettinger.) - * Two new functions in the *note math: b1. module, ‘degrees(rads)’ + * Two new functions in the *note math: b2. module, ‘degrees(rads)’ and ‘radians(degs)’, convert between radians and degrees. Other - functions in the *note math: b1. module such as *note math.sin(): - ed3. and *note math.cos(): ed4. have always required input values + functions in the *note math: b2. module such as *note math.sin(): + de8. and *note math.cos(): de9. have always required input values measured in radians. Also, an optional `base' argument was added - to *note math.log(): ed5. to make it easier to compute logarithms + to *note math.log(): dea. to make it easier to compute logarithms for bases other than ‘e’ and ‘10’. (Contributed by Raymond Hettinger.) * Several new POSIX functions (‘getpgid()’, ‘killpg()’, ‘lchown()’, ‘loadavg()’, ‘major()’, ‘makedev()’, ‘minor()’, and ‘mknod()’) were - added to the *note posix: d1. module that underlies the *note os: - c4. module. (Contributed by Gustavo Niemeyer, Geert Jansen, and + added to the *note posix: d2. module that underlies the *note os: + c5. module. (Contributed by Gustavo Niemeyer, Geert Jansen, and Denis S. Otkidach.) - * In the *note os: c4. module, the ‘*stat()’ family of functions can + * In the *note os: c5. module, the ‘*stat()’ family of functions can now report fractions of a second in a timestamp. Such time stamps are represented as floats, similar to the value returned by *note - time.time(): 42f. + time.time(): 30f. During testing, it was found that some applications will break if time stamps are floats. For compatibility, when using the tuple @@ -49337,19 +46744,19 @@ CVS logs for all the details. be activated on an application level instead of trying to enable it on a per-use basis. - * The *note optparse: c3. module contains a new parser for + * The *note optparse: c4. module contains a new parser for command-line arguments that can convert option values to a particular Python type and will automatically generate a usage message. See the following section for more details. * The old and never-documented ‘linuxaudiodev’ module has been - deprecated, and a new version named *note ossaudiodev: c6. has been + deprecated, and a new version named *note ossaudiodev: c7. has been added. The module was renamed because the OSS sound drivers can be used on platforms other than Linux, and the interface has also been tidied and brought up to date in various ways. (Contributed by Greg Ward and Nicholas FitzRoy-Dale.) - * The new *note platform: ce. module contains a number of functions + * The new *note platform: cf. module contains a number of functions that try to determine various properties of the platform you’re running on. There are functions for getting the architecture, CPU type, the Windows OS version, and even the Linux distribution @@ -49358,11 +46765,11 @@ CVS logs for all the details. * The parser objects provided by the ‘pyexpat’ module can now optionally buffer character data, resulting in fewer calls to your character data handler and therefore faster performance. Setting - the parser object’s ‘buffer_text’ attribute to *note True: 596. + the parser object’s ‘buffer_text’ attribute to *note True: 48a. will enable buffering. * The ‘sample(population, k)’ function was added to the *note random: - dc. module. `population' is a sequence or ‘xrange’ object + dd. module. `population' is a sequence or ‘xrange’ object containing the elements of a population, and ‘sample()’ chooses `k' elements from the population without replacing chosen elements. `k' can be any value up to ‘len(population)’. For example: @@ -49383,18 +46790,18 @@ CVS logs for all the details. >>> random.sample(xrange(1,10000,2), 10) # Choose ten odd nos. under 10000 [3407, 3805, 1505, 7023, 2401, 2267, 9733, 3151, 8083, 9195] - The *note random: dc. module now uses a new algorithm, the Mersenne + The *note random: dd. module now uses a new algorithm, the Mersenne Twister, implemented in C. It’s faster and more extensively studied than the previous algorithm. (All changes contributed by Raymond Hettinger.) - * The *note readline: de. module also gained a number of new + * The *note readline: df. module also gained a number of new functions: ‘get_history_item()’, ‘get_current_history_length()’, and ‘redisplay()’. * The ‘rexec’ and ‘Bastion’ modules have been declared dead, and - attempts to import them will fail with a *note RuntimeError: 3df. + attempts to import them will fail with a *note RuntimeError: 2a5. New-style classes provide new ways to break out of the restricted execution environment provided by ‘rexec’, and no one has interest in fixing them or time to do so. If you have applications using @@ -49410,36 +46817,36 @@ CVS logs for all the details. encryption, use one of the several AES Python modules that are available separately. - * The *note shutil: e9. module gained a ‘move(src, dest)’ function + * The *note shutil: ea. module gained a ‘move(src, dest)’ function that recursively moves a file or directory to a new location. * Support for more advanced POSIX signal handling was added to the - *note signal: ea. but then removed again as it proved impossible to + *note signal: eb. but then removed again as it proved impossible to make it work reliably across platforms. - * The *note socket: ef. module now supports timeouts. You can call + * The *note socket: f0. module now supports timeouts. You can call the ‘settimeout(t)’ method on a socket object to set a timeout of `t' seconds. Subsequent socket operations that take longer than `t' seconds to complete will abort and raise a *note - socket.timeout: cdb. exception. + socket.timeout: bee. exception. The original timeout implementation was by Tim O’Malley. Michael - Gilfix integrated it into the Python *note socket: ef. module and + Gilfix integrated it into the Python *note socket: f0. module and shepherded it through a lengthy review. After the code was checked in, Guido van Rossum rewrote parts of it. (This is a good example of a collaborative development process in action.) - * On Windows, the *note socket: ef. module now ships with Secure + * On Windows, the *note socket: f0. module now ships with Secure Sockets Layer (SSL) support. * The value of the C ‘PYTHON_API_VERSION’ macro is now exposed at the Python level as ‘sys.api_version’. The current exception can be cleared by calling the new ‘sys.exc_clear()’ function. - * The new *note tarfile: 101. module allows reading from and writing + * The new *note tarfile: 102. module allows reading from and writing to ‘tar’-format archive files. (Contributed by Lars Gustäbel.) - * The new *note textwrap: 10a. module contains functions for wrapping + * The new *note textwrap: 109. module contains functions for wrapping strings containing paragraphs of text. The ‘wrap(text, width)’ function takes a string and returns a list containing the text split into lines of no more than the chosen width. The ‘fill(text, @@ -49469,9 +46876,9 @@ CVS logs for all the details. consult the module’s documentation for details. (Contributed by Greg Ward.) - * The ‘thread’ and *note threading: 10b. modules now have companion - modules, ‘dummy_thread’ and ‘dummy_threading’, that provide a - do-nothing implementation of the ‘thread’ module’s interface for + * The ‘thread’ and *note threading: 10a. modules now have companion + modules, ‘dummy_thread’ and *note dummy_threading: 68, that provide + a do-nothing implementation of the ‘thread’ module’s interface for platforms where threads are not supported. The intention is to simplify thread-aware modules (ones that `don’t' rely on threads to run) by putting the following code at the top: @@ -49483,20 +46890,20 @@ CVS logs for all the details. In this example, ‘_threading’ is used as the module name to make it clear that the module being used is not necessarily the actual - *note threading: 10b. module. Code can call functions and use + *note threading: 10a. module. Code can call functions and use classes in ‘_threading’ whether or not threads are supported, - avoiding an *note if: ead. statement and making the code slightly + avoiding an *note if: dc1. statement and making the code slightly clearer. This module will not magically make multithreaded code run without threads; code that waits for another thread to return or to do something will simply hang forever. - * The *note time: 10c. module’s ‘strptime()’ function has long been + * The *note time: 10b. module’s ‘strptime()’ function has long been an annoyance because it uses the platform C library’s ‘strptime()’ implementation, and different platforms sometimes have odd bugs. Brett Cannon contributed a portable implementation that’s written in pure Python and should behave identically on all platforms. - * The new *note timeit: 10d. module helps measure how long snippets + * The new *note timeit: 10c. module helps measure how long snippets of Python code take to execute. The ‘timeit.py’ file can be run directly from the command line, or the module’s ‘Timer’ class can be imported and used directly. Here’s a short example that figures @@ -49559,12 +46966,11 @@ CVS logs for all the details. dictionary methods for classes that already have a minimum mapping interface. This greatly simplifies writing classes that need to be substitutable for dictionaries, such as the classes in the *note - shelve: e7. module. + shelve: e8. module. Adding the mix-in as a superclass provides the full dictionary - interface whenever the class defines *note __getitem__(): 3a5, - *note __setitem__(): d2c, *note __delitem__(): d2d, and ‘keys()’. - For example: + interface whenever the class defines ‘__getitem__()’, + ‘__setitem__()’, ‘__delitem__()’, and ‘keys()’. For example: >>> import UserDict >>> class SeqDict(UserDict.DictMixin): @@ -49605,7 +47011,7 @@ CVS logs for all the details. (Contributed by Raymond Hettinger.) - * The DOM implementation in *note xml.dom.minidom: 13e. can now + * The DOM implementation in *note xml.dom.minidom: 136. can now generate XML output in a particular encoding by providing an optional encoding argument to the ‘toxml()’ and ‘toprettyxml()’ methods of DOM nodes. @@ -49630,16 +47036,16 @@ CVS logs for all the details. >{}>{}> u"www.Alliancefrançaise.nu".encode("idna") 'www.xn--alliancefranaise-npb.nu' - The *note socket: ef. module has also been extended to + The *note socket: f0. module has also been extended to transparently convert Unicode hostnames to the ACE version before passing them to the C library. Modules that deal with hostnames - such as ‘httplib’ and *note ftplib: 82.) also support Unicode host + such as ‘httplib’ and *note ftplib: 84.) also support Unicode host names; ‘httplib’ also sends HTTP ‘Host’ headers using the ACE - version of the domain name. *note urllib: 126. supports Unicode + version of the domain name. *note urllib: 11e. supports Unicode URLs with non-ASCII host names as long as the ‘path’ part of the URL is ASCII only. - To implement this change, the *note stringprep: f7. module, the + To implement this change, the *note stringprep: f8. module, the ‘mkstringprep’ tool and the ‘punycode’ encoding have been added. * Menu: @@ -49654,22 +47060,22 @@ CVS logs for all the details.  File: python.info, Node: Date/Time Type, Next: The optparse Module, Up: New Improved and Deprecated Modules<4> -1.15.17.1 Date/Time Type +1.14.17.1 Date/Time Type ........................ Date and time types suitable for expressing timestamps were added as the -*note datetime: 30. module. The types don’t support different calendars +*note datetime: 31. module. The types don’t support different calendars or many fancy features, and just stick to the basics of representing time. The three primary types are: ‘date’, representing a day, month, and -year; *note time: 5ef, consisting of hour, minute, and second; and *note -datetime: 1a0, which contains all the attributes of both ‘date’ and -*note time: 5ef. There’s also a ‘timedelta’ class representing +year; *note time: 4e4, consisting of hour, minute, and second; and *note +datetime: 181, which contains all the attributes of both ‘date’ and +*note time: 4e4. There’s also a ‘timedelta’ class representing differences between two points in time, and time zone logic is implemented by classes inheriting from the abstract ‘tzinfo’ class. -You can create instances of ‘date’ and *note time: 5ef. by either +You can create instances of ‘date’ and *note time: 4e4. by either supplying keyword arguments to the appropriate constructor, e.g. ‘datetime.date(year=1972, month=10, day=15)’, or by using one of a number of class methods. For example, the ‘date.today()’ class method @@ -49689,7 +47095,7 @@ objects: '2002 30 Dec' The ‘replace()’ method allows modifying one or more fields of a ‘date’ -or *note datetime: 1a0. instance, returning a new instance: +or *note datetime: 181. instance, returning a new instance: >>> d = datetime.datetime.now() >>> d @@ -49699,11 +47105,11 @@ or *note datetime: 1a0. instance, returning a new instance: >>> Instances can be compared, hashed, and converted to strings (the result -is the same as that of ‘isoformat()’). ‘date’ and *note datetime: 1a0. +is the same as that of ‘isoformat()’). ‘date’ and *note datetime: 181. instances can be subtracted from each other, and added to ‘timedelta’ instances. The largest missing feature is that there’s no standard library support for parsing strings and getting back a ‘date’ or *note -datetime: 1a0. +datetime: 181. For more information, refer to the module’s reference documentation. (Contributed by Tim Peters.) @@ -49711,11 +47117,11 @@ For more information, refer to the module’s reference documentation.  File: python.info, Node: The optparse Module, Prev: Date/Time Type, Up: New Improved and Deprecated Modules<4> -1.15.17.2 The optparse Module +1.14.17.2 The optparse Module ............................. -The *note getopt: 85. module provides simple parsing of command-line -arguments. The new *note optparse: c3. module (originally named Optik) +The *note getopt: 87. module provides simple parsing of command-line +arguments. The new *note optparse: c4. module (originally named Optik) provides more elaborate command-line parsing that follows the Unix conventions, automatically creates the output for ‘--help’, and can perform different actions for different options. @@ -49777,7 +47183,7 @@ Getopt SIG.  File: python.info, Node: Pymalloc A Specialized Object Allocator, Next: Build and C API Changes<12>, Prev: New Improved and Deprecated Modules<4>, Up: What’s New in Python 2 3 -1.15.18 Pymalloc: A Specialized Object Allocator +1.14.18 Pymalloc: A Specialized Object Allocator ------------------------------------------------ Pymalloc, a specialized object allocator written by Vladimir Marangozov, @@ -49805,8 +47211,8 @@ previously just been aliases for the C library’s ‘malloc()’ and the error wouldn’t be noticeable. When the object allocator is enabled, these functions aren’t aliases of ‘malloc()’ and ‘free()’ any more, and calling the wrong function to free memory may get you a core dump. For -example, if memory was allocated using *note PyObject_Malloc(): 604, it -has to be freed using *note PyObject_Free(): 600, not ‘free()’. A few +example, if memory was allocated using *note PyObject_Malloc(): 4f8, it +has to be freed using *note PyObject_Free(): 4f5, not ‘free()’. A few modules included with Python fell afoul of this and had to be fixed; doubtless there are more third-party modules that will have the same problem. @@ -49819,17 +47225,17 @@ and another family of functions specifically for allocating Python objects. * To allocate and free an undistinguished chunk of memory use the - “raw memory” family: *note PyMem_Malloc(): 601, *note - PyMem_Realloc(): a52, and *note PyMem_Free(): e70. + “raw memory” family: *note PyMem_Malloc(): 4f6, *note + PyMem_Realloc(): 950, and *note PyMem_Free(): d83. * The “object memory” family is the interface to the pymalloc facility described above and is biased towards a large number of - “small” allocations: *note PyObject_Malloc(): 604, *note - PyObject_Realloc(): e71, and *note PyObject_Free(): 600. + “small” allocations: *note PyObject_Malloc(): 4f8, *note + PyObject_Realloc(): d84, and *note PyObject_Free(): 4f5. * To allocate and free Python objects, use the “object” family *note - PyObject_New(): 268, *note PyObject_NewVar(): 269, and *note - PyObject_Del(): eda. + PyObject_New(): 2bd, *note PyObject_NewVar(): 2be, and *note + PyObject_Del(): def. Thanks to lots of work by Tim Peters, pymalloc in 2.3 also provides debugging features to catch memory overwrites and doubled frees in both @@ -49857,7 +47263,7 @@ See also  File: python.info, Node: Build and C API Changes<12>, Next: Other Changes and Fixes<2>, Prev: Pymalloc A Specialized Object Allocator, Up: What’s New in Python 2 3 -1.15.19 Build and C API Changes +1.14.19 Build and C API Changes ------------------------------- Changes to Python’s build process and to the C API include: @@ -49884,16 +47290,16 @@ Changes to Python’s build process and to the C API include: * The ‘PyArg_NoArgs()’ macro is now deprecated, and code that uses it should be changed. For Python 2.2 and later, the method definition - table can specify the *note METH_NOARGS: edc. flag, signalling that + table can specify the *note METH_NOARGS: df1. flag, signalling that there are no arguments, and the argument checking can then be removed. If compatibility with pre-2.2 versions of Python is important, the code could use ‘PyArg_ParseTuple(args, "")’ instead, - but this will be slower than using *note METH_NOARGS: edc. + but this will be slower than using *note METH_NOARGS: df1. - * *note PyArg_ParseTuple(): 396. accepts new format characters for - various sizes of unsigned integers: ‘B’ for ‘unsigned char’, ‘H’ - for ‘unsigned short int’, ‘I’ for ‘unsigned int’, and ‘K’ for - ‘unsigned long long’. + * *note PyArg_ParseTuple(): 256. accepts new format characters for + various sizes of unsigned integers: ‘B’ for unsigned char, ‘H’ for + unsigned short int, ‘I’ for unsigned int, and ‘K’ for unsigned long + long. * A new function, ‘PyObject_DelItemString(mapping, char *key)’ was added as shorthand for ‘PyObject_DelItem(mapping, @@ -49906,8 +47312,8 @@ Changes to Python’s build process and to the C API include: measurement). * It’s now possible to define class and static methods for a C - extension type by setting either the *note METH_CLASS: edd. or - *note METH_STATIC: ede. flags in a method’s *note PyMethodDef: edf. + extension type by setting either the *note METH_CLASS: df2. or + *note METH_STATIC: df3. flags in a method’s *note PyMethodDef: df4. structure. * Python now includes a copy of the Expat XML parser’s source code, @@ -49916,7 +47322,7 @@ Changes to Python’s build process and to the C API include: * If you dynamically allocate type objects in your extension, you should be aware of a change in the rules relating to the - ‘__module__’ and *note __name__: d31. attributes. In summary, you + ‘__module__’ and *note __name__: c44. attributes. In summary, you will want to ensure the type’s dictionary contains a ‘'__module__'’ key; making the module name the part of the type name leading up to the final period will no longer have the desired effect. For more @@ -49929,14 +47335,14 @@ Changes to Python’s build process and to the C API include:  File: python.info, Node: Port-Specific Changes<3>, Up: Build and C API Changes<12> -1.15.19.1 Port-Specific Changes +1.14.19.1 Port-Specific Changes ............................... Support for a port to IBM’s OS/2 using the EMX runtime environment was merged into the main Python source tree. EMX is a POSIX emulation layer over the OS/2 system APIs. The Python port for EMX tries to support all the POSIX-like capability exposed by the EMX runtime, and mostly -succeeds; ‘fork()’ and *note fcntl(): 7c. are restricted by the +succeeds; ‘fork()’ and *note fcntl(): 7e. are restricted by the limitations of the underlying emulation layer. The standard OS/2 port, which uses IBM’s Visual Age compiler, also gained support for case-sensitive import semantics as part of the integration of the EMX @@ -49958,7 +47364,7 @@ Other new platforms now supported by Python include AtheOS  File: python.info, Node: Other Changes and Fixes<2>, Next: Porting to Python 2 3, Prev: Build and C API Changes<12>, Up: What’s New in Python 2 3 -1.15.20 Other Changes and Fixes +1.14.20 Other Changes and Fixes ------------------------------- As usual, there were a bunch of other improvements and bugfixes @@ -49968,10 +47374,10 @@ Python 2.2 and 2.3. Both figures are likely to be underestimates. Some of the more notable changes are: - * If the *note PYTHONINSPECT: ee2. environment variable is set, the + * If the *note PYTHONINSPECT: df7. environment variable is set, the Python interpreter will enter the interactive prompt after running a Python program, as if Python had been invoked with the *note -i: - ee3. option. The environment variable can be set before running + df8. option. The environment variable can be set before running the Python interpreter, or it can be set by the Python program as part of its execution. @@ -49986,7 +47392,7 @@ Some of the more notable changes are: * The ‘SET_LINENO’ opcode has been removed. Back in the mists of time, this opcode was needed to produce line numbers in tracebacks - and support trace functions (for, e.g., *note pdb: c9.). Since + and support trace functions (for, e.g., *note pdb: ca.). Since Python 1.5, the line numbers in tracebacks have been computed using a different mechanism that works with “python -O”. For Python 2.3 Michael Hudson implemented a similar scheme to determine when to @@ -49995,7 +47401,7 @@ Some of the more notable changes are: It would be difficult to detect any resulting difference from Python code, apart from a slight speed up when Python is run - without *note -O: 780. + without *note -O: 674. C extensions that access the ‘f_lineno’ field of frame objects should instead call ‘PyCode_Addr2Line(f->f_code, f->f_lasti)’. @@ -50005,33 +47411,33 @@ Some of the more notable changes are: A nifty new feature is that trace functions can now assign to the ‘f_lineno’ attribute of frame objects, changing the line that will be executed next. A ‘jump’ command has been added to the *note - pdb: c9. debugger taking advantage of this new feature. + pdb: ca. debugger taking advantage of this new feature. (Implemented by Richie Hindle.)  File: python.info, Node: Porting to Python 2 3, Next: Acknowledgements<5>, Prev: Other Changes and Fixes<2>, Up: What’s New in Python 2 3 -1.15.21 Porting to Python 2.3 +1.14.21 Porting to Python 2.3 ----------------------------- This section lists previously described changes that may require changes to your code: - * *note yield: 2ca. is now always a keyword; if it’s used as a + * *note yield: 17c. is now always a keyword; if it’s used as a variable name in your code, a different name must be chosen. * For strings `X' and `Y', ‘X in Y’ now works if `X' is more than one character long. - * The *note int(): 204. type constructor will now return a long - integer instead of raising an *note OverflowError: a43. when a + * The *note int(): 171. type constructor will now return a long + integer instead of raising an *note OverflowError: 941. when a string or floating-point number is too large to fit into an integer. * If you have Unicode strings that contain 8-bit characters, you must declare the file’s encoding (UTF-8, Latin-1, or whatever) by adding a comment to the top of the file. See section *note PEP 263; - Source Code Encodings: eaf. for more information. + Source Code Encodings: dc3. for more information. * Calling Tcl methods through ‘_tkinter’ no longer returns only strings. Instead, if Tcl returns other objects those objects are @@ -50039,7 +47445,7 @@ to your code: with a ‘_tkinter.Tcl_Obj’ object if no Python equivalent exists. * Large octal and hex literals such as ‘0xffffffff’ now trigger a - *note FutureWarning: 437. Currently they’re stored as 32-bit + *note FutureWarning: 317. Currently they’re stored as 32-bit numbers and result in a negative value, but in Python 2.4 they’ll become positive long integers. @@ -50068,7 +47474,7 @@ to your code: ext = Extension(**kw) * Using ‘None’ as a variable name will now result in a *note - SyntaxWarning: 2cc. warning. + SyntaxWarning: 17e. warning. * Names of extension types defined by the modules included with Python now contain the module and a ‘'.'’ in front of the type @@ -50077,7 +47483,7 @@ to your code:  File: python.info, Node: Acknowledgements<5>, Prev: Porting to Python 2 3, Up: What’s New in Python 2 3 -1.15.22 Acknowledgements +1.14.22 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -50093,7 +47499,7 @@ Just van Rossum.  File: python.info, Node: What’s New in Python 2 2, Next: What’s New in Python 2 1, Prev: What’s New in Python 2 3, Up: What’s New in Python -1.16 What’s New in Python 2.2 +1.15 What’s New in Python 2.2 ============================= @@ -50117,7 +47523,7 @@ Author: A.M. Kuchling  File: python.info, Node: Introduction, Next: PEPs 252 and 253 Type and Class Changes, Up: What’s New in Python 2 2 -1.16.1 Introduction +1.15.1 Introduction ------------------- This article explains the new features in Python 2.2.2, released on @@ -50146,7 +47552,7 @@ for a change, refer to the PEP for a particular new feature.  File: python.info, Node: PEPs 252 and 253 Type and Class Changes, Next: PEP 234 Iterators, Prev: Introduction, Up: What’s New in Python 2 2 -1.16.2 PEPs 252 and 253: Type and Class Changes +1.15.2 PEPs 252 and 253: Type and Class Changes ----------------------------------------------- The largest and most far-reaching changes in Python 2.2 are to Python’s @@ -50178,10 +47584,9 @@ capabilities. A brief summary: * It’s also possible to automatically call methods on accessing or setting an instance attribute by using a new mechanism called - `properties'. Many uses of *note __getattr__(): 42c. can be - rewritten to use properties instead, making the resulting code - simpler and faster. As a small side benefit, attributes can now - have docstrings, too. + `properties'. Many uses of ‘__getattr__()’ can be rewritten to use + properties instead, making the resulting code simpler and faster. + As a small side benefit, attributes can now have docstrings, too. * The list of legal attributes for an instance can be limited to a particular set using `slots', making it possible to safeguard @@ -50206,7 +47611,7 @@ to my mind that’s all for the better. I’m not going to attempt to cover every single corner case and small change that were required to make the new features work. Instead this section will paint only the broad strokes. See section *note Related -Links: eeb, “Related Links”, for further sources of information about +Links: e00, “Related Links”, for further sources of information about Python 2.2’s new object model. * Menu: @@ -50220,7 +47625,7 @@ Python 2.2’s new object model.  File: python.info, Node: Old and New Classes, Next: Descriptors, Up: PEPs 252 and 253 Type and Class Changes -1.16.2.1 Old and New Classes +1.15.2.1 Old and New Classes ............................ First, you should know that Python 2.2 really has two kinds of classes: @@ -50233,24 +47638,24 @@ eventually old-style classes will be dropped, possibly in Python 3.0. So how do you define a new-style class? You do it by subclassing an existing new-style class. Most of Python’s built-in types, such as integers, lists, dictionaries, and even files, are new-style classes -now. A new-style class named *note object: 3d5, the base class for all +now. A new-style class named *note object: 29b, the base class for all built-in types, has also been added so if no built-in type is suitable, -you can just subclass *note object: 3d5.: +you can just subclass *note object: 29b.: class C(object): def __init__ (self): ... ... -This means that *note class: d34. statements that don’t have any base +This means that *note class: c46. statements that don’t have any base classes are always classic classes in Python 2.2. (Actually you can also change this by setting a module-level variable named ‘__metaclass__’ — see PEP 253(1) for the details — but it’s easier to -just subclass *note object: 3d5.) +just subclass *note object: 29b.) The type objects for the built-in types are available as built-ins, named using a clever trick. Python has always had built-in functions -named *note int(): 204, *note float(): 1fd, and *note str(): 205. In +named *note int(): 171, *note float(): 174, and *note str(): 321. In 2.2, they aren’t functions any more, but type objects that behave as factories when called. @@ -50260,7 +47665,7 @@ factories when called. 123 To make the set of types complete, new type objects such as *note -dict(): 164. and ‘file()’ have been added. Here’s a more interesting +dict(): 1a4. and ‘file()’ have been added. Here’s a more interesting example, adding a ‘lock()’ method to file objects: class LockableFile(file): @@ -50281,7 +47686,7 @@ file, something which is possible with our new ‘LockableFile’.  File: python.info, Node: Descriptors, Next: Multiple Inheritance The Diamond Rule, Prev: Old and New Classes, Up: PEPs 252 and 253 Type and Class Changes -1.16.2.2 Descriptors +1.15.2.2 Descriptors .................... In previous versions of Python, there was no consistent way to discover @@ -50289,9 +47694,9 @@ what attributes and methods were supported by an object. There were some informal conventions, such as defining ‘__members__’ and ‘__methods__’ attributes that were lists of names, but often the author of an extension type or a class wouldn’t bother to define them. You -could fall back on inspecting the *note __dict__: 5f8. of an object, but -when class inheritance or an arbitrary *note __getattr__(): 42c. hook -were in use this could still be inaccurate. +could fall back on inspecting the *note __dict__: 4ed. of an object, but +when class inheritance or an arbitrary ‘__getattr__()’ hook were in use +this could still be inaccurate. The one big idea underlying the new class model is that an API for describing the attributes of an object using `descriptors' has been @@ -50303,7 +47708,7 @@ constructs. Attribute descriptors are objects that live inside class objects, and have a few attributes of their own: - * *note __name__: d31. is the attribute’s name. + * *note __name__: c44. is the attribute’s name. * ‘__doc__’ is the attribute’s docstring. @@ -50339,7 +47744,7 @@ the object itself. Static and class methods are defined like this: ... g = classmethod(g) -The *note staticmethod(): 30d. function takes the function ‘f()’, and +The *note staticmethod(): 1c5. function takes the function ‘f()’, and returns it wrapped up in a descriptor so it can be stored in the class object. You might expect there to be special syntax for creating such methods (‘def static f’, ‘defstatic f()’, or something like that) but no @@ -50379,7 +47784,7 @@ details.  File: python.info, Node: Multiple Inheritance The Diamond Rule, Next: Attribute Access, Prev: Descriptors, Up: PEPs 252 and 253 Type and Class Changes -1.16.2.3 Multiple Inheritance: The Diamond Rule +1.15.2.3 Multiple Inheritance: The Diamond Rule ............................................... Multiple inheritance has also been made more useful through changing the @@ -50427,7 +47832,7 @@ complicated inheritance graphs.) Following this rule, referring to ‘D.save()’ will return ‘C.save()’, which is the behaviour we’re after. This lookup rule is the same as the one followed by Common Lisp. A new built-in function, *note super(): -5df, provides a way to get at a class’s superclasses without having to +4d3, provides a way to get at a class’s superclasses without having to reimplement Python’s algorithm. The most commonly used form will be ‘super(class, obj)’, which returns a bound superclass object (not the actual class object). This form will be used in methods to call a @@ -50441,7 +47846,7 @@ like this: # Save D's private information here ... -*note super(): 5df. can also return unbound superclass objects when +*note super(): 4d3. can also return unbound superclass objects when called as ‘super(class)’ or ‘super(class1, class2)’, but this probably won’t often be useful. @@ -50452,11 +47857,11 @@ won’t often be useful.  File: python.info, Node: Attribute Access, Next: Related Links, Prev: Multiple Inheritance The Diamond Rule, Up: PEPs 252 and 253 Type and Class Changes -1.16.2.4 Attribute Access +1.15.2.4 Attribute Access ......................... A fair number of sophisticated Python classes define hooks for attribute -access using *note __getattr__(): 42c.; most commonly this is done for +access using ‘__getattr__()’; most commonly this is done for convenience, to make code more readable by automatically mapping an attribute access such as ‘obj.parent’ into a method call such as ‘obj.get_parent’. Python 2.2 adds some new ways of controlling @@ -50469,21 +47874,21 @@ found in the instance’s dictionary. New-style classes also support a new method, ‘__getattribute__(attr_name)’. The difference between the two methods -is that *note __getattribute__(): 54e. is `always' called whenever any -attribute is accessed, while the old *note __getattr__(): 42c. is only -called if ‘foo’ isn’t found in the instance’s dictionary. +is that ‘__getattribute__()’ is `always' called whenever any attribute +is accessed, while the old ‘__getattr__()’ is only called if ‘foo’ isn’t +found in the instance’s dictionary. However, Python 2.2’s support for `properties' will often be a simpler -way to trap attribute references. Writing a *note __getattr__(): 42c. -method is complicated because to avoid recursion you can’t use regular -attribute accesses inside them, and instead have to mess around with the -contents of *note __dict__: 5f8. *note __getattr__(): 42c. methods also -end up being called by Python when it checks for other methods such as -*note __repr__(): 44c. or ‘__coerce__()’, and so have to be written with -this in mind. Finally, calling a function on every attribute access -results in a sizable performance loss. +way to trap attribute references. Writing a ‘__getattr__()’ method is +complicated because to avoid recursion you can’t use regular attribute +accesses inside them, and instead have to mess around with the contents +of *note __dict__: 4ed. ‘__getattr__()’ methods also end up being +called by Python when it checks for other methods such as ‘__repr__()’ +or ‘__coerce__()’, and so have to be written with this in mind. +Finally, calling a function on every attribute access results in a +sizable performance loss. -*note property: 30b. is a new built-in type that packages up three +*note property: 1c3. is a new built-in type that packages up three functions that get, set, or delete an attribute, and a docstring. For example, if you want to define a ‘size’ attribute that’s computed, but also settable, you could write: @@ -50503,19 +47908,19 @@ also settable, you could write: None, "Storage size of this instance") -That is certainly clearer and easier to write than a pair of *note -__getattr__(): 42c./*note __setattr__(): ef0. methods that check for the -‘size’ attribute and handle it specially while retrieving all other -attributes from the instance’s *note __dict__: 5f8. Accesses to ‘size’ -are also the only ones which have to perform the work of calling a -function, so references to other attributes run at their usual speed. +That is certainly clearer and easier to write than a pair of +‘__getattr__()’/‘__setattr__()’ methods that check for the ‘size’ +attribute and handle it specially while retrieving all other attributes +from the instance’s *note __dict__: 4ed. Accesses to ‘size’ are also +the only ones which have to perform the work of calling a function, so +references to other attributes run at their usual speed. Finally, it’s possible to constrain the list of attributes that can be -referenced on an object using the new *note __slots__: ef1. class +referenced on an object using the new *note __slots__: e05. class attribute. Python objects are usually very dynamic; at any time it’s possible to define a new attribute on an instance by just doing ‘obj.new_attr=1’. A new-style class can define a class attribute named -*note __slots__: ef1. to limit the legal attributes to a particular set +*note __slots__: e05. to limit the legal attributes to a particular set of names. An example will make this clear: >>> class C(object): @@ -50532,13 +47937,13 @@ of names. An example will make this clear: File "", line 1, in ? AttributeError: 'C' object has no attribute 'newattr' -Note how you get an *note AttributeError: 4a4. on the attempt to assign -to an attribute not listed in *note __slots__: ef1. +Note how you get an *note AttributeError: 38c. on the attempt to assign +to an attribute not listed in *note __slots__: e05.  File: python.info, Node: Related Links, Prev: Attribute Access, Up: PEPs 252 and 253 Type and Class Changes -1.16.2.5 Related Links +1.15.2.5 Related Links ...................... This section has just been a quick overview of the new features, giving @@ -50582,7 +47987,7 @@ including posting a question to python-list or python-dev.  File: python.info, Node: PEP 234 Iterators, Next: PEP 255 Simple Generators<2>, Prev: PEPs 252 and 253 Type and Class Changes, Up: What’s New in Python 2 2 -1.16.3 PEP 234: Iterators +1.15.3 PEP 234: Iterators ------------------------- Another significant addition to 2.2 is an iteration interface at both @@ -50590,44 +47995,43 @@ the C and Python levels. Objects can define how they can be looped over by callers. In Python versions up to 2.1, the usual way to make ‘for item in obj’ -work is to define a *note __getitem__(): 3a5. method that looks -something like this: +work is to define a ‘__getitem__()’ method that looks something like +this: def __getitem__(self, index): return -*note __getitem__(): 3a5. is more properly used to define an indexing -operation on an object so that you can write ‘obj[5]’ to retrieve the -sixth element. It’s a bit misleading when you’re using this only to -support *note for: cfc. loops. Consider some file-like object that -wants to be looped over; the `index' parameter is essentially -meaningless, as the class probably assumes that a series of *note -__getitem__(): 3a5. calls will be made with `index' incrementing by one -each time. In other words, the presence of the *note __getitem__(): -3a5. method doesn’t mean that using ‘file[5]’ to randomly access the -sixth element will work, though it really should. +‘__getitem__()’ is more properly used to define an indexing operation on +an object so that you can write ‘obj[5]’ to retrieve the sixth element. +It’s a bit misleading when you’re using this only to support *note for: +c10. loops. Consider some file-like object that wants to be looped +over; the `index' parameter is essentially meaningless, as the class +probably assumes that a series of ‘__getitem__()’ calls will be made +with `index' incrementing by one each time. In other words, the +presence of the ‘__getitem__()’ method doesn’t mean that using ‘file[5]’ +to randomly access the sixth element will work, though it really should. -In Python 2.2, iteration can be implemented separately, and *note -__getitem__(): 3a5. methods can be limited to classes that really do -support random access. The basic idea of iterators is simple. A new -built-in function, ‘iter(obj)’ or ‘iter(C, sentinel)’, is used to get an +In Python 2.2, iteration can be implemented separately, and +‘__getitem__()’ methods can be limited to classes that really do support +random access. The basic idea of iterators is simple. A new built-in +function, ‘iter(obj)’ or ‘iter(C, sentinel)’, is used to get an iterator. ‘iter(obj)’ returns an iterator for the object `obj', while ‘iter(C, sentinel)’ returns an iterator that will invoke the callable object `C' until it returns `sentinel' to signal that the iterator is done. -Python classes can define an *note __iter__(): 60b. method, which should -create and return a new iterator for the object; if the object is its -own iterator, this method can just return ‘self’. In particular, -iterators will usually be their own iterators. Extension types -implemented in C can implement a *note tp_iter: ef4. function in order -to return an iterator, and extension types that want to behave as -iterators can define a *note tp_iternext: ef5. function. +Python classes can define an ‘__iter__()’ method, which should create +and return a new iterator for the object; if the object is its own +iterator, this method can just return ‘self’. In particular, iterators +will usually be their own iterators. Extension types implemented in C +can implement a *note tp_iter: e08. function in order to return an +iterator, and extension types that want to behave as iterators can +define a *note tp_iternext: e09. function. So, after all this, what do iterators actually do? They have one -required method, *note next(): 777, which takes no arguments and returns +required method, *note next(): 66b, which takes no arguments and returns the next value. When there are no more values to be returned, calling -*note next(): 777. should raise the *note StopIteration: 584. exception. +*note next(): 66b. should raise the *note StopIteration: 477. exception. >>> L = [1,2,3] >>> i = iter(L) @@ -50645,14 +48049,14 @@ the next value. When there are no more values to be returned, calling StopIteration >>> -In 2.2, Python’s *note for: cfc. statement no longer expects a sequence; -it expects something for which *note iter(): def. will return an +In 2.2, Python’s *note for: c10. statement no longer expects a sequence; +it expects something for which *note iter(): cfe. will return an iterator. For backward compatibility and convenience, an iterator is -automatically constructed for sequences that don’t implement *note -__iter__(): 60b. or a *note tp_iter: ef4. slot, so ‘for i in [1,2,3]’ -will still work. Wherever the Python interpreter loops over a sequence, -it’s been changed to use the iterator protocol. This means you can do -things like this: +automatically constructed for sequences that don’t implement +‘__iter__()’ or a *note tp_iter: e08. slot, so ‘for i in [1,2,3]’ will +still work. Wherever the Python interpreter loops over a sequence, it’s +been changed to use the iterator protocol. This means you can do things +like this: >>> L = [1,2,3] >>> i = iter(L) @@ -50661,7 +48065,7 @@ things like this: (1, 2, 3) Iterator support has been added to some of Python’s basic types. -Calling *note iter(): def. on a dictionary will return an iterator which +Calling *note iter(): cfe. on a dictionary will return an iterator which loops over its keys: >>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, @@ -50684,10 +48088,10 @@ loops over its keys: That’s just the default behaviour. If you want to iterate over keys, values, or key/value pairs, you can explicitly call the ‘iterkeys()’, ‘itervalues()’, or ‘iteritems()’ methods to get an appropriate iterator. -In a minor related change, the *note in: 179. operator now works on +In a minor related change, the *note in: 788. operator now works on dictionaries, so ‘key in dict’ is now equivalent to ‘dict.has_key(key)’. -Files also provide an iterator, which calls the *note readline(): de. +Files also provide an iterator, which calls the *note readline(): df. method until there are no more lines in the file. This means you can now read each line of a file using code like this: @@ -50698,7 +48102,7 @@ now read each line of a file using code like this: Note that you can only go forward in an iterator; there’s no way to get the previous element, reset the iterator, or make a copy of it. An iterator object could provide such additional capabilities, but the -iterator protocol only requires a *note next(): 777. method. +iterator protocol only requires a *note next(): 66b. method. See also ........ @@ -50715,7 +48119,7 @@ PEP 234(1) - Iterators  File: python.info, Node: PEP 255 Simple Generators<2>, Next: PEP 237 Unifying Long Integers and Integers<2>, Prev: PEP 234 Iterators, Up: What’s New in Python 2 2 -1.16.4 PEP 255: Simple Generators +1.15.4 PEP 255: Simple Generators --------------------------------- Generators are another new feature, one that interacts with the @@ -50723,7 +48127,7 @@ introduction of iterators. You’re doubtless familiar with how function calls work in Python or C. When you call a function, it gets a private namespace where its local -variables are created. When the function reaches a *note return: 2cb. +variables are created. When the function reaches a *note return: 17d. statement, the local variables are destroyed and the resulting value is returned to the caller. A later call to the same function will get a fresh new set of local variables. But, what if the local variables @@ -50737,7 +48141,7 @@ Here’s the simplest example of a generator function: for i in range(N): yield i -A new keyword, *note yield: 2ca, was introduced for generators. Any +A new keyword, *note yield: 17c, was introduced for generators. Any function containing a ‘yield’ statement is a generator function; this is detected by Python’s bytecode compiler which compiles the function specially as a result. Because a new keyword was introduced, generators @@ -50747,15 +48151,15 @@ In Python 2.3 this statement will become unnecessary. When you call a generator function, it doesn’t return a single value; instead it returns a generator object that supports the iterator -protocol. On executing the *note yield: 2ca. statement, the generator -outputs the value of ‘i’, similar to a *note return: 2cb. statement. +protocol. On executing the *note yield: 17c. statement, the generator +outputs the value of ‘i’, similar to a *note return: 17d. statement. The big difference between ‘yield’ and a ‘return’ statement is that on reaching a ‘yield’ the generator’s state of execution is suspended and local variables are preserved. On the next call to the generator’s ‘next()’ method, the function will resume executing immediately after the ‘yield’ statement. (For complicated reasons, the ‘yield’ statement -isn’t allowed inside the ‘try’ block of a *note try: e39.…*note finally: -2bf. statement; read PEP 255(1) for a full explanation of the +isn’t allowed inside the ‘try’ block of a *note try: d4c.…*note finally: +16f. statement; read PEP 255(1) for a full explanation of the interaction between ‘yield’ and exceptions.) Here’s a sample usage of the ‘generate_ints()’ generator: @@ -50778,18 +48182,18 @@ Here’s a sample usage of the ‘generate_ints()’ generator: You could equally write ‘for i in generate_ints(5)’, or ‘a,b,c = generate_ints(3)’. -Inside a generator function, the *note return: 2cb. statement can only +Inside a generator function, the *note return: 17d. statement can only be used without a value, and signals the end of the procession of values; afterwards the generator cannot return any further values. ‘return’ with a value, such as ‘return 5’, is a syntax error inside a generator function. The end of the generator’s results can also be -indicated by raising *note StopIteration: 584. manually, or by just +indicated by raising *note StopIteration: 477. manually, or by just letting the flow of execution fall off the bottom of the function. You could achieve the effect of generators manually by writing your own class and storing all the local variables of the generator as instance variables. For example, returning a list of integers could be done by -setting ‘self.count’ to 0, and having the *note next(): 777. method +setting ‘self.count’ to 0, and having the *note next(): 66b. method increment ‘self.count’ and return it. However, for a moderately complicated generator, writing a corresponding class would be much messier. ‘Lib/test/test_generators.py’ contains a number of more @@ -50823,7 +48227,7 @@ this looks like: if (i := find("or", sentence)) > 5 then write(i) In Icon the ‘find()’ function returns the indexes at which the substring -“or” is found: 3, 23, 33. In the *note if: ead. statement, ‘i’ is first +“or” is found: 3, 23, 33. In the *note if: dc1. statement, ‘i’ is first assigned a value of 3, but 3 is less than 5, so the comparison fails, and Icon retries it with the second value of 23. 23 is greater than 5, so the comparison now succeeds, and the code prints the value 23 to the @@ -50856,7 +48260,7 @@ PEP 255(2) - Simple Generators  File: python.info, Node: PEP 237 Unifying Long Integers and Integers<2>, Next: PEP 238 Changing the Division Operator, Prev: PEP 255 Simple Generators<2>, Up: What’s New in Python 2 2 -1.16.5 PEP 237: Unifying Long Integers and Integers +1.15.5 PEP 237: Unifying Long Integers and Integers --------------------------------------------------- In recent versions, the distinction between regular integers, which are @@ -50867,7 +48271,7 @@ file objects has to return a long integer. However, there were various bits of Python that expected plain integers and would raise an error if a long integer was provided instead. For example, in Python 1.5, only regular integers could be used as a slice index, and ‘'abc'[1L:]’ would -raise a *note TypeError: 1fe. exception with the message ‘slice index +raise a *note TypeError: 17f. exception with the message ‘slice index must be int’. Python 2.2 will shift values from short to long integers as required. @@ -50875,7 +48279,7 @@ The ‘L’ suffix is no longer needed to indicate a long integer literal, as now the compiler will choose the appropriate type. (Using the ‘L’ suffix will be discouraged in future 2.x versions of Python, triggering a warning in Python 2.4, and probably dropped in Python 3.0.) Many -operations that used to raise an *note OverflowError: a43. will now +operations that used to raise an *note OverflowError: 941. will now return a long integer as their result. For example: >>> 1234567890123 @@ -50884,7 +48288,7 @@ return a long integer as their result. For example: 18446744073709551616L In most cases, integers and long integers will now be treated -identically. You can still distinguish them with the *note type(): 701. +identically. You can still distinguish them with the *note type(): 5f5. built-in function, but that’s rarely needed. See also @@ -50902,7 +48306,7 @@ PEP 237(1) - Unifying Long Integers and Integers  File: python.info, Node: PEP 238 Changing the Division Operator, Next: Unicode Changes, Prev: PEP 237 Unifying Long Integers and Integers<2>, Up: What’s New in Python 2 2 -1.16.6 PEP 238: Changing the Division Operator +1.15.6 PEP 238: Changing the Division Operator ---------------------------------------------- The most controversial change in Python 2.2 heralds the start of an @@ -50951,10 +48355,10 @@ Here are the changes 2.2 introduces: means classic division. The default meaning of ‘/’ will not change until Python 3.0. - * Classes can define methods called *note __truediv__(): 877. and - *note __floordiv__(): ef9. to overload the two division operators. - At the C level, there are also slots in the *note PyNumberMethods: - e48. structure so extension types can define the two operators. + * Classes can define methods called ‘__truediv__()’ and + ‘__floordiv__()’ to overload the two division operators. At the C + level, there are also slots in the *note PyNumberMethods: d5b. + structure so extension types can define the two operators. * Python 2.2 supports some command-line arguments for testing whether code will work with the changed division semantics. Running python @@ -50983,7 +48387,7 @@ PEP 238(3) - Changing the Division Operator  File: python.info, Node: Unicode Changes, Next: PEP 227 Nested Scopes, Prev: PEP 238 Changing the Division Operator, Up: What’s New in Python 2 2 -1.16.7 Unicode Changes +1.15.7 Unicode Changes ---------------------- Python’s Unicode support has been enhanced a bit in 2.2. Unicode @@ -50997,7 +48401,7 @@ When built to use UCS-4 (a “wide Python”), the interpreter can natively handle Unicode characters from U+000000 to U+110000, so the range of legal values for the ‘unichr()’ function is expanded accordingly. Using an interpreter compiled to use UCS-2 (a “narrow Python”), values greater -than 65535 will still cause ‘unichr()’ to raise a *note ValueError: 16d. +than 65535 will still cause ‘unichr()’ to raise a *note ValueError: 1e7. exception. This is all described in PEP 261(1), “Support for ‘wide’ Unicode characters”; consult it for further details. @@ -51012,7 +48416,7 @@ by the codec. Using this new feature, codecs have been added for tasks not directly related to Unicode. For example, codecs have been added for uu-encoding, MIME’s base64 encoding, and compression with the *note -zlib: 14d. module: +zlib: 145. module: >>> s = """Here is a lengthy piece of redundant, overly verbose, ... and repetitive text. @@ -51032,7 +48436,7 @@ zlib: 14d. module: 'furrfu' To convert a class instance to Unicode, a ‘__unicode__()’ method can be -defined by a class, analogous to *note __str__(): efb. +defined by a class, analogous to ‘__str__()’. ‘encode()’, ‘decode()’, and ‘__unicode__()’ were implemented by Marc-André Lemburg. The changes to support using UCS-4 internally were @@ -51054,7 +48458,7 @@ PEP 261(2) - Support for ‘wide’ Unicode characters  File: python.info, Node: PEP 227 Nested Scopes, Next: New and Improved Modules<3>, Prev: Unicode Changes, Up: What’s New in Python 2 2 -1.16.8 PEP 227: Nested Scopes +1.15.8 PEP 227: Nested Scopes ----------------------------- In Python 2.1, statically nested scopes were added as an optional @@ -51079,11 +48483,11 @@ nested recursive function definition doesn’t work: return g(value-1) + 1 ... -The function ‘g()’ will always raise a *note NameError: e42. exception, +The function ‘g()’ will always raise a *note NameError: d55. exception, because the binding of the name ‘g’ isn’t in either its local namespace or in the module-level namespace. This isn’t much of a problem in practice (how often do you recursively define interior functions like -this?), but this also made using the *note lambda: cfb. expression +this?), but this also made using the *note lambda: c0f. expression clumsier, and this was a problem in practice. In code which uses ‘lambda’ you can often find local variables being copied by passing them as the default values of arguments. @@ -51101,8 +48505,8 @@ The most significant change to Python 2.2 is that static scoping has been added to the language to fix this problem. As a first effect, the ‘name=name’ default argument is now unnecessary in the above example. Put simply, when a given variable name is not assigned a value within a -function (by an assignment, or the *note def: e85, *note class: d34, or -*note import: ce9. statements), references to the variable will be +function (by an assignment, or the *note def: d98, *note class: c46, or +*note import: bfd. statements), references to the variable will be looked up in the local namespace of the enclosing scope. A more detailed explanation of the rules, and a dissection of the implementation, can be found in the PEP. @@ -51123,9 +48527,9 @@ into bytecodes has to generate different code to access variables in a containing scope. ‘from module import *’ and ‘exec’ make it impossible for the compiler to figure this out, because they add names to the local namespace that are unknowable at compile time. Therefore, if a function -contains function definitions or *note lambda: cfb. expressions with +contains function definitions or *note lambda: c0f. expressions with free variables, the compiler will flag this by raising a *note -SyntaxError: 55c. exception. +SyntaxError: 449. exception. To make the preceding explanation a bit clearer, here’s an example: @@ -51158,7 +48562,7 @@ PEP 227(1) - Statically Nested Scopes  File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Changes and Fixes, Prev: PEP 227 Nested Scopes, Up: What’s New in Python 2 2 -1.16.9 New and Improved Modules +1.15.9 New and Improved Modules ------------------------------- * The ‘xmlrpclib’ module was contributed to the standard library by @@ -51189,15 +48593,15 @@ File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Change straightforward XML-RPC servers. See ‘http://xmlrpc.scripting.com/’ for more information about XML-RPC. - * The new *note hmac: 8e. module implements the HMAC algorithm + * The new *note hmac: 8f. module implements the HMAC algorithm described by RFC 2104(1). (Contributed by Gerhard Häring.) * Several functions that originally returned lengthy tuples now return pseudo-sequences that still behave like tuples but also have mnemonic attributes such as memberst_mtime or ‘tm_year’. The - enhanced functions include *note stat(): f4, ‘fstat()’, - ‘statvfs()’, and ‘fstatvfs()’ in the *note os: c4. module, and - ‘localtime()’, ‘gmtime()’, and ‘strptime()’ in the *note time: 10c. + enhanced functions include *note stat(): f5, ‘fstat()’, + ‘statvfs()’, and ‘fstatvfs()’ in the *note os: c5. module, and + ‘localtime()’, ‘gmtime()’, and ‘strptime()’ in the *note time: 10b. module. For example, to obtain a file’s size using the old tuples, you’d @@ -51212,41 +48616,41 @@ File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Change errors in its output have been corrected. (Contributed by Fred L. Drake, Jr. and Tim Peters.) - * The *note socket: ef. module can be compiled to support IPv6; + * The *note socket: f0. module can be compiled to support IPv6; specify the ‘--enable-ipv6’ option to Python’s configure script. (Contributed by Jun-ichiro “itojun” Hagino.) - * Two new format characters were added to the *note struct: f8. - module for 64-bit integers on platforms that support the C ‘long - long’ type. ‘q’ is for a signed 64-bit integer, and ‘Q’ is for an + * Two new format characters were added to the *note struct: f9. + module for 64-bit integers on platforms that support the C long + long type. ‘q’ is for a signed 64-bit integer, and ‘Q’ is for an unsigned one. The value is returned in Python’s long integer type. (Contributed by Tim Peters.) * In the interpreter’s interactive mode, there’s a new built-in - function *note help(): 175. that uses the *note pydoc: d9. module + function *note help(): 55f. that uses the *note pydoc: da. module introduced in Python 2.1 to provide interactive help. ‘help(object)’ displays any available help text about `object'. - *note help(): 175. with no argument puts you in an online help + *note help(): 55f. with no argument puts you in an online help utility, where you can enter the names of functions, classes, or modules to read their help text. (Contributed by Guido van Rossum, - using Ka-Ping Yee’s *note pydoc: d9. module.) + using Ka-Ping Yee’s *note pydoc: da. module.) * Various bugfixes and performance improvements have been made to the - SRE engine underlying the *note re: dd. module. For example, the - *note re.sub(): 57c. and *note re.split(): 4d3. functions have been + SRE engine underlying the *note re: de. module. For example, the + *note re.sub(): 46c. and *note re.split(): 3bb. functions have been rewritten in C. Another contributed patch speeds up certain Unicode character ranges by a factor of two, and a new ‘finditer()’ method that returns an iterator over all the non-overlapping matches in a given string. (SRE is maintained by Fredrik Lundh. The BIGCHARSET patch was contributed by Martin von Löwis.) - * The *note smtplib: ed. module now supports RFC 2487(2), “Secure + * The *note smtplib: ee. module now supports RFC 2487(2), “Secure SMTP over TLS”, so it’s now possible to encrypt the SMTP traffic between a Python program and the mail transport agent being handed - a message. *note smtplib: ed. also supports SMTP authentication. + a message. *note smtplib: ee. also supports SMTP authentication. (Contributed by Gerhard Häring.) - * The *note imaplib: 97. module, maintained by Piers Lauder, has + * The *note imaplib: 98. module, maintained by Piers Lauder, has support for several new extensions: the NAMESPACE extension defined in RFC 2342(3), SORT, GETACL and SETACL. (Contributed by Anthony Baxter and Michel Pelletier.) @@ -51254,11 +48658,11 @@ File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Change * The ‘rfc822’ module’s parsing of email addresses is now compliant with RFC 2822(4), an update to RFC 822(5). (The module’s name is `not' going to be changed to ‘rfc2822’.) A new package, *note - email: 67, has also been added for parsing and generating e-mail + email: 69, has also been added for parsing and generating e-mail messages. (Contributed by Barry Warsaw, and arising out of his work on Mailman.) - * The *note difflib: 36. module now contains a new ‘Differ’ class for + * The *note difflib: 37. module now contains a new ‘Differ’ class for producing human-readable lists of changes (a “delta”) between two sequences of lines of text. There are also two generator functions, ‘ndiff()’ and ‘restore()’, which respectively return a @@ -51267,7 +48671,7 @@ File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Change code by Tim Peters who then did the generatorization.) * New constants ‘ascii_letters’, ‘ascii_lowercase’, and - ‘ascii_uppercase’ were added to the *note string: f6. module. + ‘ascii_uppercase’ were added to the *note string: f7. module. There were several modules in the standard library that used ‘string.letters’ to mean the ranges A-Za-z, but that assumption is incorrect when locales are in use, because ‘string.letters’ varies @@ -51276,12 +48680,12 @@ File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Change ‘ascii_letters’ instead. (Reported by an unknown person; fixed by Fred L. Drake, Jr.) - * The *note mimetypes: b2. module now makes it easier to use + * The *note mimetypes: b3. module now makes it easier to use alternative MIME-type databases by the addition of a ‘MimeTypes’ class, which takes a list of filenames to be parsed. (Contributed by Fred L. Drake, Jr.) - * A ‘Timer’ class was added to the *note threading: 10b. module that + * A ‘Timer’ class was added to the *note threading: 10a. module that allows scheduling an activity to happen at some future time. (Contributed by Itamar Shtull-Trauring.) @@ -51300,7 +48704,7 @@ File: python.info, Node: New and Improved Modules<3>, Next: Interpreter Change  File: python.info, Node: Interpreter Changes and Fixes, Next: Other Changes and Fixes<3>, Prev: New and Improved Modules<3>, Up: What’s New in Python 2 2 -1.16.10 Interpreter Changes and Fixes +1.15.10 Interpreter Changes and Fixes ------------------------------------- Some of the changes only affect people who deal with the Python @@ -51314,18 +48718,18 @@ here will affect you very much. should reduce the overhead of profiling and tracing. This will be of interest to authors of development environments for Python. Two new C functions were added to Python’s API, *note - PyEval_SetProfile(): eff. and *note PyEval_SetTrace(): f00. The - existing *note sys.setprofile(): f01. and *note sys.settrace(): - f02. functions still exist, and have simply been changed to use the + PyEval_SetProfile(): e11. and *note PyEval_SetTrace(): e12. The + existing *note sys.setprofile(): e13. and *note sys.settrace(): + e14. functions still exist, and have simply been changed to use the new C-level interface. (Contributed by Fred L. Drake, Jr.) * Another low-level API, primarily of interest to implementors of Python debuggers and development tools, was added. *note - PyInterpreterState_Head(): f03. and *note - PyInterpreterState_Next(): f04. let a caller walk through all the + PyInterpreterState_Head(): e15. and *note + PyInterpreterState_Next(): e16. let a caller walk through all the existing interpreter objects; *note - PyInterpreterState_ThreadHead(): f05. and *note - PyThreadState_Next(): f06. allow looping over all the thread states + PyInterpreterState_ThreadHead(): e17. and *note + PyThreadState_Next(): e18. allow looping over all the thread states for a given interpreter. (Contributed by David Beazley.) * The C-level interface to the garbage collector has been changed to @@ -51342,21 +48746,21 @@ here will affect you very much. * Rename ‘Py_TPFLAGS_GC()’ to ‘PyTPFLAGS_HAVE_GC()’. * - Use *note PyObject_GC_New(): 3f6. or *note PyObject_GC_NewVar(): 3f7. to allocate + Use *note PyObject_GC_New(): 2bf. or *note PyObject_GC_NewVar(): 2c0. to allocate - objects, and *note PyObject_GC_Del(): f07. to deallocate them. + objects, and *note PyObject_GC_Del(): e19. to deallocate them. * - Rename ‘PyObject_GC_Init()’ to *note PyObject_GC_Track(): f08. and + Rename ‘PyObject_GC_Init()’ to *note PyObject_GC_Track(): e1a. and - ‘PyObject_GC_Fini()’ to *note PyObject_GC_UnTrack(): f09. + ‘PyObject_GC_Fini()’ to *note PyObject_GC_UnTrack(): e1b. * Remove ‘PyGC_HEAD_SIZE()’ from object size calculations. * Remove calls to ‘PyObject_AS_GC()’ and ‘PyObject_FROM_GC()’. * A new ‘et’ format sequence was added to *note PyArg_ParseTuple(): - 396.; ‘et’ takes both a parameter and an encoding name, and + 256.; ‘et’ takes both a parameter and an encoding name, and converts the parameter to the given encoding if the parameter turns out to be a Unicode string, or leaves it alone if it’s an 8-bit string, assuming it to already be in the desired encoding. This @@ -51367,28 +48771,28 @@ here will affect you very much. section.) * A different argument parsing function, *note PyArg_UnpackTuple(): - f0a, has been added that’s simpler and presumably faster. Instead + e1c, has been added that’s simpler and presumably faster. Instead of specifying a format string, the caller simply gives the minimum and maximum number of arguments expected, and a set of pointers to - *note PyObject*: 5b7. variables that will be filled in with + *note PyObject: 4ab.* variables that will be filled in with argument values. - * Two new flags *note METH_NOARGS: edc. and *note METH_O: f0b. are + * Two new flags *note METH_NOARGS: df1. and *note METH_O: e1d. are available in method definition tables to simplify implementation of methods with no arguments or a single untyped argument. Calling such methods is more efficient than calling a corresponding method - that uses *note METH_VARARGS: f0c. Also, the old ‘METH_OLDARGS’ + that uses *note METH_VARARGS: e1e. Also, the old ‘METH_OLDARGS’ style of writing C methods is now officially deprecated. - * Two new wrapper functions, *note PyOS_snprintf(): f0d. and *note - PyOS_vsnprintf(): f0e. were added to provide cross-platform + * Two new wrapper functions, *note PyOS_snprintf(): e1f. and *note + PyOS_vsnprintf(): e20. were added to provide cross-platform implementations for the relatively new ‘snprintf()’ and ‘vsnprintf()’ C lib APIs. In contrast to the standard ‘sprintf()’ and ‘vsprintf()’ functions, the Python versions check the bounds of the buffer used to protect against buffer overruns. (Contributed by M.-A. Lemburg.) - * The *note _PyTuple_Resize(): f0f. function has lost an unused + * The *note _PyTuple_Resize(): e21. function has lost an unused parameter, so now it takes 2 parameters instead of 3. The third argument was never used, and can simply be discarded when porting code from earlier versions to Python 2.2. @@ -51396,7 +48800,7 @@ here will affect you very much.  File: python.info, Node: Other Changes and Fixes<3>, Next: Acknowledgements<6>, Prev: Interpreter Changes and Fixes, Up: What’s New in Python 2 2 -1.16.11 Other Changes and Fixes +1.15.11 Other Changes and Fixes ------------------------------- As usual there were a bunch of other improvements and bugfixes scattered @@ -51431,13 +48835,13 @@ Some of the more notable changes are: manually. * Keyword arguments passed to built-in functions that don’t take them - now cause a *note TypeError: 1fe. exception to be raised, with the + now cause a *note TypeError: 17f. exception to be raised, with the message “`function' takes no keyword arguments”. * Weak references, added in Python 2.1 as an extension module, are now part of the core because they’re used in the implementation of - new-style classes. The *note ReferenceError: f11. exception has - therefore moved from the *note weakref: 131. module to become a + new-style classes. The *note ReferenceError: e23. exception has + therefore moved from the *note weakref: 129. module to become a built-in exception. * A new script, ‘Tools/scripts/cleanfuture.py’ by Tim Peters, @@ -51445,7 +48849,7 @@ Some of the more notable changes are: source code. * An additional `flags' argument has been added to the built-in - function *note compile(): 2ea, so the behaviour of ‘__future__’ + function *note compile(): 1a0, so the behaviour of ‘__future__’ statements can now be correctly observed in simulated shells, such as those presented by IDLE and other development environments. This is described in PEP 264(1). (Contributed by Michael Hudson.) @@ -51477,7 +48881,7 @@ Some of the more notable changes are: now deprecated, and trigger warnings when they’re accessed; they’ll disappear in Python 2.3. ‘xrange’ objects tried to pretend they were full sequence types by supporting slicing, sequence - multiplication, and the *note in: 179. operator, but these features + multiplication, and the *note in: 788. operator, but these features were rarely used and therefore buggy. The ‘tolist()’ method and the ‘start’, ‘stop’, and ‘step’ attributes are also being deprecated. At the C level, the fourth argument to the @@ -51509,15 +48913,15 @@ Some of the more notable changes are: * On platforms where Python uses the C ‘dlopen()’ function to load extension modules, it’s now possible to set the flags used by - ‘dlopen()’ using the *note sys.getdlopenflags(): f12. and *note - sys.setdlopenflags(): b43. functions. (Contributed by Bram Stolk.) + ‘dlopen()’ using the *note sys.getdlopenflags(): e24. and *note + sys.setdlopenflags(): a47. functions. (Contributed by Bram Stolk.) - * The *note pow(): 2d2. built-in function no longer supports 3 + * The *note pow(): 187. built-in function no longer supports 3 arguments when floating-point numbers are supplied. ‘pow(x, y, z)’ returns ‘(x**y) % z’, but this is never useful for floating point numbers, and the final result varies unpredictably depending on the platform. A call such as ‘pow(2.0, 8.0, 7.0)’ will now raise a - *note TypeError: 1fe. exception. + *note TypeError: 17f. exception. ---------- Footnotes ---------- @@ -51526,7 +48930,7 @@ Some of the more notable changes are:  File: python.info, Node: Acknowledgements<6>, Prev: Other Changes and Fixes<3>, Up: What’s New in Python 2 2 -1.16.12 Acknowledgements +1.15.12 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -51541,7 +48945,7 @@ Schemenauer, Guido van Rossum, Greg Ward, Edward Welbourne.  File: python.info, Node: What’s New in Python 2 1, Next: What’s New in Python 2 0, Prev: What’s New in Python 2 2, Up: What’s New in Python -1.17 What’s New in Python 2.1 +1.16 What’s New in Python 2.1 ============================= @@ -51568,7 +48972,7 @@ Author: A.M. Kuchling  File: python.info, Node: Introduction<2>, Next: PEP 227 Nested Scopes<2>, Up: What’s New in Python 2 1 -1.17.1 Introduction +1.16.1 Introduction ------------------- This article explains the new features in Python 2.1. While there @@ -51593,7 +48997,7 @@ The final release of Python 2.1 was made on April 17, 2001.  File: python.info, Node: PEP 227 Nested Scopes<2>, Next: PEP 236 __future__ Directives, Prev: Introduction<2>, Up: What’s New in Python 2 1 -1.17.2 PEP 227: Nested Scopes +1.16.2 PEP 227: Nested Scopes ----------------------------- The largest change in Python 2.1 is to Python’s scoping rules. In @@ -51610,13 +49014,13 @@ doesn’t work: return g(value-1) + 1 ... -The function ‘g()’ will always raise a *note NameError: e42. exception, +The function ‘g()’ will always raise a *note NameError: d55. exception, because the binding of the name ‘g’ isn’t in either its local namespace or in the module-level namespace. This isn’t much of a problem in practice (how often do you recursively define interior functions like -this?), but this also made using the *note lambda: cfb. expression +this?), but this also made using the *note lambda: c0f. expression clumsier, and this was a problem in practice. In code which uses *note -lambda: cfb. you can often find local variables being copied by passing +lambda: c0f. you can often find local variables being copied by passing them as the default values of arguments. def find(self, name): @@ -51632,8 +49036,8 @@ The most significant change to Python 2.1 is that static scoping has been added to the language to fix this problem. As a first effect, the ‘name=name’ default argument is now unnecessary in the above example. Put simply, when a given variable name is not assigned a value within a -function (by an assignment, or the *note def: e85, *note class: d34, or -*note import: ce9. statements), references to the variable will be +function (by an assignment, or the *note def: d98, *note class: c46, or +*note import: bfd. statements), references to the variable will be looked up in the local namespace of the enclosing scope. A more detailed explanation of the rules, and a dissection of the implementation, can be found in the PEP. @@ -51654,9 +49058,9 @@ into bytecodes has to generate different code to access variables in a containing scope. ‘from module import *’ and ‘exec’ make it impossible for the compiler to figure this out, because they add names to the local namespace that are unknowable at compile time. Therefore, if a function -contains function definitions or *note lambda: cfb. expressions with +contains function definitions or *note lambda: c0f. expressions with free variables, the compiler will flag this by raising a *note -SyntaxError: 55c. exception. +SyntaxError: 449. exception. To make the preceding explanation a bit clearer, here’s an example: @@ -51701,7 +49105,7 @@ PEP 227(3) - Statically Nested Scopes  File: python.info, Node: PEP 236 __future__ Directives, Next: PEP 207 Rich Comparisons, Prev: PEP 227 Nested Scopes<2>, Up: What’s New in Python 2 1 -1.17.3 PEP 236: __future__ Directives +1.16.3 PEP 236: __future__ Directives ------------------------------------- The reaction to nested scopes was widespread concern about the dangers @@ -51716,7 +49120,7 @@ statement: from __future__ import nested_scopes -While it looks like a normal *note import: ce9. statement, it’s not; +While it looks like a normal *note import: bfd. statement, it’s not; there are strict rules on where such a future statement can be put. They can only be at the top of a module, and must precede any Python code or regular ‘import’ statements. This is because such statements @@ -51738,7 +49142,7 @@ PEP 236(1) - Back to the *note __future__: 0.  File: python.info, Node: PEP 207 Rich Comparisons, Next: PEP 230 Warning Framework, Prev: PEP 236 __future__ Directives, Up: What’s New in Python 2 1 -1.17.4 PEP 207: Rich Comparisons +1.16.4 PEP 207: Rich Comparisons -------------------------------- In earlier versions, Python’s support for implementing comparisons on @@ -51763,22 +49167,22 @@ Operation Method name ------------------------------------- -‘<’ *note __lt__(): d00. +‘<’ ‘__lt__()’ -‘<=’ *note __le__(): d6a. +‘<=’ ‘__le__()’ -‘>’ *note __gt__(): d6b. +‘>’ ‘__gt__()’ -‘>=’ *note __ge__(): d6c. +‘>=’ ‘__ge__()’ -‘==’ *note __eq__(): 44d. +‘==’ ‘__eq__()’ -‘!=’ *note __ne__(): f1a. +‘!=’ ‘__ne__()’ (The magic methods are named after the corresponding Fortran operators @@ -51826,7 +49230,7 @@ PEP 207(2) - Rich Comparisons  File: python.info, Node: PEP 230 Warning Framework, Next: PEP 229 New Build System, Prev: PEP 207 Rich Comparisons, Up: What’s New in Python 2 1 -1.17.5 PEP 230: Warning Framework +1.16.5 PEP 230: Warning Framework --------------------------------- Over its 10 years of existence, Python has accumulated a certain number @@ -51841,7 +49245,7 @@ feature, and users will have had a full release cycle to remove uses of the old feature. Python 2.1 adds the warning framework to be used in this scheme. It -adds a *note warnings: 12f. module that provide functions to issue +adds a *note warnings: 127. module that provide functions to issue warnings, and to filter out warnings that you don’t want to be displayed. Third-party modules can also use this framework to deprecate old features that they no longer wish to support. @@ -51854,7 +49258,7 @@ importing it causes a warning to be printed: is deprecated; please use the re module >>> -Warnings can be issued by calling the *note warnings.warn(): f1c. +Warnings can be issued by calling the *note warnings.warn(): e2d. function: warnings.warn("feature X no longer supported") @@ -51866,7 +49270,7 @@ Filters can be added to disable certain warnings; a regular expression pattern can be applied to the message or to the module name in order to suppress a warning. For example, you may have a program that uses the ‘regex’ module and not want to spare the time to convert it to use the -*note re: dd. module right now. The warning can be suppressed by +*note re: de. module right now. The warning can be suppressed by calling import warnings @@ -51876,7 +49280,7 @@ calling module = '__main__') This adds a filter that will apply only to warnings of the class *note -DeprecationWarning: 15a. triggered in the *note __main__: 1. module, and +DeprecationWarning: 264. triggered in the *note __main__: 1. module, and applies a regular expression to only match the message about the ‘regex’ module being deprecated, and will cause such warnings to be ignored. Warnings can also be printed only once, printed every time the offending @@ -51909,7 +49313,7 @@ PEP 230(2) - Warning Framework  File: python.info, Node: PEP 229 New Build System, Next: PEP 205 Weak References, Prev: PEP 230 Warning Framework, Up: What’s New in Python 2 1 -1.17.6 PEP 229: New Build System +1.16.6 PEP 229: New Build System -------------------------------- When compiling Python, the user had to go in and edit the @@ -51956,10 +49360,10 @@ PEP 229(1) - Using Distutils to Build Python  File: python.info, Node: PEP 205 Weak References, Next: PEP 232 Function Attributes, Prev: PEP 229 New Build System, Up: What’s New in Python 2 1 -1.17.7 PEP 205: Weak References +1.16.7 PEP 205: Weak References ------------------------------- -Weak references, available through the *note weakref: 131. module, are a +Weak references, available through the *note weakref: 129. module, are a minor but useful new data type in the Python programmer’s toolbox. Storing a reference to an object (say, in a dictionary or a list) has @@ -52018,7 +49422,7 @@ doesn’t keep objects alive, by storing weak references in the cache. return retval -The *note weakref: 131. module also allows creating proxy objects which +The *note weakref: 129. module also allows creating proxy objects which behave like weak references — an object referenced only by proxy objects is deallocated – but instead of requiring an explicit call to retrieve the object, the proxy transparently forwards all operations to the @@ -52046,7 +49450,7 @@ PEP 205(1) - Weak References  File: python.info, Node: PEP 232 Function Attributes, Next: PEP 235 Importing Modules on Case-Insensitive Platforms, Prev: PEP 205 Weak References, Up: What’s New in Python 2 1 -1.17.8 PEP 232: Function Attributes +1.16.8 PEP 232: Function Attributes ----------------------------------- In Python 2.1, functions can now have arbitrary information attached to @@ -52070,9 +49474,9 @@ regular Python syntax: f.grammar = "A ::= B (C D)*" The dictionary containing attributes can be accessed as the function’s -*note __dict__: 5f8. Unlike the *note __dict__: 5f8. attribute of class +*note __dict__: 4ed. Unlike the *note __dict__: 4ed. attribute of class instances, in functions you can actually assign a new dictionary to -*note __dict__: 5f8, though the new value is restricted to a regular +*note __dict__: 4ed, though the new value is restricted to a regular Python dictionary; you `can’t' be tricky and set it to a ‘UserDict’ instance, or any other random object that behaves like a mapping. @@ -52090,7 +49494,7 @@ PEP 232(1) - Function Attributes  File: python.info, Node: PEP 235 Importing Modules on Case-Insensitive Platforms, Next: PEP 217 Interactive Display Hook, Prev: PEP 232 Function Attributes, Up: What’s New in Python 2 1 -1.17.9 PEP 235: Importing Modules on Case-Insensitive Platforms +1.16.9 PEP 235: Importing Modules on Case-Insensitive Platforms --------------------------------------------------------------- Some operating systems have filesystems that are case-insensitive, MacOS @@ -52099,24 +49503,24 @@ impossible to distinguish the filenames ‘FILE.PY’ and ‘file.py’, even though they do store the file’s name in its original case (they’re case-preserving, too). -In Python 2.1, the *note import: ce9. statement will work to simulate +In Python 2.1, the *note import: bfd. statement will work to simulate case-sensitivity on case-insensitive platforms. Python will now search for the first case-sensitive match by default, raising an *note -ImportError: 16c. if no such file is found, so ‘import file’ will not +ImportError: 325. if no such file is found, so ‘import file’ will not import a module named ‘FILE.PY’. Case-insensitive matching can be -requested by setting the *note PYTHONCASEOK: 230. environment variable +requested by setting the *note PYTHONCASEOK: e32. environment variable before starting the Python interpreter.  File: python.info, Node: PEP 217 Interactive Display Hook, Next: PEP 208 New Coercion Model, Prev: PEP 235 Importing Modules on Case-Insensitive Platforms, Up: What’s New in Python 2 1 -1.17.10 PEP 217: Interactive Display Hook +1.16.10 PEP 217: Interactive Display Hook ----------------------------------------- When using the Python interpreter interactively, the output of commands -is displayed using the built-in *note repr(): 8bb. function. In Python -2.1, the variable *note sys.displayhook(): f22. can be set to a callable -object which will be called instead of *note repr(): 8bb. For example, +is displayed using the built-in *note repr(): 7b1. function. In Python +2.1, the variable *note sys.displayhook(): e34. can be set to a callable +object which will be called instead of *note repr(): 7b1. For example, you can set it to a special pretty-printing function: >>> # Create a recursive data structure @@ -52145,7 +49549,7 @@ PEP 217(1) - Display Hook for Interactive Use  File: python.info, Node: PEP 208 New Coercion Model, Next: PEP 241 Metadata in Python Packages, Prev: PEP 217 Interactive Display Hook, Up: What’s New in Python 2 1 -1.17.11 PEP 208: New Coercion Model +1.16.11 PEP 208: New Coercion Model ----------------------------------- How numeric coercion is done at the C level was significantly modified. @@ -52163,10 +49567,10 @@ passed a type it can’t handle, it can indicate the failure by returning a reference to the ‘Py_NotImplemented’ singleton value. The numeric functions of the other type will then be tried, and perhaps they can handle the operation; if the other type also returns -‘Py_NotImplemented’, then a *note TypeError: 1fe. will be raised. +‘Py_NotImplemented’, then a *note TypeError: 17f. will be raised. Numeric methods written in Python can also return ‘Py_NotImplemented’, causing the interpreter to act as if the method did not exist (perhaps -raising a *note TypeError: 1fe, perhaps trying another object’s numeric +raising a *note TypeError: 17f, perhaps trying another object’s numeric methods). See also @@ -52186,7 +49590,7 @@ PEP 208(1) - Reworking the Coercion Model  File: python.info, Node: PEP 241 Metadata in Python Packages, Next: New and Improved Modules<4>, Prev: PEP 208 New Coercion Model, Up: What’s New in Python 2 1 -1.17.12 PEP 241: Metadata in Python Packages +1.16.12 PEP 241: Metadata in Python Packages -------------------------------------------- A common complaint from Python users is that there’s no single catalog @@ -52240,7 +49644,7 @@ PEP 243(4) - Module Repository Upload Mechanism  File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and Fixes<4>, Prev: PEP 241 Metadata in Python Packages, Up: What’s New in Python 2 1 -1.17.13 New and Improved Modules +1.16.13 New and Improved Modules -------------------------------- * Ka-Ping Yee contributed two new modules: ‘inspect.py’, a module for @@ -52270,7 +49674,7 @@ File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and quickly becomes addictive; try it out! * Two different modules for unit testing were added to the standard - library. The *note doctest: 66. module, contributed by Tim Peters, + library. The *note doctest: 67. module, contributed by Tim Peters, provides a testing framework based on running embedded examples in docstrings and comparing the results against the expected output. PyUnit, contributed by Steve Purcell, is a unit testing framework @@ -52278,14 +49682,14 @@ File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and Smalltalk testing framework. See ‘http://pyunit.sourceforge.net/’ for more information about PyUnit. - * The *note difflib: 36. module contains a class, ‘SequenceMatcher’, + * The *note difflib: 37. module contains a class, ‘SequenceMatcher’, which compares two sequences and computes the changes required to transform one sequence into the other. For example, this module can be used to write a tool similar to the Unix ‘diff’ program, and in fact the sample program ‘Tools/scripts/ndiff.py’ demonstrates how to write such a script. - * *note curses.panel: 2d, a wrapper for the panel library, part of + * *note curses.panel: 2e, a wrapper for the panel library, part of ncurses and of SYSV curses, was contributed by Thomas Gellekum. The panel library provides windows with the additional feature of depth. Windows can be moved higher or lower in the depth ordering, @@ -52293,23 +49697,23 @@ File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and sections are visible. * The PyXML package has gone through a few releases since Python 2.0, - and Python 2.1 includes an updated version of the *note xml: 13c. + and Python 2.1 includes an updated version of the *note xml: 134. package. Some of the noteworthy changes include support for Expat 1.2 and later versions, the ability for Expat parsers to handle files in any encoding supported by Python, and various bugfixes for SAX, DOM, and the ‘minidom’ module. * Ping also contributed another hook for handling uncaught - exceptions. *note sys.excepthook(): f26. can be set to a callable + exceptions. *note sys.excepthook(): e38. can be set to a callable object. When an exception isn’t caught by any *note try: - e39.…*note except: c12. blocks, the exception will be passed to - *note sys.excepthook(): f26, which can then do whatever it likes. + d4c.…*note except: b1e. blocks, the exception will be passed to + *note sys.excepthook(): e38, which can then do whatever it likes. At the Ninth Python Conference, Ping demonstrated an application for this hook: printing an extended traceback that not only lists the stack frames, but also lists the function arguments and the local variables for each frame. - * Various functions in the *note time: 10c. module, such as + * Various functions in the *note time: 10b. module, such as ‘asctime()’ and ‘localtime()’, require a floating point argument containing the time in seconds since the epoch. The most common use of these functions is to work with the current time, so the @@ -52322,10 +49726,10 @@ File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and This change was proposed and implemented by Thomas Wouters. - * The *note ftplib: 82. module now defaults to retrieving files in + * The *note ftplib: 84. module now defaults to retrieving files in passive mode, because passive mode is more likely to work from behind a firewall. This request came from the Debian bug tracking - system, since other Debian packages use *note ftplib: 82. to + system, since other Debian packages use *note ftplib: 84. to retrieve files and then don’t work from behind a firewall. It’s deemed unlikely that this will cause problems for anyone, because Netscape defaults to passive mode and few people complain, but if @@ -52333,16 +49737,16 @@ File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and call ‘set_pasv(0)’ on FTP objects to disable passive mode. * Support for raw socket access has been added to the *note socket: - ef. module, contributed by Grant Edwards. + f0. module, contributed by Grant Edwards. - * The *note pstats: d4. module now contains a simple interactive + * The *note pstats: d5. module now contains a simple interactive statistics browser for displaying timing profiles for Python programs, invoked when the module is run as a script. Contributed by Eric S. Raymond. * A new implementation-dependent function, ‘sys._getframe([depth])’, has been added to return a given frame object from the current call - stack. *note sys._getframe(): f27. returns the frame at the top of + stack. *note sys._getframe(): e39. returns the frame at the top of the call stack; if the optional integer argument `depth' is supplied, the function returns the frame that is `depth' calls below the top of the stack. For example, ‘sys._getframe(1)’ @@ -52355,7 +49759,7 @@ File: python.info, Node: New and Improved Modules<4>, Next: Other Changes and  File: python.info, Node: Other Changes and Fixes<4>, Next: Acknowledgements<7>, Prev: New and Improved Modules<4>, Up: What’s New in Python 2 1 -1.17.14 Other Changes and Fixes +1.16.14 Other Changes and Fixes ------------------------------- There were relatively few smaller changes made in Python 2.1 due to the @@ -52390,7 +49794,7 @@ underestimates. Some of the more notable changes are: * The speed of line-oriented file I/O has been improved because people often complain about its lack of speed, and because it’s - often been used as a naïve benchmark. The *note readline(): de. + often been used as a naïve benchmark. The *note readline(): df. method of file objects has therefore been rewritten to be much faster. The exact amount of the speedup will vary from platform to platform depending on how slow the C library’s ‘getc()’ was, but is @@ -52427,8 +49831,8 @@ underestimates. Some of the more notable changes are: * Modules can now control which names are imported when ‘from module import *’ is used, by defining an ‘__all__’ attribute containing a list of names that will be imported. One common complaint is that - if the module imports other modules such as *note sys: fd. or *note - string: f6, ‘from module import *’ will add them to the importing + if the module imports other modules such as *note sys: fe. or *note + string: f7, ‘from module import *’ will add them to the importing module’s namespace. To fix this, simply list the public names in ‘__all__’: @@ -52439,7 +49843,7 @@ underestimates. Some of the more notable changes are: implemented by Ben Wolfson, but after some python-dev discussion, a weaker final version was checked in. - * Applying *note repr(): 8bb. to strings previously used octal + * Applying *note repr(): 7b1. to strings previously used octal escapes for non-printable characters; for example, a newline was ‘'\012'’. This was a vestigial trace of Python’s C ancestry, but today octal is of very little practical use. Ka-Ping Yee suggested @@ -52471,7 +49875,7 @@ see the CVS logs for the full details if you want them.  File: python.info, Node: Acknowledgements<7>, Prev: Other Changes and Fixes<4>, Up: What’s New in Python 2 1 -1.17.15 Acknowledgements +1.16.15 Acknowledgements ------------------------ The author would like to thank the following people for offering @@ -52482,7 +49886,7 @@ Neil Schemenauer, Thomas Wouters.  File: python.info, Node: What’s New in Python 2 0, Next: Changelog, Prev: What’s New in Python 2 1, Up: What’s New in Python -1.18 What’s New in Python 2.0 +1.17 What’s New in Python 2.0 ============================= @@ -52512,7 +49916,7 @@ Author: A.M. Kuchling and Moshe Zadka  File: python.info, Node: Introduction<3>, Next: What About Python 1 6?, Up: What’s New in Python 2 0 -1.18.1 Introduction +1.17.1 Introduction ------------------- A new release of Python, version 2.0, was released on October 16, 2000. @@ -52533,7 +49937,7 @@ improved communication resulting from moving to SourceForge.  File: python.info, Node: What About Python 1 6?, Next: New Development Process, Prev: Introduction<3>, Up: What’s New in Python 2 0 -1.18.2 What About Python 1.6? +1.17.2 What About Python 1.6? ----------------------------- Python 1.6 can be thought of as the Contractual Obligations Python @@ -52559,7 +49963,7 @@ May and September.  File: python.info, Node: New Development Process, Next: Unicode<2>, Prev: What About Python 1 6?, Up: What’s New in Python 2 0 -1.18.3 New Development Process +1.17.3 New Development Process ------------------------------ The most important change in Python 2.0 may not be to the code at all, @@ -52656,7 +50060,7 @@ Iteration”, to PEP 225, “Elementwise/Objectwise Operators”.  File: python.info, Node: Unicode<2>, Next: List Comprehensions, Prev: New Development Process, Up: What’s New in Python 2 0 -1.18.4 Unicode +1.17.4 Unicode -------------- The largest new feature in Python 2.0 is a new fundamental data type: @@ -52719,13 +50123,13 @@ to support Unicode: accepts strings but doesn’t accept Unicode strings at all, please report it as a bug.) -A new module, *note unicodedata: 123, provides an interface to Unicode +A new module, *note unicodedata: 11b, provides an interface to Unicode character properties. For example, ‘unicodedata.category(u'A')’ returns the 2-character string ‘Lu’, the ‘L’ denoting it’s a letter, and ‘u’ meaning that it’s uppercase. ‘unicodedata.bidirectional(u'\u0660')’ returns ‘AN’, meaning that U+0660 is an Arabic number. -The *note codecs: 1b. module contains functions to look up existing +The *note codecs: 1c. module contains functions to look up existing encodings and register new ones. Unless you want to implement a new encoding, you’ll most often use the ‘codecs.lookup(encoding)’ function, which returns a 4-element tuple: ‘(encode_func, decode_func, @@ -52744,7 +50148,7 @@ stream_reader, stream_writer)’. * `stream_reader' is a class that supports decoding input from a stream. `stream_reader(file_obj)' returns an object that supports - the ‘read()’, *note readline(): de, and ‘readlines()’ methods. + the ‘read()’, *note readline(): df, and ‘readlines()’ methods. These methods will all translate from the given encoding and return Unicode strings. @@ -52775,7 +50179,7 @@ The following code would then read UTF-8 input from the file: input.close() Unicode-aware regular expressions are available through the *note re: -dd. module, which has a new underlying implementation called SRE written +de. module, which has a new underlying implementation called SRE written by Fredrik Lundh of Secret Labs AB. A ‘-U’ command line option was added which causes the Python compiler to @@ -52791,7 +50195,7 @@ and provide only Unicode strings.  File: python.info, Node: List Comprehensions, Next: Augmented Assignment, Prev: Unicode<2>, Up: What’s New in Python 2 0 -1.18.5 List Comprehensions +1.17.5 List Comprehensions -------------------------- Lists are a workhorse data type in Python, and many programs manipulate @@ -52801,7 +50205,7 @@ apply some function to each element. For example, given a list of strings, you might want to pull out all the strings containing a given substring, or strip off trailing whitespace from each line. -The existing *note map(): cf9. and *note filter(): cfa. functions can be +The existing *note map(): c0d. and *note filter(): c0e. functions can be used for this purpose, but they require a function as one of their arguments. This is fine if there’s an existing built-in function that can be passed directly, but if there isn’t, you have to create a little @@ -52818,7 +50222,7 @@ do it: L) Because of Python’s scoping rules, a default argument is used so that -the anonymous function created by the *note lambda: cfb. expression +the anonymous function created by the *note lambda: c0f. expression knows what substring is being searched for. List comprehensions make this cleaner: @@ -52882,7 +50286,7 @@ Montanaro.  File: python.info, Node: Augmented Assignment, Next: String Methods, Prev: List Comprehensions, Up: What’s New in Python 2 0 -1.18.6 Augmented Assignment +1.17.6 Augmented Assignment --------------------------- Augmented assignment operators, another long-requested feature, have @@ -52894,9 +50298,9 @@ slightly lengthier ‘a = a + 2’. The full list of supported assignment operators is ‘+=’, ‘-=’, ‘*=’, ‘/=’, ‘%=’, ‘**=’, ‘&=’, ‘|=’, ‘^=’, ‘>>=’, and ‘<<=’. Python classes can override the augmented assignment operators by defining methods -named *note __iadd__(): f32, *note __isub__(): f33, etc. For example, -the following ‘Number’ class stores a number and supports using += to -create a new instance with an incremented value. +named ‘__iadd__()’, ‘__isub__()’, etc. For example, the following +‘Number’ class stores a number and supports using += to create a new +instance with an incremented value. class Number: def __init__(self, value): @@ -52908,8 +50312,8 @@ create a new instance with an incremented value. n += 3 print n.value -The *note __iadd__(): f32. special method is called with the value of -the increment, and should return a new instance with an appropriately +The ‘__iadd__()’ special method is called with the value of the +increment, and should return a new instance with an appropriately modified value; this return value is bound as the new value of the variable on the left-hand side. @@ -52921,10 +50325,10 @@ was implemented by Thomas Wouters.  File: python.info, Node: String Methods, Next: Garbage Collection of Cycles, Prev: Augmented Assignment, Up: What’s New in Python 2 0 -1.18.7 String Methods +1.17.7 String Methods --------------------- -Until now string-manipulation functionality was in the *note string: f6. +Until now string-manipulation functionality was in the *note string: f7. module, which was usually a front-end for the ‘strop’ module written in C. The addition of Unicode posed a difficulty for the ‘strop’ module, because the functions would all need to be rewritten in order to accept @@ -52948,7 +50352,7 @@ notwithstanding, is that Python strings are immutable. Thus, the string methods return new strings, and do not modify the string on which they operate. -The old *note string: f6. module is still around for backwards +The old *note string: f7. module is still around for backwards compatibility, but it mostly acts as a front-end to the new string methods. @@ -52960,13 +50364,13 @@ while ‘s.endswith(t)’ is equivalent to ‘s[-len(t):] == t’. One other method which deserves special mention is ‘join()’. The ‘join()’ method of a string receives one parameter, a sequence of strings, and is equivalent to the ‘string.join()’ function from the old -*note string: f6. module, with the arguments reversed. In other words, +*note string: f7. module, with the arguments reversed. In other words, ‘s.join(seq)’ is equivalent to the old ‘string.join(seq, s)’.  File: python.info, Node: Garbage Collection of Cycles, Next: Other Core Changes, Prev: String Methods, Up: What’s New in Python 2 0 -1.18.8 Garbage Collection of Cycles +1.17.8 Garbage Collection of Cycles ----------------------------------- The C implementation of Python uses reference counting to implement @@ -53005,7 +50409,7 @@ each other, causing all of the objects to be leaked. Python 2.0 fixes this problem by periodically executing a cycle detection algorithm which looks for inaccessible cycles and deletes the -objects involved. A new *note gc: 84. module provides functions to +objects involved. A new *note gc: 86. module provides functions to perform a garbage collection, obtain debugging statistics, and tuning the collector’s parameters. @@ -53033,7 +50437,7 @@ and “Finalization again”.  File: python.info, Node: Other Core Changes, Next: Porting to 2 0, Prev: Garbage Collection of Cycles, Up: What’s New in Python 2 0 -1.18.9 Other Core Changes +1.17.9 Other Core Changes ------------------------- Various minor changes have been made to Python’s syntax and built-in @@ -53048,7 +50452,7 @@ conveniences.  File: python.info, Node: Minor Language Changes, Next: Changes to Built-in Functions, Up: Other Core Changes -1.18.9.1 Minor Language Changes +1.17.9.1 Minor Language Changes ............................... A new syntax makes it more convenient to call a given function with a @@ -53080,21 +50484,21 @@ module as name’ or ‘from module import name as othername’. The patch was submitted by Thomas Wouters. A new format style is available when using the ‘%’ operator; ‘%r’ will -insert the *note repr(): 8bb. of its argument. This was also added from +insert the *note repr(): 7b1. of its argument. This was also added from symmetry considerations, this time for symmetry with the existing ‘%s’ -format style, which inserts the *note str(): 205. of its argument. For +format style, which inserts the *note str(): 321. of its argument. For example, ‘'%r %s' % ('abc', 'abc')’ returns a string containing ‘'abc' abc’. Previously there was no way to implement a class that overrode Python’s -built-in *note in: 179. operator and implemented a custom version. ‘obj +built-in *note in: 788. operator and implemented a custom version. ‘obj in seq’ returns true if `obj' is present in the sequence `seq'; Python computes this by simply trying every index of the sequence until either -`obj' is found or an *note IndexError: f38. is encountered. Moshe Zadka -contributed a patch which adds a *note __contains__(): df0. magic method -for providing a custom implementation for ‘in’. Additionally, new -built-in objects written in C can define what ‘in’ means for them via a -new slot in the sequence protocol. +`obj' is found or an *note IndexError: e48. is encountered. Moshe Zadka +contributed a patch which adds a ‘__contains__()’ magic method for +providing a custom implementation for ‘in’. Additionally, new built-in +objects written in C can define what ‘in’ means for them via a new slot +in the sequence protocol. Earlier versions of Python used a recursive algorithm for deleting objects. Deeply nested data structures could cause the interpreter to @@ -53131,13 +50535,13 @@ Python 2.0. Dynamic loading works, if you specify “configure –with-dyld for more instructions. An attempt has been made to alleviate one of Python’s warts, the -often-confusing *note NameError: e42. exception when code refers to a +often-confusing *note NameError: d55. exception when code refers to a local variable before the variable has been assigned a value. For example, the following code raises an exception on the ‘print’ statement -in both 1.5.2 and 2.0; in 1.5.2 a *note NameError: e42. exception is -raised, while 2.0 raises a new *note UnboundLocalError: f39. exception. -*note UnboundLocalError: f39. is a subclass of *note NameError: e42, so -any existing code that expects *note NameError: e42. to be raised should +in both 1.5.2 and 2.0; in 1.5.2 a *note NameError: d55. exception is +raised, while 2.0 raises a new *note UnboundLocalError: e49. exception. +*note UnboundLocalError: e49. is a subclass of *note NameError: d55, so +any existing code that expects *note NameError: d55. to be raised should still work. def f(): @@ -53145,33 +50549,33 @@ still work. i = i + 1 f() -Two new exceptions, *note TabError: f3a. and *note IndentationError: -f3b, have been introduced. They’re both subclasses of *note -SyntaxError: 55c, and are raised when Python code is found to be +Two new exceptions, *note TabError: e4a. and *note IndentationError: +e4b, have been introduced. They’re both subclasses of *note +SyntaxError: 449, and are raised when Python code is found to be improperly indented.  File: python.info, Node: Changes to Built-in Functions, Prev: Minor Language Changes, Up: Other Core Changes -1.18.9.2 Changes to Built-in Functions +1.17.9.2 Changes to Built-in Functions ...................................... A new built-in, ‘zip(seq1, seq2, ...)’, has been added. *note zip(): -cfe. returns a list of tuples where each tuple contains the i-th element +c12. returns a list of tuples where each tuple contains the i-th element from each of the argument sequences. The difference between *note -zip(): cfe. and ‘map(None, seq1, seq2)’ is that *note map(): cf9. pads +zip(): c12. and ‘map(None, seq1, seq2)’ is that *note map(): c0d. pads the sequences with ‘None’ if the sequences aren’t all of the same -length, while *note zip(): cfe. truncates the returned list to the +length, while *note zip(): c12. truncates the returned list to the length of the shortest argument sequence. -The *note int(): 204. and ‘long()’ functions now accept an optional +The *note int(): 171. and ‘long()’ functions now accept an optional “base” parameter when the first argument is a string. ‘int('123', 10)’ returns 123, while ‘int('123', 16)’ returns 291. ‘int(123, 16)’ raises -a *note TypeError: 1fe. exception with the message “can’t convert +a *note TypeError: 17f. exception with the message “can’t convert non-string with explicit base”. A new variable holding more detailed version information has been added -to the *note sys: fd. module. ‘sys.version_info’ is a tuple ‘(major, +to the *note sys: fe. module. ‘sys.version_info’ is a tuple ‘(major, minor, micro, level, serial)’ For example, in a hypothetical 2.0.1beta1, ‘sys.version_info’ would be ‘(2, 0, 1, 'beta', 1)’. `level' is a string such as ‘"alpha"’, ‘"beta"’, or ‘"final"’ for a final release. @@ -53193,7 +50597,7 @@ The interpreter sets a maximum recursion depth in order to catch runaway recursion before filling the C stack and causing a core dump or GPF.. Previously this limit was fixed when you compiled Python, but in 2.0 the maximum recursion depth can be read and modified using *note -sys.getrecursionlimit(): f3d. and *note sys.setrecursionlimit(): f3e. +sys.getrecursionlimit(): e4d. and *note sys.setrecursionlimit(): e4e. The default value is 1000, and a rough maximum value for a given platform can be found by running a new script, ‘Misc/find_recursionlimit.py’. @@ -53201,7 +50605,7 @@ platform can be found by running a new script,  File: python.info, Node: Porting to 2 0, Next: Extending/Embedding Changes, Prev: Other Core Changes, Up: What’s New in Python 2 0 -1.18.10 Porting to 2.0 +1.17.10 Porting to 2.0 ---------------------- New Python releases try hard to be compatible with previous releases, @@ -53216,7 +50620,7 @@ arguments accepted by some methods. Some methods would take multiple arguments and treat them as a tuple, particularly various list methods such as ‘append()’ and ‘insert()’. In earlier versions of Python, if ‘L’ is a list, ‘L.append( 1,2 )’ appends the tuple ‘(1,2)’ to the list. -In Python 2.0 this causes a *note TypeError: 1fe. exception to be +In Python 2.0 this causes a *note TypeError: 17f. exception to be raised, with the message: ‘append requires exactly 1 argument; 2 given’. The fix is to simply add an extra set of parentheses to pass both values as a tuple: ‘L.append( (1,2) )’. @@ -53230,7 +50634,7 @@ can’t fix your code, you can edit ‘Objects/listobject.c’ and define the preprocessor symbol ‘NO_STRICT_LIST_APPEND’ to preserve the old behaviour; this isn’t recommended. -Some of the functions in the *note socket: ef. module are still +Some of the functions in the *note socket: f0. module are still forgiving in this way. For example, ‘socket.connect( ('hostname', 25) )()’ is the correct form, passing a tuple representing an IP address, but ‘socket.connect( 'hostname', 25 )()’ also works. @@ -53238,7 +50642,7 @@ but ‘socket.connect( 'hostname', 25 )()’ also works. 2.0alpha1 tightened these functions up, but because the documentation actually used the erroneous multiple argument form, many people wrote code which would break with the stricter checking. GvR backed out the -changes in the face of public reaction, so for the *note socket: ef. +changes in the face of public reaction, so for the *note socket: f0. module, the documentation was fixed and the multiple argument form is simply marked as deprecated; it `will' be tightened up again in a future Python version. @@ -53248,7 +50652,7 @@ Previously it would consume all the hex digits following the ‘x’ and take the lowest 8 bits of the result, so ‘\x123456’ was equivalent to ‘\x56’. -The *note AttributeError: 4a4. and *note NameError: e42. exceptions have +The *note AttributeError: 38c. and *note NameError: d55. exceptions have a more friendly error message, whose text will be something like ‘'Spam' instance has no attribute 'eggs'’ or ‘name 'eggs' is not defined’. Previously the error message was just the missing attribute name ‘eggs’, @@ -53260,7 +50664,7 @@ allow reading files larger than 2 GiB; this made the ‘tell()’ method of file objects return a long integer instead of a regular integer. Some code would subtract two file offsets and attempt to use the result to multiply a sequence or slice a string, but this raised a *note -TypeError: 1fe. In 2.0, long integers can be used to multiply or slice +TypeError: 17f. In 2.0, long integers can be used to multiply or slice a sequence, and it’ll behave as you’d intuitively expect it to; ‘3L * 'abc'’ produces ‘abcabcabc’, and ‘(0,1,2,3)[2L:4L]’ produces (2,3). Long integers can also be used in various contexts where previously only @@ -53269,19 +50673,19 @@ and in the formats supported by the ‘%’ operator (‘%d’, ‘%i’, ‘%x etc.). For example, ‘"%d" % 2L**64’ will produce the string ‘18446744073709551616’. -The subtlest long integer change of all is that the *note str(): 205. of +The subtlest long integer change of all is that the *note str(): 321. of a long integer no longer has a trailing ‘L’ character, though *note -repr(): 8bb. still includes it. The ‘L’ annoyed many people who wanted +repr(): 7b1. still includes it. The ‘L’ annoyed many people who wanted to print long integers that looked just like regular integers, since they had to go out of their way to chop off the character. This is no longer a problem in 2.0, but code which does ‘str(longval)[:-1]’ and assumes the ‘L’ is there, will now lose the final digit. -Taking the *note repr(): 8bb. of a float now uses a different formatting -precision than *note str(): 205. *note repr(): 8bb. uses ‘%.17g’ format -string for C’s ‘sprintf()’, while *note str(): 205. uses ‘%.12g’ as -before. The effect is that *note repr(): 8bb. may occasionally show -more decimal places than *note str(): 205, for certain numbers. For +Taking the *note repr(): 7b1. of a float now uses a different formatting +precision than *note str(): 321. *note repr(): 7b1. uses ‘%.17g’ format +string for C’s ‘sprintf()’, while *note str(): 321. uses ‘%.12g’ as +before. The effect is that *note repr(): 7b1. may occasionally show +more decimal places than *note str(): 321, for certain numbers. For example, the number 8.1 can’t be represented exactly in binary, so ‘repr(8.1)’ is ‘'8.0999999999999996'’, while str(8.1) is ‘'8.1'’. @@ -53294,7 +50698,7 @@ written by Barry Warsaw and Fredrik Lundh.  File: python.info, Node: Extending/Embedding Changes, Next: Distutils Making Modules Easy to Install, Prev: Porting to 2 0, Up: What’s New in Python 2 0 -1.18.11 Extending/Embedding Changes +1.17.11 Extending/Embedding Changes ----------------------------------- Some of the changes are under the covers, and will only be apparent to @@ -53310,7 +50714,7 @@ will raise an exception and the import will fail. Users of Jim Fulton’s ExtensionClass module will be pleased to find out that hooks have been added so that ExtensionClasses are now supported by -*note isinstance(): 554. and *note issubclass(): 555. This means you no +*note isinstance(): 440. and *note issubclass(): 441. This means you no longer have to remember to write code such as ‘if type(obj) == myExtensionClass’, but can use the more natural ‘if isinstance(obj, myExtensionClass)’. @@ -53368,7 +50772,7 @@ gets a signal handler and ‘PyOS_setsig()’ will set a new handler.  File: python.info, Node: Distutils Making Modules Easy to Install, Next: XML Modules, Prev: Extending/Embedding Changes, Up: What’s New in Python 2 0 -1.18.12 Distutils: Making Modules Easy to Install +1.17.12 Distutils: Making Modules Easy to Install ------------------------------------------------- Before Python 2.0, installing modules was a tedious affair – there was @@ -53382,7 +50786,7 @@ made administering a Python installation something of a chore. The SIG for distribution utilities, shepherded by Greg Ward, has created the Distutils, a system to make package installation much easier. They -form the *note distutils: 38. package, a new part of Python’s standard +form the *note distutils: 39. package, a new part of Python’s standard library. In the best case, installing a Python module from source will require the same steps: first you simply mean unpack the tarball or zip archive, and the run “‘python setup.py install’”. The platform will be @@ -53439,7 +50843,7 @@ that joins the basic set of Python documentation.  File: python.info, Node: XML Modules, Next: Module changes, Prev: Distutils Making Modules Easy to Install, Up: What’s New in Python 2 0 -1.18.13 XML Modules +1.17.13 XML Modules ------------------- Python 1.5.2 included a simple XML parser in the form of the ‘xmllib’ @@ -53450,7 +50854,7 @@ with some similarities to ‘xmllib’, and the DOM (Document Object Model) provides a tree-based interface, transforming an XML document into a tree of nodes that can be traversed and modified. Python 2.0 includes a SAX2 interface and a stripped-down DOM interface as part of the *note -xml: 13c. package. Here we will give a brief overview of these new +xml: 134. package. Here we will give a brief overview of these new interfaces; consult the Python documentation or the source code for complete details. The Python XML SIG is also working on improved documentation. @@ -53464,7 +50868,7 @@ documentation.  File: python.info, Node: SAX2 Support, Next: DOM Support, Up: XML Modules -1.18.13.1 SAX2 Support +1.17.13.1 SAX2 Support ...................... SAX defines an event-driven interface for parsing XML. To use SAX, you @@ -53510,7 +50914,7 @@ at ‘http://pyxml.sourceforge.net/topics/howto/xml-howto.html’.  File: python.info, Node: DOM Support, Next: Relationship to PyXML, Prev: SAX2 Support, Up: XML Modules -1.18.13.2 DOM Support +1.17.13.2 DOM Support ..................... The Document Object Model is a tree-based representation for an XML @@ -53529,7 +50933,7 @@ tree manually and convert it to XML, which can be a more flexible way of producing XML output than simply writing ‘’…‘’ to a file. The DOM implementation included with Python lives in the *note -xml.dom.minidom: 13e. module. It’s a lightweight implementation of the +xml.dom.minidom: 136. module. It’s a lightweight implementation of the Level 1 DOM with support for XML namespaces. The ‘parse()’ and ‘parseString()’ convenience functions are provided for generating a DOM tree: @@ -53577,7 +50981,7 @@ listing of the different ‘Node’ classes and their various methods.  File: python.info, Node: Relationship to PyXML, Prev: DOM Support, Up: XML Modules -1.18.13.3 Relationship to PyXML +1.17.13.3 Relationship to PyXML ............................... The XML Special Interest Group has been working on XML-related Python @@ -53586,14 +50990,14 @@ from the SIG’s Web pages at ‘https://www.python.org/community/sigs/current/xml-sig’. The PyXML distribution also used the package name ‘xml’. If you’ve written programs that used PyXML, you’re probably wondering about its -compatibility with the 2.0 *note xml: 13c. package. +compatibility with the 2.0 *note xml: 134. package. -The answer is that Python 2.0’s *note xml: 13c. package isn’t compatible +The answer is that Python 2.0’s *note xml: 134. package isn’t compatible with PyXML, but can be made compatible by installing a recent version PyXML. Many applications can get by with the XML support that is included with Python 2.0, but more complicated applications will require that the full PyXML package will be installed. When installed, PyXML -versions 0.6.0 or greater will replace the *note xml: 13c. package +versions 0.6.0 or greater will replace the *note xml: 134. package shipped with Python, and will be a strict superset of the standard package, adding a bunch of additional features. Some of the additional features in PyXML include: @@ -53607,23 +51011,23 @@ features in PyXML include:  File: python.info, Node: Module changes, Next: New modules, Prev: XML Modules, Up: What’s New in Python 2 0 -1.18.14 Module changes +1.17.14 Module changes ---------------------- Lots of improvements and bugfixes were made to Python’s extensive standard library; some of the affected modules include *note readline: -de, ‘ConfigParser’, *note cgi: 15, *note calendar: 14, *note posix: d1, -*note readline: de, ‘xmllib’, *note aifc: 4, ‘chunk, wave’, *note -random: dc, *note shelve: e7, and *note nntplib: c0. Consult the CVS +df, ‘ConfigParser’, *note cgi: 16, *note calendar: 15, *note posix: d2, +*note readline: df, ‘xmllib’, *note aifc: 5, ‘chunk, wave’, *note +random: dd, *note shelve: e8, and *note nntplib: c1. Consult the CVS logs for the exact patch-by-patch details. -Brian Gallew contributed OpenSSL support for the *note socket: ef. +Brian Gallew contributed OpenSSL support for the *note socket: f0. module. OpenSSL is an implementation of the Secure Socket Layer, which encrypts the data being sent over a socket. When compiling Python, you can edit ‘Modules/Setup’ to include SSL support, which adds an -additional function to the *note socket: ef. module: ‘socket.ssl(socket, +additional function to the *note socket: f0. module: ‘socket.ssl(socket, keyfile, certfile)’, which takes a socket object and returns an SSL -socket. The ‘httplib’ and *note urllib: 126. modules were also changed +socket. The ‘httplib’ and *note urllib: 11e. modules were also changed to support ‘https://’ URLs, though no one has implemented FTP or SMTP over SSL. @@ -53639,7 +51043,7 @@ Lundh contributed an optimization which makes operations like ‘create_line’ and ‘create_polygon’ much faster, especially when using lots of coordinates. -The *note curses: 2b. module has been greatly extended, starting from +The *note curses: 2c. module has been greatly extended, starting from Oliver Andrich’s enhanced version, to provide many additional functions from ncurses and SYSV curses, such as colour, alternative character set support, pads, and mouse support. This means the module is no longer @@ -53649,35 +51053,35 @@ category. As mentioned in the earlier discussion of 2.0’s Unicode support, the underlying implementation of the regular expressions provided by the -*note re: dd. module has been changed. SRE, a new regular expression +*note re: de. module has been changed. SRE, a new regular expression engine written by Fredrik Lundh and partially funded by Hewlett Packard, supports matching against both 8-bit strings and Unicode strings.  File: python.info, Node: New modules, Next: IDLE Improvements, Prev: Module changes, Up: What’s New in Python 2 0 -1.18.15 New modules +1.17.15 New modules ------------------- A number of new modules were added. We’ll simply list them with brief descriptions; consult the 2.0 documentation for the details of a particular module. - * *note atexit: b.: For registering functions to be called before the + * *note atexit: c.: For registering functions to be called before the Python interpreter exits. Code that currently sets ‘sys.exitfunc’ - directly should be changed to use the *note atexit: b. module - instead, importing *note atexit: b. and calling *note - atexit.register(): f48. with the function to be called on exit. + directly should be changed to use the *note atexit: c. module + instead, importing *note atexit: c. and calling *note + atexit.register(): e58. with the function to be called on exit. (Contributed by Skip Montanaro.) - * *note codecs: 1b, ‘encodings’, *note unicodedata: 123.: Added as + * *note codecs: 1c, ‘encodings’, *note unicodedata: 11b.: Added as part of the new Unicode support. - * *note filecmp: 7d.: Supersedes the old ‘cmp’, ‘cmpcache’ and + * *note filecmp: 7f.: Supersedes the old ‘cmp’, ‘cmpcache’ and ‘dircmp’ modules, which have now become deprecated. (Contributed by Gordon MacMillan and Moshe Zadka.) - * *note gettext: 87.: This module provides internationalization + * *note gettext: 89.: This module provides internationalization (I18N) and localization (L10N) support for Python programs by providing an interface to the GNU gettext message catalog library. (Integrated by Barry Warsaw, from separate contributions by Martin @@ -53687,11 +51091,11 @@ particular module. twin to the existing ‘sunaudiodev’ module. (Contributed by Peter Bosch, with fixes by Jeremy Hylton.) - * *note mmap: b3.: An interface to memory-mapped files on both + * *note mmap: b4.: An interface to memory-mapped files on both Windows and Unix. A file’s contents can be mapped directly into memory, at which point it behaves like a mutable string, so its contents can be read and modified. They can even be passed to - functions that expect ordinary strings, such as the *note re: dd. + functions that expect ordinary strings, such as the *note re: de. module. (Contributed by Sam Rushing, with some extensions by A.M. Kuchling.) @@ -53704,18 +51108,18 @@ particular module. rules from it, and can then answer questions about the fetchability of a given URL. (Contributed by Skip Montanaro.) - * *note tabnanny: 100.: A module/script to check Python source code + * *note tabnanny: 101.: A module/script to check Python source code for ambiguous indentation. (Contributed by Tim Peters.) * ‘UserString’: A base class useful for deriving objects that behave like strings. - * *note webbrowser: 132.: A module that provides a platform + * *note webbrowser: 12a.: A module that provides a platform independent way to launch a web browser on a specific URL. For each platform, various browsers are tried in a specific order. The user can alter which browser is launched by setting the `BROWSER' environment variable. (Originally inspired by Eric S. Raymond’s - patch to *note urllib: 126. which added similar functionality, but + patch to *note urllib: 11e. which added similar functionality, but the final module comes from code originally implemented by Fred Drake as ‘Tools/idle/BrowserControl.py’, and adapted for the standard library by Fred.) @@ -53726,10 +51130,10 @@ particular module. to support Unicode. ‘_winreg’ was written by Bill Tutt and Mark Hammond. - * *note zipfile: 14b.: A module for reading and writing ZIP-format + * *note zipfile: 143.: A module for reading and writing ZIP-format archives. These are archives produced by ‘PKZIP’ on DOS/Windows or ‘zip’ on Unix, not to be confused with ‘gzip’-format files (which - are supported by the *note gzip: 8b. module) (Contributed by James + are supported by the *note gzip: 8c. module) (Contributed by James C. Ahlstrom.) * ‘imputil’: A module that provides a simpler way for writing @@ -53740,7 +51144,7 @@ particular module.  File: python.info, Node: IDLE Improvements, Next: Deleted and Deprecated Modules, Prev: New modules, Up: What’s New in Python 2 0 -1.18.16 IDLE Improvements +1.17.16 IDLE Improvements ------------------------- IDLE is the official Python cross-platform IDE, written using Tkinter. @@ -53775,7 +51179,7 @@ improvements. A partial list:  File: python.info, Node: Deleted and Deprecated Modules, Next: Acknowledgements<8>, Prev: IDLE Improvements, Up: What’s New in Python 2 0 -1.18.17 Deleted and Deprecated Modules +1.17.17 Deleted and Deprecated Modules -------------------------------------- A few modules have been dropped because they’re obsolete, or because @@ -53793,7 +51197,7 @@ that uses these modules.  File: python.info, Node: Acknowledgements<8>, Prev: Deleted and Deprecated Modules, Up: What’s New in Python 2 0 -1.18.18 Acknowledgements +1.17.18 Acknowledgements ------------------------ The authors would like to thank the following people for offering @@ -53810,38 +51214,41 @@ nontrivial changes to Python for the current version. (1) https://pypi.org/project/blurb - (2) https://github.com/python/cpython/tree/3.9/Misc/NEWS.d + (2) https://github.com/python/cpython/tree/3.8/Misc/NEWS.d  File: python.info, Node: Changelog, Prev: What’s New in Python 2 0, Up: What’s New in Python -1.19 Changelog +1.18 Changelog ============== * Menu: -* Python 3.9.6 final: Python 3 9 6 final. -* Python 3.9.5 final: Python 3 9 5 final. -* Python 3.9.4 final: Python 3 9 4 final. -* Python 3.9.3 final: Python 3 9 3 final. -* Python 3.9.2 final: Python 3 9 2 final. -* Python 3.9.2 release candidate 1: Python 3 9 2 release candidate 1. -* Python 3.9.1 final: Python 3 9 1 final. -* Python 3.9.1 release candidate 1: Python 3 9 1 release candidate 1. -* Python 3.9.0 final: Python 3 9 0 final. -* Python 3.9.0 release candidate 2: Python 3 9 0 release candidate 2. -* Python 3.9.0 release candidate 1: Python 3 9 0 release candidate 1. -* Python 3.9.0 beta 5: Python 3 9 0 beta 5. -* Python 3.9.0 beta 4: Python 3 9 0 beta 4. -* Python 3.9.0 beta 3: Python 3 9 0 beta 3. -* Python 3.9.0 beta 2: Python 3 9 0 beta 2. -* Python 3.9.0 beta 1: Python 3 9 0 beta 1. -* Python 3.9.0 alpha 6: Python 3 9 0 alpha 6. -* Python 3.9.0 alpha 5: Python 3 9 0 alpha 5. -* Python 3.9.0 alpha 4: Python 3 9 0 alpha 4. -* Python 3.9.0 alpha 3: Python 3 9 0 alpha 3. -* Python 3.9.0 alpha 2: Python 3 9 0 alpha 2. -* Python 3.9.0 alpha 1: Python 3 9 0 alpha 1. +* Python 3.8.12 final: Python 3 8 12 final. +* Python 3.8.11 final: Python 3 8 11 final. +* Python 3.8.10 final: Python 3 8 10 final. +* Python 3.8.9 final: Python 3 8 9 final. +* Python 3.8.8 final: Python 3 8 8 final. +* Python 3.8.8 release candidate 1: Python 3 8 8 release candidate 1. +* Python 3.8.7 final: Python 3 8 7 final. +* Python 3.8.7 release candidate 1: Python 3 8 7 release candidate 1. +* Python 3.8.6 final: Python 3 8 6 final. +* Python 3.8.6 release candidate 1: Python 3 8 6 release candidate 1. +* Python 3.8.5 final: Python 3 8 5 final. +* Python 3.8.4 final: Python 3 8 4 final. +* Python 3.8.4 release candidate 1: Python 3 8 4 release candidate 1. +* Python 3.8.3 final: Python 3 8 3 final. +* Python 3.8.3 release candidate 1: Python 3 8 3 release candidate 1. +* Python 3.8.2 final: Python 3 8 2 final. +* Python 3.8.2 release candidate 2: Python 3 8 2 release candidate 2. +* Python 3.8.2 release candidate 1: Python 3 8 2 release candidate 1. +* Python 3.8.1 final: Python 3 8 1 final. +* Python 3.8.1 release candidate 1: Python 3 8 1 release candidate 1. +* Python 3.8.0 final: Python 3 8 0 final. +* Python 3.8.0 release candidate 1: Python 3 8 0 release candidate 1. +* Python 3.8.0 beta 4: Python 3 8 0 beta 4. +* Python 3.8.0 beta 3: Python 3 8 0 beta 3. +* Python 3.8.0 beta 2: Python 3 8 0 beta 2. * Python 3.8.0 beta 1: Python 3 8 0 beta 1. * Python 3.8.0 alpha 4: Python 3 8 0 alpha 4. * Python 3.8.0 alpha 3: Python 3 8 0 alpha 3. @@ -53907,12 +51314,12 @@ File: python.info, Node: Changelog, Prev: What’s New in Python 2 0, Up: Wha * Python 3.5.0 alpha 1: Python 3 5 0 alpha 1.  -File: python.info, Node: Python 3 9 6 final, Next: Python 3 9 5 final, Up: Changelog +File: python.info, Node: Python 3 8 12 final, Next: Python 3 8 11 final, Up: Changelog -1.19.1 Python 3.9.6 final -------------------------- +1.18.1 Python 3.8.12 final +-------------------------- -`Release date: 2021-06-28' +`Release date: 2021-08-30' * Menu: @@ -53920,492 +51327,253 @@ File: python.info, Node: Python 3 9 6 final, Next: Python 3 9 5 final, Up: Ch * Core and Builtins:: * Library:: * Documentation: Documentation<2>. -* Tests:: -* Build:: * Windows:: * macOS:: -* IDLE: IDLE<3>. -* Tools/Demos:: -* C API::  -File: python.info, Node: Security, Next: Core and Builtins, Up: Python 3 9 6 final +File: python.info, Node: Security, Next: Core and Builtins, Up: Python 3 8 12 final -1.19.1.1 Security +1.18.1.1 Security ................. - - bpo-44022(1): mod:*note http.client: 93. now avoids infinitely - reading potential HTTP headers after a ‘100 Continue’ status - response from the server. + - bpo-42278(1): Replaced usage of *note tempfile.mktemp(): e60. with + *note TemporaryDirectory: ba8. to avoid a potential race condition. + + - bpo-44394(2): Update the vendored copy of libexpat to 2.4.1 (from + 2.2.8) to get the fix for the CVE-2013-0340 “Billion Laughs” + vulnerability. This copy is most used on Windows and macOS. + + - bpo-43124(3): Made the internal ‘putcmd’ function in *note smtplib: + ee. sanitize input for presence of ‘\r’ and ‘\n’ characters to + avoid (unlikely) command injection. + + - bpo-36384(4): *note ipaddress: a3. module no longer accepts any + leading zeros in IPv4 address strings. Leading zeros are ambiguous + and interpreted as octal notation by some libraries. For example + the legacy function *note socket.inet_aton(): 2e3. treats leading + zeros as octal notation. glibc implementation of modern *note + inet_pton(): 2e4. does not accept any leading zeros. For a while + the *note ipaddress: a3. module used to accept ambiguous leading + zeros. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue44022 + (1) https://bugs.python.org/issue42278 + + (2) https://bugs.python.org/issue44394 + + (3) https://bugs.python.org/issue43124 + + (4) https://bugs.python.org/issue36384  -File: python.info, Node: Core and Builtins, Next: Library, Prev: Security, Up: Python 3 9 6 final +File: python.info, Node: Core and Builtins, Next: Library, Prev: Security, Up: Python 3 8 12 final -1.19.1.2 Core and Builtins +1.18.1.2 Core and Builtins .......................... - - bpo-44409(1): Fix error location information for tokenizer errors - raised on initialization of the tokenizer. Patch by Pablo Galindo. + - bpo-44872(1): Use new trashcan macros (Py_TRASHCAN_BEGIN/END) in + frameobject.c instead of the old ones (Py_TRASHCAN_SAFE_BEGIN/END). - - bpo-43667(2): Improve Unicode support in non-UTF locales on Oracle - Solaris. This issue does not affect other Solaris systems. + - bpo-33930(2): Fix segmentation fault with deep recursion when + cleaning method objects. Patch by Augusto Goulart and Pablo + Galindo. - - bpo-44168(3): Fix error message in the parser involving keyword - arguments with invalid expressions. Patch by Pablo Galindo - - - bpo-44114(4): Fix incorrect dictkeys_reversed and - dictitems_reversed function signatures in C code, which broke - webassembly builds. - - - bpo-44070(5): No longer eagerly makes import filenames absolute, - except for extension modules, which was introduced in 3.9.5. - - - bpo-28146(6): Fix a confusing error message in *note str.format(): - 5d7. - - - bpo-11105(7): When compiling *note ast.AST: 187. objects with - recursive references through *note compile(): 2ea, the interpreter - doesn’t crash anymore instead it raises a *note RecursionError: - 729. + - bpo-44856(3): Fix reference leaks in the error paths of + ‘update_bases()’ and ‘__build_class__’. Patch by Pablo Galindo. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue44409 + (1) https://bugs.python.org/issue44872 - (2) https://bugs.python.org/issue43667 + (2) https://bugs.python.org/issue33930 - (3) https://bugs.python.org/issue44168 - - (4) https://bugs.python.org/issue44114 - - (5) https://bugs.python.org/issue44070 - - (6) https://bugs.python.org/issue28146 - - (7) https://bugs.python.org/issue11105 + (3) https://bugs.python.org/issue44856  -File: python.info, Node: Library, Next: Documentation<2>, Prev: Core and Builtins, Up: Python 3 9 6 final +File: python.info, Node: Library, Next: Documentation<2>, Prev: Core and Builtins, Up: Python 3 8 12 final -1.19.1.3 Library +1.18.1.3 Library ................ - - bpo-44516(1): Update vendored pip to 21.1.3 - - - bpo-44482(2): Fix very unlikely resource leak in *note glob: 88. in - alternate Python implementations. - - - bpo-44439(3): Fix in ‘bz2.BZ2File.write()’ / - ‘lzma.LZMAFile.write()’ methods, when the input data is an object - that supports the buffer protocol, the file length may be wrong. - - - bpo-44434(4): _thread.start_new_thread() no longer calls - PyThread_exit_thread() explicitly at the thread exit, the call was - redundant. On Linux with the glibc, pthread_exit() aborts the - whole process if dlopen() fails to open libgcc_s.so file (ex: - EMFILE error). Patch by Victor Stinner. - - - bpo-44422(5): The *note threading.enumerate(): f52. function now - uses a reentrant lock to prevent a hang on reentrant call. Patch - by Victor Stinner. - - - bpo-44395(6): Fix ‘as_string()’ to pass unixfrom properly. Patch - by Dong-hee Na. - - - bpo-44342(7): [Enum] Be more robust in searching for pickle support - before making an enum class unpicklable. - - - bpo-44356(8): [Enum] Allow multiple data-type mixins if they are - all the same. - - - bpo-44254(9): On Mac, give turtledemo button text a color that - works on both light or dark background. Programmers cannot control - the latter. - - - bpo-44145(10): *note hmac: 8e. computations were not releasing the - GIL while calling the OpenSSL ‘HMAC_Update’ C API (a new feature in - 3.9). This unintentionally prevented parallel computation as other - *note hashlib: 8c. algorithms support. - - - bpo-37788(11): Fix a reference leak when a Thread object is never - joined. - - - bpo-44061(12): Fix regression in previous release when calling - *note pkgutil.iter_modules(): 704. with a list of *note - pathlib.Path: 332. objects - - - bpo-36515(13): The *note hashlib: 8c. module no longer does - unaligned memory accesses when compiled for ARM platforms. - - - bpo-44018(14): random.seed() no longer mutates bytearray inputs. - - - bpo-38352(15): Add ‘IO’, ‘BinaryIO’, ‘TextIO’, ‘Match’, and - ‘Pattern’ to ‘typing.__all__’. Patch by Jelle Zijlstra. - - - bpo-43972(16): When *note http.server.SimpleHTTPRequestHandler: - 49e. sends a ‘301 (Moved Permanently)’ for a directory path not - ending with ‘/’, add a ‘Content-Length: 0’ header. This improves - the behavior for certain clients. - - - bpo-28528(17): Fix a bug in *note pdb: c9. where ‘checkline()’ - raises *note AttributeError: 4a4. if it is called after ‘reset()’. - - - bpo-43776(18): When *note subprocess.Popen: 3de. args are provided - as a string or as *note pathlib.Path: 332, the Popen instance repr - now shows the right thing. - - - bpo-43666(19): AIX: ‘Lib/_aix_support.get_platform()’ may fail in - an AIX WPAR. The fileset bos.rte appears to have a builddate in - both LPAR and WPAR so this fileset is queried rather than bos.mp64. - To prevent a similiar situation (no builddate in ODM) a value - (9988) sufficient for completing a build is provided. Patch by M - Felt. - - - bpo-43650(20): Fix *note MemoryError: f53. in *note - shutil.unpack_archive(): c6a. which fails inside - ‘shutil._unpack_zipfile()’ on large files. Patch by Igor - Bolshakov. - - - bpo-43318(21): Fix a bug where *note pdb: c9. does not always echo - cleared breakpoints. - - - bpo-43295(22): *note datetime.datetime.strptime(): f54. now raises - ‘ValueError’ instead of ‘IndexError’ when matching ‘'z'’ with the - ‘%z’ format specifier. - - - bpo-37022(23): *note pdb: c9. now displays exceptions from ‘repr()’ - with its ‘p’ and ‘pp’ commands. + - bpo-45001(1): Made email date parsing more robust against malformed + input, namely a whitespace-only ‘Date:’ header. Patch by Wouter + Bolsterlee. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue44516 - - (2) https://bugs.python.org/issue44482 - - (3) https://bugs.python.org/issue44439 - - (4) https://bugs.python.org/issue44434 - - (5) https://bugs.python.org/issue44422 - - (6) https://bugs.python.org/issue44395 - - (7) https://bugs.python.org/issue44342 - - (8) https://bugs.python.org/issue44356 - - (9) https://bugs.python.org/issue44254 - - (10) https://bugs.python.org/issue44145 - - (11) https://bugs.python.org/issue37788 - - (12) https://bugs.python.org/issue44061 - - (13) https://bugs.python.org/issue36515 - - (14) https://bugs.python.org/issue44018 - - (15) https://bugs.python.org/issue38352 - - (16) https://bugs.python.org/issue43972 - - (17) https://bugs.python.org/issue28528 - - (18) https://bugs.python.org/issue43776 - - (19) https://bugs.python.org/issue43666 - - (20) https://bugs.python.org/issue43650 - - (21) https://bugs.python.org/issue43318 - - (22) https://bugs.python.org/issue43295 - - (23) https://bugs.python.org/issue37022 + (1) https://bugs.python.org/issue45001  -File: python.info, Node: Documentation<2>, Next: Tests, Prev: Library, Up: Python 3 9 6 final +File: python.info, Node: Documentation<2>, Next: Windows, Prev: Library, Up: Python 3 8 12 final -1.19.1.4 Documentation +1.18.1.4 Documentation ...................... - - bpo-40620(1): Convert examples in tutorial controlflow.rst section - 4.3 to be interpreter-demo style. - - - bpo-13814(2): In the Design FAQ, answer “Why don’t generators - support the with statement?” - - - bpo-44392(3): Added a new section in the C API documentation for - types used in type hinting. Documented ‘Py_GenericAlias’ and - ‘Py_GenericAliasType’. - - - bpo-38291(4): Mark ‘typing.io’ and ‘typing.re’ as deprecated since - Python 3.8 in the documentation. They were never properly - supported by type checkers. - - - bpo-44322(5): Document that SyntaxError args have a details tuple - and that details are adjusted for errors in f-string field - replacement expressions. - - - bpo-44195(6): Corrected references to ‘TraversableResources’ in - docs. There is no ‘TraversableReader’. - - - bpo-41963(7): Document that ‘ConfigParser’ strips off comments when - reading configuration files. - - - bpo-44072(8): Correct where in the numeric ABC hierarchy ‘**’ - support is added, i.e., in numbers.Complex, not numbers.Integral. - - - bpo-43558(9): Add the remark to *note dataclasses: 2f. - documentation that the *note __init__(): e25. of any base class has - to be called in ‘__post_init__()’, along with a code example. - - - bpo-41621(10): Document that *note collections.defaultdict: c0e. - parameter ‘default_factory’ defaults to None and is - positional-only. + - bpo-30511(1): Clarify that *note shutil.make_archive(): 207. is not + thread-safe due to reliance on changing the current working + directory. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue40620 - - (2) https://bugs.python.org/issue13814 - - (3) https://bugs.python.org/issue44392 - - (4) https://bugs.python.org/issue38291 - - (5) https://bugs.python.org/issue44322 - - (6) https://bugs.python.org/issue44195 - - (7) https://bugs.python.org/issue41963 - - (8) https://bugs.python.org/issue44072 - - (9) https://bugs.python.org/issue43558 - - (10) https://bugs.python.org/issue41621 + (1) https://bugs.python.org/issue30511  -File: python.info, Node: Tests, Next: Build, Prev: Documentation<2>, Up: Python 3 9 6 final +File: python.info, Node: Windows, Next: macOS, Prev: Documentation<2>, Up: Python 3 8 12 final -1.19.1.5 Tests -.............. - - - bpo-44287(1): Fix asyncio test_popen() of test_windows_utils by - using a longer timeout. Use military grade battle-tested *note - test.support.SHORT_TIMEOUT: f57. timeout rather than a hardcoded - timeout of 10 seconds: it’s 30 seconds by default, but it is made - longer on slow buildbots. Patch by Victor Stinner. - - - bpo-44363(2): Account for address sanitizer in test_capi. - test_capi now passes when run GCC address sanitizer. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue44287 - - (2) https://bugs.python.org/issue44363 - - -File: python.info, Node: Build, Next: Windows, Prev: Tests, Up: Python 3 9 6 final - -1.19.1.6 Build -.............. - - - bpo-44381(1): The Windows build now accepts - ‘EnableControlFlowGuard’ set to ‘guard’ to enable CFG. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue44381 - - -File: python.info, Node: Windows, Next: macOS, Prev: Build, Up: Python 3 9 6 final - -1.19.1.7 Windows +1.18.1.5 Windows ................ - - bpo-41299(1): Fix 16ms jitter when using timeouts in *note - threading: 10b, such as with *note threading.Lock.acquire(): 85d. - or *note threading.Condition.wait(): f5a. + - bpo-45007(1): Update to OpenSSL 1.1.1l in Windows build ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41299 + (1) https://bugs.python.org/issue45007  -File: python.info, Node: macOS, Next: IDLE<3>, Prev: Windows, Up: Python 3 9 6 final +File: python.info, Node: macOS, Prev: Windows, Up: Python 3 8 12 final -1.19.1.8 macOS +1.18.1.6 macOS .............. - - bpo-43568(1): Relax unnecessarily restrictive - MACOSX_DEPLOYMENT_TARGET check when building extension modules for - macOS. Patch by Joshua Root. + - bpo-45007(1): Update macOS installer builds to use OpenSSL 1.1.1l. - - bpo-43109(2): Allow –with-lto configure option to work with - Apple-supplied Xcode or Command Line Tools. + - bpo-44689(2): *note ctypes.util.find_library(): 5f7. now works + correctly on macOS 11 Big Sur even if Python is built on an older + version of macOS. Previously, when built on older macOS systems, + ‘find_library’ was not able to find macOS system libraries when + running on Big Sur due to changes in how system libraries are + stored. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue43568 + (1) https://bugs.python.org/issue45007 - (2) https://bugs.python.org/issue43109 + (2) https://bugs.python.org/issue44689  -File: python.info, Node: IDLE<3>, Next: Tools/Demos, Prev: macOS, Up: Python 3 9 6 final +File: python.info, Node: Python 3 8 11 final, Next: Python 3 8 10 final, Prev: Python 3 8 12 final, Up: Changelog -1.19.1.9 IDLE -............. +1.18.2 Python 3.8.11 final +-------------------------- - - bpo-40128(1): Mostly fix completions on macOS when not using tcl/tk - 8.6.11 (as with 3.9). The added update_idletask call should be - harmless and possibly helpful otherwise. - - - bpo-33962(2): Move the indent space setting from the Font tab to - the new Windows tab. Patch by Mark Roseman and Terry Jan Reedy. - - - bpo-40468(3): Split the settings dialog General tab into Windows - and Shell/ED tabs. Move help sources, which extend the Help menu, - to the Extensions tab. Make space for new options and shorten the - dialog. The latter makes the dialog better fit small screens. - - - bpo-41611(4): Avoid uncaught exceptions in - ‘AutoCompleteWindow.winconfig_event()’. - - - bpo-41611(5): Fix IDLE sometimes freezing upon tab-completion on - macOS. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40128 - - (2) https://bugs.python.org/issue33962 - - (3) https://bugs.python.org/issue40468 - - (4) https://bugs.python.org/issue41611 - - (5) https://bugs.python.org/issue41611 - - -File: python.info, Node: Tools/Demos, Next: C API, Prev: IDLE<3>, Up: Python 3 9 6 final - -1.19.1.10 Tools/Demos -..................... - - - bpo-44074(1): Make patchcheck automatically detect the correct base - branch name (previously it was hardcoded to ‘master’) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue44074 - - -File: python.info, Node: C API, Prev: Tools/Demos, Up: Python 3 9 6 final - -1.19.1.11 C API -............... - - - bpo-44441(1): *note Py_RunMain(): 2b8. now resets - ‘PyImport_Inittab’ to its initial value at exit. It must be - possible to call *note PyImport_AppendInittab(): f5f. or *note - PyImport_ExtendInittab(): f60. at each Python initialization. - Patch by Victor Stinner. - - - bpo-42083(2): Fix crash in *note PyStructSequence_NewType(): f61. - when passed ‘NULL’ in the documentation string slot. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue44441 - - (2) https://bugs.python.org/issue42083 - - -File: python.info, Node: Python 3 9 5 final, Next: Python 3 9 4 final, Prev: Python 3 9 6 final, Up: Changelog - -1.19.2 Python 3.9.5 final -------------------------- - -`Release date: 2021-05-03' +`Release date: 2021-06-28' * Menu: * Security: Security<2>. * Core and Builtins: Core and Builtins<2>. * Library: Library<2>. -* Documentation: Documentation<3>. -* Tests: Tests<2>. -* Windows: Windows<2>. -* macOS: macOS<2>. -* IDLE: IDLE<4>.  -File: python.info, Node: Security<2>, Next: Core and Builtins<2>, Up: Python 3 9 5 final +File: python.info, Node: Security<2>, Next: Core and Builtins<2>, Up: Python 3 8 11 final -1.19.2.1 Security +1.18.2.1 Security ................. - - bpo-43434(1): Creating a *note sqlite3.Connection: 4e1. object now - also produces a ‘sqlite3.connect’ *note auditing event: f64. - Previously this event was only produced by *note sqlite3.connect(): - 4e3. calls. Patch by Erlend E. Aasland. + - bpo-44022(1): mod:*note http.client: 94. now avoids infinitely + reading potential HTTP headers after a ‘100 Continue’ status + response from the server. - bpo-43882(2): The presence of newline or tab characters in parts of a URL could allow some forms of attacks. Following the controlling specification for URLs defined by WHATWG - *note urllib.parse(): 128. now removes ASCII newlines and tabs from + *note urllib.parse(): 120. now removes ASCII newlines and tabs from URLs, preventing such attacks. - - bpo-43472(3): Ensures interpreter-level audit hooks receive the + - bpo-42800(3): Audit hooks are now fired for frame.f_code, + traceback.tb_frame, and generator code/frame attribute access. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue44022 + + (2) https://bugs.python.org/issue43882 + + (3) https://bugs.python.org/issue42800 + + +File: python.info, Node: Core and Builtins<2>, Next: Library<2>, Prev: Security<2>, Up: Python 3 8 11 final + +1.18.2.2 Core and Builtins +.......................... + + - bpo-44070(1): No longer eagerly makes import filenames absolute, + except for extension modules, which was introduced in 3.8.10. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue44070 + + +File: python.info, Node: Library<2>, Prev: Core and Builtins<2>, Up: Python 3 8 11 final + +1.18.2.3 Library +................ + + - bpo-44061(1): Fix regression in previous release when calling *note + pkgutil.iter_modules(): 5f9. with a list of *note pathlib.Path: + 1ed. objects + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue44061 + + +File: python.info, Node: Python 3 8 10 final, Next: Python 3 8 9 final, Prev: Python 3 8 11 final, Up: Changelog + +1.18.3 Python 3.8.10 final +-------------------------- + +`Release date: 2021-05-03' + +* Menu: + +* Security: Security<3>. +* Core and Builtins: Core and Builtins<3>. +* Library: Library<3>. +* Documentation: Documentation<3>. +* Tests:: +* Windows: Windows<2>. +* macOS: macOS<2>. +* IDLE: IDLE<3>. +* C API:: + + +File: python.info, Node: Security<3>, Next: Core and Builtins<3>, Up: Python 3 8 10 final + +1.18.3.1 Security +................. + + - bpo-43434(1): Creating a *note sqlite3.Connection: 3c9. object now + also produces a ‘sqlite3.connect’ *note auditing event: e6c. + Previously this event was only produced by *note sqlite3.connect(): + 3cb. calls. Patch by Erlend E. Aasland. + + - bpo-43472(2): Ensures interpreter-level audit hooks receive the ‘cpython.PyInterpreterState_New’ event when called through the ‘_xxsubinterpreters’ module. - - bpo-36384(4): *note ipaddress: a2. module no longer accepts any - leading zeros in IPv4 address strings. Leading zeros are ambiguous - and interpreted as octal notation by some libraries. For example - the legacy function *note socket.inet_aton(): 236. treats leading - zeros as octal notatation. glibc implementation of modern *note - inet_pton(): 237. does not accept any leading zeros. For a while - the *note ipaddress: a2. module used to accept ambiguous leading - zeros. - - - bpo-43075(5): Fix Regular Expression Denial of Service (ReDoS) + - bpo-43075(3): Fix Regular Expression Denial of Service (ReDoS) vulnerability in *note urllib.request.AbstractBasicAuthHandler: - f65. The ReDoS-vulnerable regex has quadratic worst-case + e6d. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. - - bpo-42800(6): Audit hooks are now fired for frame.f_code, - traceback.tb_frame, and generator code/frame attribute access. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue43434 - (2) https://bugs.python.org/issue43882 + (2) https://bugs.python.org/issue43472 - (3) https://bugs.python.org/issue43472 - - (4) https://bugs.python.org/issue36384 - - (5) https://bugs.python.org/issue43075 - - (6) https://bugs.python.org/issue42800 + (3) https://bugs.python.org/issue43075  -File: python.info, Node: Core and Builtins<2>, Next: Library<2>, Prev: Security<2>, Up: Python 3 9 5 final +File: python.info, Node: Core and Builtins<3>, Next: Library<3>, Prev: Security<3>, Up: Python 3 8 10 final -1.19.2.2 Core and Builtins +1.18.3.2 Core and Builtins .......................... - bpo-43105(1): Importlib now resolves relative paths when creating @@ -54423,23 +51591,23 @@ File: python.info, Node: Core and Builtins<2>, Next: Library<2>, Prev: Securi (2) https://bugs.python.org/issue42924  -File: python.info, Node: Library<2>, Next: Documentation<3>, Prev: Core and Builtins<2>, Up: Python 3 9 5 final +File: python.info, Node: Library<3>, Next: Documentation<3>, Prev: Core and Builtins<3>, Up: Python 3 8 10 final -1.19.2.3 Library +1.18.3.3 Library ................ - bpo-43993(1): Update bundled pip to 21.1.1. - - bpo-43937(2): Fixed the *note turtle: 11f. module working with + - bpo-43937(2): Fixed the *note turtle: 117. module working with non-default root window. - bpo-43930(3): Update bundled pip to 21.1 and setuptools to 56.0.0 - - bpo-43920(4): OpenSSL 3.0.0: *note load_verify_locations(): 8da. + - bpo-43920(4): OpenSSL 3.0.0: *note load_verify_locations(): 7d0. now returns a consistent error message when cadata contains no valid certificate. - - bpo-43607(5): *note urllib: 126. can now convert Windows paths with + - bpo-43607(5): *note urllib: 11e. can now convert Windows paths with ‘\\?\’ prefixes into URL paths. - bpo-43284(6): platform.win32_ver derives the windows version from @@ -54449,53 +51617,65 @@ File: python.info, Node: Library<2>, Next: Documentation<3>, Prev: Core and B determine the version using the platform module’s _syscmd_ver private function to return an accurate version. - - bpo-42248(7): [Enum] ensure exceptions raised in ‘_missing_’ are - released. + - bpo-42248(7): [Enum] ensure exceptions raised in ‘_missing__’ are + released - bpo-43799(8): OpenSSL 3.0.0: define ‘OPENSSL_API_COMPAT’ 1.1.1 to suppress deprecation warnings. Python requires OpenSSL 1.1.1 APIs. - - bpo-43794(9): Add *note ssl.OP_IGNORE_UNEXPECTED_EOF: f68. + - bpo-43794(9): Add *note ssl.OP_IGNORE_UNEXPECTED_EOF: e70. constants (OpenSSL 3.0.0) - bpo-43789(10): OpenSSL 3.0.0: Don’t call the password callback function a second time when first call has signaled an error condition. - - bpo-43788(11): The header files for *note ssl: f3. error codes are + - bpo-43788(11): The header files for *note ssl: f4. error codes are now OpenSSL version-specific. Exceptions will now show correct reason and library codes. The ‘make_ssl_data.py’ script has been rewritten to use OpenSSL’s text file with error codes. - - bpo-43655(12): *note tkinter: 10e. dialog windows are now + - bpo-43655(12): *note tkinter: 10d. dialog windows are now recognized as dialogs by window managers on macOS and X Window. - - bpo-43534(13): *note turtle.textinput(): f69. and *note - turtle.numinput(): f6a. create now a transient window working on + - bpo-43534(13): *note turtle.textinput(): e71. and *note + turtle.numinput(): e72. create now a transient window working on behalf of the canvas window. - bpo-43522(14): Fix problem with *note hostname_checks_common_name: - 4e7. OpenSSL does not copy hostflags from `struct SSL_CTX' to + 3cf. OpenSSL does not copy hostflags from `struct SSL_CTX' to `struct SSL'. - - bpo-42967(15): Allow *note bytes: 172. ‘separator’ argument in + - bpo-42967(15): Allow *note bytes: 322. ‘separator’ argument in ‘urllib.parse.parse_qs’ and ‘urllib.parse.parse_qsl’ when parsing - *note str: 205. query strings. Previously, this raised a + *note str: 321. query strings. Previously, this raised a ‘TypeError’. - bpo-43176(16): Fixed processing of a dataclass that inherits from a frozen dataclass with no fields. It is now correctly detected as an error. - - bpo-41735(17): Fix thread locks in zlib module may go wrong in rare + - bpo-34463(17): Fixed discrepancy between *note traceback: 114. and + the interpreter in formatting of SyntaxError with lineno not set + (*note traceback: 114. was changed to match interpreter). + + - bpo-41735(18): Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin. - - bpo-36470(18): Fix dataclasses with ‘InitVar’s and *note replace(): - f6b. Patch by Claudiu Popa. + - bpo-26053(19): Fixed bug where the *note pdb: ca. interactive run + command echoed the args from the shell command line, even if those + have been overridden at the pdb prompt. - - bpo-32745(19): Fix a regression in the handling of ctypes’ *note - ctypes.c_wchar_p: f6c. type: embedded null characters would cause a - *note ValueError: 16d. to be raised. Patch by Zackery Spytz. + - bpo-36470(20): Fix dataclasses with ‘InitVar’s and *note replace(): + e73. Patch by Claudiu Popa. + + - bpo-28577(21): The hosts method on 32-bit prefix length + IPv4Networks and 128-bit prefix IPv6Networks now returns a list + containing the single Address instead of an empty list. + + - bpo-32745(22): Fix a regression in the handling of ctypes’ *note + ctypes.c_wchar_p: e74. type: embedded null characters would cause a + *note ValueError: 1e7. to be raised. Patch by Zackery Spytz. ---------- Footnotes ---------- @@ -54531,16 +51711,22 @@ File: python.info, Node: Library<2>, Next: Documentation<3>, Prev: Core and B (16) https://bugs.python.org/issue43176 - (17) https://bugs.python.org/issue41735 + (17) https://bugs.python.org/issue34463 - (18) https://bugs.python.org/issue36470 + (18) https://bugs.python.org/issue41735 - (19) https://bugs.python.org/issue32745 + (19) https://bugs.python.org/issue26053 + + (20) https://bugs.python.org/issue36470 + + (21) https://bugs.python.org/issue28577 + + (22) https://bugs.python.org/issue32745  -File: python.info, Node: Documentation<3>, Next: Tests<2>, Prev: Library<2>, Up: Python 3 9 5 final +File: python.info, Node: Documentation<3>, Next: Tests, Prev: Library<3>, Up: Python 3 8 10 final -1.19.2.4 Documentation +1.18.3.4 Documentation ...................... - bpo-43959(1): The documentation on the PyContextVar C-API was @@ -54549,12 +51735,7 @@ File: python.info, Node: Documentation<3>, Next: Tests<2>, Prev: Library<2>, - bpo-43938(2): Update dataclasses documentation to express that FrozenInstanceError is derived from AttributeError. - - bpo-43755(3): Update documentation to reflect that unparenthesized - lambda expressions can no longer be the expression part in an ‘if’ - clause in comprehensions and generator expressions since Python - 3.9. - - - bpo-43739(4): Fixing the example code in + - bpo-43739(3): Fixing the example code in Doc/extending/extending.rst to declare and initialize the pmodule variable to be of the right type. @@ -54564,70 +51745,57 @@ File: python.info, Node: Documentation<3>, Next: Tests<2>, Prev: Library<2>, (2) https://bugs.python.org/issue43938 - (3) https://bugs.python.org/issue43755 - - (4) https://bugs.python.org/issue43739 + (3) https://bugs.python.org/issue43739  -File: python.info, Node: Tests<2>, Next: Windows<2>, Prev: Documentation<3>, Up: Python 3 9 5 final +File: python.info, Node: Tests, Next: Windows<2>, Prev: Documentation<3>, Up: Python 3 8 10 final -1.19.2.5 Tests +1.18.3.5 Tests .............. - - bpo-43961(1): Fix test_logging.test_namer_rotator_inheritance() on - Windows: use *note os.replace(): b17. rather than *note - os.rename(): b16. Patch by Victor Stinner. - - - bpo-43842(2): Fix a race condition in the SMTP test of + - bpo-43842(1): Fix a race condition in the SMTP test of test_logging. Don’t close a file descriptor (socket) from a different thread while asyncore.loop() is polling the file descriptor. Patch by Victor Stinner. - - bpo-43811(3): Tests multiple OpenSSL versions on GitHub Actions. + - bpo-43811(2): Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up testing. - - bpo-43791(4): OpenSSL 3.0.0: Disable testing of legacy protocols + - bpo-43791(3): OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue43961 + (1) https://bugs.python.org/issue43842 - (2) https://bugs.python.org/issue43842 + (2) https://bugs.python.org/issue43811 - (3) https://bugs.python.org/issue43811 - - (4) https://bugs.python.org/issue43791 + (3) https://bugs.python.org/issue43791  -File: python.info, Node: Windows<2>, Next: macOS<2>, Prev: Tests<2>, Up: Python 3 9 5 final +File: python.info, Node: Windows<2>, Next: macOS<2>, Prev: Tests, Up: Python 3 8 10 final -1.19.2.6 Windows +1.18.3.6 Windows ................ - bpo-35306(1): Avoid raising errors from *note - pathlib.Path.exists(): 333. when passed an invalid filename. + pathlib.Path.exists(): 1ee. when passed an invalid filename. - - bpo-38822(2): Fixed *note os.stat(): 324. failing on inaccessible + - bpo-38822(2): Fixed *note os.stat(): 1dd. failing on inaccessible directories with a trailing slash, rather than falling back to the parent directory’s metadata. This implicitly affected *note - os.path.exists(): 328. and *note os.path.isdir(): 32a. + os.path.exists(): 1e2. and *note os.path.isdir(): 1e4. - bpo-26227(3): Fixed decoding of host names in *note - socket.gethostbyaddr(): f70. and *note socket.gethostbyname_ex(): - f71. + socket.gethostbyaddr(): e78. and *note socket.gethostbyname_ex(): + e79. - - bpo-40432(4): Updated pegen regeneration script on Windows to find - and use Python 3.8 or higher. Prior to this, pegen regeneration - already required 3.8 or higher, but the script may have used lower - versions of Python. - - - bpo-43745(5): Actually updates Windows release to OpenSSL 1.1.1k. + - bpo-43745(4): Actually updates Windows release to OpenSSL 1.1.1k. Earlier releases were mislabelled and actually included 1.1.1i again. - - bpo-43492(6): Upgrade Windows installer to use SQLite 3.35.5. + - bpo-43492(5): Upgrade Windows installer to use SQLite 3.35.5. ---------- Footnotes ---------- @@ -54637,46 +51805,45 @@ File: python.info, Node: Windows<2>, Next: macOS<2>, Prev: Tests<2>, Up: Pyt (3) https://bugs.python.org/issue26227 - (4) https://bugs.python.org/issue40432 + (4) https://bugs.python.org/issue43745 - (5) https://bugs.python.org/issue43745 - - (6) https://bugs.python.org/issue43492 + (5) https://bugs.python.org/issue43492  -File: python.info, Node: macOS<2>, Next: IDLE<4>, Prev: Windows<2>, Up: Python 3 9 5 final +File: python.info, Node: macOS<2>, Next: IDLE<3>, Prev: Windows<2>, Up: Python 3 8 10 final -1.19.2.7 macOS +1.18.3.7 macOS .............. - - bpo-42119(1): Fix check for macOS SDK paths when building Python. - Narrow search to match contents of SDKs, namely only files in - ‘/System/Library’, ‘/System/IOSSupport’, and ‘/usr’ other than - ‘/usr/local’. Previously, anything under ‘/System’ was assumed to - be in an SDK which causes problems with the new file system layout - in 10.15+ where user file systems may appear to be mounted under - ‘/System’. Paths in ‘/Library’ were also incorrectly treated as - SDK locations. - - - bpo-44009(2): Provide “python3.x-intel64” executable to allow + - bpo-44009(1): Provide “python3.x-intel64” executable to allow reliably forcing macOS universal2 framework builds to run under Rosetta 2 Intel-64 emulation on Apple Silicon Macs. This can be useful for testing or when universal2 wheels are not yet available. + - bpo-41100(2): As of 3.8.10, Python now supports building and + running on macOS 11 (Big Sur) and on Apple Silicon Macs (based on + the ‘ARM64’ architecture). A new universal build variant, + ‘universal2’, is also available to natively support both ‘ARM64’ + and ‘Intel 64’ in one set of executables. This backport from + Python 3.9 does not include support for “weaklinking”; to support a + range of macOS versions, continue to target for and build on the + oldest version in the range; for 3.8.x, the ‘universal2’ variant is + only useful on macOS 11 or later. + - bpo-43492(3): Update macOS installer to use SQLite 3.35.4. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue42119 + (1) https://bugs.python.org/issue44009 - (2) https://bugs.python.org/issue44009 + (2) https://bugs.python.org/issue41100 (3) https://bugs.python.org/issue43492  -File: python.info, Node: IDLE<4>, Prev: macOS<2>, Up: Python 3 9 5 final +File: python.info, Node: IDLE<3>, Next: C API, Prev: macOS<2>, Up: Python 3 8 10 final -1.19.2.8 IDLE +1.18.3.8 IDLE ............. - bpo-43655(1): IDLE dialog windows are now recognized as dialogs by @@ -54687,80 +51854,54 @@ File: python.info, Node: IDLE<4>, Prev: macOS<2>, Up: Python 3 9 5 final (1) https://bugs.python.org/issue43655  -File: python.info, Node: Python 3 9 4 final, Next: Python 3 9 3 final, Prev: Python 3 9 5 final, Up: Changelog +File: python.info, Node: C API, Prev: IDLE<3>, Up: Python 3 8 10 final -1.19.3 Python 3.9.4 final -------------------------- +1.18.3.9 C API +.............. -`Release date: 2021-04-04' - -* Menu: - -* Core and Builtins: Core and Builtins<3>. -* Library: Library<3>. - - -File: python.info, Node: Core and Builtins<3>, Next: Library<3>, Up: Python 3 9 4 final - -1.19.3.1 Core and Builtins -.......................... - - - bpo-43710(1): Reverted the fix for - ‘https://bugs.python.org/issue42500’ as it changed the - PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 - release (visible on 32-bit platforms using binaries compiled using - an earlier version of Python 3.9.x headers). + - bpo-43962(1): _PyInterpreterState_IDIncref() now calls + _PyInterpreterState_IDInitref() and always increments id_refcount. + Previously, calling _xxsubinterpreters.get_current() could create + an id_refcount inconsistency when a + _xxsubinterpreters.InterpreterID object was deallocated. Patch by + Victor Stinner. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue43710 + (1) https://bugs.python.org/issue43962  -File: python.info, Node: Library<3>, Prev: Core and Builtins<3>, Up: Python 3 9 4 final +File: python.info, Node: Python 3 8 9 final, Next: Python 3 8 8 final, Prev: Python 3 8 10 final, Up: Changelog -1.19.3.2 Library -................ - - - bpo-26053(1): Fixed bug where the *note pdb: c9. interactive run - command echoed the args from the shell command line, even if those - have been overridden at the pdb prompt. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue26053 - - -File: python.info, Node: Python 3 9 3 final, Next: Python 3 9 2 final, Prev: Python 3 9 4 final, Up: Changelog - -1.19.4 Python 3.9.3 final +1.18.4 Python 3.8.9 final ------------------------- `Release date: 2021-04-02' * Menu: -* Security: Security<3>. +* Security: Security<4>. * Core and Builtins: Core and Builtins<4>. * Library: Library<4>. * Documentation: Documentation<4>. -* Tests: Tests<3>. -* Build: Build<2>. +* Tests: Tests<2>. +* Build:: * macOS: macOS<3>. -* IDLE: IDLE<5>. +* IDLE: IDLE<4>.  -File: python.info, Node: Security<3>, Next: Core and Builtins<4>, Up: Python 3 9 3 final +File: python.info, Node: Security<4>, Next: Core and Builtins<4>, Up: Python 3 8 9 final -1.19.4.1 Security +1.18.4.1 Security ................. - bpo-42988(1): CVE-2021-3426: Remove the ‘getfile’ feature of the - *note pydoc: d9. module which could be abused to read arbitrary + *note pydoc: da. module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - - bpo-43285(2): *note ftplib: 82. no longer trusts the IP address + - bpo-43285(2): *note ftplib: 84. no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client @@ -54768,10 +51909,10 @@ File: python.info, Node: Security<3>, Next: Core and Builtins<4>, Up: Python Code that requires the former vulnerable behavior may set a ‘trust_server_pasv_ipv4_address’ attribute on their *note - ftplib.FTP: 1a6. instances to ‘True’ to re-enable it. + ftplib.FTP: 2dc. instances to ‘True’ to re-enable it. - - bpo-43439(3): Add audit hooks for *note gc.get_objects(): 301, - *note gc.get_referrers(): f79. and *note gc.get_referents(): f7a. + - bpo-43439(3): Add audit hooks for *note gc.get_objects(): 1b9, + *note gc.get_referrers(): e7f. and *note gc.get_referents(): e80. Patch by Pablo Galindo. ---------- Footnotes ---------- @@ -54783,70 +51924,49 @@ File: python.info, Node: Security<3>, Next: Core and Builtins<4>, Up: Python (3) https://bugs.python.org/issue43439  -File: python.info, Node: Core and Builtins<4>, Next: Library<4>, Prev: Security<3>, Up: Python 3 9 3 final +File: python.info, Node: Core and Builtins<4>, Next: Library<4>, Prev: Security<4>, Up: Python 3 8 9 final -1.19.4.2 Core and Builtins +1.18.4.2 Core and Builtins .......................... - bpo-43660(1): Fix crash that happens when replacing ‘sys.stderr’ with a callable that can remove the object while an exception is being printed. Patch by Pablo Galindo. - - bpo-43555(2): Report the column offset for *note SyntaxError: 55c. - for invalid line continuation characters. Patch by Pablo Galindo. - - - bpo-43517(3): Fix misdetection of circular imports when using ‘from - pkg.mod import attr’, which caused false positives in non-trivial - multi-threaded code. - - - bpo-35883(4): Python no longer fails at startup with a fatal error + - bpo-35883(2): Python no longer fails at startup with a fatal error if a command line argument contains an invalid Unicode character. - The *note Py_DecodeLocale(): 541. function now escapes byte + The *note Py_DecodeLocale(): 42c. function now escapes byte sequences which would be decoded as Unicode characters outside the [U+0000; U+10ffff] range. - - bpo-43406(5): Fix a possible race condition where + - bpo-43406(3): Fix a possible race condition where ‘PyErr_CheckSignals’ tries to execute a non-Python signal handler. - - bpo-42500(6): Improve handling of exceptions near recursion limit. - Converts a number of Fatal Errors in RecursionErrors. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue43660 - (2) https://bugs.python.org/issue43555 + (2) https://bugs.python.org/issue35883 - (3) https://bugs.python.org/issue43517 - - (4) https://bugs.python.org/issue35883 - - (5) https://bugs.python.org/issue43406 - - (6) https://bugs.python.org/issue42500 + (3) https://bugs.python.org/issue43406  -File: python.info, Node: Library<4>, Next: Documentation<4>, Prev: Core and Builtins<4>, Up: Python 3 9 3 final +File: python.info, Node: Library<4>, Next: Documentation<4>, Prev: Core and Builtins<4>, Up: Python 3 8 9 final -1.19.4.3 Library +1.18.4.3 Library ................ - - bpo-43433(1): *note xmlrpc.client.ServerProxy: 382. no longer - ignores query and fragment in the URL of the server. - - - bpo-35930(2): Raising an exception raised in a “future” instance + - bpo-35930(1): Raising an exception raised in a “future” instance will create reference cycles. - - bpo-43577(3): Fix deadlock when using *note ssl.SSLContext: 4ec. - debug callback with *note ssl.SSLContext.sni_callback(): f7d. + - bpo-43577(2): Fix deadlock when using *note ssl.SSLContext: 3d5. + debug callback with *note ssl.SSLContext.sni_callback(): e83. - - bpo-43521(4): ‘ast.unparse’ can now render NaNs and empty sets. - - - bpo-43423(5): ‘subprocess.communicate()’ no longer raises an + - bpo-43423(3): ‘subprocess.communicate()’ no longer raises an IndexError when there is an empty stdout or stderr IO buffer during a timeout on Windows. - - bpo-27820(6): Fixed long-standing bug of smtplib.SMTP where doing + - bpo-27820(4): Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with initial_response_ok=False will fail. The cause is that SMTP.auth_login _always_ returns a password if @@ -54855,64 +51975,54 @@ File: python.info, Node: Library<4>, Next: Documentation<4>, Prev: Core and B Also fixes bug with the test for smtpd. - - bpo-43332(7): Improves the networking efficiency of *note - http.client: 93. when using a proxy via ‘set_tunnel()’. Fewer - small send calls are made during connection setup. - - - bpo-43399(8): Fix ‘ElementTree.extend’ not working on iterators + - bpo-43399(5): Fix ‘ElementTree.extend’ not working on iterators when using the Python implementation - - bpo-43316(9): The ‘python -m gzip’ command line application now + - bpo-43316(6): The ‘python -m gzip’ command line application now properly fails when detecting an unsupported extension. It exits with a non-zero exit code and prints an error message to stderr. - - bpo-43260(10): Fix TextIOWrapper can not flush internal buffer + - bpo-43260(7): Fix TextIOWrapper can not flush internal buffer forever after very large text is written. - - bpo-42782(11): Fail fast in *note shutil.move(): 388. to avoid + - bpo-42782(8): Fail fast in *note shutil.move(): 247. to avoid creating destination directories on failure. - - bpo-37193(12): Fixed memory leak in ‘socketserver.ThreadingMixIn’ + - bpo-37193(9): Fixed memory leak in ‘socketserver.ThreadingMixIn’ introduced in Python 3.7. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue43433 + (1) https://bugs.python.org/issue35930 - (2) https://bugs.python.org/issue35930 + (2) https://bugs.python.org/issue43577 - (3) https://bugs.python.org/issue43577 + (3) https://bugs.python.org/issue43423 - (4) https://bugs.python.org/issue43521 + (4) https://bugs.python.org/issue27820 - (5) https://bugs.python.org/issue43423 + (5) https://bugs.python.org/issue43399 - (6) https://bugs.python.org/issue27820 + (6) https://bugs.python.org/issue43316 - (7) https://bugs.python.org/issue43332 + (7) https://bugs.python.org/issue43260 - (8) https://bugs.python.org/issue43399 + (8) https://bugs.python.org/issue42782 - (9) https://bugs.python.org/issue43316 - - (10) https://bugs.python.org/issue43260 - - (11) https://bugs.python.org/issue42782 - - (12) https://bugs.python.org/issue37193 + (9) https://bugs.python.org/issue37193  -File: python.info, Node: Documentation<4>, Next: Tests<3>, Prev: Library<4>, Up: Python 3 9 3 final +File: python.info, Node: Documentation<4>, Next: Tests<2>, Prev: Library<4>, Up: Python 3 8 9 final -1.19.4.4 Documentation +1.18.4.4 Documentation ...................... - bpo-43199(1): Answer “Why is there no goto?” in the Design and History FAQ. - bpo-43407(2): Clarified that a result from *note time.monotonic(): - 860, *note time.perf_counter(): 3cf, *note time.process_time(): - 3d0, or *note time.thread_time(): 1e7. can be compared with the + 756, *note time.perf_counter(): 295, *note time.process_time(): + 296, or *note time.thread_time(): 3ea. can be compared with the result from any following call to the same function - not just the next immediate call. @@ -54936,9 +52046,9 @@ File: python.info, Node: Documentation<4>, Next: Tests<3>, Prev: Library<4>, (5) https://www.python.org/dev/peps/pep-0623  -File: python.info, Node: Tests<3>, Next: Build<2>, Prev: Documentation<4>, Up: Python 3 9 3 final +File: python.info, Node: Tests<2>, Next: Build, Prev: Documentation<4>, Up: Python 3 8 9 final -1.19.4.5 Tests +1.18.4.5 Tests .............. - bpo-37945(1): Fix test_getsetlocale_issue1813() of test_locale: @@ -54947,21 +52057,16 @@ File: python.info, Node: Tests<3>, Next: Build<2>, Prev: Documentation<4>, U - bpo-41561(2): Add workaround for Ubuntu’s custom OpenSSL security level policy. - - bpo-43288(3): Fix test_importlib to correctly skip Unicode file - tests if the fileystem does not support them. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue37945 (2) https://bugs.python.org/issue41561 - (3) https://bugs.python.org/issue43288 -  -File: python.info, Node: Build<2>, Next: macOS<3>, Prev: Tests<3>, Up: Python 3 9 3 final +File: python.info, Node: Build, Next: macOS<3>, Prev: Tests<2>, Up: Python 3 8 9 final -1.19.4.6 Build +1.18.4.6 Build .............. - bpo-43631(1): Update macOS, Windows, and CI to OpenSSL 1.1.1k. @@ -54976,9 +52081,9 @@ File: python.info, Node: Build<2>, Next: macOS<3>, Prev: Tests<3>, Up: Pytho (2) https://bugs.python.org/issue43617  -File: python.info, Node: macOS<3>, Next: IDLE<5>, Prev: Build<2>, Up: Python 3 9 3 final +File: python.info, Node: macOS<3>, Next: IDLE<4>, Prev: Build, Up: Python 3 8 9 final -1.19.4.7 macOS +1.18.4.7 macOS .............. - bpo-41837(1): Update macOS installer build to use OpenSSL 1.1.1j. @@ -54988,9 +52093,9 @@ File: python.info, Node: macOS<3>, Next: IDLE<5>, Prev: Build<2>, Up: Python (1) https://bugs.python.org/issue41837  -File: python.info, Node: IDLE<5>, Prev: macOS<3>, Up: Python 3 9 3 final +File: python.info, Node: IDLE<4>, Prev: macOS<3>, Up: Python 3 8 9 final -1.19.4.8 IDLE +1.18.4.8 IDLE ............. - bpo-42225(1): Document that IDLE can fail on Unix either from @@ -55008,55 +52113,41 @@ File: python.info, Node: IDLE<5>, Prev: macOS<3>, Up: Python 3 9 3 final (2) https://bugs.python.org/issue43283  -File: python.info, Node: Python 3 9 2 final, Next: Python 3 9 2 release candidate 1, Prev: Python 3 9 3 final, Up: Changelog +File: python.info, Node: Python 3 8 8 final, Next: Python 3 8 8 release candidate 1, Prev: Python 3 8 9 final, Up: Changelog -1.19.5 Python 3.9.2 final +1.18.5 Python 3.8.8 final ------------------------- `Release date: 2021-02-19' -* Menu: - -* Windows: Windows<3>. +There were no new changes in version 3.8.8.  -File: python.info, Node: Windows<3>, Up: Python 3 9 2 final +File: python.info, Node: Python 3 8 8 release candidate 1, Next: Python 3 8 7 final, Prev: Python 3 8 8 final, Up: Changelog -1.19.5.1 Windows -................ - - - bpo-43155(1): ‘PyCMethod_New()’ is now present in ‘python3.lib’. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue43155 - - -File: python.info, Node: Python 3 9 2 release candidate 1, Next: Python 3 9 1 final, Prev: Python 3 9 2 final, Up: Changelog - -1.19.6 Python 3.9.2 release candidate 1 +1.18.6 Python 3.8.8 release candidate 1 --------------------------------------- `Release date: 2021-02-16' * Menu: -* Security: Security<4>. +* Security: Security<5>. * Core and Builtins: Core and Builtins<5>. * Library: Library<5>. * Documentation: Documentation<5>. -* Tests: Tests<4>. -* Build: Build<3>. -* Windows: Windows<4>. +* Tests: Tests<3>. +* Build: Build<2>. +* Windows: Windows<3>. * macOS: macOS<4>. -* IDLE: IDLE<6>. -* Tools/Demos: Tools/Demos<2>. +* IDLE: IDLE<5>. +* Tools/Demos:: * C API: C API<2>.  -File: python.info, Node: Security<4>, Next: Core and Builtins<5>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Security<5>, Next: Core and Builtins<5>, Up: Python 3 8 8 release candidate 1 -1.19.6.1 Security +1.18.6.1 Security ................. - bpo-42967(1): Fix web cache poisoning vulnerability by defaulting @@ -55064,7 +52155,7 @@ File: python.info, Node: Security<4>, Next: Core and Builtins<5>, Up: Python custom separator. - bpo-42938(2): Avoid static buffers when computing the repr of *note - ctypes.c_double: f87. and *note ctypes.c_longdouble: f88. values. + ctypes.c_double: e8c. and *note ctypes.c_longdouble: e8d. values. ---------- Footnotes ---------- @@ -55073,12 +52164,12 @@ File: python.info, Node: Security<4>, Next: Core and Builtins<5>, Up: Python (2) https://bugs.python.org/issue42938  -File: python.info, Node: Core and Builtins<5>, Next: Library<5>, Prev: Security<4>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Core and Builtins<5>, Next: Library<5>, Prev: Security<5>, Up: Python 3 8 8 release candidate 1 -1.19.6.2 Core and Builtins +1.18.6.2 Core and Builtins .......................... - - bpo-42819(1): *note readline: de.: Explicitly disable bracketed + - bpo-42819(1): *note readline: df.: Explicitly disable bracketed paste in the interactive interpreter, even if it’s set in the inputrc, is enabled by default (eg GNU Readline 8.1), or a user calls ‘readline.read_init_file()’. The Python REPL has not @@ -55088,293 +52179,114 @@ File: python.info, Node: Core and Builtins<5>, Next: Library<5>, Prev: Securi explicitly enabled by calling ‘readline.parse_and_bind("set enable-bracketed-paste on")’. Patch by Dustin Rodrigues. - - bpo-42806(2): Fix the column offsets for f-strings *note ast: 7. - nodes surrounded by parentheses and for nodes that spawn multiple - lines. Patch by Pablo Galindo. - - - bpo-40631(3): Fix regression where a single parenthesized starred - expression was a valid assignment target. - - - bpo-32381(4): Fix encoding name when running a ‘.pyc’ file on - Windows: *note PyRun_SimpleFileExFlags(): f8a. now uses the correct - encoding to decode the filename. - - - bpo-42536(5): Several built-in and standard library types now - ensure that their internal result tuples are always tracked by the - *note garbage collector: f8b.: - - - *note collections.OrderedDict.items(): 2ed. - - - *note dict.items(): cf7. - - - *note enumerate(): ea9. - - - *note functools.reduce(): d39. - - - *note itertools.combinations(): d70. - - - *note itertools.combinations_with_replacement(): ce5. - - - *note itertools.permutations(): f8c. - - - *note itertools.product(): d71. - - - *note itertools.zip_longest(): cfd. - - - *note zip(): cfe. - - Previously, they could have become untracked by a prior garbage - collection. Patch by Brandt Bucher. - - - bpo-42195(6): The ‘__args__’ of the parameterized generics for - *note typing.Callable: 27e. and *note collections.abc.Callable: - 27d. are now consistent. The ‘__args__’ for *note - collections.abc.Callable: 27d. are now flattened while *note - typing.Callable: 27e.’s have not changed. To allow this change, - *note types.GenericAlias: 27f. can now be subclassed and - ‘collections.abc.Callable’’s ‘__class_getitem__’ will now return a - subclass of ‘types.GenericAlias’. Tests for typing were also - updated to not subclass things like ‘Callable[..., T]’ as that is - not a valid base class. Finally, both types no longer validate - their ‘argtypes’, in ‘Callable[[argtypes], resulttype]’ to prepare - for PEP 612(7). Patch by Ken Jin. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue42819 - (2) https://bugs.python.org/issue42806 - - (3) https://bugs.python.org/issue40631 - - (4) https://bugs.python.org/issue32381 - - (5) https://bugs.python.org/issue42536 - - (6) https://bugs.python.org/issue42195 - - (7) https://www.python.org/dev/peps/pep-0612 -  -File: python.info, Node: Library<5>, Next: Documentation<5>, Prev: Core and Builtins<5>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Library<5>, Next: Documentation<5>, Prev: Core and Builtins<5>, Up: Python 3 8 8 release candidate 1 -1.19.6.3 Library +1.18.6.3 Library ................ - - bpo-43102(1): The namedtuple __new__ method had its __builtins__ - set to None instead of an actual dictionary. This created problems - for introspection tools. - - - bpo-43108(2): Fixed a reference leak in the *note curses: 2b. + - bpo-43108(1): Fixed a reference leak in the *note curses: 2c. module. Patch by Pablo Galindo - - bpo-42944(3): Fix ‘random.Random.sample’ when ‘counts’ argument is - not ‘None’. - - - bpo-42931(4): Add ‘randbytes()’ to ‘random.__all__’. - - - bpo-42780(5): Fix os.set_inheritable() for O_PATH file descriptors + - bpo-42780(2): Fix os.set_inheritable() for O_PATH file descriptors on Linux. - - bpo-42851(6): remove __init_subclass__ support for Enum members - - - bpo-41748(7): Fix HTMLParser parsing rules for element attributes + - bpo-41748(3): Fix HTMLParser parsing rules for element attributes containing commas with spaces. Patch by Karl Dubost. - - bpo-42759(8): Fixed equality comparison of ‘tkinter.Variable’ and - *note tkinter.font.Font: f8e. Objects which belong to different - Tcl interpreters are now always different, even if they have the - same name. + - bpo-42759(4): Fixed equality comparison of ‘tkinter.Variable’ and + ‘tkinter.font.Font’. Objects which belong to different Tcl + interpreters are now always different, even if they have the same + name. - - bpo-42756(9): Configure LMTP Unix-domain socket to use socket - global default timeout when a timeout is not explicitly provided. - - - bpo-23328(10): Allow / character in username, password fields on + - bpo-23328(5): Allow / character in username, password fields on _PROXY envars. - - bpo-42655(11): *note subprocess: f9. `extra_groups' is now - correctly passed into setgroups() system call. + - bpo-42681(6): Fixed range checks for color and pair numbers in + *note curses: 2c. - - bpo-42727(12): ‘EnumMeta.__prepare__’ now accepts ‘**kwds’ to - properly support ‘__init_subclass__’ + - bpo-42531(7): *note importlib.resources.path(): e90. now works for + *note package: e91.s missing the optional *note __file__: e92. + attribute (more specifically, packages whose *note __spec__: + e93.‘.’*note origin: e94. *note is: e95. *note None: 158.). - - bpo-42681(13): Fixed range checks for color and pair numbers in - *note curses: 2b. - - - bpo-37961(14): Fix crash in ‘tracemalloc.Traceback.__repr__()’ - (regressed in Python 3.9). - - - bpo-42630(15): *note tkinter: 10e. functions and constructors which - need a default root window raise now *note RuntimeError: 3df. with - descriptive message instead of obscure *note AttributeError: 4a4. - or *note NameError: e42. if it is not created yet or cannot be - created automatically. - - - bpo-42644(16): *note logging.disable: f8f. will now validate the - types and value of its parameter. It also now accepts strings - representing the levels (as does ‘loging.setLevel’) instead of only - the numerical values. - - - bpo-36541(17): Fixed lib2to3.pgen2 to be able to parse PEP-570 - positional only argument syntax. - - - bpo-42517(18): Enum: private names will raise a DeprecationWarning; - in 3.10 they will become normal attributes - - - bpo-42678(19): ‘Enum’: call ‘__init_subclass__’ after members have - been added - - - bpo-42532(20): Remove unexpected call of ‘__bool__’ when passing a - ‘spec_arg’ argument to a Mock. - - - bpo-42388(21): Fix subprocess.check_output(…, input=None) behavior + - bpo-42388(8): Fix subprocess.check_output(…, input=None) behavior when text=True to be consistent with that of the documentation and universal_newlines=True. - - bpo-34463(22): Fixed discrepancy between *note traceback: 11c. and - the interpreter in formatting of SyntaxError with lineno not set - (*note traceback: 11c. was changed to match interpreter). - - - bpo-42375(23): subprocess module update for DragonFlyBSD support. - - - bpo-42384(24): Make pdb populate sys.path[0] exactly the same as + - bpo-42384(9): Make pdb populate sys.path[0] exactly the same as regular python execution. - - bpo-42383(25): Fix pdb: previously pdb would fail to restart the + - bpo-42383(10): Fix pdb: previously pdb would fail to restart the debugging target if it was specified using a relative path and the current directory changed. - - bpo-42318(26): Fixed support of non-BMP characters in *note - tkinter: 10e. on macOS. + - bpo-42318(11): Fixed support of non-BMP characters in *note + tkinter: 10d. on macOS. - - bpo-42163(27): Restore compatibility for ‘uname_result’ around - deepcopy and _replace. + - bpo-42005(12): Fix CLI of *note cProfile: 28. and *note profile: + d4. to catch *note BrokenPipeError: 97e. - - bpo-39825(28): Windows: Change - ‘sysconfig.get_config_var('EXT_SUFFIX')’ to the expected full - ‘platform_tag.extension’ format. Previously it was hard-coded to - ‘.pyd’, now it is compatible with ‘distutils.sysconfig’ and will - result in something like ‘.cp38-win_amd64.pyd’. This brings - windows into conformance with the other platforms. - - - bpo-42059(29): *note typing.TypedDict: 36a. types created using the - alternative call-style syntax now correctly respect the ‘total’ - keyword argument when setting their ‘__required_keys__’ and - ‘__optional_keys__’ class attributes. - - - bpo-39101(30): Fixed tests using IsolatedAsyncioTestCase from - hanging on BaseExceptions. - - - bpo-42005(31): Fix CLI of *note cProfile: 27. and *note profile: - d3. to catch *note BrokenPipeError: a80. - - - bpo-41907(32): fix *note format(): 5d8. behavior for ‘IntFlag’ - - - bpo-41889(33): Enum: fix regression involving inheriting a - multiply-inherited enum - - - bpo-41891(34): Ensure asyncio.wait_for waits for task completion - - - bpo-41604(35): Don’t decrement the reference count of the previous + - bpo-41604(13): Don’t decrement the reference count of the previous user_ptr when set_panel_userptr fails. - - bpo-40219(36): Lowered ‘tkinter.ttk.LabeledScale’ dummy widget to - prevent hiding part of the content label. + - bpo-26407(14): Unexpected errors in calling the ‘__iter__’ method + are no longer masked by ‘TypeError’ in *note csv.reader(): e96, + ‘csv.writer.writerow()’ and ‘csv.writer.writerows()’. - - bpo-40084(37): Fix ‘Enum.__dir__’: dir(Enum.member) now includes - attributes as well as methods. + - bpo-39068(15): Fix initialization race condition in ‘a85encode()’ + and ‘b85encode()’ in *note base64: e. Patch by Brandon Stansbury. - - bpo-39068(38): Fix initialization race condition in ‘a85encode()’ - and ‘b85encode()’ in *note base64: d. Patch by Brandon Stansbury. + - bpo-36589(16): The *note curses.update_lines_cols(): 6ad. function + now returns ‘None’ instead of ‘1’ on success. - - bpo-33289(39): Correct call to *note tkinter.colorchooser: 10f. to - return RGB triplet of ints instead of floats. Patch by Cheryl - Sabella. + - bpo-33289(17): Correct call to ‘tkinter.colorchooser’ to return RGB + triplet of ints instead of floats. Patch by Cheryl Sabella. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue43102 + (1) https://bugs.python.org/issue43108 - (2) https://bugs.python.org/issue43108 + (2) https://bugs.python.org/issue42780 - (3) https://bugs.python.org/issue42944 + (3) https://bugs.python.org/issue41748 - (4) https://bugs.python.org/issue42931 + (4) https://bugs.python.org/issue42759 - (5) https://bugs.python.org/issue42780 + (5) https://bugs.python.org/issue23328 - (6) https://bugs.python.org/issue42851 + (6) https://bugs.python.org/issue42681 - (7) https://bugs.python.org/issue41748 + (7) https://bugs.python.org/issue42531 - (8) https://bugs.python.org/issue42759 + (8) https://bugs.python.org/issue42388 - (9) https://bugs.python.org/issue42756 + (9) https://bugs.python.org/issue42384 - (10) https://bugs.python.org/issue23328 + (10) https://bugs.python.org/issue42383 - (11) https://bugs.python.org/issue42655 + (11) https://bugs.python.org/issue42318 - (12) https://bugs.python.org/issue42727 + (12) https://bugs.python.org/issue42005 - (13) https://bugs.python.org/issue42681 + (13) https://bugs.python.org/issue41604 - (14) https://bugs.python.org/issue37961 + (14) https://bugs.python.org/issue26407 - (15) https://bugs.python.org/issue42630 + (15) https://bugs.python.org/issue39068 - (16) https://bugs.python.org/issue42644 + (16) https://bugs.python.org/issue36589 - (17) https://bugs.python.org/issue36541 - - (18) https://bugs.python.org/issue42517 - - (19) https://bugs.python.org/issue42678 - - (20) https://bugs.python.org/issue42532 - - (21) https://bugs.python.org/issue42388 - - (22) https://bugs.python.org/issue34463 - - (23) https://bugs.python.org/issue42375 - - (24) https://bugs.python.org/issue42384 - - (25) https://bugs.python.org/issue42383 - - (26) https://bugs.python.org/issue42318 - - (27) https://bugs.python.org/issue42163 - - (28) https://bugs.python.org/issue39825 - - (29) https://bugs.python.org/issue42059 - - (30) https://bugs.python.org/issue39101 - - (31) https://bugs.python.org/issue42005 - - (32) https://bugs.python.org/issue41907 - - (33) https://bugs.python.org/issue41889 - - (34) https://bugs.python.org/issue41891 - - (35) https://bugs.python.org/issue41604 - - (36) https://bugs.python.org/issue40219 - - (37) https://bugs.python.org/issue40084 - - (38) https://bugs.python.org/issue39068 - - (39) https://bugs.python.org/issue33289 + (17) https://bugs.python.org/issue33289  -File: python.info, Node: Documentation<5>, Next: Tests<4>, Prev: Library<5>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Documentation<5>, Next: Tests<3>, Prev: Library<5>, Up: Python 3 8 8 release candidate 1 -1.19.6.4 Documentation +1.18.6.4 Documentation ...................... - bpo-40304(1): Fix doc for type(name, bases, dict). Patch by Boris @@ -55383,27 +52295,22 @@ File: python.info, Node: Documentation<5>, Next: Tests<4>, Prev: Library<5>, - bpo-42811(2): Updated importlib.utils.resolve_name() doc to use __spec__.parent instead of __package__. (Thanks Yair Frid.) - - bpo-17140(3): Add documentation for the *note - multiprocessing.pool.ThreadPool: f91. class. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue40304 (2) https://bugs.python.org/issue42811 - (3) https://bugs.python.org/issue17140 -  -File: python.info, Node: Tests<4>, Next: Build<3>, Prev: Documentation<5>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Tests<3>, Next: Build<2>, Prev: Documentation<5>, Up: Python 3 8 8 release candidate 1 -1.19.6.5 Tests +1.18.6.5 Tests .............. - bpo-42794(1): Update test_nntplib to use offical group name of news.aioe.org for testing. Patch by Dong-hee Na. - - bpo-40810(2): In *note sqlite3: f2, fix ‘CheckTraceCallbackContent’ + - bpo-40810(2): In *note sqlite3: f3, fix ‘CheckTraceCallbackContent’ for SQLite pre 3.7.15. ---------- Footnotes ---------- @@ -55413,44 +52320,21 @@ File: python.info, Node: Tests<4>, Next: Build<3>, Prev: Documentation<5>, U (2) https://bugs.python.org/issue40810  -File: python.info, Node: Build<3>, Next: Windows<4>, Prev: Tests<4>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Build<2>, Next: Windows<3>, Prev: Tests<3>, Up: Python 3 8 8 release candidate 1 -1.19.6.6 Build +1.18.6.6 Build .............. - - bpo-43174(1): Windows build now uses ‘/utf-8’ compiler option. - - - bpo-42692(2): Fix __builtin_available check on older compilers. - Patch by Joshua Root. - - - bpo-42604(3): Now all platforms use a value for the “EXT_SUFFIX” - build variable derived from SOABI (for instance in freeBSD, - “EXT_SUFFIX” is now “.cpython-310d.so” instead of “.so”). - Previosuly only Linux, Mac and VxWorks were using a value for - “EXT_SUFFIX” that included “SOABI”. - - - bpo-42598(4): Fix implicit function declarations in configure which - could have resulted in incorrect configuration checks. Patch - contributed by Joshua Root. - - - bpo-29076(5): Add fish shell support to macOS installer. + - bpo-29076(1): Add fish shell support to macOS installer. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue43174 - - (2) https://bugs.python.org/issue42692 - - (3) https://bugs.python.org/issue42604 - - (4) https://bugs.python.org/issue42598 - - (5) https://bugs.python.org/issue29076 + (1) https://bugs.python.org/issue29076  -File: python.info, Node: Windows<4>, Next: macOS<4>, Prev: Build<3>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Windows<3>, Next: macOS<4>, Prev: Build<2>, Up: Python 3 8 8 release candidate 1 -1.19.6.7 Windows +1.18.6.7 Windows ................ - bpo-41837(1): Updated Windows installer to include OpenSSL 1.1.1i @@ -55464,49 +52348,42 @@ File: python.info, Node: Windows<4>, Next: macOS<4>, Prev: Build<3>, Up: Pyt (2) https://bugs.python.org/issue42584  -File: python.info, Node: macOS<4>, Next: IDLE<6>, Prev: Windows<4>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: macOS<4>, Next: IDLE<5>, Prev: Windows<3>, Up: Python 3 8 8 release candidate 1 -1.19.6.8 macOS +1.18.6.8 macOS .............. - - bpo-42504(1): Ensure that the value of - sysconfig.get_config_var(‘MACOSX_DEPLOYMENT_TARGET’) is always a - string, even in when the value is parsable as an integer. + - bpo-41837(1): Update macOS installer build to use OpenSSL 1.1.1i. - - bpo-42361(2): Update macOS installer build to use Tcl/Tk 8.6.11 - (rc2, expected to be final release). - - - bpo-41837(3): Update macOS installer build to use OpenSSL 1.1.1i. - - - bpo-42584(4): Update macOS installer to use SQLite 3.34.0. + - bpo-42584(2): Update macOS installer to use SQLite 3.34.0. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue42504 + (1) https://bugs.python.org/issue41837 - (2) https://bugs.python.org/issue42361 - - (3) https://bugs.python.org/issue41837 - - (4) https://bugs.python.org/issue42584 + (2) https://bugs.python.org/issue42584  -File: python.info, Node: IDLE<6>, Next: Tools/Demos<2>, Prev: macOS<4>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: IDLE<5>, Next: Tools/Demos, Prev: macOS<4>, Up: Python 3 8 8 release candidate 1 -1.19.6.9 IDLE +1.18.6.9 IDLE ............. - - bpo-43008(1): Make IDLE invoke *note sys.excepthook(): f26. in + - bpo-43008(1): Make IDLE invoke *note sys.excepthook(): e38. in normal, 2-process mode. Patch by Ken Hilton. - bpo-33065(2): Fix problem debugging user classes with __repr__ method. - - bpo-23544(3): Disable Debug=>Stack Viewer when user code is running + - bpo-42508(3): Keep IDLE running on macOS. Remove obsolete + workaround that prevented running files with shortcuts when using + new universal2 installers built on macOS 11. + + - bpo-23544(4): Disable Debug=>Stack Viewer when user code is running or Debugger is active, to prevent hang or crash. Patch by Zackery Spytz. - - bpo-32631(4): Finish zzdummy example extension module: make menu + - bpo-32631(5): Finish zzdummy example extension module: make menu entries work; add docstrings and tests with 100% coverage. ---------- Footnotes ---------- @@ -55515,42 +52392,35 @@ File: python.info, Node: IDLE<6>, Next: Tools/Demos<2>, Prev: macOS<4>, Up: (2) https://bugs.python.org/issue33065 - (3) https://bugs.python.org/issue23544 + (3) https://bugs.python.org/issue42508 - (4) https://bugs.python.org/issue32631 + (4) https://bugs.python.org/issue23544 + + (5) https://bugs.python.org/issue32631  -File: python.info, Node: Tools/Demos<2>, Next: C API<2>, Prev: IDLE<6>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: Tools/Demos, Next: C API<2>, Prev: IDLE<5>, Up: Python 3 8 8 release candidate 1 -1.19.6.10 Tools/Demos +1.18.6.10 Tools/Demos ..................... - bpo-42726(1): Fixed Python 3 compatibility issue with gdb/libpython.py handling of attribute dictionaries. - - bpo-42613(2): Fix ‘freeze.py’ tool to use the prope config and - library directories. Patch by Victor Stinner. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue42726 - (2) https://bugs.python.org/issue42613 -  -File: python.info, Node: C API<2>, Prev: Tools/Demos<2>, Up: Python 3 9 2 release candidate 1 +File: python.info, Node: C API<2>, Prev: Tools/Demos, Up: Python 3 8 8 release candidate 1 -1.19.6.11 C API +1.18.6.11 C API ............... - bpo-43030(1): Fixed a compiler warning in *note - Py_UNICODE_ISSPACE(): f99. on platforms with signed ‘wchar_t’. + Py_UNICODE_ISSPACE(): e9f. on platforms with signed ‘wchar_t’. - - bpo-42591(2): Export the ‘Py_FrozenMain()’ function: fix a Python - 3.9.0 regression. Python 3.9 uses ‘-fvisibility=hidden’ and the - function was not exported explicitly and so not exported. - - - bpo-40052(3): Fix an alignment build warning/error in function + - bpo-40052(2): Fix an alignment build warning/error in function ‘PyVectorcall_Function()’. Patch by Andreas Schneider, Antoine Pitrou and Petr Viktorin. @@ -55558,186 +52428,216 @@ File: python.info, Node: C API<2>, Prev: Tools/Demos<2>, Up: Python 3 9 2 rel (1) https://bugs.python.org/issue43030 - (2) https://bugs.python.org/issue42591 - - (3) https://bugs.python.org/issue40052 + (2) https://bugs.python.org/issue40052  -File: python.info, Node: Python 3 9 1 final, Next: Python 3 9 1 release candidate 1, Prev: Python 3 9 2 release candidate 1, Up: Changelog +File: python.info, Node: Python 3 8 7 final, Next: Python 3 8 7 release candidate 1, Prev: Python 3 8 8 release candidate 1, Up: Changelog -1.19.7 Python 3.9.1 final +1.18.7 Python 3.8.7 final ------------------------- -`Release date: 2020-12-07' +`Release date: 2020-12-21' * Menu: * Core and Builtins: Core and Builtins<6>. * Library: Library<6>. -* Tests: Tests<5>. -* macOS: macOS<5>. -* IDLE: IDLE<7>. +* Documentation: Documentation<6>. +* Build: Build<3>. +* Tools/Demos: Tools/Demos<2>.  -File: python.info, Node: Core and Builtins<6>, Next: Library<6>, Up: Python 3 9 1 final +File: python.info, Node: Core and Builtins<6>, Next: Library<6>, Up: Python 3 8 7 final -1.19.7.1 Core and Builtins +1.18.7.1 Core and Builtins .......................... - - bpo-42576(1): ‘types.GenericAlias’ will now raise a ‘TypeError’ - when attempting to initialize with a keyword argument. Previously, - this would cause the interpreter to crash if the interpreter was - compiled with debug symbols. This does not affect interpreters - compiled for release. Patch by Ken Jin. + - bpo-32381(1): Fix encoding name when running a ‘.pyc’ file on + Windows: *note PyRun_SimpleFileExFlags(): ea2. now uses the correct + encoding to decode the filename. + + - bpo-42536(2): Several built-in and standard library types now + ensure that their internal result tuples are always tracked by the + *note garbage collector: ea3.: + + - *note collections.OrderedDict.items(): 1a5. + + - *note dict.items(): c0b. + + - *note enumerate(): dbd. + + - *note functools.reduce(): c4b. + + - *note itertools.combinations(): c7d. + + - *note itertools.combinations_with_replacement(): bf9. + + - *note itertools.permutations(): ea4. + + - *note itertools.product(): c7e. + + - *note itertools.zip_longest(): c11. + + - *note zip(): c12. + + Previously, they could have become untracked by a prior garbage + collection. Patch by Brandt Bucher. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue42576 + (1) https://bugs.python.org/issue32381 + + (2) https://bugs.python.org/issue42536  -File: python.info, Node: Library<6>, Next: Tests<5>, Prev: Core and Builtins<6>, Up: Python 3 9 1 final +File: python.info, Node: Library<6>, Next: Documentation<6>, Prev: Core and Builtins<6>, Up: Python 3 8 7 final -1.19.7.2 Library +1.18.7.2 Library ................ - - bpo-5054(1): CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly - parsed. Replace the special purpose getallmatchingheaders with - generic get_all method and add relevant tests. + - bpo-42630(1): *note tkinter: 10d. functions and constructors which + need a default root window raise now *note RuntimeError: 2a5. with + descriptive message instead of obscure *note AttributeError: 38c. + or *note NameError: d55. if it is not created yet or cannot be + created automatically. - Original Patch by Martin Panter. Modified by Senthil Kumaran. + - bpo-42644(2): *note logging.disable: ea6. will now validate the + types and value of its parameter. It also now accepts strings + representing the levels (as does ‘loging.setLevel’) instead of only + the numerical values. - - bpo-17735(2): ‘inspect.findsource()’ now raises *note OSError: 307. - instead of *note IndexError: f38. when ‘co_lineno’ of a code object - is greater than the file length. This can happen, for example, - when a file is edited after it was imported. PR by Irit Katriel. + - bpo-36541(3): Fixed lib2to3.pgen2 to be able to parse PEP-570 + positional only argument syntax. - - bpo-42116(3): Fix handling of trailing comments by *note - inspect.getsource(): f9d. + - bpo-42375(4): subprocess module update for DragonFlyBSD support. - - bpo-42487(4): ChainMap.__iter__ no longer calls __getitem__ on - underlying maps + - bpo-39825(5): Windows: Change + ‘sysconfig.get_config_var('EXT_SUFFIX')’ to the expected full + ‘platform_tag.extension’ format. Previously it was hard-coded to + ‘.pyd’, now it is compatible with ‘distutils.sysconfig’ and will + result in something like ‘.cp38-win_amd64.pyd’. This brings + windows into conformance with the other platforms. - - bpo-42482(5): *note TracebackException: 867. no longer holds a - reference to the exception’s traceback object. Consequently, - instances of TracebackException for equivalent but non-equal - exceptions now compare as equal. + - bpo-39101(6): Fixed tests using IsolatedAsyncioTestCase from + hanging on BaseExceptions. - - bpo-42406(6): We fixed an issue in ‘pickle.whichmodule’ in which - importing *note multiprocessing: b7. could change the how pickle - identifies which module an object belongs to, potentially breaking - the unpickling of those objects. + - bpo-41907(7): fix *note format(): 4cc. behavior for ‘IntFlag’ - - bpo-34215(7): Clarify the error message for *note - asyncio.IncompleteReadError: f9e. when ‘expected’ is ‘None’. + - bpo-41889(8): Enum: fix regression involving inheriting a + multiply-inherited enum - - bpo-12800(8): Extracting a symlink from a tarball should succeed - and overwrite the symlink if it already exists. The fix is to - remove the existing file or symlink before extraction. Based on - patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran. + - bpo-41891(9): Ensure asyncio.wait_for waits for task completion + + - bpo-40219(10): Lowered ‘tkinter.ttk.LabeledScale’ dummy widget to + prevent hiding part of the content label. + + - bpo-40084(11): Fix ‘Enum.__dir__’: dir(Enum.member) now includes + attributes as well as methods. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue5054 + (1) https://bugs.python.org/issue42630 - (2) https://bugs.python.org/issue17735 + (2) https://bugs.python.org/issue42644 - (3) https://bugs.python.org/issue42116 + (3) https://bugs.python.org/issue36541 - (4) https://bugs.python.org/issue42487 + (4) https://bugs.python.org/issue42375 - (5) https://bugs.python.org/issue42482 + (5) https://bugs.python.org/issue39825 - (6) https://bugs.python.org/issue42406 + (6) https://bugs.python.org/issue39101 - (7) https://bugs.python.org/issue34215 + (7) https://bugs.python.org/issue41907 - (8) https://bugs.python.org/issue12800 + (8) https://bugs.python.org/issue41889 + + (9) https://bugs.python.org/issue41891 + + (10) https://bugs.python.org/issue40219 + + (11) https://bugs.python.org/issue40084  -File: python.info, Node: Tests<5>, Next: macOS<5>, Prev: Library<6>, Up: Python 3 9 1 final +File: python.info, Node: Documentation<6>, Next: Build<3>, Prev: Library<6>, Up: Python 3 8 7 final -1.19.7.3 Tests +1.18.7.3 Documentation +...................... + + - bpo-17140(1): Add documentation for the *note + multiprocessing.pool.ThreadPool: ea8. class. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue17140 + + +File: python.info, Node: Build<3>, Next: Tools/Demos<2>, Prev: Documentation<6>, Up: Python 3 8 7 final + +1.18.7.4 Build .............. - - bpo-41473(1): Reenable test_gdb on gdb 9.2 and newer: - ‘https://bugzilla.redhat.com/show_bug.cgi?id=1866884’ bug is fixed - in gdb 10.1. + - bpo-42604(1): Now all platforms use a value for the “EXT_SUFFIX” + build variable derived from SOABI (for instance in freeBSD, + “EXT_SUFFIX” is now “.cpython-310d.so” instead of “.so”). + Previosuly only Linux, Mac and VxWorks were using a value for + “EXT_SUFFIX” that included “SOABI”. - - bpo-42553(2): Fix ‘test_asyncio.test_call_later()’ race condition: - don’t measure asyncio performance in the ‘call_later()’ unit test. - The test failed randomly on the CI. + - bpo-42598(2): Fix implicit function declarations in configure which + could have resulted in incorrect configuration checks. Patch + contributed by Joshua Root. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41473 + (1) https://bugs.python.org/issue42604 - (2) https://bugs.python.org/issue42553 + (2) https://bugs.python.org/issue42598  -File: python.info, Node: macOS<5>, Next: IDLE<7>, Prev: Tests<5>, Up: Python 3 9 1 final +File: python.info, Node: Tools/Demos<2>, Prev: Build<3>, Up: Python 3 8 7 final -1.19.7.4 macOS -.............. +1.18.7.5 Tools/Demos +.................... - - bpo-41116(1): If no explicit macOS SDK was specified, setup.py - should check for Tcl and TK frameworks in /Library/Frameworks; the - previous commit inadvertently broke that test. - - - bpo-42504(2): Fix build on macOS Big Sur when - MACOSX_DEPLOYMENT_TARGET=11 + - bpo-42613(1): Fix ‘freeze.py’ tool to use the prope config and + library directories. Patch by Victor Stinner. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41116 - - (2) https://bugs.python.org/issue42504 + (1) https://bugs.python.org/issue42613  -File: python.info, Node: IDLE<7>, Prev: macOS<5>, Up: Python 3 9 1 final +File: python.info, Node: Python 3 8 7 release candidate 1, Next: Python 3 8 6 final, Prev: Python 3 8 7 final, Up: Changelog -1.19.7.5 IDLE -............. - - - bpo-42508(1): Keep IDLE running on macOS. Remove obsolete - workaround that prevented running files with shortcuts when using - new universal2 installers built on macOS 11. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue42508 - - -File: python.info, Node: Python 3 9 1 release candidate 1, Next: Python 3 9 0 final, Prev: Python 3 9 1 final, Up: Changelog - -1.19.8 Python 3.9.1 release candidate 1 +1.18.8 Python 3.8.7 release candidate 1 --------------------------------------- -`Release date: 2020-11-24' +`Release date: 2020-12-07' * Menu: -* Security: Security<5>. +* Security: Security<6>. * Core and Builtins: Core and Builtins<7>. * Library: Library<7>. -* Documentation: Documentation<6>. -* Tests: Tests<6>. +* Documentation: Documentation<7>. +* Tests: Tests<4>. * Build: Build<4>. -* Windows: Windows<5>. -* macOS: macOS<6>. -* IDLE: IDLE<8>. +* Windows: Windows<4>. +* macOS: macOS<5>. +* IDLE: IDLE<6>. * C API: C API<3>.  -File: python.info, Node: Security<5>, Next: Core and Builtins<7>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Security<6>, Next: Core and Builtins<7>, Up: Python 3 8 7 release candidate 1 -1.19.8.1 Security +1.18.8.1 Security ................. - bpo-42103(1): Prevented potential DoS attack via CPU and RAM exhaustion when processing malformed Apple Property List files in binary format. - - bpo-42051(2): The *note plistlib: cf. module no longer accepts + - bpo-42051(2): The *note plistlib: d0. module no longer accepts entity declarations in XML plist files to avoid XML vulnerabilities. This should not affect users as entity declarations are not used in regular plist files. @@ -55755,421 +52655,337 @@ File: python.info, Node: Security<5>, Next: Core and Builtins<7>, Up: Python (3) https://bugs.python.org/issue40791  -File: python.info, Node: Core and Builtins<7>, Next: Library<7>, Prev: Security<5>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Core and Builtins<7>, Next: Library<7>, Prev: Security<6>, Up: Python 3 8 7 release candidate 1 -1.19.8.2 Core and Builtins +1.18.8.2 Core and Builtins .......................... - bpo-41686(1): On Windows, the ‘SIGINT’ event, ‘_PyOS_SigintEvent()’, is now created even if Python is configured to not install signal handlers (if *note - PyConfig.install_signal_handlers: fa5. equals to 0, or + PyConfig.install_signal_handlers: eae. equals to 0, or ‘Py_InitializeEx(0)’). - - bpo-42381(2): Allow assignment expressions in set literals and set - comprehensions as per PEP 572. Patch by Pablo Galindo. - - - bpo-42374(3): Fix a regression introduced by the new parser, where - an unparenthesized walrus operator was not allowed within generator - expressions. - - - bpo-42296(4): On Windows, fix a regression in signal handling which - prevented to interrupt a program using CTRL+C. The signal handler - can be run in a thread different than the Python thread, in which - case the test deciding if the thread can handle signals is wrong. - - - bpo-42332(5): *note types.GenericAlias: 27f. objects can now be the - targets of weakrefs. - - - bpo-42218(6): Fixed a bug in the PEG parser that was causing - crashes in debug mode. Now errors are checked in left-recursive - rules to avoid cases where such errors do not get handled in time - and appear as long-distance crashes in other places. - - - bpo-42214(7): Fixed a possible crash in the PEG parser when - checking for the ‘!=’ token in the ‘barry_as_flufl’ rule. Patch by - Pablo Galindo. - - - bpo-42143(8): Fix handling of errors during creation of + - bpo-42143(2): Fix handling of errors during creation of ‘PyFunctionObject’, which resulted in operations on uninitialized memory. Patch by Yonatan Goldschmidt. - - bpo-41659(9): Fix a bug in the parser, where a curly brace - following a ‘primary’ didn’t fail immediately. This led to invalid - expressions like ‘a {b}’ to throw a *note SyntaxError: 55c. with a - wrong offset, or invalid expressions ending with a curly brace like - ‘a {’ to not fail immediately in the REPL. - - - bpo-42150(10): Fix possible buffer overflow in the new parser when - checking for continuation lines. Patch by Pablo Galindo. - - - bpo-42123(11): Run the parser two times. On the first run, disable - all the rules that only generate better error messages to gain - performance. If there’s a parse failure, run the parser a second - time with those enabled. - - - bpo-42057(12): Fix peephole optimizer misoptimize conditional jump - + JUMP_IF_NOT_EXC_MATCH pair. - - - bpo-41984(13): The garbage collector now tracks all user-defined + - bpo-41984(3): The garbage collector now tracks all user-defined classes. Patch by Brandt Bucher. - - bpo-41993(14): Fixed potential issues with removing not completely - initialized module from ‘sys.modules’ when import fails. - - - bpo-41979(15): Star-unpacking is now allowed for with item’s - targets in the PEG parser. - - - bpo-41909(16): Fixed stack overflow in *note issubclass(): 555. and - *note isinstance(): 554. when getting the ‘__bases__’ attribute + - bpo-41909(4): Fixed stack overflow in *note issubclass(): 441. and + *note isinstance(): 440. when getting the ‘__bases__’ attribute leads to infinite recursion. - - bpo-41894(17): When loading a native module and a load failure + - bpo-41894(5): When loading a native module and a load failure occurs, prevent a possible UnicodeDecodeError when not running in a UTF-8 locale by decoding the load error message using the current locale’s encoding. - - bpo-39934(18): Correctly count control blocks in ‘except’ in - compiler. Ensures that a syntax error, rather a fatal error, - occurs for deeply nested, named exception handlers. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue41686 - (2) https://bugs.python.org/issue42381 + (2) https://bugs.python.org/issue42143 - (3) https://bugs.python.org/issue42374 + (3) https://bugs.python.org/issue41984 - (4) https://bugs.python.org/issue42296 + (4) https://bugs.python.org/issue41909 - (5) https://bugs.python.org/issue42332 - - (6) https://bugs.python.org/issue42218 - - (7) https://bugs.python.org/issue42214 - - (8) https://bugs.python.org/issue42143 - - (9) https://bugs.python.org/issue41659 - - (10) https://bugs.python.org/issue42150 - - (11) https://bugs.python.org/issue42123 - - (12) https://bugs.python.org/issue42057 - - (13) https://bugs.python.org/issue41984 - - (14) https://bugs.python.org/issue41993 - - (15) https://bugs.python.org/issue41979 - - (16) https://bugs.python.org/issue41909 - - (17) https://bugs.python.org/issue41894 - - (18) https://bugs.python.org/issue39934 + (5) https://bugs.python.org/issue41894  -File: python.info, Node: Library<7>, Next: Documentation<6>, Prev: Core and Builtins<7>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Library<7>, Next: Documentation<7>, Prev: Core and Builtins<7>, Up: Python 3 8 7 release candidate 1 -1.19.8.3 Library +1.18.8.3 Library ................ - - bpo-42328(1): Fixed *note tkinter.ttk.Style.map(): fa7. The + - bpo-17735(1): ‘inspect.findsource()’ now raises *note OSError: 1bf. + instead of *note IndexError: e48. when ‘co_lineno’ of a code object + is greater than the file length. This can happen, for example, + when a file is edited after it was imported. PR by Irit Katriel. + + - bpo-42116(2): Fix handling of trailing comments by *note + inspect.getsource(): eb0. + + - bpo-42482(3): *note TracebackException: 75d. no longer holds a + reference to the exception’s traceback object. Consequently, + instances of TracebackException for equivalent but non-equal + exceptions now compare as equal. + + - bpo-42406(4): We fixed an issue in ‘pickle.whichmodule’ in which + importing *note multiprocessing: b8. could change the how pickle + identifies which module an object belongs to, potentially breaking + the unpickling of those objects. + + - bpo-42328(5): Fixed *note tkinter.ttk.Style.map(): eb1. The function accepts now the representation of the default state as empty sequence (as returned by ‘Style.map()’). The structure of the result is now the same on all platform and does not depend on the value of ‘wantobjects’. - - bpo-42345(2): Fix various issues with ‘typing.Literal’ parameter - handling (flatten, deduplicate, use type to cache key). Patch - provided by Yurii Karabas. - - - bpo-42350(3): Fix the *note threading.Thread: 21a. class at fork: - do nothing if the thread is already stopped (ex: fork called at - Python exit). Previously, an error was logged in the child - process. - - - bpo-42014(4): The ‘onerror’ callback from ‘shutil.rmtree’ now + - bpo-42014(6): The ‘onerror’ callback from ‘shutil.rmtree’ now receives correct function when ‘os.open’ fails. - - bpo-42237(5): Fix *note os.sendfile(): 463. on illumos. + - bpo-42237(7): Fix *note os.sendfile(): 34a. on illumos. - - bpo-42249(6): Fixed writing binary Plist files larger than 4 GiB. + - bpo-42249(8): Fixed writing binary Plist files larger than 4 GiB. - - bpo-35455(7): On Solaris, *note thread_time(): 1e7. is now + - bpo-35455(9): On Solaris, *note thread_time(): 3ea. is now implemented with ‘gethrvtime()’ because ‘clock_gettime(CLOCK_THREAD_CPUTIME_ID)’ is not always available. Patch by Jakub Kulik. - - bpo-42233(8): The *note repr(): 8bb. of *note typing: 122. types - containing *note Generic Alias Types: fa8. previously did not show - the parameterized types in the ‘GenericAlias’. They have now been - changed to do so. - - - bpo-41754(9): webbrowser: Ignore `NotADirectoryError' when calling + - bpo-41754(10): webbrowser: Ignore `NotADirectoryError' when calling ‘xdg-settings’. - - bpo-29566(10): ‘binhex.binhex()’ consisently writes macOS 9 line + - bpo-29566(11): ‘binhex.binhex()’ consisently writes macOS 9 line endings. - - bpo-42183(11): Fix a stack overflow error for asyncio Task or + - bpo-42183(12): Fix a stack overflow error for asyncio Task or Future repr(). The overflow occurs under some circumstances when a Task or Future recursively returns itself. - - bpo-42146(12): Fix memory leak in *note subprocess.Popen(): 3de. in - case an uid (gid) specified in ‘user’ (‘group’, ‘extra_groups’) - overflows ‘uid_t’ (‘gid_t’). - - - bpo-42140(13): Improve asyncio.wait function to create the futures - set just one time. - - - bpo-42103(14): ‘InvalidFileException’ and *note RecursionError: - 729. are now the only errors caused by loading malformed binary + - bpo-42103(13): ‘InvalidFileException’ and *note RecursionError: + 621. are now the only errors caused by loading malformed binary Plist file (previously ValueError and TypeError could be raised in some specific cases). - - bpo-41052(15): Pickling heap types implemented in C with protocols - 0 and 1 raises now an error instead of producing incorrect data. - - - bpo-41491(16): plistlib: fix parsing XML plists with hexadecimal + - bpo-41491(14): plistlib: fix parsing XML plists with hexadecimal integer values - - bpo-42065(17): Fix an incorrectly formatted error from + - bpo-32498(15): Clearer exception message when passing an argument + of type bytes to *note urllib.parse.unquote(): eb2. This is only + for 3.8; in 3.9 and later this function accepts bytes inputs as + well. PR by Irit Katriel. + + - bpo-42065(16): Fix an incorrectly formatted error from ‘_codecs.charmap_decode()’ when called with a mapped value outside the range of valid Unicode code points. PR by Max Bernstein. - - bpo-41966(18): Fix pickling pure Python *note datetime.time: 5ef. + - bpo-41966(17): Fix pickling pure Python *note datetime.time: 4e4. subclasses. Patch by Dean Inwood. - - bpo-41976(19): Fixed a bug that was causing *note - ctypes.util.find_library(): 703. to return ‘None’ when triying to + - bpo-41976(18): Fixed a bug that was causing *note + ctypes.util.find_library(): 5f7. to return ‘None’ when triying to locate a library in an environment when gcc>=9 is available and ‘ldconfig’ is not. Patch by Pablo Galindo - - bpo-41900(20): C14N 2.0 serialisation in xml.etree.ElementTree + - bpo-41900(19): C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed attributes when a default namespace was defined. - - bpo-41840(21): Fix a bug in the *note symtable: fc. module that was + - bpo-41855(20): In ‘importlib.metadata’, fix issue where multiple + children can be returned from ‘FastPath.zip_children()’. Backport + of python-devs/importlib_metadata#117(21). + + - bpo-41840(22): Fix a bug in the *note symtable: fd. module that was causing module-scope global variables to not be reported as both local and global. Patch by Pablo Galindo. - - bpo-41831(22): ‘str()’ for the ‘type’ attribute of the + - bpo-41831(23): ‘str()’ for the ‘type’ attribute of the ‘tkinter.Event’ object always returns now the numeric code returned by Tk instead of the name of the event type. - - bpo-41817(23): fix ‘tkinter.EventType’ Enum so all members are - strings, and none are tuples + - bpo-41662(24): No longer override exceptions raised in ‘__len__()’ + of a sequence of parameters in *note sqlite3: f3. with *note + ProgrammingError: eb3. - - bpo-41815(24): Fix SQLite3 segfault when backing up closed - database. Patch contributed by Peter David McCormick. + - bpo-41662(25): Fixed crash when mutate list of parameters during + iteration in *note sqlite3: f3. - - bpo-41316(25): Fix the *note tarfile: 101. module to write only + - bpo-34215(26): Clarify the error message for *note + asyncio.IncompleteReadError: eb4. when ‘expected’ is ‘None’. + + - bpo-41316(27): Fix the *note tarfile: 102. module to write only basename of TAR file to GZIP compression header. - - bpo-16396(26): Allow ‘ctypes.wintypes’ to be imported on + - bpo-12800(28): Extracting a symlink from a tarball should succeed + and overwrite the symlink if it already exists. The fix is to + remove the existing file or symlink before extraction. Based on + patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran. + + - bpo-16936(29): Allow ‘ctypes.wintypes’ to be imported on non-Windows systems. - - bpo-40592(27): *note shutil.which(): fa9. now ignores empty entries + - bpo-40592(30): *note shutil.which(): eb5. now ignores empty entries in ‘PATHEXT’ instead of treating them as a match. - - bpo-40550(28): Fix time-of-check/time-of-action issue in - subprocess.Popen.send_signal. - - - bpo-40492(29): Fix ‘--outfile’ for *note cProfile: 27. / *note - profile: d3. not writing the output file in the original directory + - bpo-40492(31): Fix ‘--outfile’ for *note cProfile: 28. / *note + profile: d4. not writing the output file in the original directory when the program being profiled changes the working directory. PR by Anthony Sottile. - - bpo-40105(30): ZipFile truncates files to avoid corruption when a + - bpo-40105(32): ZipFile truncates files to avoid corruption when a shorter comment is provided in append (“a”) mode. Patch by Jan Mazur. - - bpo-27321(31): Fixed KeyError exception when flattening an email to + - bpo-27321(33): Fixed KeyError exception when flattening an email to a string attempts to replace a non-existent Content-Transfer-Encoding header. + - bpo-32793(34): Fix a duplicated debug message when *note + smtplib.SMTP.connect(): eb6. is called. + ---------- Footnotes ---------- - (1) https://bugs.python.org/issue42328 + (1) https://bugs.python.org/issue17735 - (2) https://bugs.python.org/issue42345 + (2) https://bugs.python.org/issue42116 - (3) https://bugs.python.org/issue42350 + (3) https://bugs.python.org/issue42482 - (4) https://bugs.python.org/issue42014 + (4) https://bugs.python.org/issue42406 - (5) https://bugs.python.org/issue42237 + (5) https://bugs.python.org/issue42328 - (6) https://bugs.python.org/issue42249 + (6) https://bugs.python.org/issue42014 - (7) https://bugs.python.org/issue35455 + (7) https://bugs.python.org/issue42237 - (8) https://bugs.python.org/issue42233 + (8) https://bugs.python.org/issue42249 - (9) https://bugs.python.org/issue41754 + (9) https://bugs.python.org/issue35455 - (10) https://bugs.python.org/issue29566 + (10) https://bugs.python.org/issue41754 - (11) https://bugs.python.org/issue42183 + (11) https://bugs.python.org/issue29566 - (12) https://bugs.python.org/issue42146 + (12) https://bugs.python.org/issue42183 - (13) https://bugs.python.org/issue42140 + (13) https://bugs.python.org/issue42103 - (14) https://bugs.python.org/issue42103 + (14) https://bugs.python.org/issue41491 - (15) https://bugs.python.org/issue41052 + (15) https://bugs.python.org/issue32498 - (16) https://bugs.python.org/issue41491 + (16) https://bugs.python.org/issue42065 - (17) https://bugs.python.org/issue42065 + (17) https://bugs.python.org/issue41966 - (18) https://bugs.python.org/issue41966 + (18) https://bugs.python.org/issue41976 - (19) https://bugs.python.org/issue41976 + (19) https://bugs.python.org/issue41900 - (20) https://bugs.python.org/issue41900 + (20) https://bugs.python.org/issue41855 - (21) https://bugs.python.org/issue41840 + (21) https://gitlab.com/python-devs/importlib_metadata/-/issues/117 - (22) https://bugs.python.org/issue41831 + (22) https://bugs.python.org/issue41840 - (23) https://bugs.python.org/issue41817 + (23) https://bugs.python.org/issue41831 - (24) https://bugs.python.org/issue41815 + (24) https://bugs.python.org/issue41662 - (25) https://bugs.python.org/issue41316 + (25) https://bugs.python.org/issue41662 - (26) https://bugs.python.org/issue16396 + (26) https://bugs.python.org/issue34215 - (27) https://bugs.python.org/issue40592 + (27) https://bugs.python.org/issue41316 - (28) https://bugs.python.org/issue40550 + (28) https://bugs.python.org/issue12800 - (29) https://bugs.python.org/issue40492 + (29) https://bugs.python.org/issue16936 - (30) https://bugs.python.org/issue40105 + (30) https://bugs.python.org/issue40592 - (31) https://bugs.python.org/issue27321 + (31) https://bugs.python.org/issue40492 + + (32) https://bugs.python.org/issue40105 + + (33) https://bugs.python.org/issue27321 + + (34) https://bugs.python.org/issue32793  -File: python.info, Node: Documentation<6>, Next: Tests<6>, Prev: Library<7>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Documentation<7>, Next: Tests<4>, Prev: Library<7>, Up: Python 3 8 7 release candidate 1 -1.19.8.4 Documentation +1.18.8.4 Documentation ...................... - bpo-42153(1): Fix the URL for the IMAP protocol documents. - - bpo-42061(2): Document __format__ functionality for IP addresses. + - bpo-41910(2): Document the default implementation of *note + object.__eq__: 330. - - bpo-41910(3): Document the default implementation of *note - object.__eq__: 44d. - - - bpo-42010(4): Clarify that subscription expressions are also valid - for certain *note classes: fab. and *note types: fac. in the - standard library, and for user-defined classes and types if the - classmethod *note __class_getitem__(): 439. is provided. - - - bpo-41805(5): Documented *note generic alias type: fa8. and *note - types.GenericAlias: 27f. Also added an entry in glossary for *note - generic types: fad. - - - bpo-41774(6): In Programming FAQ “Sequences (Tuples/Lists)” + - bpo-41774(3): In Programming FAQ “Sequences (Tuples/Lists)” section, add “How do you remove multiple items from a list”. - - bpo-35293(7): Fix RemovedInSphinx40Warning when building the - documentation. Patch by Dong-hee Na. - - - bpo-41726(8): Update the refcounts info of - ‘PyType_FromModuleAndSpec’. - - - bpo-39693(9): Fix tarfile’s extractfile documentation - - - bpo-39416(10): Document some restrictions on the default string + - bpo-39416(4): Document some restrictions on the default string representations of numeric classes. ---------- Footnotes ---------- (1) https://bugs.python.org/issue42153 - (2) https://bugs.python.org/issue42061 + (2) https://bugs.python.org/issue41910 - (3) https://bugs.python.org/issue41910 + (3) https://bugs.python.org/issue41774 - (4) https://bugs.python.org/issue42010 - - (5) https://bugs.python.org/issue41805 - - (6) https://bugs.python.org/issue41774 - - (7) https://bugs.python.org/issue35293 - - (8) https://bugs.python.org/issue41726 - - (9) https://bugs.python.org/issue39693 - - (10) https://bugs.python.org/issue39416 + (4) https://bugs.python.org/issue39416  -File: python.info, Node: Tests<6>, Next: Build<4>, Prev: Documentation<6>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Tests<4>, Next: Build<4>, Prev: Documentation<7>, Up: Python 3 8 7 release candidate 1 -1.19.8.5 Tests +1.18.8.5 Tests .............. - - bpo-40754(1): Include ‘_testinternalcapi’ module in Windows + - bpo-41473(1): Reenable test_gdb on gdb 9.2 and newer: + ‘https://bugzilla.redhat.com/show_bug.cgi?id=1866884’ bug is fixed + in gdb 10.1. + + - bpo-42553(2): Fix ‘test_asyncio.test_call_later()’ race condition: + don’t measure asyncio performance in the ‘call_later()’ unit test. + The test failed randomly on the CI. + + - bpo-40754(3): Include ‘_testinternalcapi’ module in Windows installer for test suite - - bpo-41739(2): Fix + - bpo-41739(4): Fix test_logging.test_race_between_set_target_and_flush(): the test now waits until all threads complete to avoid leaking running threads. - - bpo-41970(3): Avoid a test failure in ‘test_lib2to3’ if the module - has already imported at the time the test executes. Patch by Pablo - Galindo. - - - bpo-41944(4): Tests for CJK codecs no longer call ‘eval()’ on + - bpo-41944(5): Tests for CJK codecs no longer call ‘eval()’ on content received via HTTP. - - bpo-41939(5): Fix test_site.test_license_exists_at_url(): call + - bpo-41939(6): Fix test_site.test_license_exists_at_url(): call ‘urllib.request.urlcleanup()’ to reset the global ‘urllib.request._opener’. Patch by Victor Stinner. - - bpo-41561(6): test_ssl: skip test_min_max_version_mismatch when TLS + - bpo-41561(7): test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available - - bpo-41602(7): Add tests for SIGINT handling in the runpy module. + - bpo-41602(8): Add tests for SIGINT handling in the runpy module. - - bpo-41306(8): Fixed a failure in ‘test_tk.test_widgets.ScaleTest’ + - bpo-41306(9): Fixed a failure in ‘test_tk.test_widgets.ScaleTest’ happening when executing the test with Tk 8.6.10. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue40754 + (1) https://bugs.python.org/issue41473 - (2) https://bugs.python.org/issue41739 + (2) https://bugs.python.org/issue42553 - (3) https://bugs.python.org/issue41970 + (3) https://bugs.python.org/issue40754 - (4) https://bugs.python.org/issue41944 + (4) https://bugs.python.org/issue41739 - (5) https://bugs.python.org/issue41939 + (5) https://bugs.python.org/issue41944 - (6) https://bugs.python.org/issue41561 + (6) https://bugs.python.org/issue41939 - (7) https://bugs.python.org/issue41602 + (7) https://bugs.python.org/issue41561 - (8) https://bugs.python.org/issue41306 + (8) https://bugs.python.org/issue41602 + + (9) https://bugs.python.org/issue41306  -File: python.info, Node: Build<4>, Next: Windows<5>, Prev: Tests<6>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Build<4>, Next: Windows<4>, Prev: Tests<4>, Up: Python 3 8 7 release candidate 1 -1.19.8.6 Build +1.18.8.6 Build .............. - bpo-42398(1): Fix a race condition in “make regen-all” when make @@ -56178,31 +52994,14 @@ File: python.info, Node: Build<4>, Next: Windows<5>, Prev: Tests<6>, Up: Pyt files are now left unchanged if the content does not change, to not change the file modification time. - - bpo-41617(2): Fix building ‘pycore_bitutils.h’ internal header on - old clang version without ‘__builtin_bswap16()’ (ex: Xcode 4.6.3 on - Mac OS X 10.7). Patch by Joshua Root and Victor Stinner. - - - bpo-38249(3): Update *note Py_UNREACHABLE: 529. to use - __builtin_unreachable() if only the compiler is able to use it. - Patch by Dong-hee Na. - - - bpo-40998(4): Addressed three compiler warnings found by undefined - behavior sanitizer (ubsan). - ---------- Footnotes ---------- (1) https://bugs.python.org/issue42398 - (2) https://bugs.python.org/issue41617 - - (3) https://bugs.python.org/issue38249 - - (4) https://bugs.python.org/issue40998 -  -File: python.info, Node: Windows<5>, Next: macOS<6>, Prev: Build<4>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: Windows<4>, Next: macOS<5>, Prev: Build<4>, Up: Python 3 8 7 release candidate 1 -1.19.8.7 Windows +1.18.8.7 Windows ................ - bpo-42120(1): Remove macro definition of ‘copysign’ (to @@ -56211,12 +53010,9 @@ File: python.info, Node: Windows<5>, Next: macOS<6>, Prev: Build<4>, Up: Pyt - bpo-38439(2): Updates the icons for IDLE in the Windows Store package. - - bpo-41744(3): Fixes automatic import of props file when using the - Nuget package. + - bpo-41557(3): Update Windows installer to use SQLite 3.33.0. - - bpo-41557(4): Update Windows installer to use SQLite 3.33.0. - - - bpo-38324(5): Avoid Unicode errors when accessing certain locale + - bpo-38324(4): Avoid Unicode errors when accessing certain locale data on Windows. ---------- Footnotes ---------- @@ -56225,55 +53021,37 @@ File: python.info, Node: Windows<5>, Next: macOS<6>, Prev: Build<4>, Up: Pyt (2) https://bugs.python.org/issue38439 - (3) https://bugs.python.org/issue41744 + (3) https://bugs.python.org/issue41557 - (4) https://bugs.python.org/issue41557 - - (5) https://bugs.python.org/issue38324 + (4) https://bugs.python.org/issue38324  -File: python.info, Node: macOS<6>, Next: IDLE<8>, Prev: Windows<5>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: macOS<5>, Next: IDLE<6>, Prev: Windows<4>, Up: Python 3 8 7 release candidate 1 -1.19.8.8 macOS +1.18.8.8 macOS .............. - - bpo-41116(1): Ensure distutils.unixxcompiler.find_library_file can - find system provided libraries on macOS 11. - - - bpo-41100(2): Add support for macOS 11 and Apple Silicon systems. - - It is now possible to build “Universal 2” binaries using - “–enable-universalsdk –with-universal-archs=universal2”. - - Binaries build on later macOS versions can be deployed back to - older versions (tested up to macOS 10.9), when using the correct - deployment target. This is tested using Xcode 11 and later. - - - bpo-38443(3): The ‘--enable-universalsdk’ and + - bpo-38443(1): The ‘--enable-universalsdk’ and ‘--with-universal-archs’ options for the configure script now check that the specified architectures can be used. - - bpo-41471(4): Ignore invalid prefix lengths in system proxy + - bpo-41471(2): Ignore invalid prefix lengths in system proxy excludes. - - bpo-41557(5): Update macOS installer to use SQLite 3.33.0. + - bpo-41557(3): Update macOS installer to use SQLite 3.33.0. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41116 + (1) https://bugs.python.org/issue38443 - (2) https://bugs.python.org/issue41100 + (2) https://bugs.python.org/issue41471 - (3) https://bugs.python.org/issue38443 - - (4) https://bugs.python.org/issue41471 - - (5) https://bugs.python.org/issue41557 + (3) https://bugs.python.org/issue41557  -File: python.info, Node: IDLE<8>, Next: C API<3>, Prev: macOS<6>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: IDLE<6>, Next: C API<3>, Prev: macOS<5>, Up: Python 3 8 7 release candidate 1 -1.19.8.9 IDLE +1.18.8.9 IDLE ............. - bpo-42426(1): Fix reporting offset of the RE error in searchengine. @@ -56286,17 +53064,12 @@ File: python.info, Node: IDLE<8>, Next: C API<3>, Prev: macOS<6>, Up: Python - bpo-41775(4): Use ‘IDLE Shell’ as shell title - - bpo-35764(5): Rewrite the Calltips doc section. - - - bpo-40181(6): In calltips, stop reminding that ‘/’ marks the end of - positional-only arguments. - - - bpo-40511(7): Typing opening and closing parentheses inside the + - bpo-40511(5): Typing opening and closing parentheses inside the parentheses of a function call will no longer cause unnecessary “flashing” off and on of an existing open call-tip, e.g. when typed in a string literal. - - bpo-38439(8): Add a 256×256 pixel IDLE icon to the Windows .ico + - bpo-38439(6): Add a 256×256 pixel IDLE icon to the Windows .ico file. Created by Andrew Clover. Remove the low-color gif variations from the .ico file. @@ -56310,325 +53083,134 @@ File: python.info, Node: IDLE<8>, Next: C API<3>, Prev: macOS<6>, Up: Python (4) https://bugs.python.org/issue41775 - (5) https://bugs.python.org/issue35764 + (5) https://bugs.python.org/issue40511 - (6) https://bugs.python.org/issue40181 - - (7) https://bugs.python.org/issue40511 - - (8) https://bugs.python.org/issue38439 + (6) https://bugs.python.org/issue38439  -File: python.info, Node: C API<3>, Prev: IDLE<8>, Up: Python 3 9 1 release candidate 1 +File: python.info, Node: C API<3>, Prev: IDLE<6>, Up: Python 3 8 7 release candidate 1 -1.19.8.10 C API +1.18.8.10 C API ............... - - bpo-42015(1): Fix potential crash in deallocating method objects - when dynamically allocated ‘PyMethodDef’’s lifetime is managed - through the ‘self’ argument of a ‘PyCFunction’. - - - bpo-41986(2): ‘Py_FileSystemDefaultEncodeErrors’ and ‘Py_UTF8Mode’ + - bpo-41986(1): ‘Py_FileSystemDefaultEncodeErrors’ and ‘Py_UTF8Mode’ are available again in limited API. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue42015 - - (2) https://bugs.python.org/issue41986 + (1) https://bugs.python.org/issue41986  -File: python.info, Node: Python 3 9 0 final, Next: Python 3 9 0 release candidate 2, Prev: Python 3 9 1 release candidate 1, Up: Changelog +File: python.info, Node: Python 3 8 6 final, Next: Python 3 8 6 release candidate 1, Prev: Python 3 8 7 release candidate 1, Up: Changelog -1.19.9 Python 3.9.0 final +1.18.9 Python 3.8.6 final ------------------------- -`Release date: 2020-10-04' - -* Menu: - -* Library: Library<8>. -* Tests: Tests<7>. -* Build: Build<5>. - - -File: python.info, Node: Library<8>, Next: Tests<7>, Up: Python 3 9 0 final - -1.19.9.1 Library -................ - - - bpo-41815(1): Fix SQLite3 segfault when backing up closed database. - Patch contributed by Peter David McCormick. - - - bpo-41662(2): No longer override exceptions raised in ‘__len__()’ - of a sequence of parameters in *note sqlite3: f2. with *note - ProgrammingError: fb6. - - - bpo-41662(3): Fixed crash when mutate list of parameters during - iteration in *note sqlite3: f2. - - - bpo-39728(4): fix default ‘_missing_’ so a duplicate *note - ValueError: 16d. is not set as the ‘__context__’ of the original - *note ValueError: 16d. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue41815 - - (2) https://bugs.python.org/issue41662 - - (3) https://bugs.python.org/issue41662 - - (4) https://bugs.python.org/issue39728 - - -File: python.info, Node: Tests<7>, Next: Build<5>, Prev: Library<8>, Up: Python 3 9 0 final - -1.19.9.2 Tests -.............. - - - bpo-41602(1): Add tests for SIGINT handling in the runpy module. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue41602 - - -File: python.info, Node: Build<5>, Prev: Tests<7>, Up: Python 3 9 0 final - -1.19.9.3 Build -.............. - - - bpo-38249(1): Update *note Py_UNREACHABLE: 529. to use - __builtin_unreachable() if only the compiler is able to use it. - Patch by Dong-hee Na. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38249 - - -File: python.info, Node: Python 3 9 0 release candidate 2, Next: Python 3 9 0 release candidate 1, Prev: Python 3 9 0 final, Up: Changelog - -1.19.10 Python 3.9.0 release candidate 2 ----------------------------------------- - -`Release date: 2020-09-16' +`Release date: 2020-09-23' * Menu: * Core and Builtins: Core and Builtins<8>. -* Library: Library<9>. -* Documentation: Documentation<7>. -* Tests: Tests<8>. -* Build: Build<6>. -* Windows: Windows<6>. -* C API: C API<4>. +* Library: Library<8>. +* Documentation: Documentation<8>. +* Tests: Tests<5>. +* Windows: Windows<5>. +* IDLE: IDLE<7>.  -File: python.info, Node: Core and Builtins<8>, Next: Library<9>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: Core and Builtins<8>, Next: Library<8>, Up: Python 3 8 6 final -1.19.10.1 Core and Builtins -........................... +1.18.9.1 Core and Builtins +.......................... - - bpo-41780(1): Fix *note __dir__(): 42d. of *note - types.GenericAlias: 27f. Patch by Batuhan Taskaya. - - - bpo-41690(2): Fix a possible stack overflow in the parser when - parsing functions and classes with a huge ammount of arguments. - Patch by Pablo Galindo. - - - bpo-41681(3): Fixes the wrong error description in the error raised - by using 2 ‘,’ in format string in f-string and *note str.format(): - 5d7. - - - bpo-41654(4): Fix a crash that occurred when destroying subclasses - of *note MemoryError: f53. Patch by Pablo Galindo. - - - bpo-41631(5): The ‘_ast’ module uses again a global state. Using a - module state per module instance is causing subtle practical - problems. For example, the Mercurial project replaces the - ‘__import__()’ function to implement lazy import, whereas Python - expected that ‘import _ast’ always return a fully initialized - ‘_ast’ module. - - - bpo-41533(6): Free the stack allocated in ‘va_build_stack’ if - ‘do_mkstack’ fails and the stack is not a ‘small_stack’. - - - bpo-41531(7): Fix a bug that was dropping keys when compiling dict - literals with more than 0xFFFF elements. Patch by Pablo Galindo. - - - bpo-41525(8): The output of ‘python --help’ contains now only ASCII + - bpo-41525(1): The output of ‘python --help’ contains now only ASCII characters. - - bpo-29590(9): Make the stack trace correct after calling *note - generator.throw(): fbb. on a generator that has yielded from a - ‘yield from’. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41780 - - (2) https://bugs.python.org/issue41690 - - (3) https://bugs.python.org/issue41681 - - (4) https://bugs.python.org/issue41654 - - (5) https://bugs.python.org/issue41631 - - (6) https://bugs.python.org/issue41533 - - (7) https://bugs.python.org/issue41531 - - (8) https://bugs.python.org/issue41525 - - (9) https://bugs.python.org/issue29590 + (1) https://bugs.python.org/issue41525  -File: python.info, Node: Library<9>, Next: Documentation<7>, Prev: Core and Builtins<8>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: Library<8>, Next: Documentation<8>, Prev: Core and Builtins<8>, Up: Python 3 8 6 final -1.19.10.2 Library -................. +1.18.9.2 Library +................ - - bpo-41517(1): fix bug allowing Enums to be extended via multiple + - bpo-41817(1): fix ‘tkinter.EventType’ Enum so all members are + strings, and none are tuples + + - bpo-41815(2): Fix SQLite3 segfault when backing up closed database. + Patch contributed by Peter David McCormick. + + - bpo-41517(3): fix bug allowing Enums to be extended via multiple inheritance - - bpo-39587(2): use the correct mix-in data type when constructing + - bpo-39587(4): use the correct mix-in data type when constructing Enums - - bpo-41789(3): Honor *note object: 3d5. overrides in ‘Enum’ class + - bpo-41789(5): Honor *note object: 29b. overrides in ‘Enum’ class creation (specifically, ‘__str__’, ‘__repr__’, ‘__format__’, and ‘__reduce_ex__’). - - bpo-39651(4): Fix a race condition in the ‘call_soon_threadsafe()’ + - bpo-39651(6): Fix a race condition in the ‘call_soon_threadsafe()’ method of ‘asyncio.ProactorEventLoop’: do nothing if the self-pipe socket has been closed. - - bpo-41720(5): Fixed ‘turtle.Vec2D.__rmul__()’ for arguments which + - bpo-41720(7): Fixed ‘turtle.Vec2D.__rmul__()’ for arguments which are not int or float. - - bpo-41696(6): Fix handling of debug mode in *note asyncio.run(): - 18d. This allows setting ‘PYTHONASYNCIODEBUG’ or ‘-X dev’ to - enable asyncio debug mode when using *note asyncio.run(): 18d. + - bpo-39728(8): fix default ‘_missing_’ so a duplicate *note + ValueError: 1e7. is not set as the ‘__context__’ of the original + *note ValueError: 1e7. - - bpo-41687(7): Fix implementation of sendfile to be compatible with - Solaris. - - - bpo-39010(8): Restarting a ‘ProactorEventLoop’ on Windows no longer - logs spurious ‘ConnectionResetErrors’. - - - bpo-41609(9): The pdb whatis command correctly reports instance - methods as ‘Method’ rather than ‘Function’. - - - bpo-32751(10): When cancelling the task due to a timeout, *note - asyncio.wait_for(): 191. will now wait until the cancellation is - complete also in the case when `timeout' is <= 0, like it does with - positive timeouts. - - - bpo-37658(11): *note asyncio.wait_for(): 191. now properly handles - races between cancellation of itself and the completion of the - wrapped awaitable. - - - bpo-40782(12): Change the method - asyncio.AbstractEventLoop.run_in_executor to not be a coroutine. - - - bpo-41520(13): Fix *note codeop: 1c. regression that prevented - turning compile warnings into errors. - - - bpo-41503(14): Fixed a race between setTarget and flush in - logging.handlers.MemoryHandler. - - - bpo-41344(15): Prevent creating ‘shared_memory.SharedMemory’ - objects with ‘size=0’. - - - bpo-41025(16): Fixed an issue preventing the C implementation of - *note zoneinfo.ZoneInfo: 17f. from being subclassed. - - - bpo-31122(17): ssl.wrap_socket() now raises ssl.SSLEOFError rather - than OSError when peer closes connection during TLS negotiation - - - bpo-33660(18): Fix pathlib.PosixPath to resolve a relative path - located on the root directory properly. + - bpo-37479(9): When ‘Enum.__str__’ is overridden in a derived class, + the override will be used by ‘Enum.__format__’ regardless of + whether mixin classes are present. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41517 + (1) https://bugs.python.org/issue41817 - (2) https://bugs.python.org/issue39587 + (2) https://bugs.python.org/issue41815 - (3) https://bugs.python.org/issue41789 + (3) https://bugs.python.org/issue41517 - (4) https://bugs.python.org/issue39651 + (4) https://bugs.python.org/issue39587 - (5) https://bugs.python.org/issue41720 + (5) https://bugs.python.org/issue41789 - (6) https://bugs.python.org/issue41696 + (6) https://bugs.python.org/issue39651 - (7) https://bugs.python.org/issue41687 + (7) https://bugs.python.org/issue41720 - (8) https://bugs.python.org/issue39010 + (8) https://bugs.python.org/issue39728 - (9) https://bugs.python.org/issue41609 - - (10) https://bugs.python.org/issue32751 - - (11) https://bugs.python.org/issue37658 - - (12) https://bugs.python.org/issue40782 - - (13) https://bugs.python.org/issue41520 - - (14) https://bugs.python.org/issue41503 - - (15) https://bugs.python.org/issue41344 - - (16) https://bugs.python.org/issue41025 - - (17) https://bugs.python.org/issue31122 - - (18) https://bugs.python.org/issue33660 + (9) https://bugs.python.org/issue37479  -File: python.info, Node: Documentation<7>, Next: Tests<8>, Prev: Library<9>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: Documentation<8>, Next: Tests<5>, Prev: Library<8>, Up: Python 3 8 6 final -1.19.10.3 Documentation -....................... +1.18.9.3 Documentation +...................... - - bpo-37149(1): Change Shipman tkinter doc link from archive.org to + - bpo-35293(1): Fix RemovedInSphinx40Warning when building the + documentation. Patch by Dong-hee Na. + + - bpo-37149(2): Change Shipman tkinter doc link from archive.org to TkDocs. (The doc has been removed from the NMT server.) The new link responds much faster and includes a short explanatory note. - - bpo-41624(2): Fix the signature of *note typing.Coroutine: fbe. - - - bpo-40204(3): Enable Sphinx 3.2 ‘c_allow_pre_v3’ option and disable - ‘c_warn_on_allowed_pre_v3’ option to make the documentation - compatible with Sphinx 2 and Sphinx 3. - - - bpo-40979(4): Refactored typing.rst, arranging more than 70 - classes, functions, and decorators into new sub-sections. - - - bpo-39883(5): Make code, examples, and recipes in the Python - documentation be licensed under the more permissive BSD0 license in - addition to the existing Python 2.0 license. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue37149 + (1) https://bugs.python.org/issue35293 - (2) https://bugs.python.org/issue41624 - - (3) https://bugs.python.org/issue40204 - - (4) https://bugs.python.org/issue40979 - - (5) https://bugs.python.org/issue39883 + (2) https://bugs.python.org/issue37149  -File: python.info, Node: Tests<8>, Next: Build<6>, Prev: Documentation<7>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: Tests<5>, Next: Windows<5>, Prev: Documentation<8>, Up: Python 3 8 6 final -1.19.10.4 Tests -............... +1.18.9.4 Tests +.............. - bpo-41731(1): Make test_cmd_line_script pass with option ‘-vv’. @@ -56637,184 +53219,234 @@ File: python.info, Node: Tests<8>, Next: Build<6>, Prev: Documentation<7>, U (1) https://bugs.python.org/issue41731  -File: python.info, Node: Build<6>, Next: Windows<6>, Prev: Tests<8>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: Windows<5>, Next: IDLE<7>, Prev: Tests<5>, Up: Python 3 8 6 final -1.19.10.5 Build -............... +1.18.9.5 Windows +................ - - bpo-41617(1): Fix ‘pycore_byteswap.h’ header file to support old - clang versions: ‘__builtin_bswap16()’ is not available in LLVM - clang 3.0. + - bpo-41744(1): Fixes automatic import of props file when using the + Nuget package. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41617 + (1) https://bugs.python.org/issue41744  -File: python.info, Node: Windows<6>, Next: C API<4>, Prev: Build<6>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: IDLE<7>, Prev: Windows<5>, Up: Python 3 8 6 final -1.19.10.6 Windows -................. +1.18.9.6 IDLE +............. - - bpo-41526(1): Fixed layout of final page of the installer by - removing the special thanks to Mark Hammond (with his permission). + - bpo-35764(1): Rewrite the Calltips doc section. + + - bpo-40181(2): In calltips, stop reminding that ‘/’ marks the end of + positional-only arguments. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41526 + (1) https://bugs.python.org/issue35764 + + (2) https://bugs.python.org/issue40181  -File: python.info, Node: C API<4>, Prev: Windows<6>, Up: Python 3 9 0 release candidate 2 +File: python.info, Node: Python 3 8 6 release candidate 1, Next: Python 3 8 5 final, Prev: Python 3 8 6 final, Up: Changelog -1.19.10.7 C API -............... - - - bpo-41524(1): Fix bug in PyOS_mystrnicmp and PyOS_mystricmp that - incremented pointers beyond the end of a string. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue41524 - - -File: python.info, Node: Python 3 9 0 release candidate 1, Next: Python 3 9 0 beta 5, Prev: Python 3 9 0 release candidate 2, Up: Changelog - -1.19.11 Python 3.9.0 release candidate 1 +1.18.10 Python 3.8.6 release candidate 1 ---------------------------------------- -`Release date: 2020-08-11' +`Release date: 2020-09-07' * Menu: * Core and Builtins: Core and Builtins<9>. -* Library: Library<10>. -* Documentation: Documentation<8>. -* Windows: Windows<7>. -* IDLE: IDLE<9>. +* Library: Library<9>. +* Documentation: Documentation<9>. +* Windows: Windows<6>. +* IDLE: IDLE<8>. +* C API: C API<4>.  -File: python.info, Node: Core and Builtins<9>, Next: Library<10>, Up: Python 3 9 0 release candidate 1 +File: python.info, Node: Core and Builtins<9>, Next: Library<9>, Up: Python 3 8 6 release candidate 1 -1.19.11.1 Core and Builtins +1.18.10.1 Core and Builtins ........................... - - bpo-38156(1): Handle interrupts that come after EOF correctly in + - bpo-41654(1): Fix a crash that occurred when destroying subclasses + of *note MemoryError: ec7. Patch by Pablo Galindo. + + - bpo-41533(2): Free the stack allocated in ‘va_build_stack’ if + ‘do_mkstack’ fails and the stack is not a ‘small_stack’. + + - bpo-38156(3): Handle interrupts that come after EOF correctly in ‘PyOS_StdioReadline’. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38156 + (1) https://bugs.python.org/issue41654 + + (2) https://bugs.python.org/issue41533 + + (3) https://bugs.python.org/issue38156  -File: python.info, Node: Library<10>, Next: Documentation<8>, Prev: Core and Builtins<9>, Up: Python 3 9 0 release candidate 1 +File: python.info, Node: Library<9>, Next: Documentation<9>, Prev: Core and Builtins<9>, Up: Python 3 8 6 release candidate 1 -1.19.11.2 Library +1.18.10.2 Library ................. - - bpo-41497(1): Fix potential UnicodeDecodeError in dis module. + - bpo-41696(1): Fix handling of debug mode in *note asyncio.run(): + 191. This allows setting ‘PYTHONASYNCIODEBUG’ or ‘-X dev’ to + enable asyncio debug mode when using *note asyncio.run(): 191. - - bpo-41490(2): Update *note ensurepip: 78. to install pip 20.2.1 and - setuptools 49.2.1. + - bpo-39010(2): Restarting a ‘ProactorEventLoop’ on Windows no longer + logs spurious ‘ConnectionResetErrors’. - - bpo-41467(3): On Windows, fix asyncio ‘recv_into()’ return value - when the socket/pipe is closed (*note BrokenPipeError: a80.): + - bpo-41609(3): The pdb whatis command correctly reports instance + methods as ‘Method’ rather than ‘Function’. + + - bpo-32751(4): When cancelling the task due to a timeout, *note + asyncio.wait_for(): 273. will now wait until the cancellation is + complete also in the case when `timeout' is <= 0, like it does with + positive timeouts. + + - bpo-37658(5): *note asyncio.wait_for(): 273. now properly handles + races between cancellation of itself and the completion of the + wrapped awaitable. + + - bpo-40782(6): Change the method + asyncio.AbstractEventLoop.run_in_executor to not be a coroutine. + + - bpo-41520(7): Fix *note codeop: 1d. regression that prevented + turning compile warnings into errors. + + - bpo-41503(8): Fixed a race between setTarget and flush in + logging.handlers.MemoryHandler. + + - bpo-41497(9): Fix potential UnicodeDecodeError in dis module. + + - bpo-41490(10): Update *note ensurepip: 7a. to install pip 20.2.1 + and setuptools 49.2.1. + + - bpo-41467(11): On Windows, fix asyncio ‘recv_into()’ return value + when the socket/pipe is closed (*note BrokenPipeError: 97e.): return ‘0’ rather than an empty byte string (‘b''’). - - bpo-41425(4): Make tkinter doc example runnable. + - bpo-41425(12): Make tkinter doc example runnable. - - bpo-41384(5): Raise TclError instead of TypeError when an unknown + - bpo-41384(13): Raise TclError instead of TypeError when an unknown option is passed to tkinter.OptionMenu. - - bpo-38731(6): Fix *note NameError: e42. in command-line interface - of *note py_compile: d7. + - bpo-38731(14): Fix *note NameError: d55. in command-line interface + of *note py_compile: d8. - - bpo-41317(7): Use add_done_callback() in asyncio.loop.sock_accept() - to unsubscribe reader early on cancellation. + - bpo-41364(15): Reduce import overhead of *note uuid: 125. - - bpo-41364(8): Reduce import overhead of *note uuid: 12d. + - bpo-41344(16): Prevent creating ‘shared_memory.SharedMemory’ + objects with ‘size=0’. - - bpo-41341(9): Recursive evaluation of *note typing.ForwardRef: fc6. - in ‘get_type_hints’. + - bpo-40726(17): Handle cases where the ‘end_lineno’ is ‘None’ on + *note ast.increment_lineno(): ec9. - - bpo-41182(10): selector: use DefaultSelector based upon - implementation + - bpo-31122(18): ssl.wrap_socket() now raises ssl.SSLEOFError rather + than OSError when peer closes connection during TLS negotiation - - bpo-40726(11): Handle cases where the ‘end_lineno’ is ‘None’ on - *note ast.increment_lineno(): fc7. + - bpo-33660(19): Fix pathlib.PosixPath to resolve a relative path + located on the root directory properly. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41497 + (1) https://bugs.python.org/issue41696 - (2) https://bugs.python.org/issue41490 + (2) https://bugs.python.org/issue39010 - (3) https://bugs.python.org/issue41467 + (3) https://bugs.python.org/issue41609 - (4) https://bugs.python.org/issue41425 + (4) https://bugs.python.org/issue32751 - (5) https://bugs.python.org/issue41384 + (5) https://bugs.python.org/issue37658 - (6) https://bugs.python.org/issue38731 + (6) https://bugs.python.org/issue40782 - (7) https://bugs.python.org/issue41317 + (7) https://bugs.python.org/issue41520 - (8) https://bugs.python.org/issue41364 + (8) https://bugs.python.org/issue41503 - (9) https://bugs.python.org/issue41341 + (9) https://bugs.python.org/issue41497 - (10) https://bugs.python.org/issue41182 + (10) https://bugs.python.org/issue41490 - (11) https://bugs.python.org/issue40726 + (11) https://bugs.python.org/issue41467 + + (12) https://bugs.python.org/issue41425 + + (13) https://bugs.python.org/issue41384 + + (14) https://bugs.python.org/issue38731 + + (15) https://bugs.python.org/issue41364 + + (16) https://bugs.python.org/issue41344 + + (17) https://bugs.python.org/issue40726 + + (18) https://bugs.python.org/issue31122 + + (19) https://bugs.python.org/issue33660  -File: python.info, Node: Documentation<8>, Next: Windows<7>, Prev: Library<10>, Up: Python 3 9 0 release candidate 1 +File: python.info, Node: Documentation<9>, Next: Windows<6>, Prev: Library<9>, Up: Python 3 8 6 release candidate 1 -1.19.11.3 Documentation +1.18.10.3 Documentation ....................... - - bpo-41045(1): Add documentation for debug feature of f-strings. + - bpo-41624(1): Fix the signature of *note typing.Coroutine: ecb. - - bpo-41314(2): Changed the release when ‘from __future__ import + - bpo-40204(2): Enable Sphinx 3.2 ‘c_allow_pre_v3’ option and disable + ‘c_warn_on_allowed_pre_v3’ option to make the documentation + compatible with Sphinx 2 and Sphinx 3. + + - bpo-41045(3): Add documentation for debug feature of f-strings. + + - bpo-41314(4): Changed the release when ‘from __future__ import annotations’ becomes the default from ‘4.0’ to ‘3.10’ (following a change in PEP 563). + - bpo-39883(5): Make code, examples, and recipes in the Python + documentation be licensed under the more permissive BSD0 license in + addition to the existing Python 2.0 license. + ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41045 + (1) https://bugs.python.org/issue41624 - (2) https://bugs.python.org/issue41314 + (2) https://bugs.python.org/issue40204 + + (3) https://bugs.python.org/issue41045 + + (4) https://bugs.python.org/issue41314 + + (5) https://bugs.python.org/issue39883  -File: python.info, Node: Windows<7>, Next: IDLE<9>, Prev: Documentation<8>, Up: Python 3 9 0 release candidate 1 +File: python.info, Node: Windows<6>, Next: IDLE<8>, Prev: Documentation<9>, Up: Python 3 8 6 release candidate 1 -1.19.11.4 Windows +1.18.10.4 Windows ................. - bpo-41492(1): Fixes the description that appears in UAC prompts. - - bpo-40948(2): Improve post-install message to direct people to the - “py” command. - - - bpo-41412(3): The installer will now fail to install on Windows 7 - and Windows 8. Further, the UCRT dependency is now always - downloaded on demand. - - - bpo-40741(4): Update Windows release to include SQLite 3.32.3. + - bpo-40741(2): Update Windows release to include SQLite 3.32.3. ---------- Footnotes ---------- (1) https://bugs.python.org/issue41492 - (2) https://bugs.python.org/issue40948 - - (3) https://bugs.python.org/issue41412 - - (4) https://bugs.python.org/issue40741 + (2) https://bugs.python.org/issue40741  -File: python.info, Node: IDLE<9>, Prev: Windows<7>, Up: Python 3 9 0 release candidate 1 +File: python.info, Node: IDLE<8>, Next: C API<4>, Prev: Windows<6>, Up: Python 3 8 6 release candidate 1 -1.19.11.5 IDLE +1.18.10.5 IDLE .............. - bpo-41468(1): Improve IDLE run crash error message (which users @@ -56831,39 +53463,46 @@ File: python.info, Node: IDLE<9>, Prev: Windows<7>, Up: Python 3 9 0 release (2) https://bugs.python.org/issue41373  -File: python.info, Node: Python 3 9 0 beta 5, Next: Python 3 9 0 beta 4, Prev: Python 3 9 0 release candidate 1, Up: Changelog +File: python.info, Node: C API<4>, Prev: IDLE<8>, Up: Python 3 8 6 release candidate 1 -1.19.12 Python 3.9.0 beta 5 ---------------------------- +1.18.10.6 C API +............... + + - bpo-41524(1): Fix bug in PyOS_mystrnicmp and PyOS_mystricmp that + incremented pointers beyond the end of a string. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue41524 + + +File: python.info, Node: Python 3 8 5 final, Next: Python 3 8 4 final, Prev: Python 3 8 6 release candidate 1, Up: Changelog + +1.18.11 Python 3.8.5 final +-------------------------- `Release date: 2020-07-20' * Menu: -* Security: Security<6>. +* Security: Security<7>. * Core and Builtins: Core and Builtins<10>. -* Library: Library<11>. -* Documentation: Documentation<9>. -* macOS: macOS<7>. -* IDLE: IDLE<10>. -* C API: C API<5>. +* Library: Library<10>. +* Documentation: Documentation<10>. +* Build: Build<5>. +* macOS: macOS<6>. +* IDLE: IDLE<9>.  -File: python.info, Node: Security<6>, Next: Core and Builtins<10>, Up: Python 3 9 0 beta 5 +File: python.info, Node: Security<7>, Next: Core and Builtins<10>, Up: Python 3 8 5 final -1.19.12.1 Security +1.18.11.1 Security .................. - bpo-41304(1): Fixes ‘python3x._pth’ being ignored on Windows, caused by the fix for bpo-29778(2) (CVE-2020-15801). - - bpo-41162(3): Audit hooks are now cleared later during finalization - to avoid missing events. - - - bpo-29778(4): Ensure ‘python3.dll’ is loaded from correct locations - when Python is embedded (CVE-2020-15523). - - - bpo-39603(5): Prevent http header injection by rejecting control + - bpo-39603(3): Prevent http header injection by rejecting control characters in http.client.putrequest(…). ---------- Footnotes ---------- @@ -56872,16 +53511,12 @@ File: python.info, Node: Security<6>, Next: Core and Builtins<10>, Up: Python (2) https://bugs.python.org/issue29778 - (3) https://bugs.python.org/issue41162 - - (4) https://bugs.python.org/issue29778 - - (5) https://bugs.python.org/issue39603 + (3) https://bugs.python.org/issue39603  -File: python.info, Node: Core and Builtins<10>, Next: Library<11>, Prev: Security<6>, Up: Python 3 9 0 beta 5 +File: python.info, Node: Core and Builtins<10>, Next: Library<10>, Prev: Security<7>, Up: Python 3 8 5 final -1.19.12.2 Core and Builtins +1.18.11.2 Core and Builtins ........................... - bpo-41295(1): Resolve a regression in CPython 3.8.4 where defining @@ -56889,50 +53524,14 @@ File: python.info, Node: Core and Builtins<10>, Next: Library<11>, Prev: Secu hierarchy chain could fail if builtins/extension types were involved in the base types. - - bpo-41247(2): Always cache the running loop holder when running - ‘asyncio.set_running_loop’. - - - bpo-41252(3): Fix incorrect refcounting in _ssl.c’s - ‘_servername_callback()’. - - - bpo-41215(4): Use non-NULL default values in the PEG parser keyword - list to overcome a bug that was preventing Python from being - properly compiled when using the XLC compiler. Patch by Pablo - Galindo. - - - bpo-41218(5): Python 3.8.3 had a regression where compiling with - ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list - comprehension with CO_COROUTINE. Now only list comprehension making - use of async/await will tagged as so. - - - bpo-41175(6): Guard against a NULL pointer dereference within - bytearrayobject triggered by the ‘bytearray() + bytearray()’ - operation. - - - bpo-39960(7): The “hackcheck” that prevents sneaking around a - type’s __setattr__() by calling the superclass method was rewritten - to allow C implemented heap types. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue41295 - (2) https://bugs.python.org/issue41247 - - (3) https://bugs.python.org/issue41252 - - (4) https://bugs.python.org/issue41215 - - (5) https://bugs.python.org/issue41218 - - (6) https://bugs.python.org/issue41175 - - (7) https://bugs.python.org/issue39960 -  -File: python.info, Node: Library<11>, Next: Documentation<9>, Prev: Core and Builtins<10>, Up: Python 3 9 0 beta 5 +File: python.info, Node: Library<10>, Next: Documentation<10>, Prev: Core and Builtins<10>, Up: Python 3 8 5 final -1.19.12.3 Library +1.18.11.3 Library ................. - bpo-41288(1): Unpickling invalid NEWOBJ_EX opcode with the C @@ -56941,42 +53540,16 @@ File: python.info, Node: Library<11>, Next: Documentation<9>, Prev: Core and - bpo-39017(2): Avoid infinite loop when reading specially crafted TAR files using the tarfile module (CVE-2019-20907). - - bpo-41235(3): Fix the error handling in *note - ssl.SSLContext.load_dh_params(): b6c. - - - bpo-41207(4): In distutils.spawn, restore expectation that - DistutilsExecError is raised when the command is not found. - - - bpo-39168(5): Remove the ‘__new__’ method of *note typing.Generic: - fcf. - - - bpo-41194(6): Fix a crash in the ‘_ast’ module: it can no longer be - loaded more than once. It now uses a global state rather than a - module state. - - - bpo-39384(7): Fixed email.contentmanager to allow set_content() to - set a null string. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue41288 (2) https://bugs.python.org/issue39017 - (3) https://bugs.python.org/issue41235 - - (4) https://bugs.python.org/issue41207 - - (5) https://bugs.python.org/issue39168 - - (6) https://bugs.python.org/issue41194 - - (7) https://bugs.python.org/issue39384 -  -File: python.info, Node: Documentation<9>, Next: macOS<7>, Prev: Library<11>, Up: Python 3 9 0 beta 5 +File: python.info, Node: Documentation<10>, Next: Build<5>, Prev: Library<10>, Up: Python 3 8 5 final -1.19.12.4 Documentation +1.18.11.4 Documentation ....................... - bpo-37703(1): Updated Documentation to comprehensively elaborate on @@ -56987,9 +53560,22 @@ File: python.info, Node: Documentation<9>, Next: macOS<7>, Prev: Library<11>, (1) https://bugs.python.org/issue37703  -File: python.info, Node: macOS<7>, Next: IDLE<10>, Prev: Documentation<9>, Up: Python 3 9 0 beta 5 +File: python.info, Node: Build<5>, Next: macOS<6>, Prev: Documentation<10>, Up: Python 3 8 5 final -1.19.12.5 macOS +1.18.11.5 Build +............... + + - bpo-41302(1): Enable building Python 3.8 with libmpdec-2.5.0 to + ease maintenance for Linux distributions. Patch by Felix Yan. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue41302 + + +File: python.info, Node: macOS<6>, Next: IDLE<9>, Prev: Build<5>, Up: Python 3 8 5 final + +1.18.11.6 macOS ............... - bpo-40741(1): Update macOS installer to use SQLite 3.32.3. @@ -56999,62 +53585,160 @@ File: python.info, Node: macOS<7>, Next: IDLE<10>, Prev: Documentation<9>, U (1) https://bugs.python.org/issue40741  -File: python.info, Node: IDLE<10>, Next: C API<5>, Prev: macOS<7>, Up: Python 3 9 0 beta 5 +File: python.info, Node: IDLE<9>, Prev: macOS<6>, Up: Python 3 8 5 final -1.19.12.6 IDLE +1.18.11.7 IDLE .............. - bpo-41300(1): Save files with non-ascii chars. Fix regression released in 3.9.0b4 and 3.8.4. - - bpo-37765(2): Add keywords to module name completion list. Rewrite - Completions section of IDLE doc. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue41300 - (2) https://bugs.python.org/issue37765 -  -File: python.info, Node: C API<5>, Prev: IDLE<10>, Up: Python 3 9 0 beta 5 +File: python.info, Node: Python 3 8 4 final, Next: Python 3 8 4 release candidate 1, Prev: Python 3 8 5 final, Up: Changelog -1.19.12.7 C API -............... +1.18.12 Python 3.8.4 final +-------------------------- - - bpo-40170(1): Revert *note PyType_HasFeature(): 26b. change: it - reads again directly the *note PyTypeObject.tp_flags: 26d. member - when the limited C API is not used, rather than always calling - *note PyType_GetFlags(): 26c. which hides implementation details. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40170 - - -File: python.info, Node: Python 3 9 0 beta 4, Next: Python 3 9 0 beta 3, Prev: Python 3 9 0 beta 5, Up: Changelog - -1.19.13 Python 3.9.0 beta 4 ---------------------------- - -`Release date: 2020-07-02' +`Release date: 2020-07-13' * Menu: -* Security: Security<7>. +* Security: Security<8>. * Core and Builtins: Core and Builtins<11>. -* Library: Library<12>. -* Tests: Tests<9>. -* Build: Build<7>. -* Windows: Windows<8>. -* macOS: macOS<8>. -* IDLE: IDLE<11>. -* C API: C API<6>. +* Library: Library<11>. +* IDLE: IDLE<10>.  -File: python.info, Node: Security<7>, Next: Core and Builtins<11>, Up: Python 3 9 0 beta 4 +File: python.info, Node: Security<8>, Next: Core and Builtins<11>, Up: Python 3 8 4 final -1.19.13.1 Security +1.18.12.1 Security +.................. + + - bpo-41162(1): Audit hooks are now cleared later during finalization + to avoid missing events. + + - bpo-29778(2): Ensure ‘python3.dll’ is loaded from correct locations + when Python is embedded (CVE-2020-15523). + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue41162 + + (2) https://bugs.python.org/issue29778 + + +File: python.info, Node: Core and Builtins<11>, Next: Library<11>, Prev: Security<8>, Up: Python 3 8 4 final + +1.18.12.2 Core and Builtins +........................... + + - bpo-41247(1): Always cache the running loop holder when running + ‘asyncio.set_running_loop’. + + - bpo-41252(2): Fix incorrect refcounting in _ssl.c’s + ‘_servername_callback()’. + + - bpo-41218(3): Python 3.8.3 had a regression where compiling with + ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list + comprehension with CO_COROUTINE. Now only list comprehension making + use of async/await will tagged as so. + + - bpo-41175(4): Guard against a NULL pointer dereference within + bytearrayobject triggered by the ‘bytearray() + bytearray()’ + operation. + + - bpo-39960(5): The “hackcheck” that prevents sneaking around a + type’s __setattr__() by calling the superclass method was rewritten + to allow C implemented heap types. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue41247 + + (2) https://bugs.python.org/issue41252 + + (3) https://bugs.python.org/issue41218 + + (4) https://bugs.python.org/issue41175 + + (5) https://bugs.python.org/issue39960 + + +File: python.info, Node: Library<11>, Next: IDLE<10>, Prev: Core and Builtins<11>, Up: Python 3 8 4 final + +1.18.12.3 Library +................. + + - bpo-41235(1): Fix the error handling in *note + ssl.SSLContext.load_dh_params(): a73. + + - bpo-41193(2): The ‘write_history()’ atexit function of the readline + completer now ignores any *note OSError: 1bf. to ignore error if + the filesystem is read-only, instead of only ignoring *note + FileNotFoundError: 7a5. and *note PermissionError: 5ec. + + - bpo-41043(3): Fixed the use of *note glob(): 5b3. in the stdlib: + literal part of the path is now always correctly escaped. + + - bpo-39384(4): Fixed email.contentmanager to allow set_content() to + set a null string. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue41235 + + (2) https://bugs.python.org/issue41193 + + (3) https://bugs.python.org/issue41043 + + (4) https://bugs.python.org/issue39384 + + +File: python.info, Node: IDLE<10>, Prev: Library<11>, Up: Python 3 8 4 final + +1.18.12.4 IDLE +.............. + + - bpo-37765(1): Add keywords to module name completion list. Rewrite + Completions section of IDLE doc. + + - bpo-41152(2): The encoding of ‘stdin’, ‘stdout’ and ‘stderr’ in + IDLE is now always UTF-8. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37765 + + (2) https://bugs.python.org/issue41152 + + +File: python.info, Node: Python 3 8 4 release candidate 1, Next: Python 3 8 3 final, Prev: Python 3 8 4 final, Up: Changelog + +1.18.13 Python 3.8.4 release candidate 1 +---------------------------------------- + +`Release date: 2020-06-29' + +* Menu: + +* Security: Security<9>. +* Core and Builtins: Core and Builtins<12>. +* Library: Library<12>. +* Tests: Tests<6>. +* Build: Build<6>. +* Windows: Windows<7>. +* macOS: macOS<7>. +* IDLE: IDLE<11>. +* Tools/Demos: Tools/Demos<3>. + + +File: python.info, Node: Security<9>, Next: Core and Builtins<12>, Up: Python 3 8 4 release candidate 1 + +1.18.13.1 Security .................. - bpo-41004(1): The __hash__() methods of ipaddress.IPv4Interface and @@ -57063,317 +53747,330 @@ File: python.info, Node: Security<7>, Next: Core and Builtins<11>, Up: Python collisions. The fix uses hash() to generate hash values for the tuple of (address, mask length, network address). + - bpo-39073(2): Disallow CR or LF in email.headerregistry.Address + arguments to guard against header injection attacks. + ---------- Footnotes ---------- (1) https://bugs.python.org/issue41004 - -File: python.info, Node: Core and Builtins<11>, Next: Library<12>, Prev: Security<7>, Up: Python 3 9 0 beta 4 + (2) https://bugs.python.org/issue39073 -1.19.13.2 Core and Builtins + +File: python.info, Node: Core and Builtins<12>, Next: Library<12>, Prev: Security<9>, Up: Python 3 8 4 release candidate 1 + +1.18.13.2 Core and Builtins ........................... - bpo-41094(1): Fix decoding errors with audit when open files with non-ASCII names on non-UTF-8 locale. - - bpo-41084(2): Prefix the error message with ‘f-string: ‘, when - parsing an f-string expression which throws a *note SyntaxError: - 55c. - - - bpo-41076(3): Pre-feed the parser with the location of the f-string - expression, not the f-string itself, which allows us to skip the - shifting of the AST node locations after the parsing is completed. - - - bpo-40939(4): Deprecate ‘PyNode_Compile()’. - - - bpo-41056(5): Fixes a reference to deallocated stack space during + - bpo-41056(2): Fixes a reference to deallocated stack space during startup when constructing sys.path involving a relative symlink when code was supplied via -c. (discovered via Coverity) - - bpo-41061(6): Fix incorrect expressions and asserts in hashtable - code and tests. - - - bpo-41052(7): Opt out serialization/deserialization for - _random.Random - - - bpo-40939(8): Deprecate *note PyParser_SimpleParseStringFlags(): - 1ff, *note PyParser_SimpleParseStringFlagsFilename(): 200. and - *note PyParser_SimpleParseFileFlags(): 201. - - - bpo-35975(9): Stefan Behnel reported that cf_feature_version is + - bpo-35975(3): Stefan Behnel reported that cf_feature_version is used even when PyCF_ONLY_AST is not set. This is against the intention and against the documented behavior, so it’s been fixed. - - bpo-40985(10): Fix a bug that caused the *note SyntaxError: 55c. - text to be empty when a file ends with a line ending in a line - continuation character (i.e. backslash). The error text should - contain the text of the last line. - - - bpo-40958(11): Fix a possible buffer overflow in the PEG parser - when gathering information for emitting syntax errors. Patch by - Pablo Galindo. - - - bpo-40957(12): Fix refleak in _Py_fopen_obj() when PySys_Audit() + - bpo-40957(4): Fix refleak in _Py_fopen_obj() when PySys_Audit() fails - - bpo-40947(13): The Python *note Path Configuration: fd7. now takes - *note PyConfig.platlibdir: fd8. in account. + - bpo-40870(5): Raise *note ValueError: 1e7. when validating custom + AST’s where the constants ‘True’, ‘False’ and ‘None’ are used + within a ‘ast.Name’ node. - - bpo-40847(14): Fix a bug where a line with only a line continuation - character is not considered a blank line at tokenizer level. In - such cases, more than a single ‘NEWLINE’ token was emitted. The - old parser was working around the issue, but the new parser threw a - *note SyntaxError: 55c. for valid input due to this. For example, - an empty line following a line continuation character was - interpreted as a *note SyntaxError: 55c. + - bpo-40826(6): Fix GIL usage in ‘PyOS_Readline()’: lock the GIL to + set an exception and pass the Python thread state when checking if + there is a pending signal. - - bpo-40824(15): Unexpected errors in calling the ‘__iter__’ method - are no longer masked by ‘TypeError’ in the *note in: 179. operator - and functions *note contains(): 17a, *note indexOf(): 17b. and - *note countOf(): 17c. of the *note operator: c2. module. + - bpo-40824(7): Unexpected errors in calling the ‘__iter__’ method + are no longer masked by ‘TypeError’ in the *note in: 788. operator + and functions *note contains(): edf, *note indexOf(): ee0. and + *note countOf(): ee1. of the *note operator: c3. module. - - bpo-19569(16): Add the private macros ‘_Py_COMP_DIAG_PUSH’, - ‘_Py_COMP_DIAG_IGNORE_DEPR_DECLS’, and ‘_Py_COMP_DIAG_POP’. + - bpo-40663(8): Correctly generate annotations where parentheses are + omitted but required (e.g: ‘Type[(str, int, *other))]’. ---------- Footnotes ---------- (1) https://bugs.python.org/issue41094 - (2) https://bugs.python.org/issue41084 + (2) https://bugs.python.org/issue41056 - (3) https://bugs.python.org/issue41076 + (3) https://bugs.python.org/issue35975 - (4) https://bugs.python.org/issue40939 + (4) https://bugs.python.org/issue40957 - (5) https://bugs.python.org/issue41056 + (5) https://bugs.python.org/issue40870 - (6) https://bugs.python.org/issue41061 + (6) https://bugs.python.org/issue40826 - (7) https://bugs.python.org/issue41052 + (7) https://bugs.python.org/issue40824 - (8) https://bugs.python.org/issue40939 - - (9) https://bugs.python.org/issue35975 - - (10) https://bugs.python.org/issue40985 - - (11) https://bugs.python.org/issue40958 - - (12) https://bugs.python.org/issue40957 - - (13) https://bugs.python.org/issue40947 - - (14) https://bugs.python.org/issue40847 - - (15) https://bugs.python.org/issue40824 - - (16) https://bugs.python.org/issue19569 + (8) https://bugs.python.org/issue40663  -File: python.info, Node: Library<12>, Next: Tests<9>, Prev: Core and Builtins<11>, Up: Python 3 9 0 beta 4 +File: python.info, Node: Library<12>, Next: Tests<6>, Prev: Core and Builtins<12>, Up: Python 3 8 4 release candidate 1 -1.19.13.3 Library +1.18.13.3 Library ................. - - bpo-41193(1): The ‘write_history()’ atexit function of the readline - completer now ignores any *note OSError: 307. to ignore error if - the filesystem is read-only, instead of only ignoring *note - FileNotFoundError: 8af. and *note PermissionError: 6f8. - - - bpo-41161(2): The decimal module now requires libmpdec-2.5.0. - Users of –with-system-libmpdec should update their system library. - - - bpo-40874(3): The decimal module now requires libmpdec-2.5.0. - - - bpo-41138(4): Fixed the *note trace: 11b. module CLI for Python + - bpo-41138(1): Fixed the *note trace: 113. module CLI for Python source files with non-UTF-8 encoding. - - bpo-31938(5): Fix default-value signatures of several functions in - the *note select: e5. module - by Anthony Sottile. + - bpo-31938(2): Fix default-value signatures of several functions in + the *note select: e6. module - by Anthony Sottile. - - bpo-41068(6): Fixed reading files with non-ASCII names from ZIP + - bpo-41068(3): Fixed reading files with non-ASCII names from ZIP archive directly after writing them. - - bpo-41058(7): ‘pdb.find_function()’ now correctly determines the + - bpo-41058(4): ‘pdb.find_function()’ now correctly determines the source file encoding. - - bpo-41056(8): Fix a NULL pointer dereference within the ssl module + - bpo-41056(5): Fix a NULL pointer dereference within the ssl module during a MemoryError in the keylog callback. (discovered by Coverity) - - bpo-41056(9): Fixed an instance where a MemoryError within the - zoneinfo module might not be reported or not reported at its - source. (found by Coverity) - - - bpo-41048(10): *note mimetypes.read_mime_types(): fda. function + - bpo-41048(6): *note mimetypes.read_mime_types(): ee3. function reads the rule file using UTF-8 encoding, not the locale encoding. Patch by Srinivas Reddy Thatiparthy. - - bpo-41043(11): Fixed the use of *note glob(): 6bf. in the stdlib: - literal part of the path is now always correctly escaped. - - - bpo-40448(12): *note ensurepip: 78. now disables the use of ‘pip’ + - bpo-40448(7): *note ensurepip: 7a. now disables the use of ‘pip’ cache when installing the bundled versions of ‘pip’ and ‘setuptools’. Patch by Krzysztof Konopko. - - bpo-40967(13): Removed ‘asyncio.Task.current_task()’ and - ‘asyncio.Task.all_tasks()’. Patch contributed by Rémi Lapeyre. - - - bpo-40955(14): Fix a minor memory leak in *note subprocess: f9. - module when extra_groups was specified. - - - bpo-40855(15): The standard deviation and variance functions in the + - bpo-40855(8): The standard deviation and variance functions in the statistics module were ignoring their mu and xbar arguments. - - bpo-40924(16): Removed support for loaders implementing .files and - supplying TraversableResources. + - bpo-40807(9): Stop codeop._maybe_compile, used by + code.InteractiveInterpreter (and IDLE). from from emitting each + warning three times. - - bpo-40939(17): Use the new PEG parser when generating the stdlib - *note keyword: a6. module. - - - bpo-40834(18): Fix truncate when sending str object + - bpo-40834(10): Fix truncate when sending str object with_xxsubinterpreters.channel_send. - - bpo-26407(19): Unexpected errors in calling the ‘__iter__’ method - are no longer masked by ‘TypeError’ in *note csv.reader(): fdb, - ‘csv.writer.writerow()’ and ‘csv.writer.writerows()’. - - - bpo-38488(20): Update ensurepip to install pip 20.1.1 and + - bpo-38488(11): Update ensurepip to install pip 20.1.1 and setuptools 47.1.0. - - bpo-36543(21): Restored the deprecated ‘xml.etree.cElementTree’ - module. + - bpo-40767(12): *note webbrowser: 12a. now properly finds the + default browser in pure Wayland systems by checking the + WAYLAND_DISPLAY environment variable. Patch contributed by Jérémy + Attali. - - bpo-34226(22): Fix *note cgi.parse_multipart: 285. without + - bpo-40795(13): *note ctypes: 2b. module: If ctypes fails to convert + the result of a callback or if a ctypes callback function raises an + exception, sys.unraisablehook is now called with an exception set. + Previously, the error was logged into stderr by *note + PyErr_Print(): ee4. + + - bpo-30008(14): Fix *note ssl: f4. code to be compatible with + OpenSSL 1.1.x builds that use ‘no-deprecated’ and ‘--api=1.1.0’. + + - bpo-40614(15): *note ast.parse(): 18d. will not parse self + documenting expressions in f-strings when passed ‘feature_version’ + is less than ‘(3, 8)’. + + - bpo-40626(16): Add h5 file extension as MIME Type + application/x-hdf5, as per HDF Group recommendation for HDF5 + formatted data files. Patch contributed by Mark Schwab. + + - bpo-25872(17): *note linecache: a9. could crash with a *note + KeyError: 2b2. when accessed from multiple threads. Fix by Michael + Graczyk. + + - bpo-40597(18): If text content lines are longer than + policy.max_line_length, always use a content-encoding to make sure + they are wrapped. + + - bpo-40515(19): The *note ssl: f4. and *note hashlib: 8d. modules + now actively check that OpenSSL is build with thread support. + Python 3.7.0 made thread support mandatory and no longer works + safely with a no-thread builds. + + - bpo-13097(20): ‘ctypes’ now raises an ‘ArgumentError’ when a + callback is invoked with more than 1024 arguments. + + - bpo-40457(21): The ssl module now support OpenSSL builds without + TLS 1.0 and 1.1 methods. + + - bpo-39830(22): Add *note zipfile.Path: ee5. to ‘__all__’ in the + *note zipfile: 143. module. + + - bpo-40025(23): Raise TypeError when _generate_next_value_ is + defined after members. Patch by Ethan Onstott. + + - bpo-39244(24): Fixed + ‘multiprocessing.context.get_all_start_methods’ to properly return + the default method first on macOS. + + - bpo-39040(25): Fix parsing of invalid mime headers parameters by + collapsing whitespace between encoded words in a bare-quote-string. + + - bpo-35714(26): *note struct.error: c8b. is now raised if there is a + null character in a *note struct: f9. format string. + + - bpo-36290(27): AST nodes are now raising *note TypeError: 17f. on + conflicting keyword arguments. Patch contributed by Rémi Lapeyre. + + - bpo-29620(28): *note assertWarns(): a9d. no longer raises a + ‘RuntimeException’ when accessing a module’s ‘__warningregistry__’ + causes importation of a new module, or when a new module is + imported in another thread. Patch by Kernc. + + - bpo-34226(29): Fix *note cgi.parse_multipart: 2da. without content_length. Patch by Roger Duran ---------- Footnotes ---------- - (1) https://bugs.python.org/issue41193 + (1) https://bugs.python.org/issue41138 - (2) https://bugs.python.org/issue41161 + (2) https://bugs.python.org/issue31938 - (3) https://bugs.python.org/issue40874 + (3) https://bugs.python.org/issue41068 - (4) https://bugs.python.org/issue41138 + (4) https://bugs.python.org/issue41058 - (5) https://bugs.python.org/issue31938 + (5) https://bugs.python.org/issue41056 - (6) https://bugs.python.org/issue41068 + (6) https://bugs.python.org/issue41048 - (7) https://bugs.python.org/issue41058 + (7) https://bugs.python.org/issue40448 - (8) https://bugs.python.org/issue41056 + (8) https://bugs.python.org/issue40855 - (9) https://bugs.python.org/issue41056 + (9) https://bugs.python.org/issue40807 - (10) https://bugs.python.org/issue41048 + (10) https://bugs.python.org/issue40834 - (11) https://bugs.python.org/issue41043 + (11) https://bugs.python.org/issue38488 - (12) https://bugs.python.org/issue40448 + (12) https://bugs.python.org/issue40767 - (13) https://bugs.python.org/issue40967 + (13) https://bugs.python.org/issue40795 - (14) https://bugs.python.org/issue40955 + (14) https://bugs.python.org/issue30008 - (15) https://bugs.python.org/issue40855 + (15) https://bugs.python.org/issue40614 - (16) https://bugs.python.org/issue40924 + (16) https://bugs.python.org/issue40626 - (17) https://bugs.python.org/issue40939 + (17) https://bugs.python.org/issue25872 - (18) https://bugs.python.org/issue40834 + (18) https://bugs.python.org/issue40597 - (19) https://bugs.python.org/issue26407 + (19) https://bugs.python.org/issue40515 - (20) https://bugs.python.org/issue38488 + (20) https://bugs.python.org/issue13097 - (21) https://bugs.python.org/issue36543 + (21) https://bugs.python.org/issue40457 - (22) https://bugs.python.org/issue34226 + (22) https://bugs.python.org/issue39830 + + (23) https://bugs.python.org/issue40025 + + (24) https://bugs.python.org/issue39244 + + (25) https://bugs.python.org/issue39040 + + (26) https://bugs.python.org/issue35714 + + (27) https://bugs.python.org/issue36290 + + (28) https://bugs.python.org/issue29620 + + (29) https://bugs.python.org/issue34226  -File: python.info, Node: Tests<9>, Next: Build<7>, Prev: Library<12>, Up: Python 3 9 0 beta 4 +File: python.info, Node: Tests<6>, Next: Build<6>, Prev: Library<12>, Up: Python 3 8 4 release candidate 1 -1.19.13.4 Tests +1.18.13.4 Tests ............... - bpo-41085(1): Fix integer overflow in the *note - array.array.index(): fdd. method on 64-bit Windows for index larger + array.array.index(): ee7. method on 64-bit Windows for index larger than ‘2**31’. - - bpo-41069(2): *note test.support.TESTFN: fde. and the current - directory for tests when run via ‘test.regrtest’ contain now - non-ascii characters if possible. - - - bpo-38377(3): On Linux, skip tests using multiprocessing if the + - bpo-38377(2): On Linux, skip tests using multiprocessing if the current user cannot create a file in ‘/dev/shm/’ directory. Add the ‘skip_if_broken_multiprocessing_synchronize()’ function to the - *note test.support: 106. module. + *note test.support: 107. module. - - bpo-41009(4): Fix use of + - bpo-41009(3): Fix use of ‘support.require_{linux|mac|freebsd}_version()’ decorators as class decorator. - - bpo-41003(5): Fix ‘test_copyreg’ when ‘numpy’ is installed: + - bpo-41003(4): Fix ‘test_copyreg’ when ‘numpy’ is installed: ‘test.pickletester’ now saves/restores warnings filters when importing ‘numpy’, to ignore filters installed by ‘numpy’. - - bpo-40964(6): Disable remote *note imaplib: 97. tests, host + - bpo-40964(5): Disable remote *note imaplib: 98. tests, host cyrus.andrew.cmu.edu is blocking incoming connections. - - bpo-40927(7): Fix test_binhex when run twice: it now uses - import_fresh_module() to ensure that it raises DeprecationWarning - each time. + - bpo-40055(6): distutils.tests now saves/restores warnings filters + to leave them unchanged. Importing tests imports docutils which + imports pkg_resources which adds a warnings filter. - - bpo-34401(8): Make test_gdb properly run on HP-UX. Patch by Michael + - bpo-34401(7): Make test_gdb properly run on HP-UX. Patch by Michael Osipov. ---------- Footnotes ---------- (1) https://bugs.python.org/issue41085 - (2) https://bugs.python.org/issue41069 + (2) https://bugs.python.org/issue38377 - (3) https://bugs.python.org/issue38377 + (3) https://bugs.python.org/issue41009 - (4) https://bugs.python.org/issue41009 + (4) https://bugs.python.org/issue41003 - (5) https://bugs.python.org/issue41003 + (5) https://bugs.python.org/issue40964 - (6) https://bugs.python.org/issue40964 + (6) https://bugs.python.org/issue40055 - (7) https://bugs.python.org/issue40927 - - (8) https://bugs.python.org/issue34401 + (7) https://bugs.python.org/issue34401  -File: python.info, Node: Build<7>, Next: Windows<8>, Prev: Tests<9>, Up: Python 3 9 0 beta 4 +File: python.info, Node: Build<6>, Next: Windows<7>, Prev: Tests<6>, Up: Python 3 8 4 release candidate 1 -1.19.13.5 Build +1.18.13.5 Build ............... - bpo-40204(1): Pin Sphinx version to 2.3.1 in ‘Doc/Makefile’. + - bpo-40653(2): Move _dirnameW out of HAVE_SYMLINK to fix a potential + compiling issue. + ---------- Footnotes ---------- (1) https://bugs.python.org/issue40204 - -File: python.info, Node: Windows<8>, Next: macOS<8>, Prev: Build<7>, Up: Python 3 9 0 beta 4 + (2) https://bugs.python.org/issue40653 -1.19.13.6 Windows + +File: python.info, Node: Windows<7>, Next: macOS<7>, Prev: Build<6>, Up: Python 3 8 4 release candidate 1 + +1.18.13.6 Windows ................. - bpo-41074(1): Fixed support of non-ASCII names in functions *note - msilib.OpenDatabase(): fe1. and *note msilib.init_database(): fe2. - and non-ASCII SQL in method *note msilib.Database.OpenView(): fe3. + msilib.OpenDatabase(): eea. and *note msilib.init_database(): eeb. + and non-ASCII SQL in method *note msilib.Database.OpenView(): eec. - bpo-40164(2): Updates Windows OpenSSL to 1.1.1g - - bpo-37556(3): Extend py.exe help to mention overrides via venv, - shebang, environmental variables & ini files. + - bpo-39631(3): Changes the registered MIME type for ‘.py’ files on + Windows to ‘text/x-python’ instead of ‘text/plain’. + + - bpo-40677(4): Manually define IO_REPARSE_TAG_APPEXECLINK in case + some old Windows SDK doesn’t have it. + + - bpo-40650(5): Include winsock2.h in pytime.c for timeval. + + - bpo-39148(6): Add IPv6 support to *note asyncio: a. datagram + endpoints in ProactorEventLoop. Change the raised exception for + unknown address families to ValueError as it’s not coming from + Windows API. ---------- Footnotes ---------- @@ -57381,12 +54078,18 @@ File: python.info, Node: Windows<8>, Next: macOS<8>, Prev: Build<7>, Up: Pyt (2) https://bugs.python.org/issue40164 - (3) https://bugs.python.org/issue37556 + (3) https://bugs.python.org/issue39631 + + (4) https://bugs.python.org/issue40677 + + (5) https://bugs.python.org/issue40650 + + (6) https://bugs.python.org/issue39148  -File: python.info, Node: macOS<8>, Next: IDLE<11>, Prev: Windows<8>, Up: Python 3 9 0 beta 4 +File: python.info, Node: macOS<7>, Next: IDLE<11>, Prev: Windows<7>, Up: Python 3 8 4 release candidate 1 -1.19.13.7 macOS +1.18.13.7 macOS ............... - bpo-39580(1): Avoid opening Finder window if running installer from @@ -57402,6 +54105,8 @@ File: python.info, Node: macOS<8>, Next: IDLE<11>, Prev: Windows<8>, Up: Pyt - bpo-41005(3): fixed an XDG settings issue not allowing macos to open browser in webbrowser.py + - bpo-40741(4): Update macOS installer to use SQLite 3.32.2. + ---------- Footnotes ---------- (1) https://bugs.python.org/issue39580 @@ -57410,1009 +54115,40 @@ File: python.info, Node: macOS<8>, Next: IDLE<11>, Prev: Windows<8>, Up: Pyt (3) https://bugs.python.org/issue41005 - -File: python.info, Node: IDLE<11>, Next: C API<6>, Prev: macOS<8>, Up: Python 3 9 0 beta 4 + (4) https://bugs.python.org/issue40741 -1.19.13.8 IDLE + +File: python.info, Node: IDLE<11>, Next: Tools/Demos<3>, Prev: macOS<7>, Up: Python 3 8 4 release candidate 1 + +1.18.13.8 IDLE .............. - - bpo-41152(1): The encoding of ‘stdin’, ‘stdout’ and ‘stderr’ in - IDLE is now always UTF-8. - - - bpo-41144(2): Make Open Module open a special module such as + - bpo-41144(1): Make Open Module open a special module such as os.path. - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue41152 - - (2) https://bugs.python.org/issue41144 - - -File: python.info, Node: C API<6>, Prev: IDLE<11>, Up: Python 3 9 0 beta 4 - -1.19.13.9 C API -............... - - - bpo-36346(1): Mark ‘Py_UNICODE_COPY’, ‘Py_UNICODE_FILL’, - ‘PyUnicode_WSTR_LENGTH’, ‘PyUnicode_FromUnicode’, - ‘PyUnicode_AsUnicode’, ‘_PyUnicode_AsUnicode’, and - ‘PyUnicode_AsUnicodeAndSize’ as deprecated in C. Remove - ‘Py_UNICODE_MATCH’ which was deprecated and broken since Python - 3.3. - - - bpo-36020(2): On Windows, ‘#include "pyerrors.h"’ no longer defines - ‘snprintf’ and ‘vsnprintf’ macros. - - - bpo-40703(3): The PyType_FromSpec*() functions no longer overwrite - the type’s “__module__” attribute if it is set via “Py_tp_members” - or “Py_tp_getset”. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue36346 - - (2) https://bugs.python.org/issue36020 - - (3) https://bugs.python.org/issue40703 - - -File: python.info, Node: Python 3 9 0 beta 3, Next: Python 3 9 0 beta 2, Prev: Python 3 9 0 beta 4, Up: Changelog - -1.19.14 Python 3.9.0 beta 3 ---------------------------- - -`Release date: 2020-06-09' - -* Menu: - -* Library: Library<13>. -* Build: Build<8>. - - -File: python.info, Node: Library<13>, Next: Build<8>, Up: Python 3 9 0 beta 3 - -1.19.14.1 Library -................. - - - bpo-40924(1): *note importlib.resources: 9e.: Reverted - ‘TraversableResources’ implementations from the built-in loaders - (SourceFileLoader and ZipImporter) as it was an incompatible change - introduced in 3.9.0 beta 2 causing through a chain of events for - root TLS certificates to be missing. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40924 - - -File: python.info, Node: Build<8>, Prev: Library<13>, Up: Python 3 9 0 beta 3 - -1.19.14.2 Build -............... - - - bpo-40684(1): ‘make install’ now uses the ‘PLATLIBDIR’ variable for - the destination ‘lib-dynload/’ directory when ‘./configure - --with-platlibdir’ is used. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40684 - - -File: python.info, Node: Python 3 9 0 beta 2, Next: Python 3 9 0 beta 1, Prev: Python 3 9 0 beta 3, Up: Changelog - -1.19.15 Python 3.9.0 beta 2 ---------------------------- - -`Release date: 2020-06-08' - -* Menu: - -* Core and Builtins: Core and Builtins<12>. -* Library: Library<14>. -* Tests: Tests<10>. -* Build: Build<9>. -* Windows: Windows<9>. -* macOS: macOS<9>. -* IDLE: IDLE<12>. -* C API: C API<7>. - - -File: python.info, Node: Core and Builtins<12>, Next: Library<14>, Up: Python 3 9 0 beta 2 - -1.19.15.1 Core and Builtins -........................... - - - bpo-40904(1): Fix possible segfault in the new PEG parser when - parsing f-string containing yield statements with no value - (‘f"{yield}"’). Patch by Pablo Galindo - - - bpo-40903(2): Fixed a possible segfault in the new PEG parser when - producing error messages for invalid assignments of the form - ‘p=p=’. Patch by Pablo Galindo - - - bpo-40880(3): Fix invalid memory read in the new parser when - checking newlines in string literals. Patch by Pablo Galindo. - - - bpo-40883(4): Fix memory leak in when parsing f-strings in the new - parser. Patch by Pablo Galindo - - - bpo-40870(5): Raise *note ValueError: 16d. when validating custom - AST’s where the constants ‘True’, ‘False’ and ‘None’ are used - within a *note ast.Name: fec. node. - - - bpo-40854(6): Allow overriding *note sys.platlibdir: 1e9. via a new - *note PYTHONPLATLIBDIR: fed. environment variable. - - - bpo-40826(7): Fix GIL usage in ‘PyOS_Readline()’: lock the GIL to - set an exception and pass the Python thread state when checking if - there is a pending signal. - - - bpo-40780(8): Fix a corner case where g-style string formatting of - a float failed to remove trailing zeros. - - - bpo-38964(9): When there’s a *note SyntaxError: 55c. in the - expression part of an fstring, the filename attribute of the *note - SyntaxError: 55c. gets correctly set to the name of the file the - fstring resides in. - - - bpo-40750(10): Support the “-d” debug flag in the new PEG parser. - Patch by Pablo Galindo - - - bpo-40217(11): Instances of types created with *note - PyType_FromSpecWithBases(): fee. will no longer automatically visit - their class object when traversing references in the garbage - collector. The user is expected to manually visit the object’s - class. Patch by Pablo Galindo. - - - bpo-40696(12): Fix a hang that can arise after *note - generator.throw(): fbb. due to a cycle in the exception context - chain. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40904 - - (2) https://bugs.python.org/issue40903 - - (3) https://bugs.python.org/issue40880 - - (4) https://bugs.python.org/issue40883 - - (5) https://bugs.python.org/issue40870 - - (6) https://bugs.python.org/issue40854 - - (7) https://bugs.python.org/issue40826 - - (8) https://bugs.python.org/issue40780 - - (9) https://bugs.python.org/issue38964 - - (10) https://bugs.python.org/issue40750 - - (11) https://bugs.python.org/issue40217 - - (12) https://bugs.python.org/issue40696 - - -File: python.info, Node: Library<14>, Next: Tests<10>, Prev: Core and Builtins<12>, Up: Python 3 9 0 beta 2 - -1.19.15.2 Library -................. - - - bpo-39791(1): Refresh importlib.metadata from importlib_metadata - 1.6.1. - - - bpo-40807(2): Stop codeop._maybe_compile, used by - code.InteractiveInterpreter (and IDLE). from from emitting each - warning three times. - - - bpo-39791(3): Built-in loaders (SourceFileLoader and ZipImporter) - now supply ‘TraversableResources’ implementations for - ‘ResourceReader’, and the fallback function has been removed. - - - bpo-17005(4): The topological sort functionality that was - introduced initially in the *note functools: 83. module has been - moved to a new *note graphlib: 89. module to better accommodate the - new tools and keep the original scope of the *note functools: 83. - module. Patch by Pablo Galindo - - - bpo-40777(5): Initialize PyDateTime_IsoCalendarDateType.tp_base at - run-time to avoid errors on some compilers. - - - bpo-40767(6): *note webbrowser: 132. now properly finds the default - browser in pure Wayland systems by checking the WAYLAND_DISPLAY - environment variable. Patch contributed by Jérémy Attali. - - - bpo-40791(7): ‘hashlib.compare_digest()’ uses OpenSSL’s - ‘CRYPTO_memcmp()’ function when OpenSSL is available. - - - bpo-40795(8): *note ctypes: 2a. module: If ctypes fails to convert - the result of a callback or if a ctypes callback function raises an - exception, sys.unraisablehook is now called with an exception set. - Previously, the error was logged into stderr by *note - PyErr_Print(): ff0. - - - bpo-30008(9): Fix *note ssl: f3. code to be compatible with OpenSSL - 1.1.x builds that use ‘no-deprecated’ and ‘--api=1.1.0’. - - - bpo-30064(10): Fix asyncio ‘loop.sock_*’ race condition issue - - - bpo-40759(11): Deprecate the *note symbol: fb. module. - - - bpo-40737(12): Fix possible reference leak for *note sqlite3: f2. - initialization. - - - bpo-40698(13): *note distutils: 38. upload creates SHA2-256 and - Blake2b-256 digests. MD5 digests is skipped if platform blocks - MD5. - - - bpo-40695(14): *note hashlib: 8c. no longer falls back to builtin - hash implementations when OpenSSL provides a hash digest and the - algorithm is blocked by security policy. - - - bpo-9216(15): func:*note hashlib.new: ff1. passed ‘usedforsecurity’ - to OpenSSL EVP constructor ‘_hashlib.new()’. test_hashlib and - test_smtplib handle strict security policy better. - - - bpo-40614(16): *note ast.parse(): 2d9. will not parse self - documenting expressions in f-strings when passed ‘feature_version’ - is less than ‘(3, 8)’. - - - bpo-40671(17): Prepare ‘_hashlib’ for PEP 489(18) and use *note - PyModule_AddType(): 253. - - - bpo-32309(19): Added a new *note coroutine: 18a. *note - asyncio.to_thread(): 18f. It is mainly used for running IO-bound - functions in a separate thread to avoid blocking the event loop, - and essentially works as a high-level version of *note - run_in_executor(): 190. that can directly take keyword arguments. - - - bpo-40630(20): Added *note tracemalloc.reset_peak(): 1ec. to set - the peak size of traced memory blocks to the current size, to - measure the peak of specific pieces of code. - - - bpo-13097(21): ‘ctypes’ now raises an ‘ArgumentError’ when a - callback is invoked with more than 1024 arguments. - - - bpo-23082(22): Updated the error message and docs of - PurePath.relative_to() to better reflect the function behaviour. - - - bpo-39244(23): Fixed - ‘multiprocessing.context.get_all_start_methods’ to properly return - the default method first on macOS. - - - bpo-39040(24): Fix parsing of invalid mime headers parameters by - collapsing whitespace between encoded words in a bare-quote-string. - - - bpo-35714(25): *note struct.error: d7e. is now raised if there is a - null character in a *note struct: f8. format string. - - - bpo-36290(26): AST nodes are now raising *note TypeError: 1fe. on - conflicting keyword arguments. Patch contributed by Rémi Lapeyre. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39791 - - (2) https://bugs.python.org/issue40807 - - (3) https://bugs.python.org/issue39791 - - (4) https://bugs.python.org/issue17005 - - (5) https://bugs.python.org/issue40777 - - (6) https://bugs.python.org/issue40767 - - (7) https://bugs.python.org/issue40791 - - (8) https://bugs.python.org/issue40795 - - (9) https://bugs.python.org/issue30008 - - (10) https://bugs.python.org/issue30064 - - (11) https://bugs.python.org/issue40759 - - (12) https://bugs.python.org/issue40737 - - (13) https://bugs.python.org/issue40698 - - (14) https://bugs.python.org/issue40695 - - (15) https://bugs.python.org/issue9216 - - (16) https://bugs.python.org/issue40614 - - (17) https://bugs.python.org/issue40671 - - (18) https://www.python.org/dev/peps/pep-0489 - - (19) https://bugs.python.org/issue32309 - - (20) https://bugs.python.org/issue40630 - - (21) https://bugs.python.org/issue13097 - - (22) https://bugs.python.org/issue23082 - - (23) https://bugs.python.org/issue39244 - - (24) https://bugs.python.org/issue39040 - - (25) https://bugs.python.org/issue35714 - - (26) https://bugs.python.org/issue36290 - - -File: python.info, Node: Tests<10>, Next: Build<9>, Prev: Library<14>, Up: Python 3 9 0 beta 2 - -1.19.15.3 Tests -............... - - - bpo-17258(1): Skip some *note multiprocessing: b7. tests when MD5 - hash digest is blocked. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue17258 - - -File: python.info, Node: Build<9>, Next: Windows<9>, Prev: Tests<10>, Up: Python 3 9 0 beta 2 - -1.19.15.4 Build -............... - - - bpo-40514(1): Remove ‘--with-experimental-isolated-subinterpreters’ - configure option in Python 3.9: the experiment continues in the - master branch, but it’s no longer needed in 3.9. - - - bpo-40683(2): Fixed an issue where the *note zoneinfo: 14e. module - and its tests were not included when Python is installed with - ‘make’. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40514 - - (2) https://bugs.python.org/issue40683 - - -File: python.info, Node: Windows<9>, Next: macOS<9>, Prev: Build<9>, Up: Python 3 9 0 beta 2 - -1.19.15.5 Windows -................. - - - bpo-39631(1): Changes the registered MIME type for ‘.py’ files on - Windows to ‘text/x-python’ instead of ‘text/plain’. - - - bpo-40677(2): Manually define IO_REPARSE_TAG_APPEXECLINK in case - some old Windows SDK doesn’t have it. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39631 - - (2) https://bugs.python.org/issue40677 - - -File: python.info, Node: macOS<9>, Next: IDLE<12>, Prev: Windows<9>, Up: Python 3 9 0 beta 2 - -1.19.15.6 macOS -............... - - - bpo-40741(1): Update macOS installer to use SQLite 3.32.2. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40741 - - -File: python.info, Node: IDLE<12>, Next: C API<7>, Prev: macOS<9>, Up: Python 3 9 0 beta 2 - -1.19.15.7 IDLE -.............. - - - bpo-39885(1): Make context menu Cut and Copy work again when + - bpo-39885(2): Make context menu Cut and Copy work again when right-clicking within a selection. - - bpo-40723(2): Make test_idle pass when run after import. + - bpo-40723(3): Make test_idle pass when run after import. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39885 + (1) https://bugs.python.org/issue41144 - (2) https://bugs.python.org/issue40723 + (2) https://bugs.python.org/issue39885 + + (3) https://bugs.python.org/issue40723  -File: python.info, Node: C API<7>, Prev: IDLE<12>, Up: Python 3 9 0 beta 2 +File: python.info, Node: Tools/Demos<3>, Prev: IDLE<11>, Up: Python 3 8 4 release candidate 1 -1.19.15.8 C API -............... - - - bpo-40910(1): Export explicitly the *note Py_GetArgcArgv(): ff8. - function to the C API and document the function. Previously, it - was exported implicitly which no longer works since Python is built - with ‘-fvisibility=hidden’. - - - bpo-40724(2): Allow defining buffer slots in type specs. - - - bpo-40826(3): ‘PyOS_InterruptOccurred()’ now fails with a fatal - error if it is called with the GIL released. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40910 - - (2) https://bugs.python.org/issue40724 - - (3) https://bugs.python.org/issue40826 - - -File: python.info, Node: Python 3 9 0 beta 1, Next: Python 3 9 0 alpha 6, Prev: Python 3 9 0 beta 2, Up: Changelog - -1.19.16 Python 3.9.0 beta 1 ---------------------------- - -`Release date: 2020-05-19' - -* Menu: - -* Security: Security<8>. -* Core and Builtins: Core and Builtins<13>. -* Library: Library<15>. -* Documentation: Documentation<10>. -* Tests: Tests<11>. -* Build: Build<10>. -* Windows: Windows<10>. -* macOS: macOS<10>. -* Tools/Demos: Tools/Demos<3>. -* C API: C API<8>. - - -File: python.info, Node: Security<8>, Next: Core and Builtins<13>, Up: Python 3 9 0 beta 1 - -1.19.16.1 Security -.................. - - - bpo-40501(1): *note uuid: 12d. no longer uses *note ctypes: 2a. to - load ‘libuuid’ or ‘rpcrt4.dll’ at runtime. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40501 - - -File: python.info, Node: Core and Builtins<13>, Next: Library<15>, Prev: Security<8>, Up: Python 3 9 0 beta 1 - -1.19.16.2 Core and Builtins -........................... - - - bpo-40663(1): Correctly generate annotations where parentheses are - omitted but required (e.g: ‘Type[(str, int, *other))]’. - - - bpo-40596(2): Fixed *note str.isidentifier(): ffc. for - non-canonicalized strings containing non-BMP characters on Windows. - - - bpo-40593(3): Improved syntax errors for invalid characters in - source code. - - - bpo-40585(4): Fixed a bug when using *note - codeop.compile_command(): ffd. that was causing exceptions to be - swallowed with the new parser. Patch by Pablo Galindo - - - bpo-40566(5): Apply PEP 573(6) to *note abc: 3. - - - bpo-40502(7): Initialize ‘n->n_col_offset’. (Patch by Joannah - Nanjekye) - - - bpo-40527(8): Fix command line argument parsing: no longer write - errors multiple times into stderr. - - - bpo-1635741(9): Port *note errno: 7a. to multiphase initialization - ( PEP 489(10)). - - - bpo-40523(11): Add pass-throughs for *note hash(): aa5. and *note - reversed(): 2c9. to *note weakref.proxy: 37d. objects. Patch by - Pablo Galindo. - - - bpo-1635741(12): Port *note syslog: ff. to multiphase - initialization ( PEP 489(13)). - - - bpo-40246(14): Reporting a specialised error message for invalid - string prefixes, which was introduced in bpo-40246(15), is being - reverted due to backwards compatibility concerns for strings that - immediately follow a reserved keyword without whitespace between - them. Constructs like ‘bg="#d00" if clear else"#fca"’ were failing - to parse, which is not an acceptable breakage on such short notice. - - - bpo-40417(16): Fix imp module deprecation warning when - PyImport_ReloadModule is called. Patch by Robert Rouhani. - - - bpo-40408(17): Fixed support of nested type variables in - GenericAlias (e.g. ‘list[list[T]]’). - - - bpo-1635741(18): Port _stat module to multiphase initialization ( - PEP 489(19)). - - - bpo-29587(20): Enable implicit exception chaining when calling - *note generator.throw(): fbb. - - - bpo-40328(21): Add tools for generating mappings headers for - CJKCodecs. - - - bpo-40228(22): Setting frame.f_lineno is now robust w.r.t. changes - in the source-to-bytecode compiler - - - bpo-38880(23): Added the ability to list interpreters associated - with channel ends in the internal subinterpreters module. - - - bpo-37986(24): Improve performance of *note PyLong_FromDouble(): - 1f4. for values that fit into ‘long’. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40663 - - (2) https://bugs.python.org/issue40596 - - (3) https://bugs.python.org/issue40593 - - (4) https://bugs.python.org/issue40585 - - (5) https://bugs.python.org/issue40566 - - (6) https://www.python.org/dev/peps/pep-0573 - - (7) https://bugs.python.org/issue40502 - - (8) https://bugs.python.org/issue40527 - - (9) https://bugs.python.org/issue1635741 - - (10) https://www.python.org/dev/peps/pep-0489 - - (11) https://bugs.python.org/issue40523 - - (12) https://bugs.python.org/issue1635741 - - (13) https://www.python.org/dev/peps/pep-0489 - - (14) https://bugs.python.org/issue40246 - - (15) https://bugs.python.org/issue40246 - - (16) https://bugs.python.org/issue40417 - - (17) https://bugs.python.org/issue40408 - - (18) https://bugs.python.org/issue1635741 - - (19) https://www.python.org/dev/peps/pep-0489 - - (20) https://bugs.python.org/issue29587 - - (21) https://bugs.python.org/issue40328 - - (22) https://bugs.python.org/issue40228 - - (23) https://bugs.python.org/issue38880 - - (24) https://bugs.python.org/issue37986 - - -File: python.info, Node: Library<15>, Next: Documentation<10>, Prev: Core and Builtins<13>, Up: Python 3 9 0 beta 1 - -1.19.16.3 Library -................. - - - bpo-40662(1): Fixed *note ast.get_source_segment(): 2d8. for ast - nodes that have incomplete location information. Patch by Irit - Katriel. - - - bpo-40665(2): Convert *note bisect: 11. to use Argument Clinic. - - - bpo-40536(3): Added the *note available_timezones(): fff. function - to the *note zoneinfo: 14e. module. Patch by Paul Ganssle. - - - bpo-40645(4): The ‘hmac.HMAC’ exposes internal implementation - details. The attributes ‘digest_cons’, ‘inner’, and ‘outer’ are - deprecated and will be removed in the future. - - - bpo-40645(5): The internal module ‘_hashlib’ wraps and exposes - OpenSSL’s HMAC API. The new code will be used in Python 3.10 after - the internal implementation details of the pure Python HMAC module - are no longer part of the public API. - - - bpo-40637(6): Builtin hash modules can now be disabled or - selectively enabled with ‘configure - --with-builtin-hashlib-hashes=sha3,blake1’ or - ‘--without-builtin-hashlib-hashes’. - - - bpo-37630(7): The *note hashlib: 8c. module can now use SHA3 hashes - and SHAKE XOF from OpenSSL when available. - - - bpo-40479(8): The *note hashlib: 8c. now compiles with OpenSSL - 3.0.0-alpha2. - - - bpo-40257(9): Revert changes to *note inspect.getdoc(): 30a. - - - bpo-40607(10): When cancelling a task due to timeout, *note - asyncio.wait_for(): 191. will now propagate the exception if an - error happens during cancellation. Patch by Roman Skurikhin. - - - bpo-40612(11): Fix edge cases in SyntaxError formatting. If the - offset is <= 0, no caret is printed. If the offset is > line - length, the caret is printed pointing just after the last - character. - - - bpo-40597(12): If text content lines are longer than - policy.max_line_length, always use a content-encoding to make sure - they are wrapped. - - - bpo-40571(13): Added functools.cache() as a simpler, more - discoverable way to access the unbounded cache variant of - lru_cache(maxsize=None). - - - bpo-40503(14): PEP 615(15), the *note zoneinfo: 14e. module. Adds - support for the IANA time zone database. - - - bpo-40397(16): Removed attributes ‘__args__’ and ‘__parameters__’ - from special generic aliases like ‘typing.List’ (not subscripted). - - - bpo-40549(17): Convert posixmodule.c (“posix” or “nt” module) to - the multiphase initialization (PEP 489). - - - bpo-31033(18): Add a ‘msg’ argument to ‘Future.cancel()’ and - ‘Task.cancel()’. - - - bpo-40541(19): Added an optional `counts' parameter to - random.sample(). - - - bpo-40515(20): The *note ssl: f3. and *note hashlib: 8c. modules - now actively check that OpenSSL is build with thread support. - Python 3.7.0 made thread support mandatory and no longer works - safely with a no-thread builds. - - - bpo-31033(21): When a *note asyncio.Task: 2e3. is cancelled, the - exception traceback now chains all the way back to where the task - was first interrupted. - - - bpo-40504(22): *note functools.lru_cache(): 2fb. objects can now be - the targets of weakrefs. - - - bpo-40559(23): Fix possible memory leak in the C implementation of - *note asyncio.Task: 2e3. - - - bpo-40480(24): ‘fnmatch.fnmatch()’ could take exponential time in - the presence of multiple ‘*’ pattern characters. This was repaired - by generating more elaborate regular expressions to avoid futile - backtracking. - - - bpo-40495(25): *note compileall: 20. is now able to use hardlinks - to prevent duplicates in a case when ‘.pyc’ files for different - optimization levels have the same content. - - - bpo-40457(26): The ssl module now support OpenSSL builds without - TLS 1.0 and 1.1 methods. - - - bpo-40355(27): Improve error reporting in *note ast.literal_eval(): - 5a2. in the presence of malformed *note ast.Dict: 1000. nodes - instead of silently ignoring any non-conforming elements. Patch by - Curtis Bucher. - - - bpo-40465(28): Deprecated the optional `random' argument to - `random.shuffle()'. - - - bpo-40459(29): *note platform.win32_ver(): 1001. now produces - correct `ptype' strings instead of empty strings. - - - bpo-39435(30): The first argument of *note pickle.loads(): 6bc. is - now positional-only. - - - bpo-39305(31): Update *note nntplib: c0. to merge *note - nntplib.NNTP: 1c6. and ‘nntplib._NNTPBase’. Patch by Dong-hee Na. - - - bpo-32494(32): Update *note dbm.gnu: 33. to use gdbm_count if - possible when calling *note len(): 28e. Patch by Dong-hee Na. - - - bpo-40453(33): Add ‘isolated=True’ keyword-only parameter to - ‘_xxsubinterpreters.create()’. An isolated subinterpreter cannot - spawn threads, spawn a child process or call ‘os.fork()’. - - - bpo-40286(34): Remove ‘_random.Random.randbytes()’: the C - implementation of ‘randbytes()’. Implement the method in Python to - ease subclassing: ‘randbytes()’ now directly reuses - ‘getrandbits()’. - - - bpo-40394(35): Added default arguments to *note - difflib.SequenceMatcher.find_longest_match(): 1002. - - - bpo-39995(36): Fix a race condition in - concurrent.futures._ThreadWakeup: access to _ThreadWakeup is now - protected with the shutdown lock. - - - bpo-30966(37): ‘Process.shutdown(wait=True)’ of *note - concurrent.futures: 21. now closes explicitly the result queue. - - - bpo-30966(38): Add a new *note close(): 1c4. method to the *note - SimpleQueue: 1c3. class to explicitly close the queue. - - - bpo-39966(39): Revert bpo-25597(40). *note - unittest.mock.MagicMock: 876. with wraps’ set uses default return - values for magic methods. - - - bpo-39791(41): Added ‘files()’ function to importlib.resources with - support for subdirectories in package data, matching backport in - importlib_resources 1.5. - - - bpo-40375(42): *note imaplib.IMAP4.unselect(): 1b3. is added. - Patch by Dong-hee Na. - - - bpo-40389(43): ‘repr()’ now returns ‘typing.Optional[T]’ when - called for ‘typing.Union’ of two types, one of which is ‘NoneType’. - - - bpo-40291(44): Add support for CAN_J1939 sockets (available on - Linux 5.4+) - - - bpo-40273(45): *note types.MappingProxyType: b90. is now - reversible. - - - bpo-39075(46): The repr for *note types.SimpleNamespace: 1d8. is - now insertion ordered rather than alphabetical. - - - bpo-40192(47): On AIX, *note thread_time(): 1e7. is now implemented - with ‘thread_cputime()’ which has nanosecond resolution, rather - than ‘clock_gettime(CLOCK_THREAD_CPUTIME_ID)’ which has a - resolution of 10 ms. Patch by Batuhan Taskaya. - - - bpo-40025(48): Raise TypeError when _generate_next_value_ is - defined after members. Patch by Ethan Onstott. - - - bpo-39058(49): In the argparse module, the repr for Namespace() and - other argument holders now displayed in the order attributes were - added. Formerly, it displayed in alphabetical order even though - argument order is preserved the user visible parts of the module. - - - bpo-24416(50): The ‘isocalendar()’ methods of *note datetime.date: - 19e. and *note datetime.datetime: 1a0. now return a *note named - tuple: b7d. instead of a *note tuple: 1a2. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40662 - - (2) https://bugs.python.org/issue40665 - - (3) https://bugs.python.org/issue40536 - - (4) https://bugs.python.org/issue40645 - - (5) https://bugs.python.org/issue40645 - - (6) https://bugs.python.org/issue40637 - - (7) https://bugs.python.org/issue37630 - - (8) https://bugs.python.org/issue40479 - - (9) https://bugs.python.org/issue40257 - - (10) https://bugs.python.org/issue40607 - - (11) https://bugs.python.org/issue40612 - - (12) https://bugs.python.org/issue40597 - - (13) https://bugs.python.org/issue40571 - - (14) https://bugs.python.org/issue40503 - - (15) https://www.python.org/dev/peps/pep-0615 - - (16) https://bugs.python.org/issue40397 - - (17) https://bugs.python.org/issue40549 - - (18) https://bugs.python.org/issue31033 - - (19) https://bugs.python.org/issue40541 - - (20) https://bugs.python.org/issue40515 - - (21) https://bugs.python.org/issue31033 - - (22) https://bugs.python.org/issue40504 - - (23) https://bugs.python.org/issue40559 - - (24) https://bugs.python.org/issue40480 - - (25) https://bugs.python.org/issue40495 - - (26) https://bugs.python.org/issue40457 - - (27) https://bugs.python.org/issue40355 - - (28) https://bugs.python.org/issue40465 - - (29) https://bugs.python.org/issue40459 - - (30) https://bugs.python.org/issue39435 - - (31) https://bugs.python.org/issue39305 - - (32) https://bugs.python.org/issue32494 - - (33) https://bugs.python.org/issue40453 - - (34) https://bugs.python.org/issue40286 - - (35) https://bugs.python.org/issue40394 - - (36) https://bugs.python.org/issue39995 - - (37) https://bugs.python.org/issue30966 - - (38) https://bugs.python.org/issue30966 - - (39) https://bugs.python.org/issue39966 - - (40) https://bugs.python.org/issue25597 - - (41) https://bugs.python.org/issue39791 - - (42) https://bugs.python.org/issue40375 - - (43) https://bugs.python.org/issue40389 - - (44) https://bugs.python.org/issue40291 - - (45) https://bugs.python.org/issue40273 - - (46) https://bugs.python.org/issue39075 - - (47) https://bugs.python.org/issue40192 - - (48) https://bugs.python.org/issue40025 - - (49) https://bugs.python.org/issue39058 - - (50) https://bugs.python.org/issue24416 - - -File: python.info, Node: Documentation<10>, Next: Tests<11>, Prev: Library<15>, Up: Python 3 9 0 beta 1 - -1.19.16.4 Documentation -....................... - - - bpo-34790(1): Add version of removal for explicit passing of coros - to *note asyncio.wait(): 207.’s documentation - - - bpo-40561(2): Provide docstrings for webbrowser open functions. - - - bpo-40499(3): Mention that *note asyncio.wait(): 207. requires a - non-empty set of awaitables. - - - bpo-39705(4): Tutorial example for sorted() in the Loop Techniques - section is given a better explanation. Also a new example is - included to explain sorted()’s basic behavior. - - - bpo-39435(5): Fix an incorrect signature for *note pickle.loads(): - 6bc. in the docs - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue34790 - - (2) https://bugs.python.org/issue40561 - - (3) https://bugs.python.org/issue40499 - - (4) https://bugs.python.org/issue39705 - - (5) https://bugs.python.org/issue39435 - - -File: python.info, Node: Tests<11>, Next: Build<10>, Prev: Documentation<10>, Up: Python 3 9 0 beta 1 - -1.19.16.5 Tests -............... - - - bpo-40055(1): distutils.tests now saves/restores warnings filters - to leave them unchanged. Importing tests imports docutils which - imports pkg_resources which adds a warnings filter. - - - bpo-40436(2): test_gdb and test.pythoninfo now check gdb command - exit code. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40055 - - (2) https://bugs.python.org/issue40436 - - -File: python.info, Node: Build<10>, Next: Windows<10>, Prev: Tests<11>, Up: Python 3 9 0 beta 1 - -1.19.16.6 Build -............... - - - bpo-40653(1): Move _dirnameW out of HAVE_SYMLINK to fix a potential - compiling issue. - - - bpo-40514(2): Add ‘--with-experimental-isolated-subinterpreters’ - build option to ‘configure’: better isolate subinterpreters, - experimental build mode. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40653 - - (2) https://bugs.python.org/issue40514 - - -File: python.info, Node: Windows<10>, Next: macOS<10>, Prev: Build<10>, Up: Python 3 9 0 beta 1 - -1.19.16.7 Windows -................. - - - bpo-40650(1): Include winsock2.h in pytime.c for timeval. - - - bpo-40458(2): Increase reserved stack space to prevent overflow - crash on Windows. - - - bpo-39148(3): Add IPv6 support to *note asyncio: 9. datagram - endpoints in ProactorEventLoop. Change the raised exception for - unknown address families to ValueError as it’s not coming from - Windows API. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40650 - - (2) https://bugs.python.org/issue40458 - - (3) https://bugs.python.org/issue39148 - - -File: python.info, Node: macOS<10>, Next: Tools/Demos<3>, Prev: Windows<10>, Up: Python 3 9 0 beta 1 - -1.19.16.8 macOS -............... - - - bpo-34956(1): When building Python on macOS from source, ‘_tkinter’ - now links with non-system Tcl and Tk frameworks if they are - installed in ‘/Library/Frameworks’, as had been the case on older - releases of macOS. If a macOS SDK is explicitly configured, by - using ‘--enable-universalsdk=’ or ‘-isysroot’, only the SDK itself - is searched. The default behavior can still be overridden with - ‘--with-tcltk-includes’ and ‘--with-tcltk-libs’. - - - bpo-35569(2): Expose RFC 3542 IPv6 socket options. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue34956 - - (2) https://bugs.python.org/issue35569 - - -File: python.info, Node: Tools/Demos<3>, Next: C API<8>, Prev: macOS<10>, Up: Python 3 9 0 beta 1 - -1.19.16.9 Tools/Demos +1.18.13.9 Tools/Demos ..................... - bpo-40479(1): Update multissltest helper to test with latest OpenSSL 1.0.2, 1.1.0, 1.1.1, and 3.0.0-alpha. - - bpo-40431(2): Fix a syntax typo in ‘turtledemo’ that now raises a - ‘SyntaxError’. - - - bpo-40163(3): Fix multissltest tool. OpenSSL has changed download + - bpo-40163(2): Fix multissltest tool. OpenSSL has changed download URL for old releases. The multissltest tool now tries to download from current and old download URLs. @@ -58420,129 +54156,159 @@ File: python.info, Node: Tools/Demos<3>, Next: C API<8>, Prev: macOS<10>, Up (1) https://bugs.python.org/issue40479 - (2) https://bugs.python.org/issue40431 - - (3) https://bugs.python.org/issue40163 + (2) https://bugs.python.org/issue40163  -File: python.info, Node: C API<8>, Prev: Tools/Demos<3>, Up: Python 3 9 0 beta 1 +File: python.info, Node: Python 3 8 3 final, Next: Python 3 8 3 release candidate 1, Prev: Python 3 8 4 release candidate 1, Up: Changelog -1.19.16.10 C API -................ +1.18.14 Python 3.8.3 final +-------------------------- - - bpo-39465(1): Remove the ‘_PyUnicode_ClearStaticStrings()’ function - from the C API. - - - bpo-38787(2): Add PyCFunction_CheckExact() macro for exact type - checks now that we allow subtypes of PyCFunction, as well as - PyCMethod_CheckExact() and PyCMethod_Check() for the new PyCMethod - subtype. - - - bpo-40545(3): Declare ‘_PyErr_GetTopmostException()’ with - ‘PyAPI_FUNC()’ to properly export the function in the C API. The - function remains private (‘_Py’) prefix. - - - bpo-40412(4): Nullify inittab_copy during finalization, preventing - future interpreter initializations in an embedded situation from - crashing. Patch by Gregory Szorc. - - - bpo-40429(5): The *note PyThreadState_GetFrame(): 24e. function now - returns a strong reference to the frame. - - - bpo-40428(6): Remove the following functions from the C API. Call - ‘PyGC_Collect()’ explicitly to free all free lists. - - * ‘PyAsyncGen_ClearFreeLists()’ - - * ‘PyContext_ClearFreeList()’ - - * ‘PyDict_ClearFreeList()’ - - * ‘PyFloat_ClearFreeList()’ - - * ‘PyFrame_ClearFreeList()’ - - * ‘PyList_ClearFreeList()’ - - * ‘PySet_ClearFreeList()’ - - * ‘PyTuple_ClearFreeList()’ - - - bpo-40421(7): New *note PyFrame_GetBack(): 24a. function: get the - frame next outer frame. - - - bpo-40421(8): New *note PyFrame_GetCode(): 249. function: return a - borrowed reference to the frame code. - - - bpo-40217(9): Ensure that instances of types created with *note - PyType_FromSpecWithBases(): fee. will visit its class object when - traversing references in the garbage collector (implemented as an - extension of the provided *note tp_traverse: 23b.). Patch by Pablo - Galindo. - - - bpo-38787(10): Module C state is now accessible from C-defined heap - type methods ( PEP 573(11)). Patch by Marcel Plch and Petr - Viktorin. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39465 - - (2) https://bugs.python.org/issue38787 - - (3) https://bugs.python.org/issue40545 - - (4) https://bugs.python.org/issue40412 - - (5) https://bugs.python.org/issue40429 - - (6) https://bugs.python.org/issue40428 - - (7) https://bugs.python.org/issue40421 - - (8) https://bugs.python.org/issue40421 - - (9) https://bugs.python.org/issue40217 - - (10) https://bugs.python.org/issue38787 - - (11) https://www.python.org/dev/peps/pep-0573 - - -File: python.info, Node: Python 3 9 0 alpha 6, Next: Python 3 9 0 alpha 5, Prev: Python 3 9 0 beta 1, Up: Changelog - -1.19.17 Python 3.9.0 alpha 6 ----------------------------- - -`Release date: 2020-04-27' +`Release date: 2020-05-13' * Menu: -* Security: Security<9>. -* Core and Builtins: Core and Builtins<14>. -* Library: Library<16>. +* Core and Builtins: Core and Builtins<13>. +* Library: Library<13>. * Documentation: Documentation<11>. -* Tests: Tests<12>. -* Build: Build<11>. -* Windows: Windows<11>. -* macOS: macOS<11>. -* IDLE: IDLE<13>. -* Tools/Demos: Tools/Demos<4>. -* C API: C API<9>. +* Windows: Windows<8>. +* C API: C API<5>.  -File: python.info, Node: Security<9>, Next: Core and Builtins<14>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Core and Builtins<13>, Next: Library<13>, Up: Python 3 8 3 final -1.19.17.1 Security +1.18.14.1 Core and Builtins +........................... + + - bpo-40527(1): Fix command line argument parsing: no longer write + errors multiple times into stderr. + + - bpo-40417(2): Fix imp module deprecation warning when + PyImport_ReloadModule is called. Patch by Robert Rouhani. + + - bpo-39562(3): The constant values of future flags in the *note + __future__: 0. module are updated in order to prevent collision + with compiler flags. Previously ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ was + clashing with ‘CO_FUTURE_DIVISION’. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue40527 + + (2) https://bugs.python.org/issue40417 + + (3) https://bugs.python.org/issue39562 + + +File: python.info, Node: Library<13>, Next: Documentation<11>, Prev: Core and Builtins<13>, Up: Python 3 8 3 final + +1.18.14.2 Library +................. + + - bpo-40559(1): Fix possible memory leak in the C implementation of + *note asyncio.Task: 199. + + - bpo-40355(2): Improve error reporting in *note ast.literal_eval(): + 496. in the presence of malformed ‘ast.Dict’ nodes instead of + silently ignoring any non-conforming elements. Patch by Curtis + Bucher. + + - bpo-40459(3): *note platform.win32_ver(): ef3. now produces correct + `ptype' strings instead of empty strings. + + - bpo-40398(4): *note typing.get_args(): 230. now always returns an + empty tuple for special generic aliases. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue40559 + + (2) https://bugs.python.org/issue40355 + + (3) https://bugs.python.org/issue40459 + + (4) https://bugs.python.org/issue40398 + + +File: python.info, Node: Documentation<11>, Next: Windows<8>, Prev: Library<13>, Up: Python 3 8 3 final + +1.18.14.3 Documentation +....................... + + - bpo-40561(1): Provide docstrings for webbrowser open functions. + + - bpo-39435(2): Fix an incorrect signature for *note pickle.loads(): + 5b0. in the docs + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue40561 + + (2) https://bugs.python.org/issue39435 + + +File: python.info, Node: Windows<8>, Next: C API<5>, Prev: Documentation<11>, Up: Python 3 8 3 final + +1.18.14.4 Windows +................. + + - bpo-40458(1): Increase reserved stack space to prevent overflow + crash on Windows. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue40458 + + +File: python.info, Node: C API<5>, Prev: Windows<8>, Up: Python 3 8 3 final + +1.18.14.5 C API +............... + + - bpo-40412(1): Nullify inittab_copy during finalization, preventing + future interpreter initializations in an embedded situation from + crashing. Patch by Gregory Szorc. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue40412 + + +File: python.info, Node: Python 3 8 3 release candidate 1, Next: Python 3 8 2 final, Prev: Python 3 8 3 final, Up: Changelog + +1.18.15 Python 3.8.3 release candidate 1 +---------------------------------------- + +`Release date: 2020-04-29' + +* Menu: + +* Security: Security<10>. +* Core and Builtins: Core and Builtins<14>. +* Library: Library<14>. +* Documentation: Documentation<12>. +* Tests: Tests<7>. +* Build: Build<7>. +* Windows: Windows<9>. +* macOS: macOS<8>. +* IDLE: IDLE<12>. +* Tools/Demos: Tools/Demos<4>. +* C API: C API<6>. + + +File: python.info, Node: Security<10>, Next: Core and Builtins<14>, Up: Python 3 8 3 release candidate 1 + +1.18.15.1 Security .................. - bpo-40121(1): Fixes audit events raised on creating a new socket. - - bpo-39073(2): Disallow CR or LF in email.headerregistry.Address - arguments to guard against header injection attacks. + - bpo-38576(2): Disallow control characters in hostnames in + http.client, addressing CVE-2019-18348. Such potentially malicious + header injection URLs now cause a InvalidURL to be raised. - bpo-39503(3): CVE-2020-8492: The *note AbstractBasicAuthHandler: - f65. class of the *note urllib.request: 129. module uses an + e6d. class of the *note urllib.request: 121. module uses an inefficient regular expression which can be exploited by an attacker to cause a denial of service. Fix the regex to prevent the catastrophic backtracking. Vulnerability reported by Ben @@ -58552,550 +54318,304 @@ File: python.info, Node: Security<9>, Next: Core and Builtins<14>, Up: Python (1) https://bugs.python.org/issue40121 - (2) https://bugs.python.org/issue39073 + (2) https://bugs.python.org/issue38576 (3) https://bugs.python.org/issue39503  -File: python.info, Node: Core and Builtins<14>, Next: Library<16>, Prev: Security<9>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Core and Builtins<14>, Next: Library<14>, Prev: Security<10>, Up: Python 3 8 3 release candidate 1 -1.19.17.2 Core and Builtins +1.18.15.2 Core and Builtins ........................... - - bpo-40313(1): Improve the performance of bytes.hex(). - - - bpo-40334(2): Switch to a new parser, based on PEG. For more - details see PEP 617. To temporarily switch back to the old parser, - use ‘-X oldparser’ or ‘PYTHONOLDPARSER=1’. In Python 3.10 we will - remove the old parser completely, including the ‘parser’ module - (already deprecated) and anything that depends on it. - - - bpo-40267(3): Fix the tokenizer to display the correct error - message, when there is a SyntaxError on the last input character - and no newline follows. It used to be ‘unexpected EOF while - parsing’, while it should be ‘invalid syntax’. - - - bpo-39522(4): Correctly unparse explicit ‘u’ prefix for strings - when postponed evaluation for annotations activated. Patch by - Batuhan Taskaya. - - - bpo-40246(5): Report a specialized error message, ‘invalid string - prefix’, when the tokenizer encounters a string with an invalid - prefix. - - - bpo-40082(6): Fix the signal handler: it now always uses the main - interpreter, rather than trying to get the current Python thread - state. - - - bpo-37388(7): str.encode() and str.decode() no longer check the - encoding and errors in development mode or in debug mode during - Python finalization. The codecs machinery can no longer work on - very late calls to str.encode() and str.decode(). - - - bpo-40077(8): Fix possible refleaks in ‘_json’, memo of - PyScannerObject should be traversed. - - - bpo-37207(9): Speed up calls to ‘dict()’ by using the PEP 590(10) - ‘vectorcall’ calling convention. - - - bpo-40141(11): Add column and line information to ‘ast.keyword’ - nodes. Patch by Pablo Galindo. - - - bpo-1635741(12): Port *note resource: e0. to multiphase - initialization ( PEP 489(13)). - - - bpo-1635741(14): Port *note math: b1. to multiphase initialization - ( PEP 489(15)). - - - bpo-1635741(16): Port _uuid module to multiphase initialization ( - PEP 489(17)). - - - bpo-40077(18): Convert json module to use *note PyType_FromSpec(): - 23a. - - - bpo-40067(19): Improve the error message for multiple star - expressions in an assignment. Patch by Furkan Onder - - - bpo-1635741(20): Port _functools module to multiphase - initialization (PEP 489). Patch by Paulo Henrique Silva. - - - bpo-1635741(21): Port operator module to multiphase initialization - (PEP 489). Patch by Paulo Henrique Silva. - - - bpo-20526(22): Fix *note PyThreadState_Clear(): 100d. + - bpo-20526(1): Fix *note PyThreadState_Clear(): efa. ‘PyThreadState.frame’ is a borrowed reference, not a strong reference: ‘PyThreadState_Clear()’ must not call ‘Py_CLEAR(tstate->frame)’. - - bpo-1635741(23): Port time module to multiphase initialization ( - PEP 489(24)). Patch by Paulo Henrique Silva. + - bpo-39965(2): Correctly raise ‘SyntaxError’ if `await' is used + inside non-async functions and ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ is set + (like in the asyncio REPL). Patch by Pablo Galindo. - - bpo-1635741(25): Port _weakref extension module to multiphase - initialization ( PEP 489(26)). + - bpo-39562(3): Allow executing asynchronous comprehensions on the + top level when the ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ flag is given. + Patch by Batuhan Taskaya. - - bpo-40020(27): Fix a leak and subsequent crash in parsetok.c caused - by realloc misuse on a rare codepath. + - bpo-38894(4): Fix a bug that was causing incomplete results when + calling ‘pathlib.Path.glob’ in the presence of symlinks that point + to files where the user does not have read access. Patch by Pablo + Galindo and Matt Wozniski. - - bpo-39939(28): Added str.removeprefix and str.removesuffix methods - and corresponding bytes, bytearray, and collections.UserString - methods to remove affixes from a string if present. See PEP - 616(29) for a full description. Patch by Dennis Sweeney. + - bpo-39871(5): Fix a possible *note SystemError: 5e8. in + ‘math.{atan2,copysign,remainder}()’ when the first argument cannot + be converted to a *note float: 174. Patch by Zackery Spytz. - - bpo-39481(30): Implement PEP 585. This supports list[int], - tuple[str, …] etc. + - bpo-39776(6): Fix race condition where threads created by + PyGILState_Ensure() could get a duplicate id. - - bpo-32894(31): Support unparsing of infinity numbers in postponed - annotations. Patch by Batuhan Taşkaya. + This affects consumers of tstate->id like the contextvar caching + machinery, which could return invalid cached objects under heavy + thread load (observed in embedded scenarios). - - bpo-37207(32): Speed up calls to ‘list()’ by using the PEP 590(33) - ‘vectorcall’ calling convention. Patch by Mark Shannon. + - bpo-39778(7): Fixed a crash due to incorrect handling of weak + references in ‘collections.OrderedDict’ classes. Patch by Pablo + Galindo. + + - bpo-39520(8): Fix unparsing of ext slices with no items + (‘foo[:,]’). Patch by Batuhan Taskaya. + + - bpo-22490(9): Don’t leak environment variable ‘__PYVENV_LAUNCHER__’ + into the interpreter session on macOS. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue40313 + (1) https://bugs.python.org/issue20526 - (2) https://bugs.python.org/issue40334 + (2) https://bugs.python.org/issue39965 - (3) https://bugs.python.org/issue40267 + (3) https://bugs.python.org/issue39562 - (4) https://bugs.python.org/issue39522 + (4) https://bugs.python.org/issue38894 - (5) https://bugs.python.org/issue40246 + (5) https://bugs.python.org/issue39871 - (6) https://bugs.python.org/issue40082 + (6) https://bugs.python.org/issue39776 - (7) https://bugs.python.org/issue37388 + (7) https://bugs.python.org/issue39778 - (8) https://bugs.python.org/issue40077 + (8) https://bugs.python.org/issue39520 - (9) https://bugs.python.org/issue37207 - - (10) https://www.python.org/dev/peps/pep-0590 - - (11) https://bugs.python.org/issue40141 - - (12) https://bugs.python.org/issue1635741 - - (13) https://www.python.org/dev/peps/pep-0489 - - (14) https://bugs.python.org/issue1635741 - - (15) https://www.python.org/dev/peps/pep-0489 - - (16) https://bugs.python.org/issue1635741 - - (17) https://www.python.org/dev/peps/pep-0489 - - (18) https://bugs.python.org/issue40077 - - (19) https://bugs.python.org/issue40067 - - (20) https://bugs.python.org/issue1635741 - - (21) https://bugs.python.org/issue1635741 - - (22) https://bugs.python.org/issue20526 - - (23) https://bugs.python.org/issue1635741 - - (24) https://www.python.org/dev/peps/pep-0489 - - (25) https://bugs.python.org/issue1635741 - - (26) https://www.python.org/dev/peps/pep-0489 - - (27) https://bugs.python.org/issue40020 - - (28) https://bugs.python.org/issue39939 - - (29) https://www.python.org/dev/peps/pep-0616 - - (30) https://bugs.python.org/issue39481 - - (31) https://bugs.python.org/issue32894 - - (32) https://bugs.python.org/issue37207 - - (33) https://www.python.org/dev/peps/pep-0590 + (9) https://bugs.python.org/issue22490  -File: python.info, Node: Library<16>, Next: Documentation<11>, Prev: Core and Builtins<14>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Library<14>, Next: Documentation<12>, Prev: Core and Builtins<14>, Up: Python 3 8 3 release candidate 1 -1.19.17.3 Library +1.18.15.3 Library ................. - - bpo-40398(1): *note typing.get_args(): 280. now always returns an - empty tuple for special generic aliases. - - - bpo-40396(2): Functions *note typing.get_origin(): 371, *note - typing.get_args(): 280. and *note typing.get_type_hints(): 1ef. - support now generic aliases like ‘list[int]’. - - - bpo-38061(3): Optimize the *note subprocess: f9. module on FreeBSD - using ‘closefrom()’. A single ‘close(fd)’ syscall is cheap, but - when ‘sysconf(_SC_OPEN_MAX)’ is high, the loop calling ‘close(fd)’ - on each file descriptor can take several milliseconds. - - The workaround on FreeBSD to improve performance was to load and - mount the fdescfs kernel module, but this is not enabled by - default. - - Initial patch by Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans - (kevans) and Kubilay Kocak (koobs): - ‘https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274’ - - - bpo-38061(4): On FreeBSD, ‘os.closerange(fd_low, fd_high)’ now - calls ‘closefrom(fd_low)’ if `fd_high' is greater than or equal to - ‘sysconf(_SC_OPEN_MAX)’. - - Initial patch by Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans - (kevans) and Kubilay Kocak (koobs): - ‘https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274’ - - - bpo-40360(5): The *note lib2to3: a7. module is pending deprecation - due to PEP 617(6). - - - bpo-40138(7): Fix the Windows implementation of *note os.waitpid(): - 762. for exit code larger than ‘INT_MAX >> 8’. The exit status is + - bpo-40138(1): Fix the Windows implementation of *note os.waitpid(): + 656. for exit code larger than ‘INT_MAX >> 8’. The exit status is now interpreted as an unsigned number. - - bpo-39942(8): Set “__main__” as the default module name when - “__name__” is missing in *note typing.TypeVar: 100f. Patch by + - bpo-39942(2): Set “__main__” as the default module name when + “__name__” is missing in *note typing.TypeVar: efc. Patch by Weipeng Hong. - - bpo-40275(9): The *note logging: aa. package is now imported lazily - in *note unittest: 124. only when the *note assertLogs(): 9ed. - assertion is used. + - bpo-40330(3): In ‘ShareableList.__setitem__()’, check the size of a + new string item after encoding it to utf-8, not before. - - bpo-40275(10): The *note asyncio: 9. package is now imported lazily - in *note unittest: 124. only when the *note - IsolatedAsyncioTestCase: 37a. class is used. - - - bpo-40330(11): In ‘ShareableList.__setitem__()’, check the size of - a new string item after encoding it to utf-8, not before. - - - bpo-40148(12): Added ‘pathlib.Path.with_stem()’ to create a new - Path with the stem replaced. - - - bpo-40325(13): Deprecated support for set objects in - random.sample(). - - - bpo-40257(14): Improved help for the *note typing: 122. module. - Docstrings are now shown for all special forms and special generic - aliases (like ‘Union’ and ‘List’). Using ‘help()’ with generic - alias like ‘List[int]’ will show the help for the correspondent - concrete type (‘list’ in this case). - - - bpo-40257(15): func:*note inspect.getdoc: 30a. no longer returns - docstring inherited from the type of the object or from parent - class if it is a class if it is not defined in the object itself. - In *note pydoc: d9. the documentation string is now shown not only - for class, function, method etc, but for any object that has its - own ‘__doc__’ attribute. - - - bpo-40287(16): Fixed ‘SpooledTemporaryFile.seek()’ to return the + - bpo-40287(4): Fixed ‘SpooledTemporaryFile.seek()’ to return the position. - - bpo-40290(17): Added zscore() to statistics.NormalDist(). + - bpo-40260(5): Ensure *note modulefinder: b5. uses *note + io.open_code(): efd. and respects coding comments. - - bpo-40282(18): Allow ‘random.getrandbits(0)’ to succeed and to - return 0. - - - bpo-40286(19): Add *note random.randbytes(): 1010. function and - ‘random.Random.randbytes()’ method to generate random bytes. - - - bpo-40277(20): *note collections.namedtuple(): 1a1. now provides a - human-readable repr for its field accessors. - - - bpo-40270(21): The included copy of sqlite3 on Windows is now - compiled with the json extension. This allows the use of functions - such as ‘json_object’. - - - bpo-29255(22): Wait in ‘KqueueSelector.select’ when no fds are - registered - - - bpo-40260(23): Ensure *note modulefinder: b4. uses *note - io.open_code(): 1011. and respects coding comments. - - - bpo-40234(24): Allow again to spawn daemon threads in - subinterpreters (revert change which denied them). - - - bpo-39207(25): Workers in *note ProcessPoolExecutor: 196. are now - spawned on demand, only when there are no available idle workers to - reuse. This optimizes startup overhead and reduces the amount of - lost CPU time to idle workers. Patch by Kyle Stanley. - - - bpo-40091(26): Fix a hang at fork in the logging module: the new - private _at_fork_reinit() method is now used to reinitialize locks - at fork in the child process. - - - bpo-40149(27): Implement traverse and clear slots in _abc._abc_data - type. - - - bpo-40208(28): Remove deprecated ‘symtable.SymbolTable.has_exec()’. - - - bpo-40196(29): Fix a bug in the *note symtable: fc. module that was + - bpo-40196(6): Fix a bug in the *note symtable: fd. module that was causing incorrectly report global variables as local. Patch by Pablo Galindo. - - bpo-40190(30): Add support for ‘_SC_AIX_REALMEM’ to - ‘posix.sysconf()’. - - - bpo-40182(31): Removed the ‘_field_types’ attribute of the *note - typing.NamedTuple: 227. class. - - - bpo-36517(32): Multiple inheritance with *note typing.NamedTuple: - 227. now raises an error instead of silently ignoring other types. - - - bpo-40126(33): Fixed reverting multiple patches in unittest.mock. + - bpo-40126(7): Fixed reverting multiple patches in unittest.mock. Patcher’s ‘__exit__()’ is now never called if its ‘__enter__()’ is failed. Returning true from ‘__exit__()’ silences now the exception. - - bpo-40094(34): CGIHTTPRequestHandler of http.server now logs the - CGI script exit code, rather than the CGI script exit status of - os.waitpid(). For example, if the script is killed by signal 11, - it now logs: “CGI script exit code -11.” - - - bpo-40108(35): Improve the error message when triying to import a - module using *note runpy: e2. and incorrently use the “.py” - extension at the end of the module name. Patch by Pablo Galindo. - - - bpo-40094(36): Add *note os.waitstatus_to_exitcode(): 1ce. - function: convert a wait status to an exit code. - - - bpo-40089(37): Fix threading._after_fork(): if fork was not called + - bpo-40089(8): Fix threading._after_fork(): if fork was not called by a thread spawned by threading.Thread, threading._after_fork() now creates a _MainThread instance for _main_thread, instead of a _DummyThread instance. - - bpo-40089(38): Add a private ‘_at_fork_reinit()’ method to - ‘_thread.Lock’, ‘_thread.RLock’, *note threading.RLock: cbc. and - *note threading.Condition: b84. classes: reinitialize the lock at - fork in the child process, reset the lock to the unlocked state. - Rename also the private ‘_reset_internal_locks()’ method of *note - threading.Event: b87. to ‘_at_fork_reinit()’. - - - bpo-25780(39): Expose *note CAN_RAW_JOIN_FILTERS: 1e2. in the *note - socket: ef. module. - - - bpo-39503(40): *note AbstractBasicAuthHandler: f65. of *note - urllib.request: 129. now parses all WWW-Authenticate HTTP headers + - bpo-39503(9): *note AbstractBasicAuthHandler: e6d. of *note + urllib.request: 121. now parses all WWW-Authenticate HTTP headers and accepts multiple challenges per header: use the realm of the first Basic challenge. - - bpo-39812(41): Removed daemon threads from *note - concurrent.futures: 21. by adding an internal - ‘threading._register_atexit()’, which calls registered functions - prior to joining all non-daemon threads. This allows for - compatibility with subinterpreters, which don’t support daemon - threads. - - - bpo-40050(42): Fix ‘importlib._bootstrap_external’: avoid creating - a new ‘winreg’ builtin module if it’s already available in *note - sys.modules: 1012, and remove redundant imports. - - - bpo-40014(43): Fix ‘os.getgrouplist()’: if ‘getgrouplist()’ + - bpo-40014(10): Fix ‘os.getgrouplist()’: if ‘getgrouplist()’ function fails because the group list is too small, retry with a larger group list. On failure, the glibc implementation of ‘getgrouplist()’ sets ‘ngroups’ to the total number of groups. For other implementations, double the group list size. - - bpo-40017(44): Add *note time.CLOCK_TAI: 1013. constant if the - operating system support it. - - - bpo-40016(45): In re docstring, clarify the relationship between + - bpo-40016(11): In re docstring, clarify the relationship between inline and argument compile flags. - - bpo-39953(46): Update internal table of OpenSSL error codes in the + - bpo-39953(12): Update internal table of OpenSSL error codes in the ‘ssl’ module. - - bpo-36144(47): Added PEP 584(48) operators to *note - weakref.WeakValueDictionary: 1014. + - bpo-39360(13): Ensure all workers exit when finalizing a + ‘multiprocessing.Pool’ implicitly via the module finalization + handlers of multiprocessing. This fixes a deadlock situation that + can be experienced when the Pool is not properly finalized via the + context manager or a call to ‘multiprocessing.Pool.terminate’. + Patch by Batuhan Taskaya and Pablo Galindo. - - bpo-36144(49): Added PEP 584(50) operators to *note - weakref.WeakKeyDictionary: 1015. + - bpo-39652(14): The column name found in + ‘sqlite3.Cursor.description’ is now truncated on the first ‘[‘ only + if the PARSE_COLNAMES option is set. - - bpo-38891(51): Fix linear runtime behaviour of the ‘__getitem__’ - and ‘__setitem__’ methods in *note - multiprocessing.shared_memory.ShareableList: 1016. This avoids - quadratic performance when iterating a ‘ShareableList’. Patch by - Thomas Krennwallner. + - bpo-39915(15): Ensure *note + unittest.mock.AsyncMock.await_args_list: efe. has call objects in + the order of awaited arguments instead of using *note + unittest.mock.Mock.call_args: eff. which has the last value of the + call. Patch by Karthikeyan Singaravelan. - - bpo-39682(52): Remove undocumented support for `closing' a *note - pathlib.Path: 332. object via its context manager. The context - manager magic methods remain, but they are now a no-op, making - ‘Path’ objects immutable. + - bpo-38662(16): The ‘ensurepip’ module now invokes ‘pip’ via the + ‘runpy’ module. Hence it is no longer tightly coupled with the + internal API of the bundled ‘pip’ version, allowing easier updates + to a newer ‘pip’ version both internally and for distributors. - - bpo-36144(53): Added PEP 584(54) operators (‘|’ and ‘|=’) to *note - collections.ChainMap: 5a6. + - bpo-39916(17): More reliable use of ‘os.scandir()’ in + ‘Path.glob()’. It no longer emits a ResourceWarning when + interrupted. - - bpo-39011(55): Normalization of line endings in ElementTree - attributes was removed, as line endings which were replaced by - entity numbers should be preserved in original form. + - bpo-39850(18): *note multiprocessing: b8. now supports abstract + socket addresses (if abstract sockets are supported in the running + platform). Patch by Pablo Galindo. - - bpo-38410(56): Properly handle *note sys.audit(): 1017. failures in - *note sys.set_asyncgen_hooks(): 1018. + - bpo-39828(19): Fix *note json.tool: a6. to catch *note + BrokenPipeError: 97e. Patch by Dong-hee Na. - - bpo-36541(57): lib2to3 now recognizes named assignment expressions + - bpo-13487(20): Avoid a possible `“RuntimeError: dictionary changed + size during iteration”' from *note inspect.getmodule(): f00. when + it tried to loop through *note sys.modules: f01. + + - bpo-39794(21): Add –without-decimal-contextvar build option. This + enables a thread-local rather than a coroutine local context. + + - bpo-39769(22): The *note compileall.compile_dir(): 363. function’s + `ddir' parameter and the compileall command line flag ‘-d’ no + longer write the wrong pathname to the generated pyc file for + submodules beneath the root of the directory tree being compiled. + This fixes a regression introduced with Python 3.5. + + - bpo-39517(23): Fix runpy.run_path() when using pathlike objects + + - bpo-39764(24): Fix AttributeError when calling get_stack on a + PyAsyncGenObject Task + + - bpo-30566(25): Fix *note IndexError: e48. when trying to decode an + invalid string with punycode codec. + + - bpo-39667(26): Correct performance degradation in ‘zipfile.Path’ as + found in zipp 3.0. While retaining compatibility, this change + discourages the use of ‘zipfile.Path.open’ due to the signature + change in Python 3.9. For compatibility across Python 3.8 and + later versions, consider using ‘zipp.Path’ on Python 3.8.x and + earlier. + + - bpo-39548(27): Fix handling of header in *note + urllib.request.AbstractDigestAuthHandler: f02. when the optional + ‘qop’ parameter is not present. + + - bpo-38971(28): Open issue in the BPO indicated a desire to make the + implementation of codecs.open() at parity with io.open(), which + implements a try/except to assure file stream gets closed before an + exception is raised. + + - bpo-38410(29): Properly handle *note sys.audit(): f03. failures in + *note sys.set_asyncgen_hooks(): f04. Based on patch by Zackery + Spytz. + + - bpo-36541(30): lib2to3 now recognizes named assignment expressions (the walrus operator, ‘:=’) - - bpo-35967(58): In platform, delay the invocation of ‘uname -p’ - until the processor attribute is requested. - - - bpo-35113(59): *note inspect.getsource(): f9d. now returns correct - source code for inner class with same name as module level class. - Decorators are also returned as part of source of the class. Patch - by Karthikeyan Singaravelan. - - - bpo-33262(60): Deprecate passing None as an argument for *note - shlex.split(): 210.’s ‘s’ parameter. Patch by Zackery Spytz. - - - bpo-31758(61): Prevent crashes when using an uninitialized + - bpo-31758(31): Prevent crashes when using an uninitialized ‘_elementtree.XMLParser’ object. Patch by Oren Milman. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue40398 + (1) https://bugs.python.org/issue40138 - (2) https://bugs.python.org/issue40396 + (2) https://bugs.python.org/issue39942 - (3) https://bugs.python.org/issue38061 + (3) https://bugs.python.org/issue40330 - (4) https://bugs.python.org/issue38061 + (4) https://bugs.python.org/issue40287 - (5) https://bugs.python.org/issue40360 + (5) https://bugs.python.org/issue40260 - (6) https://www.python.org/dev/peps/pep-0617 + (6) https://bugs.python.org/issue40196 - (7) https://bugs.python.org/issue40138 + (7) https://bugs.python.org/issue40126 - (8) https://bugs.python.org/issue39942 + (8) https://bugs.python.org/issue40089 - (9) https://bugs.python.org/issue40275 + (9) https://bugs.python.org/issue39503 - (10) https://bugs.python.org/issue40275 + (10) https://bugs.python.org/issue40014 - (11) https://bugs.python.org/issue40330 + (11) https://bugs.python.org/issue40016 - (12) https://bugs.python.org/issue40148 + (12) https://bugs.python.org/issue39953 - (13) https://bugs.python.org/issue40325 + (13) https://bugs.python.org/issue39360 - (14) https://bugs.python.org/issue40257 + (14) https://bugs.python.org/issue39652 - (15) https://bugs.python.org/issue40257 + (15) https://bugs.python.org/issue39915 - (16) https://bugs.python.org/issue40287 + (16) https://bugs.python.org/issue38662 - (17) https://bugs.python.org/issue40290 + (17) https://bugs.python.org/issue39916 - (18) https://bugs.python.org/issue40282 + (18) https://bugs.python.org/issue39850 - (19) https://bugs.python.org/issue40286 + (19) https://bugs.python.org/issue39828 - (20) https://bugs.python.org/issue40277 + (20) https://bugs.python.org/issue13487 - (21) https://bugs.python.org/issue40270 + (21) https://bugs.python.org/issue39794 - (22) https://bugs.python.org/issue29255 + (22) https://bugs.python.org/issue39769 - (23) https://bugs.python.org/issue40260 + (23) https://bugs.python.org/issue39517 - (24) https://bugs.python.org/issue40234 + (24) https://bugs.python.org/issue39764 - (25) https://bugs.python.org/issue39207 + (25) https://bugs.python.org/issue30566 - (26) https://bugs.python.org/issue40091 + (26) https://bugs.python.org/issue39667 - (27) https://bugs.python.org/issue40149 + (27) https://bugs.python.org/issue39548 - (28) https://bugs.python.org/issue40208 + (28) https://bugs.python.org/issue38971 - (29) https://bugs.python.org/issue40196 + (29) https://bugs.python.org/issue38410 - (30) https://bugs.python.org/issue40190 + (30) https://bugs.python.org/issue36541 - (31) https://bugs.python.org/issue40182 - - (32) https://bugs.python.org/issue36517 - - (33) https://bugs.python.org/issue40126 - - (34) https://bugs.python.org/issue40094 - - (35) https://bugs.python.org/issue40108 - - (36) https://bugs.python.org/issue40094 - - (37) https://bugs.python.org/issue40089 - - (38) https://bugs.python.org/issue40089 - - (39) https://bugs.python.org/issue25780 - - (40) https://bugs.python.org/issue39503 - - (41) https://bugs.python.org/issue39812 - - (42) https://bugs.python.org/issue40050 - - (43) https://bugs.python.org/issue40014 - - (44) https://bugs.python.org/issue40017 - - (45) https://bugs.python.org/issue40016 - - (46) https://bugs.python.org/issue39953 - - (47) https://bugs.python.org/issue36144 - - (48) https://www.python.org/dev/peps/pep-0584 - - (49) https://bugs.python.org/issue36144 - - (50) https://www.python.org/dev/peps/pep-0584 - - (51) https://bugs.python.org/issue38891 - - (52) https://bugs.python.org/issue39682 - - (53) https://bugs.python.org/issue36144 - - (54) https://www.python.org/dev/peps/pep-0584 - - (55) https://bugs.python.org/issue39011 - - (56) https://bugs.python.org/issue38410 - - (57) https://bugs.python.org/issue36541 - - (58) https://bugs.python.org/issue35967 - - (59) https://bugs.python.org/issue35113 - - (60) https://bugs.python.org/issue33262 - - (61) https://bugs.python.org/issue31758 + (31) https://bugs.python.org/issue31758  -File: python.info, Node: Documentation<11>, Next: Tests<12>, Prev: Library<16>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Documentation<12>, Next: Tests<7>, Prev: Library<14>, Up: Python 3 8 3 release candidate 1 -1.19.17.4 Documentation +1.18.15.4 Documentation ....................... - bpo-27635(1): The pickle documentation incorrectly claimed that ‘__new__’ isn’t called by default when unpickling. - - bpo-39879(2): Updated *note Data model: 101a. docs to include *note - dict(): 164. insertion order preservation. Patch by Furkan Onder + - bpo-39879(2): Updated *note Data model: f06. docs to include *note + dict(): 1a4. insertion order preservation. Patch by Furkan Onder and Samy Lahfa. - - bpo-38387(3): Document *note PyDoc_STRVAR: 101b. macro in the C-API - reference. + - bpo-39868(3): Updated the Language Reference for PEP 572(4). - - bpo-13743(4): Some methods within xml.dom.minidom.Element class are - now better documented. + - bpo-13790(5): Change ‘string’ to ‘specification’ in format doc. + + - bpo-17422(6): The language reference no longer restricts default + class namespaces to dicts only. + + - bpo-39530(7): Fix misleading documentation about mixed-type numeric + comparisons. + + - bpo-39718(8): Update *note token: 111. documentation to reflect + additions in Python 3.8 + + - bpo-39677(9): Changed operand name of `MAKE_FUNCTION' from `argc' + to `flags' for module *note dis: 38. + + - bpo-38387(10): Document *note PyDoc_STRVAR: f07. macro in the C-API + reference. ---------- Footnotes ---------- @@ -59103,73 +54623,93 @@ File: python.info, Node: Documentation<11>, Next: Tests<12>, Prev: Library<16 (2) https://bugs.python.org/issue39879 - (3) https://bugs.python.org/issue38387 + (3) https://bugs.python.org/issue39868 - (4) https://bugs.python.org/issue13743 + (4) https://www.python.org/dev/peps/pep-0572 + + (5) https://bugs.python.org/issue13790 + + (6) https://bugs.python.org/issue17422 + + (7) https://bugs.python.org/issue39530 + + (8) https://bugs.python.org/issue39718 + + (9) https://bugs.python.org/issue39677 + + (10) https://bugs.python.org/issue38387  -File: python.info, Node: Tests<12>, Next: Build<11>, Prev: Documentation<11>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Tests<7>, Next: Build<7>, Prev: Documentation<12>, Up: Python 3 8 3 release candidate 1 -1.19.17.5 Tests +1.18.15.5 Tests ............... - - bpo-31904(1): Set expected default encoding in - test_c_locale_coercion.py for VxWorks RTOS. + - bpo-40436(1): test_gdb and test.pythoninfo now check gdb command + exit code. - bpo-40162(2): Update Travis CI configuration to OpenSSL 1.1.1f. - bpo-40146(3): Update OpenSSL to 1.1.1f in Azure Pipelines. - - bpo-40094(4): Add *note test.support.wait_process(): 101d. - function. + - bpo-40019(4): test_gdb now skips tests if it detects that gdb + failed to read debug information because the Python binary is + optimized. - - bpo-40003(5): ‘test.bisect_cmd’ now copies Python command line - options like ‘-O’ or ‘-W’. Moreover, emit a warning if - ‘test.bisect_cmd’ is used with ‘-w’/‘--verbose2’ option. + - bpo-27807(5): ‘test_site.test_startup_imports()’ is now skipped if + a path of *note sys.path: 479. contains a ‘.pth’ file. - - bpo-39380(6): Add the encoding in *note ftplib.FTP: 1a6. and *note - ftplib.FTP_TLS: 1a7. to the constructor as keyword-only and change - the default from ‘latin-1’ to ‘utf-8’ to follow RFC 2640(7). - - - bpo-39793(8): Use the same domain when testing ‘make_msgid’. Patch + - bpo-39793(6): Use the same domain when testing ‘make_msgid’. Patch by Batuhan Taskaya. - - bpo-1812(9): Fix newline handling in doctest.testfile when loading + - bpo-1812(7): Fix newline handling in doctest.testfile when loading from a package whose loader has a get_data method. Patch by Peter Donis. + - bpo-37957(8): test.regrtest now can receive a list of test patterns + to ignore (using the -i/–ignore argument) or a file with a list of + patterns to ignore (using the –ignore-file argument). Patch by + Pablo Galindo. + + - bpo-38502(9): test.regrtest now uses process groups in the + multiprocessing mode (-jN command line option) if process groups + are available: if *note os.setsid(): f09. and *note os.killpg(): + f0a. functions are available. + ---------- Footnotes ---------- - (1) https://bugs.python.org/issue31904 + (1) https://bugs.python.org/issue40436 (2) https://bugs.python.org/issue40162 (3) https://bugs.python.org/issue40146 - (4) https://bugs.python.org/issue40094 + (4) https://bugs.python.org/issue40019 - (5) https://bugs.python.org/issue40003 + (5) https://bugs.python.org/issue27807 - (6) https://bugs.python.org/issue39380 + (6) https://bugs.python.org/issue39793 - (7) https://tools.ietf.org/html/rfc2640.html + (7) https://bugs.python.org/issue1812 - (8) https://bugs.python.org/issue39793 + (8) https://bugs.python.org/issue37957 - (9) https://bugs.python.org/issue1812 + (9) https://bugs.python.org/issue38502  -File: python.info, Node: Build<11>, Next: Windows<11>, Prev: Tests<12>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Build<7>, Next: Windows<9>, Prev: Tests<7>, Up: Python 3 8 3 release candidate 1 -1.19.17.6 Build +1.18.15.6 Build ............... - bpo-38360(1): Support single-argument form of macOS -isysroot flag. - - bpo-40158(2): Fix CPython MSBuild Properties in NuGet Package + - bpo-40204(2): Pin Sphinx version to 1.8.2 in ‘Doc/Makefile’. + + - bpo-40158(3): Fix CPython MSBuild Properties in NuGet Package (build/native/python.props) - - bpo-38527(3): Fix configure check on Solaris for “float word + - bpo-38527(4): Fix configure check on Solaris for “float word ordering”: sometimes, the correct “grep” command was not being used. Patch by Arnon Yaari. @@ -59177,877 +54717,76 @@ File: python.info, Node: Build<11>, Next: Windows<11>, Prev: Tests<12>, Up: (1) https://bugs.python.org/issue38360 - (2) https://bugs.python.org/issue40158 + (2) https://bugs.python.org/issue40204 - (3) https://bugs.python.org/issue38527 + (3) https://bugs.python.org/issue40158 + + (4) https://bugs.python.org/issue38527  -File: python.info, Node: Windows<11>, Next: macOS<11>, Prev: Build<11>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: Windows<9>, Next: macOS<8>, Prev: Build<7>, Up: Python 3 8 3 release candidate 1 -1.19.17.7 Windows +1.18.15.7 Windows ................. - bpo-40164(1): Updates Windows to OpenSSL 1.1.1f - - bpo-8901(2): Ignore the Windows registry when the ‘-E’ option is - used. + - bpo-39930(2): Ensures the required ‘vcruntime140.dll’ is included + in install packages. + + - bpo-39847(3): Avoid hang when computer is hibernated whilst waiting + for a mutex (for lock-related objects from *note threading: 10a.) + around 49-day uptime. + + - bpo-38597(4): *note distutils: 39. will no longer statically link + ‘vcruntime140.dll’ when a redistributable version is unavailable. + All future releases of CPython will include a copy of this DLL to + ensure distributed extensions can continue to load. + + - bpo-38380(5): Update Windows builds to use SQLite 3.31.1 + + - bpo-39789(6): Update Windows release build machines to Visual + Studio 2019 (MSVC 14.2). + + - bpo-34803(7): Package for nuget.org now includes repository + reference and bundled icon image. ---------- Footnotes ---------- (1) https://bugs.python.org/issue40164 - (2) https://bugs.python.org/issue8901 + (2) https://bugs.python.org/issue39930 + + (3) https://bugs.python.org/issue39847 + + (4) https://bugs.python.org/issue38597 + + (5) https://bugs.python.org/issue38380 + + (6) https://bugs.python.org/issue39789 + + (7) https://bugs.python.org/issue34803  -File: python.info, Node: macOS<11>, Next: IDLE<13>, Prev: Windows<11>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: macOS<8>, Next: IDLE<12>, Prev: Windows<9>, Up: Python 3 8 3 release candidate 1 -1.19.17.8 macOS +1.18.15.8 macOS ............... - - bpo-38329(1): python.org macOS installers now update the Current - version symlink of /Library/Frameworks/Python.framework/Versions - for 3.9 installs. Previously, Current was only updated for Python - 2.x installs. This should make it easier to embed Python 3 into - other macOS applications. + - bpo-40164(1): Update macOS installer builds to use OpenSSL 1.1.1g. - - bpo-40164(2): Update macOS installer builds to use OpenSSL 1.1.1g. + - bpo-38380(2): Update macOS builds to use SQLite 3.31.1 ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38329 + (1) https://bugs.python.org/issue40164 - (2) https://bugs.python.org/issue40164 + (2) https://bugs.python.org/issue38380  -File: python.info, Node: IDLE<13>, Next: Tools/Demos<4>, Prev: macOS<11>, Up: Python 3 9 0 alpha 6 +File: python.info, Node: IDLE<12>, Next: Tools/Demos<4>, Prev: macOS<8>, Up: Python 3 8 3 release candidate 1 -1.19.17.9 IDLE -.............. - - - bpo-38439(1): Add a 256×256 pixel IDLE icon to support more modern - environments. Created by Andrew Clover. Delete the unused macOS - idle.icns icon file. - - - bpo-38689(2): IDLE will no longer freeze when inspect.signature - fails when fetching a calltip. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38439 - - (2) https://bugs.python.org/issue38689 - - -File: python.info, Node: Tools/Demos<4>, Next: C API<9>, Prev: IDLE<13>, Up: Python 3 9 0 alpha 6 - -1.19.17.10 Tools/Demos -...................... - - - bpo-40385(1): Removed the checkpyc.py tool. Please see compileall - without force mode as a potential alternative. - - - bpo-40179(2): Fixed translation of ‘#elif’ in Argument Clinic. - - - bpo-40094(3): Fix ‘which.py’ script exit code: it now uses *note - os.waitstatus_to_exitcode(): 1ce. to convert *note os.system(): - e88. exit status into an exit code. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40385 - - (2) https://bugs.python.org/issue40179 - - (3) https://bugs.python.org/issue40094 - - -File: python.info, Node: C API<9>, Prev: Tools/Demos<4>, Up: Python 3 9 0 alpha 6 - -1.19.17.11 C API -................ - - - bpo-40241(1): Move the ‘PyGC_Head’ structure to the internal C API. - - - bpo-40170(2): Convert *note PyObject_IS_GC(): 267. macro to a - function to hide implementation details. - - - bpo-40241(3): Add the functions *note PyObject_GC_IsTracked(): 254. - and *note PyObject_GC_IsFinalized(): 255. to the public API to - allow to query if Python objects are being currently tracked or - have been already finalized by the garbage collector respectively. - Patch by Pablo Galindo. - - - bpo-40170(4): The ‘PyObject_NEW()’ macro becomes an alias to the - *note PyObject_New(): 268. macro, and the ‘PyObject_NEW_VAR()’ - macro becomes an alias to the *note PyObject_NewVar(): 269. macro, - to hide implementation details. They no longer access directly the - *note PyTypeObject.tp_basicsize: 26a. member. - - - bpo-40170(5): *note PyType_HasFeature(): 26b. now always calls - *note PyType_GetFlags(): 26c. to hide implementation details. - Previously, it accessed directly the *note PyTypeObject.tp_flags: - 26d. member when the limited C API was not used. - - - bpo-40170(6): Convert the ‘PyObject_GET_WEAKREFS_LISTPTR()’ macro - to a function to hide implementation details: the macro accessed - directly to the *note PyTypeObject.tp_weaklistoffset: 26e. member. - - - bpo-40170(7): Convert *note PyObject_CheckBuffer(): 26f. macro to a - function to hide implementation details: the macro accessed - directly the *note PyTypeObject.tp_as_buffer: 270. member. - - - bpo-40170(8): Always declare *note PyIndex_Check(): 271. as an - opaque function to hide implementation details: remove - ‘PyIndex_Check()’ macro. The macro accessed directly the *note - PyTypeObject.tp_as_number: 272. member. - - - bpo-39947(9): Add *note PyThreadState_GetID(): 24f. function: get - the unique identifier of a Python thread state. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40241 - - (2) https://bugs.python.org/issue40170 - - (3) https://bugs.python.org/issue40241 - - (4) https://bugs.python.org/issue40170 - - (5) https://bugs.python.org/issue40170 - - (6) https://bugs.python.org/issue40170 - - (7) https://bugs.python.org/issue40170 - - (8) https://bugs.python.org/issue40170 - - (9) https://bugs.python.org/issue39947 - - -File: python.info, Node: Python 3 9 0 alpha 5, Next: Python 3 9 0 alpha 4, Prev: Python 3 9 0 alpha 6, Up: Changelog - -1.19.18 Python 3.9.0 alpha 5 ----------------------------- - -`Release date: 2020-03-23' - -* Menu: - -* Security: Security<10>. -* Core and Builtins: Core and Builtins<15>. -* Library: Library<17>. -* Documentation: Documentation<12>. -* Tests: Tests<13>. -* Build: Build<12>. -* Windows: Windows<12>. -* macOS: macOS<12>. -* IDLE: IDLE<14>. -* Tools/Demos: Tools/Demos<5>. -* C API: C API<10>. - - -File: python.info, Node: Security<10>, Next: Core and Builtins<15>, Up: Python 3 9 0 alpha 5 - -1.19.18.1 Security -.................. - - - bpo-38576(1): Disallow control characters in hostnames in - http.client, addressing CVE-2019-18348. Such potentially malicious - header injection URLs now cause a InvalidURL to be raised. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38576 - - -File: python.info, Node: Core and Builtins<15>, Next: Library<17>, Prev: Security<10>, Up: Python 3 9 0 alpha 5 - -1.19.18.2 Core and Builtins -........................... - - - bpo-40010(1): Optimize pending calls in multithreaded applications. - If a thread different than the main thread schedules a pending call - (*note Py_AddPendingCall(): 25f.), the bytecode evaluation loop is - no longer interrupted at each bytecode instruction to check for - pending calls which cannot be executed. Only the main thread can - execute pending calls. - - Previously, the bytecode evaluation loop was interrupted at each - instruction until the main thread executes pending calls. - - - bpo-1635741(2): Port _weakref extension module to multiphase - initialization ( PEP 489(3)). - - - bpo-1635741(4): Port _collections module to multiphase - initialization ( PEP 489(5)). - - - bpo-40010(6): Optimize signal handling in multithreaded - applications. If a thread different than the main thread gets a - signal, the bytecode evaluation loop is no longer interrupted at - each bytecode instruction to check for pending signals which cannot - be handled. Only the main thread of the main interpreter can - handle signals. - - Previously, the bytecode evaluation loop was interrupted at each - instruction until the main thread handles signals. - - - bpo-39984(7): If *note Py_AddPendingCall(): 25f. is called in a - subinterpreter, the function is now scheduled to be called from the - subinterpreter, rather than being called from the main interpreter. - Each subinterpreter now has its own list of scheduled calls. - - - bpo-1635741(8): Port _heapq module to multiphase initialization. - - - bpo-1635741(9): Port itertools module to multiphase initialization - ( PEP 489(10)). - - - bpo-37207(11): Speed up calls to ‘frozenset()’ by using the PEP - 590(12) ‘vectorcall’ calling convention. Patch by Dong-hee Na. - - - bpo-39984(13): subinterpreters: Move - ‘_PyRuntimeState.ceval.tracing_possible’ to - ‘PyInterpreterState.ceval.tracing_possible’: each interpreter now - has its own variable. - - - bpo-37207(14): Speed up calls to ‘set()’ by using the PEP 590(15) - ‘vectorcall’ calling convention. Patch by Dong-hee Na. - - - bpo-1635741(16): Port _statistics module to multiphase - initialization ( PEP 489(17)). - - - bpo-39968(18): Use inline function to replace extension modules’ - get_module_state macros. - - - bpo-39965(19): Correctly raise ‘SyntaxError’ if `await' is used - inside non-async functions and ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ is set - (like in the asyncio REPL). Patch by Pablo Galindo. - - - bpo-39562(20): Allow executing asynchronous comprehensions on the - top level when the ‘PyCF_ALLOW_TOP_LEVEL_AWAIT’ flag is given. - Patch by Batuhan Taskaya. - - - bpo-37207(21): Speed up calls to ‘tuple()’ by using the PEP 590(22) - ‘vectorcall’ calling convention. Patch by Dong-hee Na. - - - bpo-38373(23): Chaged list overallocation strategy. It no longer - overallocates if the new size is closer to overalocated size than - to the old size and adds padding. - - - bpo-39926(24): Update Unicode database to Unicode version 13.0.0. - - - bpo-19466(25): Clear the frames of daemon threads earlier during - the Python shutdown to call objects destructors. So “unclosed - file” resource warnings are now emitted for daemon threads in a - more reliable way. - - - bpo-38894(26): Fix a bug that was causing incomplete results when - calling ‘pathlib.Path.glob’ in the presence of symlinks that point - to files where the user does not have read access. Patch by Pablo - Galindo and Matt Wozniski. - - - bpo-39877(27): Fix *note PyEval_RestoreThread(): 3d9. random crash - at exit with daemon threads. It now accesses the ‘_PyRuntime’ - variable directly instead of using ‘tstate->interp->runtime’, since - ‘tstate’ can be a dangling pointer after *note Py_Finalize(): db5. - has been called. Moreover, the daemon thread now exits before - trying to take the GIL. - - - bpo-39871(28): Fix a possible *note SystemError: 6f4. in - ‘math.{atan2,copysign,remainder}()’ when the first argument cannot - be converted to a *note float: 1fd. Patch by Zackery Spytz. - - - bpo-39776(29): Fix race condition where threads created by - PyGILState_Ensure() could get a duplicate id. - - This affects consumers of tstate->id like the contextvar caching - machinery, which could return invalid cached objects under heavy - thread load (observed in embedded scenarios). - - - bpo-39778(30): Fixed a crash due to incorrect handling of weak - references in ‘collections.OrderedDict’ classes. Patch by Pablo - Galindo. - - - bpo-1635741(31): Port audioop extension module to multiphase - initialization ( PEP 489(32)). - - - bpo-39702(33): Relax *note decorator: 174. grammar restrictions to - allow any valid expression ( PEP 614(34)). - - - bpo-38091(35): Tweak import deadlock detection code to not deadlock - itself. - - - bpo-1635741(36): Port _locale extension module to multiphase - initialization ( PEP 489(37)). - - - bpo-39087(38): Optimize *note PyUnicode_AsUTF8(): 531. and *note - PyUnicode_AsUTF8AndSize(): 530. slightly when they need to create - internal UTF-8 cache. - - - bpo-39520(39): Fix unparsing of ext slices with no items - (‘foo[:,]’). Patch by Batuhan Taskaya. - - - bpo-39220(40): Do not optimize annotations if ‘from __future__ - import annotations’ is used. Patch by Pablo Galindo. - - - bpo-35712(41): Using *note NotImplemented: 202. in a boolean - context has been deprecated. Patch contributed by Josh Rosenberg. - - - bpo-22490(42): Don’t leak environment variable - ‘__PYVENV_LAUNCHER__’ into the interpreter session on macOS. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40010 - - (2) https://bugs.python.org/issue1635741 - - (3) https://www.python.org/dev/peps/pep-0489 - - (4) https://bugs.python.org/issue1635741 - - (5) https://www.python.org/dev/peps/pep-0489 - - (6) https://bugs.python.org/issue40010 - - (7) https://bugs.python.org/issue39984 - - (8) https://bugs.python.org/issue1635741 - - (9) https://bugs.python.org/issue1635741 - - (10) https://www.python.org/dev/peps/pep-0489 - - (11) https://bugs.python.org/issue37207 - - (12) https://www.python.org/dev/peps/pep-0590 - - (13) https://bugs.python.org/issue39984 - - (14) https://bugs.python.org/issue37207 - - (15) https://www.python.org/dev/peps/pep-0590 - - (16) https://bugs.python.org/issue1635741 - - (17) https://www.python.org/dev/peps/pep-0489 - - (18) https://bugs.python.org/issue39968 - - (19) https://bugs.python.org/issue39965 - - (20) https://bugs.python.org/issue39562 - - (21) https://bugs.python.org/issue37207 - - (22) https://www.python.org/dev/peps/pep-0590 - - (23) https://bugs.python.org/issue38373 - - (24) https://bugs.python.org/issue39926 - - (25) https://bugs.python.org/issue19466 - - (26) https://bugs.python.org/issue38894 - - (27) https://bugs.python.org/issue39877 - - (28) https://bugs.python.org/issue39871 - - (29) https://bugs.python.org/issue39776 - - (30) https://bugs.python.org/issue39778 - - (31) https://bugs.python.org/issue1635741 - - (32) https://www.python.org/dev/peps/pep-0489 - - (33) https://bugs.python.org/issue39702 - - (34) https://www.python.org/dev/peps/pep-0614 - - (35) https://bugs.python.org/issue38091 - - (36) https://bugs.python.org/issue1635741 - - (37) https://www.python.org/dev/peps/pep-0489 - - (38) https://bugs.python.org/issue39087 - - (39) https://bugs.python.org/issue39520 - - (40) https://bugs.python.org/issue39220 - - (41) https://bugs.python.org/issue35712 - - (42) https://bugs.python.org/issue22490 - - -File: python.info, Node: Library<17>, Next: Documentation<12>, Prev: Core and Builtins<15>, Up: Python 3 9 0 alpha 5 - -1.19.18.3 Library -................. - - - bpo-39830(1): Add *note zipfile.Path: 1028. to ‘__all__’ in the - *note zipfile: 14b. module. - - - bpo-40000(2): Improved error messages for validation of - ‘ast.Constant’ nodes. Patch by Batuhan Taskaya. - - - bpo-39999(3): ‘__module__’ of the AST node classes is now set to - “ast” instead of “_ast”. Added docstrings for dummy AST node - classes and deprecated attributes. - - - bpo-39991(4): *note uuid.getnode(): 519. now skips IPv6 addresses - with the same string length than a MAC address (17 characters): - only use MAC addresses. - - - bpo-39988(5): Deprecated ‘ast.AugLoad’ and ‘ast.AugStore’ node - classes because they are no longer used. - - - bpo-39656(6): Ensure ‘bin/python3.#’ is always present in virtual - environments on POSIX platforms - by Anthony Sottile. - - - bpo-39969(7): Deprecated ‘ast.Param’ node class because it’s no - longer used. Patch by Batuhan Taskaya. - - - bpo-39360(8): Ensure all workers exit when finalizing a - ‘multiprocessing.Pool’ implicitly via the module finalization - handlers of multiprocessing. This fixes a deadlock situation that - can be experienced when the Pool is not properly finalized via the - context manager or a call to ‘multiprocessing.Pool.terminate’. - Patch by Batuhan Taskaya and Pablo Galindo. - - - bpo-35370(9): sys.settrace(), sys.setprofile() and - _lsprof.Profiler.enable() now properly report *note PySys_Audit(): - 1029. error if “sys.setprofile” or “sys.settrace” audit event is - denied. - - - bpo-39936(10): AIX: Fix _aix_support module when the subprocess is - not available, when building Python from scratch. It now uses new - private _bootsubprocess module, rather than having two - implementations depending if subprocess is available or not. So - _aix_support.aix_platform() result is now the same if subprocess is - available or not. - - - bpo-36144(11): *note collections.OrderedDict: 2ed. now implements - ‘|’ and ‘|=’ ( PEP 584(12)). - - - bpo-39652(13): The column name found in - ‘sqlite3.Cursor.description’ is now truncated on the first ‘[’ only - if the PARSE_COLNAMES option is set. - - - bpo-39915(14): Ensure *note - unittest.mock.AsyncMock.await_args_list: 102a. has call objects in - the order of awaited arguments instead of using *note - unittest.mock.Mock.call_args: 102b. which has the last value of the - call. Patch by Karthikeyan Singaravelan. - - - bpo-36144(15): Updated *note os.environ: c0b. and *note - os.environb: c67. to support PEP 584(16)’s merge (‘|’) and update - (‘|=’) operators. - - - bpo-38662(17): The ‘ensurepip’ module now invokes ‘pip’ via the - ‘runpy’ module. Hence it is no longer tightly coupled with the - internal API of the bundled ‘pip’ version, allowing easier updates - to a newer ‘pip’ version both internally and for distributors. - - - bpo-38075(18): Fix the ‘random.Random.seed()’ method when a *note - bool: 2c0. is passed as the seed. - - - bpo-39916(19): More reliable use of ‘os.scandir()’ in - ‘Path.glob()’. It no longer emits a ResourceWarning when - interrupted. - - - bpo-39850(20): *note multiprocessing: b7. now supports abstract - socket addresses (if abstract sockets are supported in the running - platform). When creating arbitrary addresses (like when - default-constructing *note multiprocessing.connection.Listener: - 102c. objects) abstract sockets are preferred to avoid the case - when the temporary-file-generated address is too large for an - AF_UNIX socket address. Patch by Pablo Galindo. - - - bpo-36287(21): *note ast.dump(): 185. no longer outputs optional - fields and attributes with default values. The default values for - optional fields and attributes of AST nodes are now set as class - attributes (e.g. ‘Constant.kind’ is set to ‘None’). - - - bpo-39889(22): Fixed *note ast.unparse(): 186. for extended slices - containing a single element (e.g. ‘a[i:j,]’). Remove redundant - tuples when index with a tuple (e.g. ‘a[i, j]’). - - - bpo-39828(23): Fix *note json.tool: a5. to catch *note - BrokenPipeError: a80. Patch by Dong-hee Na. - - - bpo-13487(24): Avoid a possible `“RuntimeError: dictionary changed - size during iteration”' from *note inspect.getmodule(): 102d. when - it tried to loop through *note sys.modules: 1012. - - - bpo-39674(25): Revert “bpo-37330(26): open() no longer accept ‘U’ - in file mode”. The “U” mode of open() is kept in Python 3.9 to - ease transition from Python 2.7, but will be removed in Python - 3.10. - - - bpo-28577(27): The hosts method on 32-bit prefix length - IPv4Networks and 128-bit prefix IPv6Networks now returns a list - containing the single Address instead of an empty list. - - - bpo-39826(28): Add getConnection method to logging HTTPHandler to - enable custom connections. - - - bpo-39763(29): Reimplement ‘distutils.spawn.spawn()’ function with - the *note subprocess: f9. module. - - - bpo-39794(30): Add –without-decimal-contextvar build option. This - enables a thread-local rather than a coroutine local context. - - - bpo-36144(31): *note collections.defaultdict: c0e. now implements - ‘|’ ( PEP 584(32)). - - - bpo-39517(33): Fix runpy.run_path() when using pathlike objects - - - bpo-39775(34): Change ‘inspect.Signature.parameters’ back to - ‘collections.OrderedDict’. This was changed to ‘dict’ in Python - 3.9.0a4. - - - bpo-39678(35): Refactor queue_manager in *note - concurrent.futures.ProcessPoolExecutor: 196. to make it easier to - maintain. - - - bpo-39764(36): Fix AttributeError when calling get_stack on a - PyAsyncGenObject Task - - - bpo-39769(37): The *note compileall.compile_dir(): 47c. function’s - `ddir' parameter and the compileall command line flag ‘-d’ no - longer write the wrong pathname to the generated pyc file for - submodules beneath the root of the directory tree being compiled. - This fixes a regression introduced with Python 3.5. - - - bpo-36144(38): *note types.MappingProxyType: b90. objects now - support the merge (‘|’) operator from PEP 584(39). - - - bpo-38691(40): The *note importlib: 9a. module now ignores the - *note PYTHONCASEOK: 230. environment variable when the *note -E: - 231. or *note -I: 232. command line options are being used. - - - bpo-39719(41): Remove ‘tempfile.SpooledTemporaryFile.softspace()’ - as files no longer have the ‘softspace’ attribute in Python 3. - Patch by Shantanu. - - - bpo-39667(42): Improve pathlib.Path compatibility on zipfile.Path - and correct performance degradation as found in zipp 3.0. - - - bpo-39638(43): Keep ASDL signatures in the docstrings for ‘AST’ - nodes. Patch by Batuhan Taskaya - - - bpo-39639(44): Deprecated ‘ast.Suite’ node class because it’s no - longer used. Patch by Batuhan Taskaya. - - - bpo-39609(45): Add thread_name_prefix to default asyncio executor - - - bpo-39548(46): Fix handling of header in *note - urllib.request.AbstractDigestAuthHandler: 102e. when the optional - ‘qop’ parameter is not present. - - - bpo-39509(47): HTTP status codes ‘103 EARLY_HINTS’ and ‘425 - TOO_EARLY’ are added to *note http.HTTPStatus: 1ac. Patch by - Dong-hee Na. - - - bpo-39507(48): Adding HTTP status 418 “I’m a Teapot” to HTTPStatus - in http library. Patch by Ross Rhodes. - - - bpo-39495(49): Remove default value from `attrs' parameter of *note - xml.etree.ElementTree.TreeBuilder.start(): 102f. for consistency - between Python and C implementations. - - - bpo-38971(50): Open issue in the BPO indicated a desire to make the - implementation of codecs.open() at parity with io.open(), which - implements a try/except to assure file stream gets closed before an - exception is raised. - - - bpo-38641(51): Added starred expressions support to ‘return’ and - ‘yield’ statements for ‘lib2to3’. Patch by Vlad Emelianov. - - - bpo-37534(52): When using minidom module to generate XML documents - the ability to add Standalone Document Declaration is added. All - the changes are made to generate a document in compliance with - Extensible Markup Language (XML) 1.0 (Fifth Edition) W3C - Recommendation (available here: - ‘https://www.w3.org/TR/xml/#sec-prolog-dtd’). - - - bpo-34788(53): Add support for scoped IPv6 addresses to *note - ipaddress: a2. Patch by Oleksandr Pavliuk. - - - bpo-34822(54): Simplified AST for subscription. Simple indices are - now represented by their value, extended slices are represented as - tuples. *note ast: 7. classes ‘Index’ and ‘ExtSlice’ are - considered deprecated and will be removed in future Python - versions. In the meantime, ‘Index(value)’ now returns a ‘value’ - itself, ‘ExtSlice(slices)’ returns ‘Tuple(slices, Load())’. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39830 - - (2) https://bugs.python.org/issue40000 - - (3) https://bugs.python.org/issue39999 - - (4) https://bugs.python.org/issue39991 - - (5) https://bugs.python.org/issue39988 - - (6) https://bugs.python.org/issue39656 - - (7) https://bugs.python.org/issue39969 - - (8) https://bugs.python.org/issue39360 - - (9) https://bugs.python.org/issue35370 - - (10) https://bugs.python.org/issue39936 - - (11) https://bugs.python.org/issue36144 - - (12) https://www.python.org/dev/peps/pep-0584 - - (13) https://bugs.python.org/issue39652 - - (14) https://bugs.python.org/issue39915 - - (15) https://bugs.python.org/issue36144 - - (16) https://www.python.org/dev/peps/pep-0584 - - (17) https://bugs.python.org/issue38662 - - (18) https://bugs.python.org/issue38075 - - (19) https://bugs.python.org/issue39916 - - (20) https://bugs.python.org/issue39850 - - (21) https://bugs.python.org/issue36287 - - (22) https://bugs.python.org/issue39889 - - (23) https://bugs.python.org/issue39828 - - (24) https://bugs.python.org/issue13487 - - (25) https://bugs.python.org/issue39674 - - (26) https://bugs.python.org/issue37330 - - (27) https://bugs.python.org/issue28577 - - (28) https://bugs.python.org/issue39826 - - (29) https://bugs.python.org/issue39763 - - (30) https://bugs.python.org/issue39794 - - (31) https://bugs.python.org/issue36144 - - (32) https://www.python.org/dev/peps/pep-0584 - - (33) https://bugs.python.org/issue39517 - - (34) https://bugs.python.org/issue39775 - - (35) https://bugs.python.org/issue39678 - - (36) https://bugs.python.org/issue39764 - - (37) https://bugs.python.org/issue39769 - - (38) https://bugs.python.org/issue36144 - - (39) https://www.python.org/dev/peps/pep-0584 - - (40) https://bugs.python.org/issue38691 - - (41) https://bugs.python.org/issue39719 - - (42) https://bugs.python.org/issue39667 - - (43) https://bugs.python.org/issue39638 - - (44) https://bugs.python.org/issue39639 - - (45) https://bugs.python.org/issue39609 - - (46) https://bugs.python.org/issue39548 - - (47) https://bugs.python.org/issue39509 - - (48) https://bugs.python.org/issue39507 - - (49) https://bugs.python.org/issue39495 - - (50) https://bugs.python.org/issue38971 - - (51) https://bugs.python.org/issue38641 - - (52) https://bugs.python.org/issue37534 - - (53) https://bugs.python.org/issue34788 - - (54) https://bugs.python.org/issue34822 - - -File: python.info, Node: Documentation<12>, Next: Tests<13>, Prev: Library<17>, Up: Python 3 9 0 alpha 5 - -1.19.18.4 Documentation -....................... - - - bpo-39868(1): Updated the Language Reference for PEP 572(2). - - - bpo-13790(3): Change ‘string’ to ‘specification’ in format doc. - - - bpo-17422(4): The language reference no longer restricts default - class namespaces to dicts only. - - - bpo-39530(5): Fix misleading documentation about mixed-type numeric - comparisons. - - - bpo-39718(6): Update *note token: 119. documentation to reflect - additions in Python 3.8 - - - bpo-39677(7): Changed operand name of `MAKE_FUNCTION' from `argc' - to `flags' for module *note dis: 37. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39868 - - (2) https://www.python.org/dev/peps/pep-0572 - - (3) https://bugs.python.org/issue13790 - - (4) https://bugs.python.org/issue17422 - - (5) https://bugs.python.org/issue39530 - - (6) https://bugs.python.org/issue39718 - - (7) https://bugs.python.org/issue39677 - - -File: python.info, Node: Tests<13>, Next: Build<12>, Prev: Documentation<12>, Up: Python 3 9 0 alpha 5 - -1.19.18.5 Tests -............... - - - bpo-40019(1): test_gdb now skips tests if it detects that gdb - failed to read debug information because the Python binary is - optimized. - - - bpo-27807(2): ‘test_site.test_startup_imports()’ is now skipped if - a path of *note sys.path: 260. contains a ‘.pth’ file. - - - bpo-26067(3): Do not fail test_shutil test_chown test when uid or - gid of user cannot be resolved to a name. - - - bpo-39855(4): test_subprocess.test_user() now skips the test on an - user name if the user name doesn’t exist. For example, skip the - test if the user “nobody” doesn’t exist on Linux. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue40019 - - (2) https://bugs.python.org/issue27807 - - (3) https://bugs.python.org/issue26067 - - (4) https://bugs.python.org/issue39855 - - -File: python.info, Node: Build<12>, Next: Windows<12>, Prev: Tests<13>, Up: Python 3 9 0 alpha 5 - -1.19.18.6 Build -............... - - - bpo-39761(1): Fix build with DTrace but without additional DFLAGS. - - - bpo-39763(2): setup.py now uses a basic implementation of the *note - subprocess: f9. module if the *note subprocess: f9. module is not - available: before required C extension modules are built. - - - bpo-1294959(3): Add ‘--with-platlibdir’ option to the configure - script: name of the platform-specific library directory, stored in - the new *note sys.platlibdir: 1e9. attribute. It is used to build - the path of platform-specific extension modules and the path of the - standard library. It is equal to ‘"lib"’ on most platforms. On - Fedora and SuSE, it is equal to ‘"lib64"’ on 64-bit platforms. - Patch by Jan Matějek, Matěj Cepl, Charalampos Stratakis and Victor - Stinner. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39761 - - (2) https://bugs.python.org/issue39763 - - (3) https://bugs.python.org/issue1294959 - - -File: python.info, Node: Windows<12>, Next: macOS<12>, Prev: Build<12>, Up: Python 3 9 0 alpha 5 - -1.19.18.7 Windows -................. - - - bpo-39930(1): Ensures the required ‘vcruntime140.dll’ is included - in install packages. - - - bpo-39847(2): Avoid hang when computer is hibernated whilst waiting - for a mutex (for lock-related objects from *note threading: 10b.) - around 49-day uptime. - - - bpo-38597(3): *note distutils: 38. will no longer statically link - ‘vcruntime140.dll’ when a redistributable version is unavailable. - All future releases of CPython will include a copy of this DLL to - ensure distributed extensions can continue to load. - - - bpo-38380(4): Update Windows builds to use SQLite 3.31.1 - - - bpo-39789(5): Update Windows release build machines to Visual - Studio 2019 (MSVC 14.2). - - - bpo-34803(6): Package for nuget.org now includes repository - reference and bundled icon image. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39930 - - (2) https://bugs.python.org/issue39847 - - (3) https://bugs.python.org/issue38597 - - (4) https://bugs.python.org/issue38380 - - (5) https://bugs.python.org/issue39789 - - (6) https://bugs.python.org/issue34803 - - -File: python.info, Node: macOS<12>, Next: IDLE<14>, Prev: Windows<12>, Up: Python 3 9 0 alpha 5 - -1.19.18.8 macOS -............... - - - bpo-38380(1): Update macOS builds to use SQLite 3.31.1 - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38380 - - -File: python.info, Node: IDLE<14>, Next: Tools/Demos<5>, Prev: macOS<12>, Up: Python 3 9 0 alpha 5 - -1.19.18.9 IDLE +1.18.15.9 IDLE .............. - bpo-27115(1): For ‘Go to Line’, use a Query box subclass with IDLE @@ -60062,6 +54801,13 @@ File: python.info, Node: IDLE<14>, Next: Tools/Demos<5>, Prev: macOS<12>, Up - bpo-39781(4): Selecting code context lines no longer causes a jump. + - bpo-38439(5): Add a 256×256 pixel IDLE icon to support more modern + environments. Created by Andrew Clover. Delete the unused macOS + idle.icns icon file. + + - bpo-38689(6): IDLE will no longer freeze when inspect.signature + fails when fetching a calltip. + ---------- Footnotes ---------- (1) https://bugs.python.org/issue27115 @@ -60072,195 +54818,87 @@ File: python.info, Node: IDLE<14>, Next: Tools/Demos<5>, Prev: macOS<12>, Up (4) https://bugs.python.org/issue39781 - -File: python.info, Node: Tools/Demos<5>, Next: C API<10>, Prev: IDLE<14>, Up: Python 3 9 0 alpha 5 + (5) https://bugs.python.org/issue38439 -1.19.18.10 Tools/Demos + (6) https://bugs.python.org/issue38689 + + +File: python.info, Node: Tools/Demos<4>, Next: C API<6>, Prev: IDLE<12>, Up: Python 3 8 3 release candidate 1 + +1.18.15.10 Tools/Demos ...................... - - bpo-36184(1): Port python-gdb.py to FreeBSD. python-gdb.py now + - bpo-40179(1): Fixed translation of ‘#elif’ in Argument Clinic. + + - bpo-36184(2): Port python-gdb.py to FreeBSD. python-gdb.py now checks for “take_gil” function name to check if a frame tries to acquire the GIL, instead of checking for “pthread_cond_timedwait” which is specific to Linux and can be a different condition than the GIL. - - bpo-38080(2): Added support to fix ‘getproxies’ in the - ‘lib2to3.fixes.fix_urllib’ module. Patch by José Roberto Meza - Cabrera. + - bpo-39889(3): Fixed ‘unparse.py’ for extended slices containing a + single element (e.g. ‘a[i:j,]’). Remove redundant tuples when + index with a tuple (e.g. ‘a[i, j]’). ---------- Footnotes ---------- - (1) https://bugs.python.org/issue36184 + (1) https://bugs.python.org/issue40179 - (2) https://bugs.python.org/issue38080 + (2) https://bugs.python.org/issue36184 + + (3) https://bugs.python.org/issue39889  -File: python.info, Node: C API<10>, Prev: Tools/Demos<5>, Up: Python 3 9 0 alpha 5 +File: python.info, Node: C API<6>, Prev: Tools/Demos<4>, Up: Python 3 8 3 release candidate 1 -1.19.18.11 C API +1.18.15.11 C API ................ - - bpo-40024(1): Add *note PyModule_AddType(): 253. helper function: - add a type to a module. Patch by Dong-hee Na. - - - bpo-39946(2): Remove ‘_PyRuntime.getframe’ hook and remove - ‘_PyThreadState_GetFrame’ macro which was an alias to - ‘_PyRuntime.getframe’. They were only exposed by the internal C - API. Remove also ‘PyThreadFrameGetter’ type. - - - bpo-39947(3): Add *note PyThreadState_GetFrame(): 24e. function: - get the current frame of a Python thread state. - - - bpo-37207(4): Add _PyArg_NoKwnames helper function. Patch by - Dong-hee Na. - - - bpo-39947(5): Add *note PyThreadState_GetInterpreter(): 24c.: get - the interpreter of a Python thread state. - - - bpo-39947(6): Add *note PyInterpreterState_Get(): 24d. function to - the limited C API. - - - bpo-35370(7): If *note PySys_Audit(): 1029. fails in *note - PyEval_SetProfile(): eff. or *note PyEval_SetTrace(): f00, log the + - bpo-35370(1): If *note PySys_Audit(): f11. fails in *note + PyEval_SetProfile(): e11. or *note PyEval_SetTrace(): e12, log the error as an unraisable exception. - - bpo-39947(8): Move the static inline function flavor of - Py_EnterRecursiveCall() and Py_LeaveRecursiveCall() to the internal - C API: they access PyThreadState attributes. The limited C API - provides regular functions which hide implementation details. - - - bpo-39947(9): Py_TRASHCAN_BEGIN_CONDITION and Py_TRASHCAN_END macro - no longer access PyThreadState attributes, but call new private - _PyTrash_begin() and _PyTrash_end() functions which hide - implementation details. - - - bpo-39884(10): *note PyDescr_NewMethod(): 1038. and + - bpo-39884(2): *note PyDescr_NewMethod(): f12. and ‘PyCFunction_NewEx()’ now include the method name in the SystemError “bad call flags” error message to ease debug. - - bpo-39877(11): Deprecated *note PyEval_InitThreads(): 20c. and - *note PyEval_ThreadsInitialized(): 20d. Calling *note - PyEval_InitThreads(): 20c. now does nothing. - - - bpo-38249(12): *note Py_UNREACHABLE: 529. is now implemented with - ‘__builtin_unreachable()’ and analogs in release mode. - - - bpo-38643(13): *note PyNumber_ToBase(): 1039. now raises a *note - SystemError: 6f4. instead of crashing when called with invalid + - bpo-38643(3): *note PyNumber_ToBase(): f13. now raises a *note + SystemError: 5e8. instead of crashing when called with invalid base. - - bpo-39882(14): The *note Py_FatalError(): 266. function is replaced - with a macro which logs automatically the name of the current - function, unless the ‘Py_LIMITED_API’ macro is defined. - - - bpo-39824(15): Extension modules: *note m_traverse: 258, *note - m_clear: 259. and *note m_free: 25a. functions of *note - PyModuleDef: 25b. are no longer called if the module state was - requested but is not allocated yet. This is the case immediately - after the module is created and before the module is executed - (*note Py_mod_exec: 25c. function). More precisely, these - functions are not called if *note m_size: 25d. is greater than 0 - and the module state (as returned by *note PyModule_GetState(): - 25e.) is ‘NULL’. - - Extension modules without module state (‘m_size <= 0’) are not - affected. - - - bpo-38913(16): Fixed segfault in ‘Py_BuildValue()’ called with a + - bpo-38913(4): Fixed segfault in ‘Py_BuildValue()’ called with a format containing “#” and undefined PY_SSIZE_T_CLEAN whwn an exception is set. - - bpo-38500(17): Add a private API to get and set the frame - evaluation function: add *note - _PyInterpreterState_GetEvalFrameFunc(): 103a. and *note - _PyInterpreterState_SetEvalFrameFunc(): 103b. C functions. The - *note _PyFrameEvalFunction: 103c. function type now takes a - `tstate' parameter. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue40024 + (1) https://bugs.python.org/issue35370 - (2) https://bugs.python.org/issue39946 + (2) https://bugs.python.org/issue39884 - (3) https://bugs.python.org/issue39947 + (3) https://bugs.python.org/issue38643 - (4) https://bugs.python.org/issue37207 - - (5) https://bugs.python.org/issue39947 - - (6) https://bugs.python.org/issue39947 - - (7) https://bugs.python.org/issue35370 - - (8) https://bugs.python.org/issue39947 - - (9) https://bugs.python.org/issue39947 - - (10) https://bugs.python.org/issue39884 - - (11) https://bugs.python.org/issue39877 - - (12) https://bugs.python.org/issue38249 - - (13) https://bugs.python.org/issue38643 - - (14) https://bugs.python.org/issue39882 - - (15) https://bugs.python.org/issue39824 - - (16) https://bugs.python.org/issue38913 - - (17) https://bugs.python.org/issue38500 + (4) https://bugs.python.org/issue38913  -File: python.info, Node: Python 3 9 0 alpha 4, Next: Python 3 9 0 alpha 3, Prev: Python 3 9 0 alpha 5, Up: Changelog +File: python.info, Node: Python 3 8 2 final, Next: Python 3 8 2 release candidate 2, Prev: Python 3 8 3 release candidate 1, Up: Changelog -1.19.19 Python 3.9.0 alpha 4 ----------------------------- +1.18.16 Python 3.8.2 final +-------------------------- -`Release date: 2020-02-25' +`Release date: 2020-02-24' * Menu: -* Security: Security<11>. -* Core and Builtins: Core and Builtins<16>. -* Library: Library<18>. +* Core and Builtins: Core and Builtins<15>. +* Library: Library<15>. * Documentation: Documentation<13>. -* Tests: Tests<14>. -* Build: Build<13>. -* Windows: Windows<13>. -* IDLE: IDLE<15>. -* C API: C API<11>. +* IDLE: IDLE<13>.  -File: python.info, Node: Security<11>, Next: Core and Builtins<16>, Up: Python 3 9 0 alpha 4 +File: python.info, Node: Core and Builtins<15>, Next: Library<15>, Up: Python 3 8 2 final -1.19.19.1 Security -.................. - - - bpo-39184(1): Add audit events to functions in *note fcntl: 7c, - *note msvcrt: b6, *note os: c4, *note resource: e0, *note shutil: - e9, *note signal: ea. and *note syslog: ff. - - - bpo-39401(2): Avoid unsafe DLL load at startup on Windows 7 and - earlier. - - - bpo-39184(3): Add audit events to command execution functions in os - and pty modules. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39184 - - (2) https://bugs.python.org/issue39401 - - (3) https://bugs.python.org/issue39184 - - -File: python.info, Node: Core and Builtins<16>, Next: Library<18>, Prev: Security<11>, Up: Python 3 9 0 alpha 4 - -1.19.19.2 Core and Builtins +1.18.16.1 Core and Builtins ........................... - bpo-39382(1): Fix a use-after-free in the single inheritance path @@ -60268,391 +54906,60 @@ File: python.info, Node: Core and Builtins<16>, Next: Library<18>, Prev: Secu reference, and so does its first item. Patch by Yonatan Goldschmidt. - - bpo-39573(2): Update clinic tool to use *note Py_IS_TYPE(): 1040. - Patch by Dong-hee Na. - - - bpo-39619(3): Enable use of *note os.chroot(): 1041. on HP-UX - systems. - - - bpo-39573(4): Add *note Py_IS_TYPE(): 1040. static inline function - to check whether the object `o' type is `type'. - - - bpo-39606(5): Fix regression caused by fix for bpo-39386(6), that - prevented calling ‘aclose’ on an async generator that had already - been closed or exhausted. - - - bpo-39579(7): Change the ending column offset of ‘Attribute’ nodes - constructed in ‘ast_for_dotted_name’ to point at the end of the - current node and not at the end of the last ‘NAME’ node. - - - bpo-1635741(8): Port _crypt extension module to multiphase - initialization ( PEP 489(9)). - - - bpo-1635741(10): Port _contextvars extension module to multiphase - initialization ( PEP 489(11)). - - - bpo-39510(12): Fix segfault in ‘readinto()’ method on closed - BufferedReader. - - - bpo-39502(13): Fix *note time.localtime(): 1042. on 64-bit AIX to - support years before 1902 and after 2038. Patch by M Felt. - - - bpo-39492(14): Fix a reference cycle in the C Pickler that was - preventing the garbage collection of deleted, pickled objects. - - - bpo-39453(15): Fixed a possible crash in ‘list.__contains__()’ when - a list is changed during comparing items. Patch by Dong-hee Na. - - - bpo-39434(16): *note floor division: 1f9. of float operation now - has a better performance. Also the message of *note - ZeroDivisionError: 1fa. for this operation is updated. Patch by - Dong-hee Na. - - - bpo-1635741(17): Port _codecs extension module to multiphase - initialization ( PEP 489(18)). - - - bpo-1635741(19): Port _bz2 extension module to multiphase - initialization ( PEP 489(20)). - - - bpo-1635741(21): Port _abc extension module to multiphase - initialization ( PEP 489(22)). - - - bpo-39320(23): Replace two complex bytecodes for building dicts - with two simpler ones. The new bytecodes ‘DICT_MERGE’ and - ‘DICT_UPDATE’ have been added The old bytecodes ‘BUILD_MAP_UNPACK’ - and ‘BUILD_MAP_UNPACK_WITH_CALL’ have been removed. - - - bpo-39219(24): Syntax errors raised in the tokenizer now always set - correct “text” and “offset” attributes. - - - bpo-36051(25): Drop the GIL during large ‘bytes.join’ operations. - Patch by Bruce Merry. - - - bpo-38960(26): Fix DTrace build issues on FreeBSD. Patch by David - Carlier. - - - bpo-37207(27): Speed up calls to ‘range()’ by about 30%, by using - the PEP 590 ‘vectorcall’ calling convention. Patch by Mark - Shannon. - - - bpo-36144(28): *note dict: 164. (and *note collections.UserDict: - 1043.) objects now support PEP 584’s merge (‘|’) and update (‘|=’) - operators. Patch by Brandt Bucher. - - - bpo-32856(29): Optimized the idiom for assignment a temporary - variable in comprehensions. Now ‘for y in [expr]’ in - comprehensions is as fast as a simple assignment ‘y = expr’. + - bpo-39427(2): Document all possibilities for the ‘-X’ options in + the command line help section. Patch by Pablo Galindo. ---------- Footnotes ---------- (1) https://bugs.python.org/issue39382 - (2) https://bugs.python.org/issue39573 - - (3) https://bugs.python.org/issue39619 - - (4) https://bugs.python.org/issue39573 - - (5) https://bugs.python.org/issue39606 - - (6) https://bugs.python.org/issue39386 - - (7) https://bugs.python.org/issue39579 - - (8) https://bugs.python.org/issue1635741 - - (9) https://www.python.org/dev/peps/pep-0489 - - (10) https://bugs.python.org/issue1635741 - - (11) https://www.python.org/dev/peps/pep-0489 - - (12) https://bugs.python.org/issue39510 - - (13) https://bugs.python.org/issue39502 - - (14) https://bugs.python.org/issue39492 - - (15) https://bugs.python.org/issue39453 - - (16) https://bugs.python.org/issue39434 - - (17) https://bugs.python.org/issue1635741 - - (18) https://www.python.org/dev/peps/pep-0489 - - (19) https://bugs.python.org/issue1635741 - - (20) https://www.python.org/dev/peps/pep-0489 - - (21) https://bugs.python.org/issue1635741 - - (22) https://www.python.org/dev/peps/pep-0489 - - (23) https://bugs.python.org/issue39320 - - (24) https://bugs.python.org/issue39219 - - (25) https://bugs.python.org/issue36051 - - (26) https://bugs.python.org/issue38960 - - (27) https://bugs.python.org/issue37207 - - (28) https://bugs.python.org/issue36144 - - (29) https://bugs.python.org/issue32856 + (2) https://bugs.python.org/issue39427  -File: python.info, Node: Library<18>, Next: Documentation<13>, Prev: Core and Builtins<16>, Up: Python 3 9 0 alpha 4 +File: python.info, Node: Library<15>, Next: Documentation<13>, Prev: Core and Builtins<15>, Up: Python 3 8 2 final -1.19.19.3 Library +1.18.16.2 Library ................. - - bpo-30566(1): Fix *note IndexError: f38. when trying to decode an - invalid string with punycode codec. - - - bpo-39649(2): Remove obsolete check for ‘__args__’ in + - bpo-39649(1): Remove obsolete check for ‘__args__’ in bdb.Bdb.format_stack_entry. - - bpo-39648(3): Expanded *note math.gcd(): 1be. and *note math.lcm(): - 1bf. to handle multiple arguments. - - - bpo-39681(4): Fix a regression where the C pickle module wouldn’t + - bpo-39681(2): Fix a regression where the C pickle module wouldn’t allow unpickling from a file-like object that doesn’t expose a readinto() method. - - bpo-35950(5): Raise *note io.UnsupportedOperation: 1045. in - ‘io.BufferedReader.truncate()’ when it is called on a read-only - *note io.BufferedReader: c5d. instance. - - - bpo-39479(6): Add *note math.lcm(): 1bf. function: least common - multiple. - - - bpo-39674(7): Revert “Do not expose abstract collection classes in - the collections module” change (bpo-25988(8)). Aliases to ABC like - collections.Mapping are kept in Python 3.9 to ease transition from - Python 2.7, but will be removed in Python 3.10. - - - bpo-39104(9): Fix hanging ProcessPoolExcutor on - ‘shutdown(wait=False)’ when a task has failed pickling. - - - bpo-39627(10): Fixed TypedDict totality check for inherited keys. - - - bpo-39474(11): Fixed starting position of AST for expressions like - ‘(a)(b)’, ‘(a)[b]’ and ‘(a).b’. - - - bpo-21016(12): The *note pydoc: d9. and *note trace: 11b. modules - now use the *note sysconfig: fe. module to get the path to the - Python standard library, to support uncommon installation path like - ‘/usr/lib64/python3.9/’ on Fedora. Patch by Jan Matějek. - - - bpo-39590(13): Collections.deque now holds strong references during - deque.__contains__ and deque.count, fixing crashes. - - - bpo-39586(14): The distutils ‘bdist_msi’ command is deprecated in - Python 3.9, use ‘bdist_wheel’ (wheel packages) instead. - - - bpo-39595(15): Improved performance of zipfile.Path for files with - a large number of entries. Also improved performance and fixed - minor issue as published with importlib_metadata 1.5(16). - - - bpo-39350(17): Fix regression in *note fractions.Fraction: 2c1. if - the numerator and/or the denominator is an *note int: 204. - subclass. The *note math.gcd(): 1be. function is now used to - normalize the `numerator' and `denominator'. *note math.gcd(): - 1be. always return a *note int: 204. type. Previously, the GCD - type depended on `numerator' and `denominator'. - - - bpo-39567(18): Added audit for *note os.walk(): 749, *note - os.fwalk(): 4bd, *note pathlib.Path.glob(): 1046. and *note - pathlib.Path.rglob(): 1047. - - - bpo-39559(19): Remove unused, undocumented argument ‘getters’ from - *note uuid.getnode(): 519. - - - bpo-38149(20): *note sys.audit(): 1017. is now called only once per - call of *note glob.glob(): 6bf. and *note glob.iglob(): 6c0. - - - bpo-39546(21): Fix a regression in *note ArgumentParser: 78a. where + - bpo-39546(3): Fix a regression in *note ArgumentParser: 67e. where ‘allow_abbrev=False’ was ignored for long options that used a prefix character other than “-“. - - bpo-39450(22): Striped whitespace from docstring before returning - it from ‘unittest.case.shortDescription()’. - - - bpo-12915(23): A new function ‘resolve_name’ has been added to the - ‘pkgutil’ module. This resolves a string of the form ‘'a.b.c.d'’ - or ‘'a.b:c.d'’ to an object. In the example, ‘a.b’ is a - package/module and ‘c.d’ is an object within that package/module - reached via recursive attribute access. - - - bpo-39353(24): The *note binascii.crc_hqx(): 1048. function is no - longer deprecated. - - - bpo-39493(25): Mark ‘typing.IO.closed’ as a property - - - bpo-39491(26): Add *note typing.Annotated: 1ee. and - ‘include_extras’ parameter to *note typing.get_type_hints(): 1ef. - as part of PEP 593(27). Patch by Till Varoquaux, documentation by - Till Varoquaux and Konstantin Kashin. - - - bpo-39485(28): Fix a bug in *note unittest.mock.create_autospec(): - 1049. that would complain about the wrong number of arguments for - custom descriptors defined in an extension module returning - functions. - - - bpo-38932(29): Mock fully resets child objects on reset_mock(). - Patch by Vegard Stikbakke - - - bpo-39082(30): Allow AsyncMock to correctly patch static/class - methods - - - bpo-39432(31): Implement PEP-489 algorithm for non-ascii “PyInit_…” + - bpo-39432(4): Implement PEP-489 algorithm for non-ascii “PyInit_…” symbol names in distutils to make it export the correct init symbol also on Windows. - - bpo-18819(32): Omit ‘devmajor’ and ‘devminor’ fields for non-device - files in *note tarfile: 101. archives, enabling bit-for-bit - compatibility with GNU ‘tar(1)’. - - - bpo-39349(33): Added a new `cancel_futures' parameter to *note - concurrent.futures.Executor.shutdown(): 195. that cancels all - pending futures which have not started running, instead of waiting - for them to complete before shutting down the executor. - - - bpo-39274(34): ‘bool(fraction.Fraction)’ now returns a boolean even - if (numerator != 0) does not return a boolean (ex: numpy number). - - - bpo-34793(35): Remove support for ‘with (await asyncio.lock):’ and - ‘with (yield from asyncio.lock):’. The same is correct for - ‘asyncio.Condition’ and ‘asyncio.Semaphore’. - - - bpo-25597(36): Ensure, if ‘wraps’ is supplied to *note - unittest.mock.MagicMock: 876, it is used to calculate return values - for the magic methods instead of using the default return values. - Patch by Karthikeyan Singaravelan. - - - bpo-36350(37): *note inspect.Signature.parameters: 104a. and *note - inspect.BoundArguments.arguments: 1b9. are now dicts instead of - OrderedDicts. Patch contributed by Rémi Lapeyre. - - - bpo-35727(38): Fix sys.exit() and sys.exit(None) exit code - propagation when used in multiprocessing.Process. - - - bpo-32173(39): * Add ‘lazycache’ function to ‘__all__’. * Use - *note dict.clear: 104b. to clear the cache. * Refactoring - ‘getline’ function and ‘checkcache’ function. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue30566 + (1) https://bugs.python.org/issue39649 - (2) https://bugs.python.org/issue39649 + (2) https://bugs.python.org/issue39681 - (3) https://bugs.python.org/issue39648 + (3) https://bugs.python.org/issue39546 - (4) https://bugs.python.org/issue39681 - - (5) https://bugs.python.org/issue35950 - - (6) https://bugs.python.org/issue39479 - - (7) https://bugs.python.org/issue39674 - - (8) https://bugs.python.org/issue25988 - - (9) https://bugs.python.org/issue39104 - - (10) https://bugs.python.org/issue39627 - - (11) https://bugs.python.org/issue39474 - - (12) https://bugs.python.org/issue21016 - - (13) https://bugs.python.org/issue39590 - - (14) https://bugs.python.org/issue39586 - - (15) https://bugs.python.org/issue39595 - - (16) -https://importlib-metadata.readthedocs.io/en/latest/changelog%20(links).html#v1-5-0 - - (17) https://bugs.python.org/issue39350 - - (18) https://bugs.python.org/issue39567 - - (19) https://bugs.python.org/issue39559 - - (20) https://bugs.python.org/issue38149 - - (21) https://bugs.python.org/issue39546 - - (22) https://bugs.python.org/issue39450 - - (23) https://bugs.python.org/issue12915 - - (24) https://bugs.python.org/issue39353 - - (25) https://bugs.python.org/issue39493 - - (26) https://bugs.python.org/issue39491 - - (27) https://www.python.org/dev/peps/pep-0593 - - (28) https://bugs.python.org/issue39485 - - (29) https://bugs.python.org/issue38932 - - (30) https://bugs.python.org/issue39082 - - (31) https://bugs.python.org/issue39432 - - (32) https://bugs.python.org/issue18819 - - (33) https://bugs.python.org/issue39349 - - (34) https://bugs.python.org/issue39274 - - (35) https://bugs.python.org/issue34793 - - (36) https://bugs.python.org/issue25597 - - (37) https://bugs.python.org/issue36350 - - (38) https://bugs.python.org/issue35727 - - (39) https://bugs.python.org/issue32173 + (4) https://bugs.python.org/issue39432  -File: python.info, Node: Documentation<13>, Next: Tests<14>, Prev: Library<18>, Up: Python 3 9 0 alpha 4 +File: python.info, Node: Documentation<13>, Next: IDLE<13>, Prev: Library<15>, Up: Python 3 8 2 final -1.19.19.4 Documentation +1.18.16.3 Documentation ....................... - bpo-17422(1): The language reference now specifies restrictions on class namespaces. Adapted from a patch by Ethan Furman. - - bpo-39572(2): Updated documentation of ‘total’ flag of ‘TypedDict’. + - bpo-39572(2): Updated documentation of ‘total’ flag of TypeDict. - bpo-39654(3): In pyclbr doc, update ‘class’ to ‘module’ where appropriate and add readmodule comment. Patch by Hakan Çelik. - - bpo-39153(4): Clarify refcounting semantics for the following - functions: - PyObject_SetItem - PyMapping_SetItemString - - PyDict_SetItem - PyDict_SetItemString - - - bpo-39392(5): Explain that when filling with turtle, overlap - regions may be left unfilled. - - - bpo-39369(6): Update mmap readline method description. The fact - that the readline method does update the file position should not - be ignored since this might give the impression for the programmer - that it doesn’t update it. - - - bpo-9056(7): Include subsection in TOC for PDF version of docs. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue17422 @@ -60661,831 +54968,686 @@ File: python.info, Node: Documentation<13>, Next: Tests<14>, Prev: Library<18 (3) https://bugs.python.org/issue39654 - (4) https://bugs.python.org/issue39153 - - (5) https://bugs.python.org/issue39392 - - (6) https://bugs.python.org/issue39369 - - (7) https://bugs.python.org/issue9056 -  -File: python.info, Node: Tests<14>, Next: Build<13>, Prev: Documentation<13>, Up: Python 3 9 0 alpha 4 +File: python.info, Node: IDLE<13>, Prev: Documentation<13>, Up: Python 3 8 2 final -1.19.19.5 Tests -............... - - - bpo-38325(1): Skip tests on non-BMP characters of - test_winconsoleio. - - - bpo-39502(2): Skip test_zipfile.test_add_file_after_2107() if *note - time.localtime(): 1042. fails with *note OverflowError: a43. It is - the case on AIX 6.1 for example. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38325 - - (2) https://bugs.python.org/issue39502 - - -File: python.info, Node: Build<13>, Next: Windows<13>, Prev: Tests<14>, Up: Python 3 9 0 alpha 4 - -1.19.19.6 Build -............... - - - bpo-39489(1): Remove ‘COUNT_ALLOCS’ special build. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39489 - - -File: python.info, Node: Windows<13>, Next: IDLE<15>, Prev: Build<13>, Up: Python 3 9 0 alpha 4 - -1.19.19.7 Windows -................. - - - bpo-39553(1): Delete unused code related to SxS manifests. - - - bpo-39439(2): Honor the Python path when a virtualenv is active on - Windows. - - - bpo-39393(3): Improve the error message when attempting to load a - DLL with unresolved dependencies. - - - bpo-38883(4): *note home(): 81c. and *note expanduser(): 81b. on - Windows now prefer ‘USERPROFILE’ and no longer use ‘HOME’, which is - not normally set for regular user accounts. This makes them again - behave like *note os.path.expanduser(): 32f, which was changed to - ignore ‘HOME’ in 3.8, see bpo-36264(5). - - - bpo-39185(6): The build.bat script has additional options for - very-quiet output (-q) and very-verbose output (-vv) - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39553 - - (2) https://bugs.python.org/issue39439 - - (3) https://bugs.python.org/issue39393 - - (4) https://bugs.python.org/issue38883 - - (5) https://bugs.python.org/issue36264 - - (6) https://bugs.python.org/issue39185 - - -File: python.info, Node: IDLE<15>, Next: C API<11>, Prev: Windows<13>, Up: Python 3 9 0 alpha 4 - -1.19.19.8 IDLE +1.18.16.4 IDLE .............. - bpo-39663(1): Add tests for pyparse find_good_parse_start(). - - bpo-39600(2): In the font configuration window, remove duplicated - font names. - - - bpo-30780(3): Add remaining configdialog tests for buttons and - highlights and keys tabs. - - - bpo-39388(4): IDLE Settings Cancel button now cancels pending - changes - - - bpo-38792(5): Close an IDLE shell calltip if a *note - KeyboardInterrupt: 2cf. or shell restart occurs. Patch by Zackery - Spytz. - ---------- Footnotes ---------- (1) https://bugs.python.org/issue39663 - (2) https://bugs.python.org/issue39600 - - (3) https://bugs.python.org/issue30780 - - (4) https://bugs.python.org/issue39388 - - (5) https://bugs.python.org/issue38792 -  -File: python.info, Node: C API<11>, Prev: IDLE<15>, Up: Python 3 9 0 alpha 4 +File: python.info, Node: Python 3 8 2 release candidate 2, Next: Python 3 8 2 release candidate 1, Prev: Python 3 8 2 final, Up: Changelog -1.19.19.9 C API -............... +1.18.17 Python 3.8.2 release candidate 2 +---------------------------------------- - - bpo-35081(1): Move the ‘bytes_methods.h’ header file to the - internal C API as ‘pycore_bytes_methods.h’: it only contains - private symbols (prefixed by ‘_Py’), except of the - ‘PyDoc_STRVAR_shared()’ macro. - - - bpo-35081(2): Move the ‘dtoa.h’ header file to the internal C API - as ‘pycore_dtoa.h’: it only contains private functions (prefixed by - ‘_Py’). The *note math: b1. and *note cmath: 18. modules must now - be compiled with the ‘Py_BUILD_CORE’ macro defined. - - - bpo-39573(3): Add *note Py_SET_SIZE(): 1052. function to set the - size of an object. - - - bpo-39500(4): *note PyUnicode_IsIdentifier(): 1053. does not call - *note Py_FatalError(): 266. anymore if the string is not ready. - - - bpo-39573(5): Add *note Py_SET_TYPE(): 1054. function to set the - type of an object. - - - bpo-39573(6): Add a *note Py_SET_REFCNT(): 1055. function to set - the reference counter of an object. - - - bpo-39542(7): Convert *note PyType_HasFeature(): 26b, *note - PyType_Check(): 1056. and *note PyType_CheckExact(): 1057. macros - to static inline functions. - - - bpo-39542(8): In the limited C API, ‘PyObject_INIT()’ and - ‘PyObject_INIT_VAR()’ are now defined as aliases to *note - PyObject_Init(): 39b. and *note PyObject_InitVar(): 1058. to make - their implementation opaque. It avoids to leak implementation - details in the limited C API. Exclude the following functions from - the limited C API: ‘_Py_NewReference()’, ‘_Py_ForgetReference()’, - ‘_PyTraceMalloc_NewReference()’ and ‘_Py_GetRefTotal()’. - - - bpo-39542(9): Exclude trashcan mechanism from the limited C API: it - requires access to PyTypeObject and PyThreadState structure fields, - whereas these structures are opaque in the limited C API. - - - bpo-39511(10): The *note PyThreadState_Clear(): 100d. function now - calls the ‘PyThreadState.on_delete’ callback. Previously, that - happened in *note PyThreadState_Delete(): 1059. - - - bpo-38076(11): Fix to clear the interpreter state only after - clearing module globals to guarantee module state access from C - Extensions during runtime destruction - - - bpo-39245(12): The Vectorcall API (PEP 590) was made public, adding - the functions ‘PyObject_Vectorcall’, ‘PyObject_VectorcallMethod’, - ‘PyVectorcall_Function’, ‘PyObject_CallOneArg’, - ‘PyObject_CallMethodNoArgs’, ‘PyObject_CallMethodOneArg’, - ‘PyObject_FastCallDict’, and the flag ‘Py_TPFLAGS_HAVE_VECTORCALL’. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue35081 - - (2) https://bugs.python.org/issue35081 - - (3) https://bugs.python.org/issue39573 - - (4) https://bugs.python.org/issue39500 - - (5) https://bugs.python.org/issue39573 - - (6) https://bugs.python.org/issue39573 - - (7) https://bugs.python.org/issue39542 - - (8) https://bugs.python.org/issue39542 - - (9) https://bugs.python.org/issue39542 - - (10) https://bugs.python.org/issue39511 - - (11) https://bugs.python.org/issue38076 - - (12) https://bugs.python.org/issue39245 - - -File: python.info, Node: Python 3 9 0 alpha 3, Next: Python 3 9 0 alpha 2, Prev: Python 3 9 0 alpha 4, Up: Changelog - -1.19.20 Python 3.9.0 alpha 3 ----------------------------- - -`Release date: 2020-01-24' +`Release date: 2020-02-17' * Menu: -* Core and Builtins: Core and Builtins<17>. -* Library: Library<19>. -* Documentation: Documentation<14>. -* Build: Build<14>. -* IDLE: IDLE<16>. -* C API: C API<12>. +* Security: Security<11>. +* Core and Builtins: Core and Builtins<16>. +* Library: Library<16>. +* IDLE: IDLE<14>.  -File: python.info, Node: Core and Builtins<17>, Next: Library<19>, Up: Python 3 9 0 alpha 3 +File: python.info, Node: Security<11>, Next: Core and Builtins<16>, Up: Python 3 8 2 release candidate 2 -1.19.20.1 Core and Builtins -........................... +1.18.17.1 Security +.................. - - bpo-39427(1): Document all possibilities for the ‘-X’ options in - the command line help section. Patch by Pablo Galindo. - - - bpo-39421(2): Fix possible crashes when operating with the - functions in the *note heapq: 8d. module and custom comparison - operators. - - - bpo-39386(3): Prevent double awaiting of async iterator. - - - bpo-17005(4): Add ‘functools.TopologicalSorter’ to the *note - functools: 83. module to offers functionality to perform - topological sorting of graphs. Patch by Pablo Galindo, Tim Peters - and Larry Hastings. - - - bpo-39320(5): Replace four complex bytecodes for building sequences - with three simpler ones. - - The following four bytecodes have been removed: - - * BUILD_LIST_UNPACK - - * BUILD_TUPLE_UNPACK - - * BUILD_SET_UNPACK - - * BUILD_TUPLE_UNPACK_WITH_CALL - - The following three bytecodes have been added: - - * LIST_TO_TUPLE - - * LIST_EXTEND - - * SET_UPDATE - - - bpo-39336(6): Import loaders which publish immutable module objects - can now publish immutable packages in addition to individual - modules. - - - bpo-39322(7): Added a new function *note gc.is_finalized(): 1a9. to - check if an object has been finalized by the garbage collector. - Patch by Pablo Galindo. - - - bpo-39048(8): Improve the displayed error message when incorrect - types are passed to ‘async with’ statements by looking up the *note - __aenter__(): 105c. special method before the *note __aexit__(): - 105d. special method when entering an asynchronous context manager. - Patch by Géry Ogam. - - - bpo-39235(9): Fix AST end location for lone generator expression in - function call, e.g. f(i for i in a). - - - bpo-39209(10): Correctly handle multi-line tokens in interactive - mode. Patch by Pablo Galindo. - - - bpo-1635741(11): Port _json extension module to multiphase - initialization ( PEP 489(12)). - - - bpo-39216(13): Fix constant folding optimization for positional - only arguments - by Anthony Sottile. - - - bpo-39215(14): Fix ‘SystemError’ when nested function has - annotation on positional-only argument - by Anthony Sottile. - - - bpo-39200(15): Correct the error message when calling the *note - min(): 8f8. or *note max(): 8f9. with no arguments. Patch by - Dong-hee Na. - - - bpo-39200(16): Correct the error message when trying to construct - *note range: 1f5. objects with no arguments. Patch by Pablo - Galindo. - - - bpo-39166(17): Fix incorrect line execution reporting in trace - functions when tracing the last iteration of asynchronous for - loops. Patch by Pablo Galindo. - - - bpo-39114(18): Fix incorrent line execution reporting in trace - functions when tracing exception handlers with name binding. Patch - by Pablo Galindo. - - - bpo-39156(19): Split the COMPARE_OP bytecode instruction into four - distinct instructions. - - * COMPARE_OP for rich comparisons - - * IS_OP for ‘is’ and ‘is not’ tests - - * CONTAINS_OP for ‘in’ and ‘is not’ tests - - * JUMP_IF_NOT_EXC_MATCH for checking exceptions in ‘try-except’ - statements. - - This improves the clarity of the interpreter and should provide a - modest speedup. - - - bpo-38588(20): Fix possible crashes in dict and list when calling - *note PyObject_RichCompareBool(): 105e. - - - bpo-13601(21): By default, ‘sys.stderr’ is line-buffered now, even - if ‘stderr’ is redirected to a file. You can still make - ‘sys.stderr’ unbuffered by passing the *note -u: 105f. command-line - option or setting the *note PYTHONUNBUFFERED: 1060. environment - variable. - - (Contributed by Jendrik Seipp in bpo-13601(22).) - - - bpo-38610(23): Fix possible crashes in several list methods by - holding strong references to list elements when calling *note - PyObject_RichCompareBool(): 105e. - - - bpo-32021(24): Include brotli .br encoding in mimetypes - encodings_map + - bpo-39184(1): Add audit events to functions in *note fcntl: 7e, + *note msvcrt: b7, *note os: c5, *note resource: e1, *note shutil: + ea, *note signal: eb. and *note syslog: 100. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39427 + (1) https://bugs.python.org/issue39184 - (2) https://bugs.python.org/issue39421 + +File: python.info, Node: Core and Builtins<16>, Next: Library<16>, Prev: Security<11>, Up: Python 3 8 2 release candidate 2 + +1.18.17.2 Core and Builtins +........................... + + - bpo-39619(1): Enable use of *note os.chroot(): f1c. on HP-UX + systems. + + - bpo-39606(2): Fix regression caused by fix for bpo-39386(3), that + prevented calling ‘aclose’ on an async generator that had already + been closed or exhausted. + + - bpo-39453(4): Fixed a possible crash in ‘list.__contains__()’ when + a list is changed during comparing items. Patch by Dong-hee Na. + + - bpo-39219(5): Syntax errors raised in the tokenizer now always set + correct “text” and “offset” attributes. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39619 + + (2) https://bugs.python.org/issue39606 (3) https://bugs.python.org/issue39386 - (4) https://bugs.python.org/issue17005 + (4) https://bugs.python.org/issue39453 - (5) https://bugs.python.org/issue39320 - - (6) https://bugs.python.org/issue39336 - - (7) https://bugs.python.org/issue39322 - - (8) https://bugs.python.org/issue39048 - - (9) https://bugs.python.org/issue39235 - - (10) https://bugs.python.org/issue39209 - - (11) https://bugs.python.org/issue1635741 - - (12) https://www.python.org/dev/peps/pep-0489 - - (13) https://bugs.python.org/issue39216 - - (14) https://bugs.python.org/issue39215 - - (15) https://bugs.python.org/issue39200 - - (16) https://bugs.python.org/issue39200 - - (17) https://bugs.python.org/issue39166 - - (18) https://bugs.python.org/issue39114 - - (19) https://bugs.python.org/issue39156 - - (20) https://bugs.python.org/issue38588 - - (21) https://bugs.python.org/issue13601 - - (22) https://bugs.python.org/issue13601 - - (23) https://bugs.python.org/issue38610 - - (24) https://bugs.python.org/issue32021 + (5) https://bugs.python.org/issue39219  -File: python.info, Node: Library<19>, Next: Documentation<14>, Prev: Core and Builtins<17>, Up: Python 3 9 0 alpha 3 +File: python.info, Node: Library<16>, Next: IDLE<14>, Prev: Core and Builtins<16>, Up: Python 3 8 2 release candidate 2 -1.19.20.2 Library +1.18.17.3 Library ................. - - bpo-39430(1): Fixed race condition in lazy imports in *note - tarfile: 101. + - bpo-27657(1): The original fix for bpo-27657(2), “Fix urlparse() + with numeric paths” (GH-16839) included in 3.8.1, inadvertently + introduced a behavior change that broke several third-party + packages relying on the original undefined parsing behavior. The + change is reverted in 3.8.2, restoring the behavior of 3.8.0 and + earlier releases. - - bpo-39413(2): The *note os.unsetenv(): 1cc. function is now also - available on Windows. + - bpo-39474(3): Fixed starting position of AST for expressions like + ‘(a)(b)’, ‘(a)[b]’ and ‘(a).b’. - - bpo-39390(3): Fixed a regression with the ‘ignore’ callback of - *note shutil.copytree(): 34a. The argument types are now str and + - bpo-21016(4): The *note pydoc: da. and *note trace: 113. modules + now use the *note sysconfig: ff. module to get the path to the + Python standard library, to support uncommon installation path like + ‘/usr/lib64/python3.9/’ on Fedora. Patch by Jan Matějek. + + - bpo-39595(5): Improved performance of zipfile.Path for files with a + large number of entries. Also improved performance and fixed minor + issue as published with importlib_metadata 1.5(6). + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue27657 + + (2) https://bugs.python.org/issue27657 + + (3) https://bugs.python.org/issue39474 + + (4) https://bugs.python.org/issue21016 + + (5) https://bugs.python.org/issue39595 + + (6) +https://importlib-metadata.readthedocs.io/en/latest/changelog%20(links).html#v1-5-0 + + +File: python.info, Node: IDLE<14>, Prev: Library<16>, Up: Python 3 8 2 release candidate 2 + +1.18.17.4 IDLE +.............. + + - bpo-39600(1): In the font configuration window, remove duplicated + font names. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39600 + + +File: python.info, Node: Python 3 8 2 release candidate 1, Next: Python 3 8 1 final, Prev: Python 3 8 2 release candidate 2, Up: Changelog + +1.18.18 Python 3.8.2 release candidate 1 +---------------------------------------- + +`Release date: 2020-02-10' + +* Menu: + +* Security: Security<12>. +* Core and Builtins: Core and Builtins<17>. +* Library: Library<17>. +* Documentation: Documentation<14>. +* Tests: Tests<8>. +* Build: Build<8>. +* Windows: Windows<10>. +* IDLE: IDLE<15>. + + +File: python.info, Node: Security<12>, Next: Core and Builtins<17>, Up: Python 3 8 2 release candidate 1 + +1.18.18.1 Security +.................. + + - bpo-39401(1): Avoid unsafe load of + ‘api-ms-win-core-path-l1-1-0.dll’ at startup on Windows 7. + + - bpo-39184(2): Add audit events to command execution functions in os + and pty modules. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39401 + + (2) https://bugs.python.org/issue39184 + + +File: python.info, Node: Core and Builtins<17>, Next: Library<17>, Prev: Security<12>, Up: Python 3 8 2 release candidate 1 + +1.18.18.2 Core and Builtins +........................... + + - bpo-39579(1): Change the ending column offset of ‘Attribute’ nodes + constructed in ‘ast_for_dotted_name’ to point at the end of the + current node and not at the end of the last ‘NAME’ node. + + - bpo-39510(2): Fix segfault in ‘readinto()’ method on closed + BufferedReader. + + - bpo-39492(3): Fix a reference cycle in the C Pickler that was + preventing the garbage collection of deleted, pickled objects. + + - bpo-39421(4): Fix possible crashes when operating with the + functions in the *note heapq: 8e. module and custom comparison + operators. + + - bpo-39386(5): Prevent double awaiting of async iterator. + + - bpo-39235(6): Fix AST end location for lone generator expression in + function call, e.g. f(i for i in a). + + - bpo-39209(7): Correctly handle multi-line tokens in interactive + mode. Patch by Pablo Galindo. + + - bpo-39216(8): Fix constant folding optimization for positional only + arguments - by Anthony Sottile. + + - bpo-39215(9): Fix ‘SystemError’ when nested function has annotation + on positional-only argument - by Anthony Sottile. + + - bpo-38588(10): Fix possible crashes in dict and list when calling + *note PyObject_RichCompareBool(): f22. + + - bpo-38610(11): Fix possible crashes in several list methods by + holding strong references to list elements when calling *note + PyObject_RichCompareBool(): f22. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39579 + + (2) https://bugs.python.org/issue39510 + + (3) https://bugs.python.org/issue39492 + + (4) https://bugs.python.org/issue39421 + + (5) https://bugs.python.org/issue39386 + + (6) https://bugs.python.org/issue39235 + + (7) https://bugs.python.org/issue39209 + + (8) https://bugs.python.org/issue39216 + + (9) https://bugs.python.org/issue39215 + + (10) https://bugs.python.org/issue38588 + + (11) https://bugs.python.org/issue38610 + + +File: python.info, Node: Library<17>, Next: Documentation<14>, Prev: Core and Builtins<17>, Up: Python 3 8 2 release candidate 1 + +1.18.18.3 Library +................. + + - bpo-39590(1): Collections.deque now holds strong references during + deque.__contains__ and deque.count, fixing crashes. + + - bpo-38149(2): *note sys.audit(): f03. is now called only once per + call of *note glob.glob(): 5b3. and *note glob.iglob(): 5b4. + + - bpo-39450(3): Striped whitespace from docstring before returning it + from ‘unittest.case.shortDescription()’. + + - bpo-39493(4): Mark ‘typing.IO.closed’ as a property + + - bpo-39485(5): Fix a bug in *note unittest.mock.create_autospec(): + f24. that would complain about the wrong number of arguments for + custom descriptors defined in an extension module returning + functions. + + - bpo-39082(6): Allow AsyncMock to correctly patch static/class + methods + + - bpo-39430(7): Fixed race condition in lazy imports in *note + tarfile: 102. + + - bpo-39390(8): Fixed a regression with the ‘ignore’ callback of + *note shutil.copytree(): 206. The argument types are now str and List[str] again. - - bpo-39395(4): The *note os.putenv(): 1cd. and *note os.unsetenv(): - 1cc. functions are now always available. - - - bpo-39406(5): If ‘setenv()’ C function is available, *note - os.putenv(): 1cd. is now implemented with ‘setenv()’ instead of - ‘putenv()’, so Python doesn’t have to handle the environment - variable memory. - - - bpo-39396(6): Fix ‘math.nextafter(-0.0, +0.0)’ on AIX 7.1. - - - bpo-29435(7): Allow *note tarfile.is_tarfile(): 1062. to be used - with file and file-like objects, like *note zipfile.is_zipfile(): - d84. Patch by William Woodruff. - - - bpo-39377(8): Removed ‘encoding’ option from *note json.loads(): - 225. It has been deprecated since Python 3.1. - - bpo-39389(9): Write accurate compression level metadata in *note - gzip: 8b. archives, rather than always signaling maximum + gzip: 8c. archives, rather than always signaling maximum compression. - - bpo-39366(10): The previously deprecated ‘xpath()’ and ‘xgtitle()’ - methods of *note nntplib.NNTP: 1c6. have been removed. + - bpo-39274(10): ‘bool(fraction.Fraction)’ now returns a boolean even + if (numerator != 0) does not return a boolean (ex: numpy number). - - bpo-39357(11): Remove the `buffering' parameter of *note - bz2.BZ2File: 224. Since Python 3.0, it was ignored and using it - was emitting *note DeprecationWarning: 15a. Pass an open file - object, to control how the file is opened. The `compresslevel' - parameter becomes keyword-only. - - - bpo-39353(12): Deprecate binhex4 and hexbin4 standards. Deprecate - the *note binhex: 10. module and the following *note binascii: f. - functions: *note b2a_hqx(): 208, *note a2b_hqx(): 209, *note - rlecode_hqx(): 20a, *note rledecode_hqx(): 20b, *note crc_hqx(): - 1048. - - - bpo-39351(13): Remove ‘base64.encodestring()’ and - ‘base64.decodestring()’, aliases deprecated since Python 3.1: use - *note base64.encodebytes(): 222. and *note base64.decodebytes(): - 223. instead. - - - bpo-39350(14): Remove ‘fractions.gcd()’ function, deprecated since - Python 3.5 (bpo-22486(15)): use *note math.gcd(): 1be. instead. - - - bpo-39329(16): *note LMTP: 1e0. constructor now has an optional - `timeout' parameter. Patch by Dong-hee Na. - - - bpo-39313(17): Add a new ‘exec_function’ option (`–exec-function' - in the CLI) to ‘RefactoringTool’ for making ‘exec’ a function. - Patch by Batuhan Taskaya. - - - bpo-39259(18): *note FTP_TLS: 1a7. and *note FTP_TLS: 1a7. now - raise a *note ValueError: 16d. if the given timeout for their - constructor is zero to prevent the creation of a non-blocking - socket. Patch by Dong-hee Na. - - - bpo-39259(19): *note SMTP: 1de. and *note SMTP_SSL: 1df. now raise - a *note ValueError: 16d. if the given timeout for their constructor - is zero to prevent the creation of a non-blocking socket. Patch by - Dong-hee Na. - - - bpo-39310(20): Add *note math.ulp(): 1c1.: return the value of the - least significant bit of a float. - - - bpo-39297(21): Improved performance of importlib.metadata + - bpo-39297(11): Improved performance of importlib.metadata distribution discovery and resilients to inaccessible sys.path entries (importlib_metadata v1.4.0). - - bpo-39259(22): *note NNTP: 1c6. and *note NNTP_SSL: 1c7. now raise - a *note ValueError: 16d. if the given timeout for their constructor - is zero to prevent the creation of a non-blocking socket. Patch by - Dong-hee Na. - - - bpo-38901(23): When you specify prompt=’.’ or equivalently python - -m venv –prompt . … the basename of the current directory is used - to set the created venv’s prompt when it’s activated. - - - bpo-39288(24): Add *note math.nextafter(): 1c0.: return the next - floating-point value after `x' towards `y'. - - - bpo-39259(25): *note POP3: 1d5. and *note POP3_SSL: 1d6. now raise - a *note ValueError: 16d. if the given timeout for their constructor - is zero to prevent the creation of a non-blocking socket. Patch by - Dong-hee Na. - - - bpo-39242(26): Updated the Gmane domain from news.gmane.org to - news.gmane.io which is used for examples of *note NNTP: 1c6. news + - bpo-39242(12): Updated the Gmane domain from news.gmane.org to + news.gmane.io which is used for examples of *note NNTP: a0d. news reader server and nntplib tests. - - bpo-35292(27): Proxy the ‘SimpleHTTPRequestHandler.guess_type’ to - *note mimetypes.guess_type: 1063. so the *note mimetypes.init: - 1064. is called lazily to avoid unnecessary costs when *note - http.server: 96. module is imported. - - - bpo-39239(28): The *note select.epoll.unregister(): 22e. method no - longer ignores the *note EBADF: 22f. error. - - - bpo-38907(29): In http.server script, restore binding to IPv4 on + - bpo-38907(13): In http.server script, restore binding to IPv4 on Windows. - - bpo-39152(30): Fix ttk.Scale.configure([name]) to return + - bpo-39152(14): Fix ttk.Scale.configure([name]) to return configuration tuple for name or all options. Giovanni Lombardo contributed part of the patch. - - bpo-39198(31): If an exception were to be thrown in + - bpo-39198(15): If an exception were to be thrown in ‘Logger.isEnabledFor’ (say, by asyncio timeouts or stopit) , the - *note logging: aa. global lock may not be released appropriately, + *note logging: ab. global lock may not be released appropriately, resulting in deadlock. This change wraps that block of code with ‘try...finally’ to ensure the lock is released. - - bpo-39191(32): Perform a check for running loop before starting a + - bpo-39191(16): Perform a check for running loop before starting a new task in ‘loop.run_until_complete()’ to fail fast; it prevents the side effect of new task spawning before exception raising. - - bpo-38871(33): Correctly parenthesize filter-based statements that - contain lambda expressions in mod:*note lib2to3: a7. Patch by + - bpo-38871(17): Correctly parenthesize filter-based statements that + contain lambda expressions in mod:*note lib2to3: a8. Patch by Dong-hee Na. - - bpo-39142(34): A change was made to logging.config.dictConfig to + - bpo-39142(18): A change was made to logging.config.dictConfig to avoid converting instances of named tuples to ConvertingTuple. It’s assumed that named tuples are too specialised to be treated like ordinary tuples; if a user of named tuples requires ConvertingTuple functionality, they will have to implement that themselves in their named tuple class. - - bpo-39158(35): ast.literal_eval() now supports empty sets. + - bpo-39129(19): Fix import path for ‘asyncio.TimeoutError’ - - bpo-39129(36): Fix import path for ‘asyncio.TimeoutError’ - - - bpo-39057(37): ‘urllib.request.proxy_bypass_environment()’ now + - bpo-39057(20): ‘urllib.request.proxy_bypass_environment()’ now ignores leading dots and no longer ignores a trailing newline. - - bpo-39056(38): Fixed handling invalid warning category in the -W + - bpo-39056(21): Fixed handling invalid warning category in the -W option. No longer import the re module if it is not needed. - - bpo-39055(39): *note base64.b64decode(): 1065. with ‘validate=True’ + - bpo-39055(22): *note base64.b64decode(): f25. with ‘validate=True’ raises now a binascii.Error if the input ends with a single ‘\n’. - - bpo-21600(40): Fix ‘mock.patch.stopall()’ to stop active patches - that were created with ‘mock.patch.dict()’. + - bpo-39033(23): Fix *note NameError: d55. in *note zipimport: 144. + Patch by Karthikeyan Singaravelan. - - bpo-39019(41): Implement dummy ‘__class_getitem__’ for *note - tempfile.SpooledTemporaryFile: b80. - - - bpo-39019(42): Implement dummy ‘__class_getitem__’ for - ‘subprocess.Popen’, ‘subprocess.CompletedProcess’ - - - bpo-38914(43): Adjusted the wording of the warning issued by - distutils’ ‘check’ command when the ‘author’ and ‘maintainer’ - fields are supplied but no corresponding e-mail field - (‘author_email’ or ‘maintainer_email’) is found. The wording now - reflects the fact that these fields are suggested, but not - required. Patch by Juergen Gmach. - - - bpo-38878(44): Fixed __subclasshook__ of *note os.PathLike: 5e8. to + - bpo-38878(24): Fixed __subclasshook__ of *note os.PathLike: 4dc. to return a correct result upon inheritence. Patch by Bar Harel. - - bpo-38615(45): *note IMAP4: 1af. and *note IMAP4_SSL: 1b0. now have - an optional `timeout' parameter for their constructors. Also, the - *note open(): 1b1. method now has an optional `timeout' parameter - with this change. The overridden methods of *note IMAP4_SSL: 1b0. - and *note IMAP4_stream: 1b2. were applied to this change. Patch by - Dong-hee Na. - - - bpo-35182(46): Fixed ‘Popen.communicate()’ subsequent call crash + - bpo-35182(25): Fixed ‘Popen.communicate()’ subsequent call crash when the child process has already closed any piped standard stream, but still continues to be running. Patch by Andriy Maletsky. - - bpo-38630(47): On Unix, *note subprocess.Popen.send_signal(): 1066. - now polls the process status. Polling reduces the risk of sending - a signal to the wrong process if the process completed, the *note - subprocess.Popen.returncode: 1067. attribute is still ‘None’, and - the pid has been reassigned (recycled) to a new different process. - - - bpo-38536(48): Removes trailing space in formatted currency with - ‘international=True’ and a locale with symbol following value. - E.g. ‘locale.currency(12.34, international=True)’ returned ‘'12,34 - EUR '’ instead of ‘'12,34 EUR'’. - - - bpo-38473(49): Use signature from inner mock for autospecced + - bpo-38473(26): Use signature from inner mock for autospecced methods attached with ‘unittest.mock.attach_mock()’. Patch by Karthikeyan Singaravelan. - - bpo-38361(50): Fixed an issue where ‘ident’ could include a leading - path separator when *note syslog.openlog(): 1068. was called - without arguments. - - - bpo-38293(51): Add *note copy.copy(): 4d4. and *note - copy.deepcopy(): 4d5. support to *note property(): 30b. objects. - - - bpo-37958(52): Added the pstats.Stats.get_profile_dict() method to - return the profile data as a StatsProfile instance. - - - bpo-28367(53): Termios magic constants for the following baud - rates: - B500000 - B576000 - B921600 - B1000000 - B1152000 - - B1500000 - B2000000 - B2500000 - B3000000 - B3500000 - B4000000 - Patch by Andrey Smirnov + - bpo-38293(27): Add *note copy.copy(): 3bc. and *note + copy.deepcopy(): 3bd. support to *note property(): 1c3. objects. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39430 + (1) https://bugs.python.org/issue39590 - (2) https://bugs.python.org/issue39413 + (2) https://bugs.python.org/issue38149 - (3) https://bugs.python.org/issue39390 + (3) https://bugs.python.org/issue39450 - (4) https://bugs.python.org/issue39395 + (4) https://bugs.python.org/issue39493 - (5) https://bugs.python.org/issue39406 + (5) https://bugs.python.org/issue39485 - (6) https://bugs.python.org/issue39396 + (6) https://bugs.python.org/issue39082 - (7) https://bugs.python.org/issue29435 + (7) https://bugs.python.org/issue39430 - (8) https://bugs.python.org/issue39377 + (8) https://bugs.python.org/issue39390 (9) https://bugs.python.org/issue39389 - (10) https://bugs.python.org/issue39366 + (10) https://bugs.python.org/issue39274 - (11) https://bugs.python.org/issue39357 + (11) https://bugs.python.org/issue39297 - (12) https://bugs.python.org/issue39353 + (12) https://bugs.python.org/issue39242 - (13) https://bugs.python.org/issue39351 + (13) https://bugs.python.org/issue38907 - (14) https://bugs.python.org/issue39350 + (14) https://bugs.python.org/issue39152 - (15) https://bugs.python.org/issue22486 + (15) https://bugs.python.org/issue39198 - (16) https://bugs.python.org/issue39329 + (16) https://bugs.python.org/issue39191 - (17) https://bugs.python.org/issue39313 + (17) https://bugs.python.org/issue38871 - (18) https://bugs.python.org/issue39259 + (18) https://bugs.python.org/issue39142 - (19) https://bugs.python.org/issue39259 + (19) https://bugs.python.org/issue39129 - (20) https://bugs.python.org/issue39310 + (20) https://bugs.python.org/issue39057 - (21) https://bugs.python.org/issue39297 + (21) https://bugs.python.org/issue39056 - (22) https://bugs.python.org/issue39259 + (22) https://bugs.python.org/issue39055 - (23) https://bugs.python.org/issue38901 + (23) https://bugs.python.org/issue39033 - (24) https://bugs.python.org/issue39288 + (24) https://bugs.python.org/issue38878 - (25) https://bugs.python.org/issue39259 + (25) https://bugs.python.org/issue35182 - (26) https://bugs.python.org/issue39242 + (26) https://bugs.python.org/issue38473 - (27) https://bugs.python.org/issue35292 - - (28) https://bugs.python.org/issue39239 - - (29) https://bugs.python.org/issue38907 - - (30) https://bugs.python.org/issue39152 - - (31) https://bugs.python.org/issue39198 - - (32) https://bugs.python.org/issue39191 - - (33) https://bugs.python.org/issue38871 - - (34) https://bugs.python.org/issue39142 - - (35) https://bugs.python.org/issue39158 - - (36) https://bugs.python.org/issue39129 - - (37) https://bugs.python.org/issue39057 - - (38) https://bugs.python.org/issue39056 - - (39) https://bugs.python.org/issue39055 - - (40) https://bugs.python.org/issue21600 - - (41) https://bugs.python.org/issue39019 - - (42) https://bugs.python.org/issue39019 - - (43) https://bugs.python.org/issue38914 - - (44) https://bugs.python.org/issue38878 - - (45) https://bugs.python.org/issue38615 - - (46) https://bugs.python.org/issue35182 - - (47) https://bugs.python.org/issue38630 - - (48) https://bugs.python.org/issue38536 - - (49) https://bugs.python.org/issue38473 - - (50) https://bugs.python.org/issue38361 - - (51) https://bugs.python.org/issue38293 - - (52) https://bugs.python.org/issue37958 - - (53) https://bugs.python.org/issue28367 + (27) https://bugs.python.org/issue38293  -File: python.info, Node: Documentation<14>, Next: Build<14>, Prev: Library<19>, Up: Python 3 9 0 alpha 3 +File: python.info, Node: Documentation<14>, Next: Tests<8>, Prev: Library<17>, Up: Python 3 8 2 release candidate 1 -1.19.20.3 Documentation +1.18.18.4 Documentation ....................... - - bpo-39381(1): Mention in docs that *note asyncio.get_event_loop(): - 45f. implicitly creates new event loop only if called from the main + - bpo-39153(1): Clarify refcounting semantics for the following + functions: - PyObject_SetItem - PyMapping_SetItemString - + PyDict_SetItem - PyDict_SetItemString + + - bpo-39392(2): Explain that when filling with turtle, overlap + regions may be left unfilled. + + - bpo-39381(3): Mention in docs that *note asyncio.get_event_loop(): + 346. implicitly creates new event loop only if called from the main thread. - - bpo-38918(2): Add an entry for ‘__module__’ in the “function” & - “method” sections of the inspect docs types and members table(3) + - bpo-38918(4): Add an entry for ‘__module__’ in the “function” & + “method” sections of the inspect docs types and members table(5) - - bpo-3530(4): In the *note ast: 7. module documentation, fix a + - bpo-3530(6): In the *note ast: 8. module documentation, fix a misleading ‘NodeTransformer’ example and add advice on when to use the ‘fix_missing_locations’ function. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39381 + (1) https://bugs.python.org/issue39153 - (2) https://bugs.python.org/issue38918 + (2) https://bugs.python.org/issue39392 - (3) https://docs.python.org/3/library/inspect.html#types-and-members + (3) https://bugs.python.org/issue39381 - (4) https://bugs.python.org/issue3530 + (4) https://bugs.python.org/issue38918 + + (5) https://docs.python.org/3/library/inspect.html#types-and-members + + (6) https://bugs.python.org/issue3530  -File: python.info, Node: Build<14>, Next: IDLE<16>, Prev: Documentation<14>, Up: Python 3 9 0 alpha 3 +File: python.info, Node: Tests<8>, Next: Build<8>, Prev: Documentation<14>, Up: Python 3 8 2 release candidate 1 -1.19.20.4 Build +1.18.18.5 Tests ............... - - bpo-39395(1): On non-Windows platforms, the ‘setenv()’ and - ‘unsetenv()’ functions are now required to build Python. + - bpo-39502(1): Skip test_zipfile.test_add_file_after_2107() if *note + time.localtime(): f28. fails with *note OverflowError: 941. It is + the case on AIX 6.1 for example. - - bpo-39160(2): Updated the documentation in ‘/configure --help’ to - show default values, reference documentation where required and add - additional explanation where needed. + - bpo-38546(2): Fix test_ressources_gced_in_workers() of + test_concurrent_futures: explicitly stop the manager to prevent + leaking a child process running in the background after the test + completes. - - bpo-39144(3): The ctags and etags build targets both include + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39502 + + (2) https://bugs.python.org/issue38546 + + +File: python.info, Node: Build<8>, Next: Windows<10>, Prev: Tests<8>, Up: Python 3 8 2 release candidate 1 + +1.18.18.6 Build +............... + + - bpo-39144(1): The ctags and etags build targets both include Modules/_ctypes and Python standard library source files. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39395 - - (2) https://bugs.python.org/issue39160 - - (3) https://bugs.python.org/issue39144 + (1) https://bugs.python.org/issue39144  -File: python.info, Node: IDLE<16>, Next: C API<12>, Prev: Build<14>, Up: Python 3 9 0 alpha 3 +File: python.info, Node: Windows<10>, Next: IDLE<15>, Prev: Build<8>, Up: Python 3 8 2 release candidate 1 -1.19.20.5 IDLE +1.18.18.7 Windows +................. + + - bpo-39439(1): Honor the Python path when a virtualenv is active on + Windows. + + - bpo-39393(2): Improve the error message when attempting to load a + DLL with unresolved dependencies. + + - bpo-38883(3): *note home(): 712. and *note expanduser(): 711. on + Windows now prefer ‘USERPROFILE’ and no longer use ‘HOME’, which is + not normally set for regular user accounts. This makes them again + behave like *note os.path.expanduser(): 1ea, which was changed to + ignore ‘HOME’ in 3.8, see bpo-36264(4). + + - bpo-39185(5): The build.bat script has additional options for + very-quiet output (-q) and very-verbose output (-vv) + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39439 + + (2) https://bugs.python.org/issue39393 + + (3) https://bugs.python.org/issue38883 + + (4) https://bugs.python.org/issue36264 + + (5) https://bugs.python.org/issue39185 + + +File: python.info, Node: IDLE<15>, Prev: Windows<10>, Up: Python 3 8 2 release candidate 1 + +1.18.18.8 IDLE .............. - - bpo-39050(1): Make IDLE Settings dialog Help button work again. + - bpo-30780(1): Add remaining configdialog tests for buttons and + highlights and keys tabs. - - bpo-34118(2): Tag memoryview, range, and tuple as classes, the same + - bpo-39388(2): IDLE Settings Cancel button now cancels pending + changes + + - bpo-39050(3): Make IDLE Settings dialog Help button work again. + + - bpo-34118(4): Tag memoryview, range, and tuple as classes, the same as list, etcetera, in the library manual built-in functions list. - - bpo-32989(3): Add tests for editor newline_and_indent_event method. + - bpo-38792(5): Close an IDLE shell calltip if a *note + KeyboardInterrupt: 184. or shell restart occurs. Patch by Zackery + Spytz. + + - bpo-32989(6): Add tests for editor newline_and_indent_event method. Remove dead code from pyparse find_good_parse_start method. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39050 + (1) https://bugs.python.org/issue30780 - (2) https://bugs.python.org/issue34118 + (2) https://bugs.python.org/issue39388 - (3) https://bugs.python.org/issue32989 + (3) https://bugs.python.org/issue39050 + + (4) https://bugs.python.org/issue34118 + + (5) https://bugs.python.org/issue38792 + + (6) https://bugs.python.org/issue32989  -File: python.info, Node: C API<12>, Prev: IDLE<16>, Up: Python 3 9 0 alpha 3 +File: python.info, Node: Python 3 8 1 final, Next: Python 3 8 1 release candidate 1, Prev: Python 3 8 2 release candidate 1, Up: Changelog -1.19.20.6 C API -............... - - - bpo-39372(1): Clean header files of interfaces defined but with no - implementation. The public API symbols being removed are: - ‘_PyBytes_InsertThousandsGroupingLocale’, - ‘_PyBytes_InsertThousandsGrouping’, ‘_Py_InitializeFromArgs’, - ‘_Py_InitializeFromWideArgs’, ‘_PyFloat_Repr’, ‘_PyFloat_Digits’, - ‘_PyFloat_DigitsInit’, ‘PyFrame_ExtendStack’, - ‘_PyAIterWrapper_Type’, ‘PyNullImporter_Type’, ‘PyCmpWrapper_Type’, - ‘PySortWrapper_Type’, ‘PyNoArgsFunction’. - - - bpo-39164(2): Add a private ‘_PyErr_GetExcInfo()’ function to - retrieve exception information of the specified Python thread - state. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue39372 - - (2) https://bugs.python.org/issue39164 - - -File: python.info, Node: Python 3 9 0 alpha 2, Next: Python 3 9 0 alpha 1, Prev: Python 3 9 0 alpha 3, Up: Changelog - -1.19.21 Python 3.9.0 alpha 2 ----------------------------- +1.18.19 Python 3.8.1 final +-------------------------- `Release date: 2019-12-18' * Menu: -* Security: Security<12>. * Core and Builtins: Core and Builtins<18>. -* Library: Library<20>. -* Documentation: Documentation<15>. -* Tests: Tests<15>. -* Build: Build<15>. -* Windows: Windows<14>. -* macOS: macOS<13>. -* IDLE: IDLE<17>. -* C API: C API<13>. +* Library: Library<18>. +* Tests: Tests<9>. +* Windows: Windows<11>. +* macOS: macOS<9>. +* IDLE: IDLE<16>.  -File: python.info, Node: Security<12>, Next: Core and Builtins<18>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Core and Builtins<18>, Next: Library<18>, Up: Python 3 8 1 final -1.19.21.1 Security +1.18.19.1 Core and Builtins +........................... + + - bpo-39080(1): Fix the value of `end_col_offset' for Starred + Expression AST nodes when they are among the elements in the `args' + attribute of Call AST nodes. + + - bpo-39031(2): When parsing an “elif” node, lineno and col_offset of + the node now point to the “elif” keyword and not to its condition, + making it consistent with the “if” node. Patch by Lysandros + Nikolaou. + + - bpo-39008(3): *note PySys_Audit(): f11. now requires ‘Py_ssize_t’ + to be used for size arguments in the format string, regardless of + whether ‘PY_SSIZE_T_CLEAN’ was defined at include time. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39080 + + (2) https://bugs.python.org/issue39031 + + (3) https://bugs.python.org/issue39008 + + +File: python.info, Node: Library<18>, Next: Tests<9>, Prev: Core and Builtins<18>, Up: Python 3 8 1 final + +1.18.19.2 Library +................. + + - bpo-39022(1): Update importlib.metadata to include improvements + from importlib_metadata 1.3 including better serialization of + EntryPoints and improved documentation for custom finders. + + - bpo-38811(2): Fix an unhandled exception in *note pathlib: c9. when + *note os.link(): a16. is missing. Patch by Toke Høiland-Jørgensen. + + - bpo-36406(3): Handle namespace packages in *note doctest: 67. + Patch by Karthikeyan Singaravelan. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39022 + + (2) https://bugs.python.org/issue38811 + + (3) https://bugs.python.org/issue36406 + + +File: python.info, Node: Tests<9>, Next: Windows<11>, Prev: Library<18>, Up: Python 3 8 1 final + +1.18.19.3 Tests +............... + + - bpo-38546(1): Multiprocessing and concurrent.futures tests now stop + the resource tracker process when tests complete. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38546 + + +File: python.info, Node: Windows<11>, Next: macOS<9>, Prev: Tests<9>, Up: Python 3 8 1 final + +1.18.19.4 Windows +................. + + - bpo-39007(1): Add auditing events to functions in *note winreg: + 12b. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue39007 + + +File: python.info, Node: macOS<9>, Next: IDLE<16>, Prev: Windows<11>, Up: Python 3 8 1 final + +1.18.19.5 macOS +............... + + - bpo-38295(1): Prevent failure of test_relative_path in + test_py_compile on macOS Catalina. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38295 + + +File: python.info, Node: IDLE<16>, Prev: macOS<9>, Up: Python 3 8 1 final + +1.18.19.6 IDLE +.............. + + - bpo-38944(1): Escape key now closes IDLE completion windows. Patch + by Johnny Najera. + + - bpo-38943(2): Fix IDLE autocomplete windows not always appearing on + some systems. Patch by Johnny Najera. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38944 + + (2) https://bugs.python.org/issue38943 + + +File: python.info, Node: Python 3 8 1 release candidate 1, Next: Python 3 8 0 final, Prev: Python 3 8 1 final, Up: Changelog + +1.18.20 Python 3.8.1 release candidate 1 +---------------------------------------- + +`Release date: 2019-12-09' + +* Menu: + +* Security: Security<13>. +* Core and Builtins: Core and Builtins<19>. +* Library: Library<19>. +* Documentation: Documentation<15>. +* Tests: Tests<10>. +* Build: Build<9>. +* Windows: Windows<12>. +* macOS: macOS<10>. +* IDLE: IDLE<17>. +* C API: C API<7>. + + +File: python.info, Node: Security<13>, Next: Core and Builtins<19>, Up: Python 3 8 1 release candidate 1 + +1.18.20.1 Security .................. - bpo-38945(1): Newline characters have been escaped when performing @@ -61495,14 +55657,23 @@ File: python.info, Node: Security<12>, Next: Core and Builtins<18>, Up: Pytho - bpo-37228(2): Due to significant security concerns, the `reuse_address' parameter of *note - asyncio.loop.create_datagram_endpoint(): 189. is no longer + asyncio.loop.create_datagram_endpoint(): 2d3. is no longer supported. This is because of the behavior of ‘SO_REUSEADDR’ in UDP. For more details, see the documentation for ‘loop.create_datagram_endpoint()’. (Contributed by Kyle Stanley, Antoine Pitrou, and Yury Selivanov in bpo-37228(3).) - - bpo-38804(4): Fixes a ReDoS vulnerability in *note http.cookiejar: - 94. Patch by Ben Caller. + - bpo-38722(4): *note runpy: e3. now uses *note io.open_code(): efd. + to open code files. Patch by Jason Killen. + + - bpo-38804(5): Fixes a ReDoS vulnerability in *note http.cookiejar: + 95. Patch by Ben Caller. + + - bpo-38622(6): Add additional audit events for the *note ctypes: 2b. + module. + + - bpo-38418(7): Fixes audit event for *note os.system(): d9b. to be + named ‘os.system’. ---------- Footnotes ---------- @@ -61512,546 +55683,413 @@ File: python.info, Node: Security<12>, Next: Core and Builtins<18>, Up: Pytho (3) https://bugs.python.org/issue37228 - (4) https://bugs.python.org/issue38804 + (4) https://bugs.python.org/issue38722 + + (5) https://bugs.python.org/issue38804 + + (6) https://bugs.python.org/issue38622 + + (7) https://bugs.python.org/issue38418  -File: python.info, Node: Core and Builtins<18>, Next: Library<20>, Prev: Security<12>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Core and Builtins<19>, Next: Library<19>, Prev: Security<13>, Up: Python 3 8 1 release candidate 1 -1.19.21.2 Core and Builtins +1.18.20.2 Core and Builtins ........................... - - bpo-39028(1): Slightly improve the speed of keyword argument - parsing with many kwargs by strengthening the assumption that - kwargs are interned strings. - - - bpo-39080(2): Fix the value of `end_col_offset' for Starred - Expression AST nodes when they are among the elements in the `args' - attribute of Call AST nodes. - - - bpo-39031(3): When parsing an “elif” node, lineno and col_offset of - the node now point to the “elif” keyword and not to its condition, - making it consistent with the “if” node. Patch by Lysandros - Nikolaou. - - - bpo-20443(4): In Python 3.9.0a1, sys.argv[0] was made an absolute - path if a filename was specified on the command line. Revert this - change, since most users expect sys.argv to be unmodified. - - - bpo-39008(5): *note PySys_Audit(): 1029. now requires ‘Py_ssize_t’ - to be used for size arguments in the format string, regardless of - whether ‘PY_SSIZE_T_CLEAN’ was defined at include time. - - - bpo-38673(6): In REPL mode, don’t switch to PS2 if the line starts + - bpo-38673(1): In REPL mode, don’t switch to PS2 if the line starts with comment or whitespace. Based on work by Batuhan Taşkaya. - - bpo-38922(7): Calling ‘replace’ on a code object now raises the + - bpo-38922(2): Calling ‘replace’ on a code object now raises the ‘code.__new__’ audit event. - - bpo-38920(8): Add audit hooks for when *note sys.excepthook(): f26. - and *note sys.unraisablehook(): 35d. are invoked. + - bpo-38920(3): Add audit hooks for when *note sys.excepthook(): e38. + and *note sys.unraisablehook(): 219. are invoked - - bpo-38892(9): Improve documentation for audit events table and + - bpo-38892(4): Improve documentation for audit events table and functions. - - bpo-38852(10): Set the thread stack size to 8 Mb for debug builds - on android platforms. - - - bpo-38858(11): Each Python subinterpreter now has its own “small - integer singletons”: numbers in [-5; 257] range. It is no longer - possible to change the number of small integers at build time by - overriding ‘NSMALLNEGINTS’ and ‘NSMALLPOSINTS’ macros: macros - should now be modified manually in ‘pycore_pystate.h’ header file. - - - bpo-36854(12): The garbage collector state becomes per interpreter - (‘PyInterpreterState.gc’), rather than being global - (‘_PyRuntimeState.gc’). - - - bpo-38835(13): The ‘PyFPE_START_PROTECT()’ and - ‘PyFPE_END_PROTECT()’ macros are empty: they have been doing - nothing for the last year, so stop using them. - - - bpo-38328(14): Sped up the creation time of constant *note list: - 1f8. and *note set: 1f6. displays. Patch by Brandt Bucher. - - - bpo-38707(15): ‘MainThread.native_id’ is now correctly reset in - child processes spawned using *note multiprocessing.Process: 4bb, + - bpo-38707(5): ‘MainThread.native_id’ is now correctly reset in + child processes spawned using *note multiprocessing.Process: 3a3, instead of retaining the parent’s value. - - bpo-38629(16): Added ‘__floor__’ and ‘__ceil__’ methods to float - object. Patch by Batuhan Taşkaya. + - bpo-38640(6): Fixed a bug in the compiler that was causing to raise + in the presence of break statements and continue statements inside + always false while loops. Patch by Pablo Galindo. - - bpo-27145(17): int + int and int - int operators can now return - small integer singletons. Patch by hongweipeng. + - bpo-38535(7): Fixed line numbers and column offsets for AST nodes + for calls without arguments in decorators. - - bpo-38021(18): Provide a platform tag for AIX that is sufficient - for PEP425 binary distribution identification. Patch by Michael - Felt. + - bpo-38525(8): Fix a segmentation fault when using reverse iterators + of empty ‘dict’ objects. Patch by Dong-hee Na and Inada Naoki. - - bpo-35409(19): Ignore GeneratorExit exceptions when throwing an + - bpo-35409(9): Ignore GeneratorExit exceptions when throwing an exception into the aclose coroutine of an asynchronous generator. - - bpo-33387(20): Removed WITH_CLEANUP_START, WITH_CLEANUP_FINISH, - BEGIN_FINALLY, END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. - Replaced with RERAISE and WITH_EXCEPT_START bytecodes. The - compiler now generates different code for exceptional and - non-exceptional branches for ‘with’ and ‘try-except’ statements. - For ‘try-finally’ statements the ‘finally’ block is replicated for - each exit from the ‘try’ body. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39028 + (1) https://bugs.python.org/issue38673 - (2) https://bugs.python.org/issue39080 + (2) https://bugs.python.org/issue38922 - (3) https://bugs.python.org/issue39031 + (3) https://bugs.python.org/issue38920 - (4) https://bugs.python.org/issue20443 + (4) https://bugs.python.org/issue38892 - (5) https://bugs.python.org/issue39008 + (5) https://bugs.python.org/issue38707 - (6) https://bugs.python.org/issue38673 + (6) https://bugs.python.org/issue38640 - (7) https://bugs.python.org/issue38922 + (7) https://bugs.python.org/issue38535 - (8) https://bugs.python.org/issue38920 + (8) https://bugs.python.org/issue38525 - (9) https://bugs.python.org/issue38892 - - (10) https://bugs.python.org/issue38852 - - (11) https://bugs.python.org/issue38858 - - (12) https://bugs.python.org/issue36854 - - (13) https://bugs.python.org/issue38835 - - (14) https://bugs.python.org/issue38328 - - (15) https://bugs.python.org/issue38707 - - (16) https://bugs.python.org/issue38629 - - (17) https://bugs.python.org/issue27145 - - (18) https://bugs.python.org/issue38021 - - (19) https://bugs.python.org/issue35409 - - (20) https://bugs.python.org/issue33387 + (9) https://bugs.python.org/issue35409  -File: python.info, Node: Library<20>, Next: Documentation<15>, Prev: Core and Builtins<18>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Library<19>, Next: Documentation<15>, Prev: Core and Builtins<19>, Up: Python 3 8 1 release candidate 1 -1.19.21.3 Library +1.18.20.3 Library ................. - - bpo-39033(1): Fix *note NameError: e42. in *note zipimport: 14c. - Patch by Karthikeyan Singaravelan. - - - bpo-39022(2): Update importlib.metadata to include improvements - from importlib_metadata 1.3 including better serialization of - EntryPoints and improved documentation for custom finders. - - - bpo-39006(3): Fix asyncio when the ssl module is missing: only + - bpo-39006(1): Fix asyncio when the ssl module is missing: only check for ssl.SSLSocket instance if the ssl module is available. - - bpo-38708(4): Fix a potential IndexError in email parser when + - bpo-38708(2): Fix a potential IndexError in email parser when parsing an empty msg-id. - - bpo-38698(5): Add a new ‘InvalidMessageID’ token to email parser to + - bpo-38698(3): Add a new ‘InvalidMessageID’ token to email parser to represent invalid Message-ID headers. Also, add defects when there is remaining value after parsing the header. - - bpo-38994(6): Implement ‘__class_getitem__’ for ‘os.PathLike’, - ‘pathlib.Path’. - - - bpo-38979(7): Return class from ‘ContextVar.__class_getitem__’ to + - bpo-38979(4): Return class from ‘ContextVar.__class_getitem__’ to simplify subclassing. - - bpo-38978(8): Implement ‘__class_getitem__’ on asyncio objects - (Future, Task, Queue). Patch by Batuhan Taskaya. - - - bpo-38916(9): *note array.array: 216.: Remove ‘tostring()’ and - ‘fromstring()’ methods. They were aliases to ‘tobytes()’ and - ‘frombytes()’, deprecated since Python 3.2. - - - bpo-38986(10): Make repr of C accelerated TaskWakeupMethWrapper the + - bpo-38986(5): Make repr of C accelerated TaskWakeupMethWrapper the same as of pure Python version. - - bpo-38982(11): Fix asyncio ‘PidfdChildWatcher’: handle ‘waitpid()’ - error. If ‘waitpid()’ is called elsewhere, ‘waitpid()’ call fails - with *note ChildProcessError: a7b.: use return code 255 in this - case, and log a warning. It ensures that the pidfd file descriptor - is closed if this error occurs. - - - bpo-38529(12): Drop too noisy asyncio warning about deletion of a + - bpo-38529(6): Drop too noisy asyncio warning about deletion of a stream without explicit ‘.close()’ call. - - bpo-27413(13): Added ability to pass through ‘ensure_ascii’ options - to json.dumps in the ‘json.tool’ command-line interface. - - - bpo-38634(14): The *note readline: de. module now detects if Python + - bpo-38634(7): The *note readline: df. module now detects if Python is linked to libedit at runtime on all platforms. Previously, the check was only done on macOS. - - bpo-33684(15): Fix ‘json.tool’ failed to read a JSON file with + - bpo-33684(8): Fix ‘json.tool’ failed to read a JSON file with non-ASCII characters when locale encoding is not UTF-8. - - bpo-38698(16): Prevent UnboundLocalError to pop up in - parse_message_id. + - bpo-38698(9): Prevent UnboundLocalError to pop up in + parse_message_id parse_message_id() was improperly using a token defined inside an - exception handler, which was raising *note UnboundLocalError: f39. + exception handler, which was raising *note UnboundLocalError: e49. on parsing an invalid value. Patch by Claudiu Popa. - - bpo-38927(17): Use ‘python -m pip’ instead of ‘pip’ to upgrade - dependencies in venv. - - - bpo-26730(18): Fix ‘SpooledTemporaryFile.rollover()’ might corrupt + - bpo-26730(10): Fix ‘SpooledTemporaryFile.rollover()’ might corrupt the file when it is in text mode. Patch by Serhiy Storchaka. - - bpo-38881(19): random.choices() now raises a ValueError when all - the weights are zero. - - - bpo-38876(20): Raise pickle.UnpicklingError when loading an item - from memo for invalid input. - - The previous code was raising a *note KeyError: 3ec. for both the - Python and C implementation. This was caused by the specified - index of an invalid input which did not exist in the memo - structure, where the pickle stores what objects it has seen. The - malformed input would have caused either a ‘BINGET’ or - ‘LONG_BINGET’ load from the memo, leading to a *note KeyError: 3ec. - as the determined index was bogus. Patch by Claudiu Popa - - - bpo-38688(21): Calling func:*note shutil.copytree: 34a. to copy a + - bpo-38668(11): Calling func:*note shutil.copytree: 206. to copy a directory tree from one directory to another subdirectory resulted in an endless loop and a RecursionError. A fix was added to consume an iterator and create the list of the entries to be copied, avoiding the recursion for newly created directories. Patch by Bruno P. Kinoshita. - - bpo-38863(22): Improve ‘is_cgi()’ function in *note http.server: - 96, which enables processing the case that cgi directory is a child - of another directory other than root. + - bpo-37838(12): *note typing.get_type_hints(): 2fe. properly handles + functions decorated with *note functools.wraps(): 84f. - - bpo-37838(23): *note typing.get_type_hints(): 1ef. properly handles - functions decorated with *note functools.wraps(): 957. + - bpo-38859(13): AsyncMock now returns StopAsyncIteration on the + exaustion of a side_effects iterable. Since PEP-479 its Impossible + to raise a StopIteration exception from a coroutine. - - bpo-38870(24): Expose *note ast.unparse(): 186. as a function of - the *note ast: 7. module that can be used to unparse an *note - ast.AST: 187. object and produce a string with code that would - produce an equivalent *note ast.AST: 187. object when parsed. - Patch by Pablo Galindo and Batuhan Taskaya. - - - bpo-38859(25): AsyncMock now returns StopAsyncIteration on the - exhaustion of a side_effects iterable. Since PEP-479 its - Impossible to raise a StopIteration exception from a coroutine. - - - bpo-38857(26): AsyncMock fix for return values that are awaitable - types. This also covers side_effect iterable values that happened + - bpo-38857(14): AsyncMock fix for return values that are awaitable + types. This also covers side_effect iterable values that happend to be awaitable, and wraps callables that return an awaitable type. Before these awaitables were being awaited instead of being returned as is. - - bpo-38834(27): *note typing.TypedDict: 36a. subclasses now track - which keys are optional using the ‘__required_keys__’ and - ‘__optional_keys__’ attributes, to enable runtime validation by - downstream projects. Patch by Zac Hatfield-Dodds. - - - bpo-38821(28): Fix unhandled exceptions in *note argparse: 5. when + - bpo-38821(15): Fix unhandled exceptions in *note argparse: 6. when internationalizing error messages for arguments with ‘nargs’ set to special (non-integer) values. Patch by Federico Bond. - - bpo-38820(29): Make Python compatible with OpenSSL 3.0.0. *note - ssl.SSLSocket.getpeercert(): 9b9. no longer returns IPv6 addresses + - bpo-38820(16): Make Python compatible with OpenSSL 3.0.0. *note + ssl.SSLSocket.getpeercert(): 8b4. no longer returns IPv6 addresses with a trailing new line. - - bpo-38811(30): Fix an unhandled exception in *note pathlib: c8. - when *note os.link(): b13. is missing. Patch by Toke - Høiland-Jørgensen. + - bpo-38807(17): Update *note TypeError: 17f. messages for *note + os.path.join(): f37. to include *note os.PathLike: 4dc. objects as + acceptable input types. - - bpo-38686(31): Added support for multiple ‘qop’ values in *note - urllib.request.AbstractDigestAuthHandler: 102e. + - bpo-38785(18): Prevent asyncio from crashing if parent ‘__init__’ + is not called from a constructor of object derived from + ‘asyncio.Future’. - - bpo-38712(32): Add the Linux-specific *note - signal.pidfd_send_signal(): 1dc. function, which allows sending a - signal to a process identified by a file descriptor rather than a - pid. + - bpo-38723(19): *note pdb: ca. now uses *note io.open_code(): efd. + to trigger auditing events. - - bpo-38348(33): Add ‘-i’ and ‘--indent’ (indentation level), and - ‘--no-type-comments’ (type comments) command line options to ast - parsing tool. + - bpo-27805(20): Allow opening pipes and other non-seekable files in + append mode with *note open(): 4e1. - - bpo-37523(34): Change ‘zipfile.ZipExtFile’ to raise ‘ValueError’ - when trying to access the underlying file object after it has been - closed. This new behavior is consistent with how accessing closed - files is handled in other parts of Python. + - bpo-38686(21): Added support for multiple ‘qop’ values in *note + urllib.request.AbstractDigestAuthHandler: f02. - - bpo-38045(35): Improve the performance of ‘enum._decompose()’ in - *note enum: 79. Patch by hongweipeng. + - bpo-38334(22): Fixed seeking backward on an encrypted + ‘zipfile.ZipExtFile’. - - bpo-36820(36): Break cycle generated when saving an exception in + - bpo-34679(23): asynci.ProactorEventLoop.close() now only calls + signal.set_wakeup_fd() in the main thread. + + - bpo-31202(24): The case the result of ‘pathlib.WindowsPath.glob()’ + matches now the case of the pattern for literal parts. + + - bpo-38521(25): Fixed erroneous equality comparison in + statistics.NormalDist(). + + - bpo-38478(26): Fixed a bug in ‘inspect.signature.bind()’ that was + causing it to fail when handling a keyword argument with same name + as positional-only parameter. Patch by Pablo Galindo. + + - bpo-33604(27): Fixed *note hmac.new: 839. and ‘hmac.HMAC’ to raise + TypeError instead of ValueError when the digestmod parameter, now + required in 3.8, is omitted. Also clarified the hmac module + documentation and docstrings. + + - bpo-38422(28): Clarify docstrings of pathlib suffix(es) + + - bpo-36993(29): Improve error reporting for corrupt zip files with + bad zip64 extra data. Patch by Daniel Hillier. + + - bpo-36820(30): Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ‘__traceback__’ attribute. Patch by Mario Corchero. - - bpo-36406(37): Handle namespace packages in *note doctest: 66. - Patch by Karthikeyan Singaravelan. - - - bpo-34776(38): Fix dataclasses to support forward references in + - bpo-34776(31): Fix dataclasses to support forward references in type annotations - - bpo-20928(39): ElementTree supports recursive XInclude processing. - Patch by Stefan Behnel. + - bpo-33348(32): lib2to3 now recognizes expressions after ‘*’ and + ‘**’ like in ‘f(*[] or [])’. - - bpo-29636(40): Add whitespace options for formatting JSON with the - ‘json.tool’ CLI. The following mutually exclusive options are now - supported: ‘--indent’ for setting the indent level in spaces; - ‘--tab’ for indenting with tabs; ‘--no-indent’ for suppressing - newlines; and ‘--compact’ for suppressing all whitespace. The - default behavior remains the same as ‘--indent=4’. + - bpo-27657(33): Fix urllib.parse.urlparse() with numeric paths. A + string like “path:80” is no longer parsed as a path but as a scheme + (“path”) and a path (“80”). ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39033 + (1) https://bugs.python.org/issue39006 - (2) https://bugs.python.org/issue39022 + (2) https://bugs.python.org/issue38708 - (3) https://bugs.python.org/issue39006 + (3) https://bugs.python.org/issue38698 - (4) https://bugs.python.org/issue38708 + (4) https://bugs.python.org/issue38979 - (5) https://bugs.python.org/issue38698 + (5) https://bugs.python.org/issue38986 - (6) https://bugs.python.org/issue38994 + (6) https://bugs.python.org/issue38529 - (7) https://bugs.python.org/issue38979 + (7) https://bugs.python.org/issue38634 - (8) https://bugs.python.org/issue38978 + (8) https://bugs.python.org/issue33684 - (9) https://bugs.python.org/issue38916 + (9) https://bugs.python.org/issue38698 - (10) https://bugs.python.org/issue38986 + (10) https://bugs.python.org/issue26730 - (11) https://bugs.python.org/issue38982 + (11) https://bugs.python.org/issue38668 - (12) https://bugs.python.org/issue38529 + (12) https://bugs.python.org/issue37838 - (13) https://bugs.python.org/issue27413 + (13) https://bugs.python.org/issue38859 - (14) https://bugs.python.org/issue38634 + (14) https://bugs.python.org/issue38857 - (15) https://bugs.python.org/issue33684 + (15) https://bugs.python.org/issue38821 - (16) https://bugs.python.org/issue38698 + (16) https://bugs.python.org/issue38820 - (17) https://bugs.python.org/issue38927 + (17) https://bugs.python.org/issue38807 - (18) https://bugs.python.org/issue26730 + (18) https://bugs.python.org/issue38785 - (19) https://bugs.python.org/issue38881 + (19) https://bugs.python.org/issue38723 - (20) https://bugs.python.org/issue38876 + (20) https://bugs.python.org/issue27805 - (21) https://bugs.python.org/issue38688 + (21) https://bugs.python.org/issue38686 - (22) https://bugs.python.org/issue38863 + (22) https://bugs.python.org/issue38334 - (23) https://bugs.python.org/issue37838 + (23) https://bugs.python.org/issue34679 - (24) https://bugs.python.org/issue38870 + (24) https://bugs.python.org/issue31202 - (25) https://bugs.python.org/issue38859 + (25) https://bugs.python.org/issue38521 - (26) https://bugs.python.org/issue38857 + (26) https://bugs.python.org/issue38478 - (27) https://bugs.python.org/issue38834 + (27) https://bugs.python.org/issue33604 - (28) https://bugs.python.org/issue38821 + (28) https://bugs.python.org/issue38422 - (29) https://bugs.python.org/issue38820 + (29) https://bugs.python.org/issue36993 - (30) https://bugs.python.org/issue38811 + (30) https://bugs.python.org/issue36820 - (31) https://bugs.python.org/issue38686 + (31) https://bugs.python.org/issue34776 - (32) https://bugs.python.org/issue38712 + (32) https://bugs.python.org/issue33348 - (33) https://bugs.python.org/issue38348 - - (34) https://bugs.python.org/issue37523 - - (35) https://bugs.python.org/issue38045 - - (36) https://bugs.python.org/issue36820 - - (37) https://bugs.python.org/issue36406 - - (38) https://bugs.python.org/issue34776 - - (39) https://bugs.python.org/issue20928 - - (40) https://bugs.python.org/issue29636 + (33) https://bugs.python.org/issue27657  -File: python.info, Node: Documentation<15>, Next: Tests<15>, Prev: Library<20>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Documentation<15>, Next: Tests<10>, Prev: Library<19>, Up: Python 3 8 1 release candidate 1 -1.19.21.4 Documentation +1.18.20.4 Documentation ....................... - - bpo-38928(1): Correct when venv’s ‘upgrade_dependencies()’ and - ‘--upgrade-deps’ are added. + - bpo-38816(1): Provides more details about the interaction between + ‘fork()’ and CPython’s runtime, focusing just on the C-API. This + includes cautions about where ‘fork()’ should and shouldn’t be + called. - - bpo-38899(2): Update documentation to state that to activate - virtual environments under fish one should use ‘source’, not ‘’ as - documented at - ‘https://fishshell.com/docs/current/commands.html#source’. + - bpo-38351(2): Modernize *note email: 69. examples from %-formatting + to f-strings. - - bpo-22377(3): Improves documentation of the values that *note - datetime.datetime.strptime(): f54. accepts for ‘%Z’. Patch by Karl - Dubost. + - bpo-38778(3): Document the fact that *note RuntimeError: 2a5. is + raised if *note os.fork(): 942. is called in a subinterpreter. + + - bpo-38592(4): Add Brazilian Portuguese to the language switcher at + Python Documentation website. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38928 + (1) https://bugs.python.org/issue38816 - (2) https://bugs.python.org/issue38899 + (2) https://bugs.python.org/issue38351 - (3) https://bugs.python.org/issue22377 + (3) https://bugs.python.org/issue38778 + + (4) https://bugs.python.org/issue38592  -File: python.info, Node: Tests<15>, Next: Build<15>, Prev: Documentation<15>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Tests<10>, Next: Build<9>, Prev: Documentation<15>, Up: Python 3 8 1 release candidate 1 -1.19.21.5 Tests +1.18.20.5 Tests ............... - - bpo-38546(1): Fix test_ressources_gced_in_workers() of - test_concurrent_futures: explicitly stop the manager to prevent - leaking a child process running in the background after the test - completes. - - - bpo-38546(2): Multiprocessing and concurrent.futures tests now stop - the resource tracker process when tests complete. - - - bpo-38614(3): Replace hardcoded timeout constants in tests with new - *note test.support: 106. constants: *note LOOPBACK_TIMEOUT: 1073, - *note INTERNET_TIMEOUT: 1074, *note SHORT_TIMEOUT: f57. and *note - LONG_TIMEOUT: 1075. It becomes easier to adjust these four timeout - constants for all tests at once, rather than having to adjust every - single test file. - - - bpo-38547(4): Fix test_pty: if the process is the session leader, + - bpo-38547(1): Fix test_pty: if the process is the session leader, closing the master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when running the tests. - - bpo-38992(5): Fix a test for *note math.fsum(): e06. that was + - bpo-38992(2): Fix a test for *note math.fsum(): d14. that was failing due to constant folding. - - bpo-38991(6): *note test.support: 106.: ‘run_python_until_end()’, - ‘assert_python_ok()’ and ‘assert_python_failure()’ functions no - longer strip whitespaces from stderr. Remove - ‘test.support.strip_python_stderr()’ function. - - - bpo-38965(7): Fix test_faulthandler on GCC 10. Use the “volatile” + - bpo-38965(3): Fix test_faulthandler on GCC 10. Use the “volatile” keyword in ‘faulthandler._stack_overflow()’ to prevent tail call optimization on any compiler, rather than relying on compiler specific pragma. - - bpo-38875(8): test_capi: trashcan tests now require the test “cpu” + - bpo-38875(4): test_capi: trashcan tests now require the test “cpu” resource. - - bpo-38841(9): Skip asyncio + - bpo-38841(5): Skip asyncio test_create_datagram_endpoint_existing_sock_unix on platforms lacking a functional bind() for named unix domain sockets. - - bpo-38692(10): Skip the test_posix.test_pidfd_open() test if - ‘os.pidfd_open()’ fails with a *note PermissionError: 6f8. This - situation can happen in a Linux sandbox using a syscall whitelist - which doesn’t allow the ‘pidfd_open()’ syscall yet. + - bpo-38669(6): Raise *note TypeError: 17f. when passing target as a + string with *note unittest.mock.patch.object(): f3a. - - bpo-38839(11): Fix some unused functions in tests. Patch by Adam - Johnson. - - - bpo-38669(12): Raise *note TypeError: 1fe. when passing target as a - string with *note unittest.mock.patch.object(): 1076. - - - bpo-37957(13): test.regrtest now can receive a list of test - patterns to ignore (using the -i/–ignore argument) or a file with a - list of patterns to ignore (using the –ignore-file argument). - Patch by Pablo Galindo. + - bpo-35998(7): Fix a race condition in + test_asyncio.test_start_tls_server_1(). Previously, there was a + race condition between the test main() function which replaces the + protocol and the test ServerProto protocol which sends ANSWER once + it gets HELLO. Now, only the test main() function is responsible to + send data, ServerProto no longer sends data. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38546 + (1) https://bugs.python.org/issue38547 - (2) https://bugs.python.org/issue38546 + (2) https://bugs.python.org/issue38992 - (3) https://bugs.python.org/issue38614 + (3) https://bugs.python.org/issue38965 - (4) https://bugs.python.org/issue38547 + (4) https://bugs.python.org/issue38875 - (5) https://bugs.python.org/issue38992 + (5) https://bugs.python.org/issue38841 - (6) https://bugs.python.org/issue38991 + (6) https://bugs.python.org/issue38669 - (7) https://bugs.python.org/issue38965 - - (8) https://bugs.python.org/issue38875 - - (9) https://bugs.python.org/issue38841 - - (10) https://bugs.python.org/issue38692 - - (11) https://bugs.python.org/issue38839 - - (12) https://bugs.python.org/issue38669 - - (13) https://bugs.python.org/issue37957 + (7) https://bugs.python.org/issue35998  -File: python.info, Node: Build<15>, Next: Windows<14>, Prev: Tests<15>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Build<9>, Next: Windows<12>, Prev: Tests<10>, Up: Python 3 8 1 release candidate 1 -1.19.21.6 Build +1.18.20.6 Build ............... - - bpo-37404(1): *note asyncio: 9. now raises ‘TyperError’ when - calling incompatible methods with an *note ssl.SSLSocket: 192. + - bpo-37404(1): *note asyncio: a. now raises ‘TyperError’ when + calling incompatible methods with an *note ssl.SSLSocket: 3d3. socket. Patch by Ido Michael. - - bpo-36500(2): Added an optional “regen” project to the Visual - Studio solution that will regenerate all grammar, tokens, and - opcodes. + - bpo-38809(2): On Windows, build scripts will now recognize and use + python.exe from an active virtual env. + + - bpo-38684(3): Fix _hashlib build when Blake2 is disabled, but + OpenSSL supports it. + + - bpo-37415(4): Fix stdatomic.h header check for ICC compiler: the + ICC implementation lacks atomic_uintptr_t type which is needed by + Python. ---------- Footnotes ---------- (1) https://bugs.python.org/issue37404 - (2) https://bugs.python.org/issue36500 + (2) https://bugs.python.org/issue38809 + + (3) https://bugs.python.org/issue38684 + + (4) https://bugs.python.org/issue37415  -File: python.info, Node: Windows<14>, Next: macOS<13>, Prev: Build<15>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: Windows<12>, Next: macOS<10>, Prev: Build<9>, Up: Python 3 8 1 release candidate 1 -1.19.21.7 Windows +1.18.20.7 Windows ................. - - bpo-39007(1): Add auditing events to functions in *note winreg: - 133. - - - bpo-33125(2): Add support for building and releasing Windows ARM64 + - bpo-33125(1): Add support for building and releasing Windows ARM64 packages. + - bpo-38589(2): Fixes HTML Help shortcut when Windows is not + installed to C drive + + - bpo-38453(3): Ensure ntpath.realpath() correctly resolves relative + paths. + + - bpo-38519(4): Restores the internal C headers that were missing + from the nuget.org and Microsoft Store packages. + + - bpo-38492(5): Remove ‘pythonw.exe’ dependency on the Microsoft C++ + runtime. + ---------- Footnotes ---------- - (1) https://bugs.python.org/issue39007 + (1) https://bugs.python.org/issue33125 - (2) https://bugs.python.org/issue33125 + (2) https://bugs.python.org/issue38589 + + (3) https://bugs.python.org/issue38453 + + (4) https://bugs.python.org/issue38519 + + (5) https://bugs.python.org/issue38492  -File: python.info, Node: macOS<13>, Next: IDLE<17>, Prev: Windows<14>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: macOS<10>, Next: IDLE<17>, Prev: Windows<12>, Up: Python 3 8 1 release candidate 1 -1.19.21.8 macOS +1.18.20.8 macOS ............... - bpo-37931(1): Fixed a crash on OSX dynamic builds that occurred @@ -62064,353 +56102,1185 @@ File: python.info, Node: macOS<13>, Next: IDLE<17>, Prev: Windows<14>, Up: P (1) https://bugs.python.org/issue37931  -File: python.info, Node: IDLE<17>, Next: C API<13>, Prev: macOS<13>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: IDLE<17>, Next: C API<7>, Prev: macOS<10>, Up: Python 3 8 1 release candidate 1 -1.19.21.9 IDLE +1.18.20.9 IDLE .............. - - bpo-38944(1): Escape key now closes IDLE completion windows. Patch - by Johnny Najera. - - - bpo-38943(2): Fix IDLE autocomplete windows not always appearing on - some systems. Patch by Johnny Najera. - - - bpo-38862(3): ‘Strip Trailing Whitespace’ on the Format menu + - bpo-38862(1): ‘Strip Trailing Whitespace’ on the Format menu removes extra newlines at the end of non-shell files. - - bpo-38636(4): Fix IDLE Format menu tab toggle and file indent + - bpo-26353(2): Stop adding newline when saving an IDLE shell window. + + - bpo-38636(3): Fix IDLE Format menu tab toggle and file indent width. These functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in 3.7.5 and 3.8.0. + - bpo-4630(4): Add an option to toggle IDLE’s cursor blink for shell, + editor, and output windows. See Settings, General, Window + Preferences, Cursor Blink. Patch by Zackery Spytz. + + - bpo-38598(5): Do not try to compile IDLE shell or output windows + ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38944 + (1) https://bugs.python.org/issue38862 - (2) https://bugs.python.org/issue38943 + (2) https://bugs.python.org/issue26353 - (3) https://bugs.python.org/issue38862 + (3) https://bugs.python.org/issue38636 - (4) https://bugs.python.org/issue38636 + (4) https://bugs.python.org/issue4630 + + (5) https://bugs.python.org/issue38598  -File: python.info, Node: C API<13>, Prev: IDLE<17>, Up: Python 3 9 0 alpha 2 +File: python.info, Node: C API<7>, Prev: IDLE<17>, Up: Python 3 8 1 release candidate 1 -1.19.21.10 C API +1.18.20.10 C API ................ - - bpo-38896(1): Remove ‘PyUnicode_ClearFreeList()’ function: the - Unicode free list has been removed in Python 3.3. + - bpo-37633(1): Re-export some function compatibility wrappers for + macros in ‘pythonrun.h’. - - bpo-37340(2): Remove ‘PyMethod_ClearFreeList()’ and - ‘PyCFunction_ClearFreeList()’ functions: the free lists of bound - method objects have been removed. + - bpo-38540(2): Fixed possible leak in *note PyArg_Parse(): f40. and + similar functions for format units ‘"es#"’ and ‘"et#"’ when the + macro ‘PY_SSIZE_T_CLEAN’ is not defined. - - bpo-38835(3): Exclude ‘PyFPE_START_PROTECT()’ and - ‘PyFPE_END_PROTECT()’ macros of ‘pyfpe.h’ from ‘Py_LIMITED_API’ - (stable API). + - bpo-36389(3): The ‘_PyObject_CheckConsistency()’ function is now + also available in release mode. For example, it can be used to + debug a crash in the ‘visit_decref()’ function of the GC. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38896 + (1) https://bugs.python.org/issue37633 - (2) https://bugs.python.org/issue37340 + (2) https://bugs.python.org/issue38540 - (3) https://bugs.python.org/issue38835 + (3) https://bugs.python.org/issue36389  -File: python.info, Node: Python 3 9 0 alpha 1, Next: Python 3 8 0 beta 1, Prev: Python 3 9 0 alpha 2, Up: Changelog +File: python.info, Node: Python 3 8 0 final, Next: Python 3 8 0 release candidate 1, Prev: Python 3 8 1 release candidate 1, Up: Changelog -1.19.22 Python 3.9.0 alpha 1 ----------------------------- +1.18.21 Python 3.8.0 final +-------------------------- -`Release date: 2019-11-19' +`Release date: 2019-10-14' * Menu: -* Security: Security<13>. -* Core and Builtins: Core and Builtins<19>. -* Library: Library<21>. +* Core and Builtins: Core and Builtins<20>. +* Library: Library<20>. * Documentation: Documentation<16>. -* Tests: Tests<16>. -* Build: Build<16>. -* Windows: Windows<15>. -* macOS: macOS<14>. +* Tests: Tests<11>. +* Windows: Windows<13>. * IDLE: IDLE<18>. -* Tools/Demos: Tools/Demos<6>. -* C API: C API<14>. +* Tools/Demos: Tools/Demos<5>. +* C API: C API<8>.  -File: python.info, Node: Security<13>, Next: Core and Builtins<19>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: Core and Builtins<20>, Next: Library<20>, Up: Python 3 8 0 final -1.19.22.1 Security -.................. - - - bpo-38722(1): *note runpy: e2. now uses *note io.open_code(): 1011. - to open code files. Patch by Jason Killen. - - - bpo-38622(2): Add additional audit events for the *note ctypes: 2a. - module. - - - bpo-38418(3): Fixes audit event for *note os.system(): e88. to be - named ‘os.system’. - - - bpo-38243(4): Escape the server title of *note - xmlrpc.server.DocXMLRPCServer: 107e. when rendering the document - page as HTML. (Contributed by Dong-hee Na in bpo-38243(5).) - - - bpo-38174(6): Update vendorized expat library version to 2.2.8, - which resolves CVE-2019-15903. - - - bpo-37764(7): Fixes email._header_value_parser.get_unstructured - going into an infinite loop for a specific case in which the email - header does not have trailing whitespace, and the case in which it - contains an invalid encoded word. Patch by Ashwin Ramaswami. - - - bpo-37461(8): Fix an infinite loop when parsing specially crafted - email headers. Patch by Abhilash Raj. - - - bpo-37363(9): Adds audit events for the range of supported run - commands (see *note Command line and environment: 107f.). - - - bpo-37463(10): ssl.match_hostname() no longer accepts IPv4 - addresses with additional text after the address and only - quad-dotted notation without trailing whitespaces. Some - inet_aton() implementations ignore whitespace and all data after - whitespace, e.g. ‘127.0.0.1 whatever’. - - - bpo-37363(11): Adds audit events for *note ensurepip: 78, *note - ftplib: 82, *note glob: 88, *note imaplib: 97, *note nntplib: c0, - *note pdb: c9, *note poplib: d0, *note shutil: e9, *note smtplib: - ed, *note sqlite3: f2, *note subprocess: f9, *note telnetlib: 102, - *note tempfile: 103. and *note webbrowser: 132, as well as *note - os.listdir(): b1e, *note os.scandir(): 38c. and *note breakpoint(): - 40d. - - - bpo-37364(12): *note io.open_code(): 1011. is now used when reading - ‘.pth’ files. - - - bpo-34631(13): Updated OpenSSL to 1.1.1c in Windows installer - - - bpo-34155(14): Fix parsing of invalid email addresses with more - than one ‘@’ (e.g. a@b@c.com.) to not return the part before 2nd - ‘@’ as valid email address. Patch by maxking & jpic. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38722 - - (2) https://bugs.python.org/issue38622 - - (3) https://bugs.python.org/issue38418 - - (4) https://bugs.python.org/issue38243 - - (5) https://bugs.python.org/issue38243 - - (6) https://bugs.python.org/issue38174 - - (7) https://bugs.python.org/issue37764 - - (8) https://bugs.python.org/issue37461 - - (9) https://bugs.python.org/issue37363 - - (10) https://bugs.python.org/issue37463 - - (11) https://bugs.python.org/issue37363 - - (12) https://bugs.python.org/issue37364 - - (13) https://bugs.python.org/issue34631 - - (14) https://bugs.python.org/issue34155 - - -File: python.info, Node: Core and Builtins<19>, Next: Library<21>, Prev: Security<13>, Up: Python 3 9 0 alpha 1 - -1.19.22.2 Core and Builtins +1.18.21.1 Core and Builtins ........................... - - bpo-38631(1): Replace ‘Py_FatalError()’ call with a regular *note - RuntimeError: 3df. exception in ‘float.__getformat__()’. - - - bpo-38639(2): Optimized *note math.floor(): df4, *note math.ceil(): - df5. and *note math.trunc(): df6. for floats. - - - bpo-38640(3): Fixed a bug in the compiler that was causing to raise - in the presence of break statements and continue statements inside - always false while loops. Patch by Pablo Galindo. - - - bpo-38613(4): Optimized some set operations (e.g. ‘|’, ‘^’, and - ‘-’) of ‘dict_keys’. ‘d.keys() | other’ was slower than ‘set(d) | - other’ but they are almost same performance for now. - - - bpo-28029(5): ‘"".replace("", s, n)’ now returns ‘s’ instead of an - empty string for all non-zero ‘n’. There are similar changes for - *note bytes: 172. and *note bytearray: 173. objects. - - - bpo-38535(6): Fixed line numbers and column offsets for AST nodes - for calls without arguments in decorators. - - - bpo-38525(7): Fix a segmentation fault when using reverse iterators - of empty ‘dict’ objects. Patch by Dong-hee Na and Inada Naoki. - - - bpo-38465(8): *note bytearray: 173, *note array: 216. and *note - mmap: 31f. objects allow now to export more than 2**31 buffers at a - time. - - - bpo-38469(9): Fixed a bug where the scope of named expressions was + - bpo-38469(1): Fixed a bug where the scope of named expressions was not being resolved correctly in the presence of the `global' keyword. Patch by Pablo Galindo. - - bpo-38437(10): Activate the ‘GC_DEBUG’ macro for debug builds of - the interpreter (when ‘Py_DEBUG’ is set). Patch by Pablo Galindo. - - - bpo-38379(11): When the garbage collector makes a collection in - which some objects resurrect (they are reachable from outside the - isolated cycles after the finalizers have been executed), do not - block the collection of all objects that are still unreachable. - Patch by Pablo Galindo and Tim Peters. - - - bpo-38379(12): When cyclic garbage collection (gc) runs finalizers + - bpo-38379(2): When cyclic garbage collection (gc) runs finalizers that resurrect unreachable objects, the current gc run ends, without collecting any cyclic trash. However, the statistics reported by ‘collect()’ and ‘get_stats()’ claimed that all cyclic trash found was collected, and that the resurrected objects were collected. Changed the stats to report that none were collected. - - bpo-38392(13): In debug mode, *note PyObject_GC_Track(): f08. now - calls ‘tp_traverse()’ of the object type to ensure that the object - is valid: test that objects visited by ‘tp_traverse()’ are valid. + ---------- Footnotes ---------- - - bpo-38210(14): Remove unecessary intersection and update set - operation in dictview with empty set. (Contributed by Dong-hee Na - in bpo-38210(15).) + (1) https://bugs.python.org/issue38469 - - bpo-38402(16): Check the error from the system’s underlying ‘crypt’ - or ‘crypt_r’. + (2) https://bugs.python.org/issue38379 - - bpo-37474(17): On FreeBSD, Python no longer calls - ‘fedisableexcept()’ at startup to control the floating point - control mode. The call became useless since FreeBSD 6: it became - the default mode. + +File: python.info, Node: Library<20>, Next: Documentation<16>, Prev: Core and Builtins<20>, Up: Python 3 8 0 final - - bpo-38006(18): Fix a bug due to the interaction of weakrefs and the +1.18.21.2 Library +................. + + - bpo-38449(1): Revert GH-15522, which introduces a regression in + *note mimetypes.guess_type(): f44. due to improper handling of + filenames as urls. + + - bpo-38431(2): Fix ‘__repr__’ method for ‘dataclasses.InitVar’ to + support typing objects, patch by Samuel Colvin. + + - bpo-38109(3): Add missing *note stat.S_IFDOOR: 8b7, *note + stat.S_IFPORT: 8b8, *note stat.S_IFWHT: 8b9, *note stat.S_ISDOOR(): + f45, *note stat.S_ISPORT(): f46, and *note stat.S_ISWHT(): f47. + values to the Python implementation of *note stat: f5. + + - bpo-38405(4): Nested subclasses of *note typing.NamedTuple: 26b. + are now pickleable. + + - bpo-38332(5): Prevent *note KeyError: 2b2. thrown by + ‘_encoded_words.decode()’ when given an encoded-word with invalid + content-type encoding from propagating all the way to + ‘email.message.get()’. + + - bpo-38341(6): Add *note smtplib.SMTPNotSupportedError: f48. to the + *note smtplib: ee. exported names. + + - bpo-13153(7): OS native encoding is now used for converting between + Python strings and Tcl objects. This allows to display, copy and + paste to clipboard emoji and other non-BMP characters. Converting + strings from Tcl to Python and back now never fails (except + MemoryError). + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38449 + + (2) https://bugs.python.org/issue38431 + + (3) https://bugs.python.org/issue38109 + + (4) https://bugs.python.org/issue38405 + + (5) https://bugs.python.org/issue38332 + + (6) https://bugs.python.org/issue38341 + + (7) https://bugs.python.org/issue13153 + + +File: python.info, Node: Documentation<16>, Next: Tests<11>, Prev: Library<20>, Up: Python 3 8 0 final + +1.18.21.3 Documentation +....................... + + - bpo-38294(1): Add list of no-longer-escaped chars to re.escape + documentation. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38294 + + +File: python.info, Node: Tests<11>, Next: Windows<13>, Prev: Documentation<16>, Up: Python 3 8 0 final + +1.18.21.4 Tests +............... + + - bpo-37531(1): On timeout, regrtest no longer attempts to call + ‘popen.communicate()’ again: it can hang until all child processes + using stdout and stderr pipes completes. Kill the worker process + and ignores its output. Change also the faulthandler timeout of + the main process from 1 minute to 5 minutes, for Python slowest + buildbots. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37531 + + +File: python.info, Node: Windows<13>, Next: IDLE<18>, Prev: Tests<11>, Up: Python 3 8 0 final + +1.18.21.5 Windows +................. + + - bpo-38344(1): Fix error message in activate.bat. + + - bpo-38359(2): Ensures ‘pyw.exe’ launcher reads correct registry + key. + + - bpo-38355(3): Fixes ‘ntpath.realpath’ failing on ‘sys.executable’. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38344 + + (2) https://bugs.python.org/issue38359 + + (3) https://bugs.python.org/issue38355 + + +File: python.info, Node: IDLE<18>, Next: Tools/Demos<5>, Prev: Windows<13>, Up: Python 3 8 0 final + +1.18.21.6 IDLE +.............. + + - bpo-36698(1): IDLE no longer fails when write non-encodable + characters to stderr. It now escapes them with a backslash, as the + regular Python interpreter. Added the ‘errors’ field to the + standard streams. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue36698 + + +File: python.info, Node: Tools/Demos<5>, Next: C API<8>, Prev: IDLE<18>, Up: Python 3 8 0 final + +1.18.21.7 Tools/Demos +..................... + + - bpo-38118(1): Update Valgrind suppression file to ignore a false + alarm in *note PyUnicode_Decode(): f4e. when using GCC builtin + strcmp(). + + - bpo-38347(2): pathfix.py: Assume all files that end on ‘.py’ are + Python scripts when working recursively. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38118 + + (2) https://bugs.python.org/issue38347 + + +File: python.info, Node: C API<8>, Prev: Tools/Demos<5>, Up: Python 3 8 0 final + +1.18.21.8 C API +............... + + - bpo-38395(1): Fix a crash in *note weakref.proxy: 23c. objects due + to incorrect lifetime management when calling some associated + methods that may delete the last reference to object being + referenced by the proxy. Patch by Pablo Galindo. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38395 + + +File: python.info, Node: Python 3 8 0 release candidate 1, Next: Python 3 8 0 beta 4, Prev: Python 3 8 0 final, Up: Changelog + +1.18.22 Python 3.8.0 release candidate 1 +---------------------------------------- + +`Release date: 2019-10-01' + +* Menu: + +* Security: Security<14>. +* Core and Builtins: Core and Builtins<21>. +* Library: Library<21>. +* Documentation: Documentation<17>. +* Tests: Tests<12>. +* Build: Build<10>. +* Windows: Windows<14>. +* macOS: macOS<11>. +* IDLE: IDLE<19>. +* Tools/Demos: Tools/Demos<6>. +* C API: C API<9>. + + +File: python.info, Node: Security<14>, Next: Core and Builtins<21>, Up: Python 3 8 0 release candidate 1 + +1.18.22.1 Security +.................. + + - bpo-38243(1): Escape the server title of *note + xmlrpc.server.DocXMLRPCServer: f52. when rendering the document + page as HTML. (Contributed by Dong-hee Na in bpo-38243(2).) + + - bpo-38174(3): Update vendorized expat library version to 2.2.8, + which resolves CVE-2019-15903. + + - bpo-37764(4): Fixes email._header_value_parser.get_unstructured + going into an infinite loop for a specific case in which the email + header does not have trailing whitespace, and the case in which it + contains an invalid encoded word. Patch by Ashwin Ramaswami. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38243 + + (2) https://bugs.python.org/issue38243 + + (3) https://bugs.python.org/issue38174 + + (4) https://bugs.python.org/issue37764 + + +File: python.info, Node: Core and Builtins<21>, Next: Library<21>, Prev: Security<14>, Up: Python 3 8 0 release candidate 1 + +1.18.22.2 Core and Builtins +........................... + + - bpo-38006(1): Fix a bug due to the interaction of weakrefs and the cyclic garbage collector. We must clear any weakrefs in garbage in order to prevent their callbacks from executing and causing a crash. - - bpo-38317(19): Fix warnings options priority: - ‘PyConfig.warnoptions’ has the highest priority, as stated in the - PEP 587(20). + - bpo-38317(2): Fix warnings options priority: ‘PyConfig.warnoptions’ + has the highest priority, as stated in the PEP 587(3). - - bpo-38310(21): Predict ‘BUILD_MAP_UNPACK_WITH_CALL’ -> - ‘CALL_FUNCTION_EX’ opcode pairs in the main interpreter loop. - Patch by Brandt Bucher. - - - bpo-36871(22): Improve error handling for the assert_has_calls and + - bpo-36871(4): Improve error handling for the assert_has_calls and assert_has_awaits methods of mocks. Fixed a bug where any errors encountered while binding the expected calls to the mock’s spec were silently swallowed, leading to misleading error output. - - bpo-11410(23): Better control over symbol visibility is provided - through use of the visibility attributes available in gcc >= 4.0, - provided in a uniform way across POSIX and Windows. The POSIX - build files have been updated to compile with -fvisibility=hidden, - minimising exported symbols. - - - bpo-38219(24): Optimized the *note dict: 164. constructor and the - *note update(): e90. method for the case when the argument is a - dict. - - - bpo-38236(25): Python now dumps path configuration if it fails to + - bpo-38236(5): Python now dumps path configuration if it fails to import the Python codecs of the filesystem and stdio encodings. - - bpo-38013(26): Allow to call ‘async_generator_athrow().throw(...)’ + - bpo-38013(6): Allow to call ‘async_generator_athrow().throw(...)’ even for non-started async generator helper. It fixes annoying - warning at the end of *note asyncio.run(): 18d. call. + warning at the end of *note asyncio.run(): 191. call. - - bpo-38124(27): Fix an off-by-one error in PyState_AddModule that + - bpo-38124(7): Fix an off-by-one error in PyState_AddModule that could cause out-of-bounds memory access. - - bpo-38116(28): The select module is now PEP-384 compliant and no - longer has static state - - - bpo-38113(29): ast module updated to PEP-384 and all statics - removed - - - bpo-38076(30): The struct module is now PEP-384 compatible - - - bpo-38075(31): The random module is now PEP-384 compatible - - - bpo-38074(32): zlib module made PEP-384 compatible - - - bpo-38073(33): Make pwd extension module PEP-384 compatible - - - bpo-38072(34): grp module made PEP-384 compatible - - - bpo-38069(35): Make _posixsubprocess PEP-384 compatible - - - bpo-38071(36): Make termios extension module PEP-384 compatible - - - bpo-38005(37): Fixed comparing and creating of InterpreterID and + - bpo-38005(8): Fixed comparing and creating of InterpreterID and ChannelID. - - bpo-36946(38): Fix possible signed integer overflow when handling - slices. Patch by hongweipeng. - - - bpo-37994(39): Fixed silencing arbitrary errors if an attribute + - bpo-37994(9): Fixed silencing arbitrary errors if an attribute lookup fails in several sites. Only AttributeError should be silenced. - - bpo-8425(40): Optimize set difference_update for the case when the - other set is much larger than the base set. (Suggested by Evgeny - Kapun with code contributed by Michele Orrù). + - bpo-37990(10): Fix elapsed time in gc stats was not printed + correctly. This bug was a regression in 3.8b4. - - bpo-37966(41): The implementation of *note is_normalized(): 373. + - bpo-37966(11): The implementation of *note is_normalized(): 232. has been greatly sped up on strings that aren’t normalized, by implementing the full normalization-quick-check algorithm from the Unicode standard. - - bpo-37947(42): Adjust correctly the recursion level in the symtable - generation for named expressions. Patch by Pablo Galindo. - - - bpo-37812(43): The ‘CHECK_SMALL_INT’ macro used inside - ‘Object/longobject.c’ has been replaced with an explicit ‘return’ - at each call site. - - - bpo-37751(44): Fix *note codecs.lookup(): 238. to normalize the - encoding name the same way than ‘encodings.normalize_encoding()’, - except that *note codecs.lookup(): 238. also converts the name to - lower case. - - - bpo-37830(45): Fixed compilation of *note break: 3fd. and *note - continue: 2be. in the *note finally: 2bf. block when the - corresponding *note try: e39. block contains *note return: 2cb. - with a non-constant value. - - - bpo-20490(46): Improve import error message for partially + - bpo-20490(12): Improve import error message for partially initialized module on circular ‘from’ imports - by Anthony Sottile. - - bpo-37840(47): Fix handling of negative indices in *note sq_item: - 1081. of *note bytearray: 173. Patch by Sergey Fedoseev. - - - bpo-37802(48): Slightly improve performance of *note - PyLong_FromUnsignedLong(): 1082, *note - PyLong_FromUnsignedLongLong(): 1083. and *note PyLong_FromSize_t(): - 1084. Patch by Sergey Fedoseev. - - - bpo-37409(49): Ensure explicit relative imports from interactive + - bpo-37409(13): Ensure explicit relative imports from interactive sessions and scripts (having no parent package) always raise ImportError, rather than treating the current module as the package. Patch by Ben Lewis. - - bpo-32912(50): Reverted bpo-32912(51): emitting *note - SyntaxWarning: 2cc. instead of *note DeprecationWarning: 15a. for - invalid escape sequences in string and bytes literals. + - bpo-37619(14): When adding a wrapper descriptor from one class to a + different class (for example, setting ‘__add__ = str.__add__’ on an + ‘int’ subclass), an exception is correctly raised when the operator + is called. - - bpo-37757(52): PEP 572(53): As described in the PEP, assignment - expressions now raise *note SyntaxError: 55c. when their + - bpo-30773(15): Prohibit parallel running of aclose() / asend() / + athrow(). Fix ag_running to reflect the actual running status of + the AG. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38006 + + (2) https://bugs.python.org/issue38317 + + (3) https://www.python.org/dev/peps/pep-0587 + + (4) https://bugs.python.org/issue36871 + + (5) https://bugs.python.org/issue38236 + + (6) https://bugs.python.org/issue38013 + + (7) https://bugs.python.org/issue38124 + + (8) https://bugs.python.org/issue38005 + + (9) https://bugs.python.org/issue37994 + + (10) https://bugs.python.org/issue37990 + + (11) https://bugs.python.org/issue37966 + + (12) https://bugs.python.org/issue20490 + + (13) https://bugs.python.org/issue37409 + + (14) https://bugs.python.org/issue37619 + + (15) https://bugs.python.org/issue30773 + + +File: python.info, Node: Library<21>, Next: Documentation<17>, Prev: Core and Builtins<21>, Up: Python 3 8 0 release candidate 1 + +1.18.22.3 Library +................. + + - bpo-38319(1): sendfile() used in socket and shutil modules was + raising OverflowError for files >= 2GiB on 32-bit architectures. + (patch by Giampaolo Rodola) + + - bpo-38242(2): Revert the new asyncio Streams API + + - bpo-38019(3): Correctly handle pause/resume reading of closed + asyncio unix pipe. + + - bpo-38163(4): Child mocks will now detect their type as either + synchronous or asynchronous, asynchronous child mocks will be + AsyncMocks and synchronous child mocks will be either MagicMock or + Mock (depending on their parent type). + + - bpo-38161(5): Removes _AwaitEvent from AsyncMock. + + - bpo-38216(6): Allow the rare code that wants to send invalid http + requests from the *note http.client: 94. library a way to do so. + The fixes for bpo-30458(7) led to breakage for some projects that + were relying on this ability to test their own behavior in the face + of bad requests. + + - bpo-38108(8): Any synchronous magic methods on an AsyncMock now + return a MagicMock. Any asynchronous magic methods on a MagicMock + now return an AsyncMock. + + - bpo-38248(9): asyncio: Fix inconsistent immediate Task cancellation + + - bpo-38237(10): The arguments for the builtin pow function are more + descriptive. They can now also be passed in as keywords. + + - bpo-38191(11): Constructors of *note NamedTuple: 26b. and *note + TypedDict: 227. types now accept arbitrary keyword argument names, + including “cls”, “self”, “typename”, “_typename”, “fields” and + “_fields”. Passing positional arguments by keyword is deprecated. + + - bpo-38185(12): Fixed case-insensitive string comparison in *note + sqlite3.Row: 745. indexing. + + - bpo-38136(13): Changes AsyncMock call count and await count to be + two different counters. Now await count only counts when a + coroutine has been awaited, not when it has been called, and + vice-versa. Update the documentation around this. + + - bpo-37828(14): Fix default mock name in *note + unittest.mock.Mock.assert_called(): 595. exceptions. Patch by + Abraham Toriz Cruz. + + - bpo-38175(15): Fix a memory leak in comparison of *note + sqlite3.Row: 745. objects. + + - bpo-33936(16): _hashlib no longer calls obsolete OpenSSL + initialization function with OpenSSL 1.1.0+. + + - bpo-34706(17): Preserve subclassing in + inspect.Signature.from_callable. + + - bpo-38153(18): Names of hashing algorithms frome OpenSSL are now + normalized to follow Python’s naming conventions. For example + OpenSSL uses sha3-512 instead of sha3_512 or blake2b512 instead of + blake2b. + + - bpo-38115(19): Fix a bug in dis.findlinestarts() where it would + return invalid bytecode offsets. Document that a code object’s + co_lnotab can contain invalid bytecode offsets. + + - bpo-38148(20): Add slots to *note asyncio: a. transport classes, + which can reduce memory usage. + + - bpo-36991(21): Fixes a potential incorrect AttributeError exception + escaping ZipFile.extract() in some unsupported input error + situations. + + - bpo-38134(22): Remove obsolete copy of PBKDF2_HMAC_fast. All + supported OpenSSL versions contain a fast implementation. + + - bpo-38132(23): The OpenSSL hashlib wrapper uses a simpler + implementation. Several Macros and pointless caches are gone. The + hash name now comes from OpenSSL’s EVP. The algorithm name stays + the same, except it is now always lower case. + + - bpo-38008(24): Fix parent class check in protocols to correctly + identify the module that provides a builtin protocol, instead of + assuming they all come from the *note collections.abc: 1f. module + + - bpo-37405(25): Fixed regression bug for socket.getsockname() for + non-CAN_ISOTP AF_CAN address family sockets by returning a 1-tuple + instead of string. + + - bpo-38121(26): Update parameter names on functions in + importlib.metadata matching the changes in the 0.22 release of + importlib_metadata. + + - bpo-38110(27): The os.closewalk() implementation now uses the libc + fdwalk() API on platforms where it is available. + + - bpo-38093(28): Fixes AsyncMock so it doesn’t crash when used with + AsyncContextManagers or AsyncIterators. + + - bpo-37488(29): Add warning to ‘datetime.utctimetuple()’, + ‘datetime.utcnow()’ and ‘datetime.utcfromtimestamp()’ . + + - bpo-38086(30): Update importlib.metadata with changes from + importlib_metadata 0.21(31). + + - bpo-37251(32): Remove ‘__code__’ check in AsyncMock that + incorrectly evaluated function specs as async objects but failed to + evaluate classes with ‘__await__’ but no ‘__code__’ attribute + defined as async objects. + + - bpo-38037(33): Fix reference counters in the *note signal: eb. + module. + + - bpo-38066(34): Hide internal asyncio.Stream methods: feed_eof(), + feed_data(), set_exception() and set_transport(). + + - bpo-38059(35): inspect.py now uses sys.exit() instead of exit() + + - bpo-37953(36): In *note typing: 11a, improved the ‘__hash__’ and + ‘__eq__’ methods for ‘ForwardReferences’. + + - bpo-38026(37): Fixed *note inspect.getattr_static(): bab. used + ‘isinstance’ while it should avoid dynamic lookup. + + - bpo-38010(38): In ‘importlib.metadata’ sync with + ‘importlib_metadata’ 0.20, clarifying behavior of ‘files()’ and + fixing issue where only one requirement was returned for + ‘requires()’ on ‘dist-info’ packages. + + - bpo-38006(39): weakref.WeakValueDictionary defines a local remove() + function used as callback for weak references. This function was + created with a closure. Modify the implementation to avoid the + closure. + + - bpo-34410(40): Fixed a crash in the ‘tee()’ iterator when re-enter + it. RuntimeError is now raised in this case. + + - bpo-37140(41): Fix a ctypes regression of Python 3.8. When a + ctypes.Structure is passed by copy to a function, ctypes internals + created a temporary object which had the side effect of calling the + structure finalizer (__del__) twice. The Python semantics requires + a finalizer to be called exactly once. Fix ctypes internals to no + longer call the finalizer twice. + + - bpo-37972(42): Subscripts to the *note unittest.mock.call: f55. + objects now receive the same chaining mechanism as any other custom + attributes, so that the following usage no longer raises a *note + TypeError: 17f.: + + call().foo().__getitem__(‘bar’) + + Patch by blhsing + + - bpo-22347(43): Update mimetypes.guess_type to allow proper parsing + of URLs with only a host name. Patch by Dong-hee Na. + + - bpo-37885(44): venv: Don’t generate unset variable warning on + deactivate. + + - bpo-37785(45): Fix xgettext warnings in *note argparse: 6. + + - bpo-11953(46): Completing WSA* error codes in *note socket: f0. + + - bpo-37424(47): Fixes a possible hang when using a timeout on *note + subprocess.run(): 3de. while capturing output. If the child + process spawned its own children or otherwise connected its stdout + or stderr handles with another process, we could hang after the + timeout was reached and our child was killed when attempting to + read final output from the pipes. + + - bpo-37212(48): *note unittest.mock.call(): f55. now preserves the + order of keyword arguments in repr output. Patch by Karthikeyan + Singaravelan. + + - bpo-37305(49): Add .webmanifest -> application/manifest+json to + list of recognized file types and content type headers + + - bpo-21872(50): Fix *note lzma: ae.: module decompresses data + incompletely. When decompressing a FORMAT_ALONE format file, and + it doesn’t have the end marker, sometimes the last one to dozens + bytes can’t be output. Patch by Ma Lin. + + - bpo-37206(51): Default values which cannot be represented as Python + objects no longer improperly represented as ‘None’ in function + signatures. + + - bpo-12144(52): Ensure cookies with ‘expires’ attribute are handled + in ‘CookieJar.make_cookies()’. + + - bpo-31163(53): pathlib.Path instance’s rename and replace methods + now return the new Path instance. + + - bpo-25068(54): *note urllib.request.ProxyHandler: f56. now + lowercases the keys of the passed dictionary. + + - bpo-21315(55): Email headers containing RFC2047 encoded words are + parsed despite the missing whitespace, and a defect registered. + Also missing trailing whitespace after encoded words is now + registered as a defect. + + - bpo-36250(56): Ignore ‘ValueError’ from ‘signal’ with ‘interaction’ + in non-main thread. + + - bpo-35168(57): *note shlex.shlex.punctuation_chars: f57. is now a + read-only property. + + - bpo-20504(58): Fixes a bug in *note cgi: 16. module when a + multipart/form-data request has no ‘Content-Length’ header. + + - bpo-34519(59): Add additional aliases for HP Roman 8. Patch by + Michael Osipov. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38319 + + (2) https://bugs.python.org/issue38242 + + (3) https://bugs.python.org/issue38019 + + (4) https://bugs.python.org/issue38163 + + (5) https://bugs.python.org/issue38161 + + (6) https://bugs.python.org/issue38216 + + (7) https://bugs.python.org/issue30458 + + (8) https://bugs.python.org/issue38108 + + (9) https://bugs.python.org/issue38248 + + (10) https://bugs.python.org/issue38237 + + (11) https://bugs.python.org/issue38191 + + (12) https://bugs.python.org/issue38185 + + (13) https://bugs.python.org/issue38136 + + (14) https://bugs.python.org/issue37828 + + (15) https://bugs.python.org/issue38175 + + (16) https://bugs.python.org/issue33936 + + (17) https://bugs.python.org/issue34706 + + (18) https://bugs.python.org/issue38153 + + (19) https://bugs.python.org/issue38115 + + (20) https://bugs.python.org/issue38148 + + (21) https://bugs.python.org/issue36991 + + (22) https://bugs.python.org/issue38134 + + (23) https://bugs.python.org/issue38132 + + (24) https://bugs.python.org/issue38008 + + (25) https://bugs.python.org/issue37405 + + (26) https://bugs.python.org/issue38121 + + (27) https://bugs.python.org/issue38110 + + (28) https://bugs.python.org/issue38093 + + (29) https://bugs.python.org/issue37488 + + (30) https://bugs.python.org/issue38086 + + (31) +https://gitlab.com/python-devs/importlib_metadata/blob/0.21/importlib_metadata/docs/changelog.rst + + (32) https://bugs.python.org/issue37251 + + (33) https://bugs.python.org/issue38037 + + (34) https://bugs.python.org/issue38066 + + (35) https://bugs.python.org/issue38059 + + (36) https://bugs.python.org/issue37953 + + (37) https://bugs.python.org/issue38026 + + (38) https://bugs.python.org/issue38010 + + (39) https://bugs.python.org/issue38006 + + (40) https://bugs.python.org/issue34410 + + (41) https://bugs.python.org/issue37140 + + (42) https://bugs.python.org/issue37972 + + (43) https://bugs.python.org/issue22347 + + (44) https://bugs.python.org/issue37885 + + (45) https://bugs.python.org/issue37785 + + (46) https://bugs.python.org/issue11953 + + (47) https://bugs.python.org/issue37424 + + (48) https://bugs.python.org/issue37212 + + (49) https://bugs.python.org/issue37305 + + (50) https://bugs.python.org/issue21872 + + (51) https://bugs.python.org/issue37206 + + (52) https://bugs.python.org/issue12144 + + (53) https://bugs.python.org/issue31163 + + (54) https://bugs.python.org/issue25068 + + (55) https://bugs.python.org/issue21315 + + (56) https://bugs.python.org/issue36250 + + (57) https://bugs.python.org/issue35168 + + (58) https://bugs.python.org/issue20504 + + (59) https://bugs.python.org/issue34519 + + +File: python.info, Node: Documentation<17>, Next: Tests<12>, Prev: Library<21>, Up: Python 3 8 0 release candidate 1 + +1.18.22.4 Documentation +....................... + + - bpo-26868(1): Fix example usage of *note PyModule_AddObject(): f59. + to properly handle errors. + + - bpo-36797(2): Fix a dead link in the distutils API Reference. + + - bpo-37977(3): Warn more strongly and clearly about pickle + insecurity + + - bpo-37937(4): Mention ‘frame.f_trace’ in *note sys.settrace(): e14. + docs. + + - bpo-36260(5): Add decompression pitfalls to zipfile module + documentation. + + - bpo-36960(6): Restructured the *note datetime: 31. docs in the + interest of making them more user-friendly and improving + readability. Patch by Brad Solomon. + + - bpo-23460(7): The documentation for decimal string formatting using + the ‘:g’ specifier has been updated to reflect the correct + exponential notation cutoff point. Original patch contributed by + Tuomas Suutari. + + - bpo-35803(8): Document and test that ‘tempfile’ functions may + accept a *note path-like object: 35b. for the ‘dir’ argument. + Patch by Anthony Sottile. + + - bpo-33944(9): Added a note about the intended use of code in .pth + files. + + - bpo-34293(10): Fix the Doc/Makefile regarding PAPER environment + variable and PDF builds + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue26868 + + (2) https://bugs.python.org/issue36797 + + (3) https://bugs.python.org/issue37977 + + (4) https://bugs.python.org/issue37937 + + (5) https://bugs.python.org/issue36260 + + (6) https://bugs.python.org/issue36960 + + (7) https://bugs.python.org/issue23460 + + (8) https://bugs.python.org/issue35803 + + (9) https://bugs.python.org/issue33944 + + (10) https://bugs.python.org/issue34293 + + +File: python.info, Node: Tests<12>, Next: Build<10>, Prev: Documentation<17>, Up: Python 3 8 0 release candidate 1 + +1.18.22.5 Tests +............... + + - bpo-38239(1): Fix test_gdb for Link Time Optimization (LTO) builds. + + - bpo-38275(2): test_ssl now handles disabled TLS/SSL versions + better. OpenSSL’s crypto policy and run-time settings are + recognized and tests for disabled versions are skipped. Tests also + accept more TLS minimum_versions for platforms that override + OpenSSL’s default with strict settings. + + - bpo-38271(3): The private keys for test_ssl were encrypted with + 3DES in traditional PKCS#5 format. 3DES and the digest algorithm + of PKCS#5 are blocked by some strict crypto policies. Use PKCS#8 + format with AES256 encryption instead. + + - bpo-38270(4): test.support now has a helper function to check for + availibility of a hash digest function. Several tests are + refactored avoid MD5 and use SHA256 instead. Other tests are + marked to use MD5 and skipped when MD5 is disabled. + + - bpo-37123(5): Multiprocessing test test_mymanager() now also + expects -SIGTERM, not only exitcode 0. + BaseManager._finalize_manager() sends SIGTERM to the manager + process if it takes longer than 1 second to stop, which happens on + slow buildbots. + + - bpo-38212(6): Multiprocessing tests: increase + test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds. + + - bpo-38117(7): Test with OpenSSL 1.1.1d + + - bpo-37531(8): Enhance regrtest multiprocess timeout: write a + message when killing a worker process, catch popen.kill() and + popen.wait() exceptions, put a timeout on the second call to + popen.communicate(). + + - bpo-37876(9): Add tests for ROT-13 codec. + + - bpo-37252(10): Fix assertions in ‘test_close’ and + ‘test_events_mask_overflow’ devpoll tests. + + - bpo-34001(11): Make test_ssl pass with LibreSSL. LibreSSL handles + minimum and maximum TLS version differently than OpenSSL. + + - bpo-36919(12): Make ‘test_source_encoding.test_issue2301’ + implementation independent. The test will work now for both + CPython and IronPython. + + - bpo-34596(13): Fallback to a default reason when *note + unittest.skip(): f5b. is uncalled. Patch by Naitree Zhu. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38239 + + (2) https://bugs.python.org/issue38275 + + (3) https://bugs.python.org/issue38271 + + (4) https://bugs.python.org/issue38270 + + (5) https://bugs.python.org/issue37123 + + (6) https://bugs.python.org/issue38212 + + (7) https://bugs.python.org/issue38117 + + (8) https://bugs.python.org/issue37531 + + (9) https://bugs.python.org/issue37876 + + (10) https://bugs.python.org/issue37252 + + (11) https://bugs.python.org/issue34001 + + (12) https://bugs.python.org/issue36919 + + (13) https://bugs.python.org/issue34596 + + +File: python.info, Node: Build<10>, Next: Windows<14>, Prev: Tests<12>, Up: Python 3 8 0 release candidate 1 + +1.18.22.6 Build +............... + + - bpo-38301(1): In Solaris family, we must be sure to use + ‘-D_REENTRANT’. Patch by Jesús Cea Avión. + + - bpo-36210(2): Update optional extension module detection for AIX. + ossaudiodev and spwd are not applicable for AIX, and are no longer + reported as missing. 3rd-party packaging of ncurses (with ASIS + support) conflicts with officially supported AIX curses library, so + configure AIX to use libcurses.a. However, skip trying to build + _curses_panel. + + patch by M Felt + + - bpo-36002(3): Locate ‘llvm-profdata’ and ‘llvm-ar’ binaries using + ‘AC_PATH_TOOL’ rather than ‘AC_PATH_TARGET_TOOL’. + + - bpo-37936(4): The ‘.gitignore’ file systematically keeps “rooted”, + with a non-trailing slash, all the rules that are meant to apply to + files in a specific place in the repo. Previously, when the + intended file to ignore happened to be at the root of the repo, + we’d most often accidentally also ignore files and directories with + the same name anywhere in the tree. + + - bpo-37936(5): The ‘.gitignore’ file no longer applies to any files + that are in fact tracked in the Git repository. Patch by Greg + Price. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38301 + + (2) https://bugs.python.org/issue36210 + + (3) https://bugs.python.org/issue36002 + + (4) https://bugs.python.org/issue37936 + + (5) https://bugs.python.org/issue37936 + + +File: python.info, Node: Windows<14>, Next: macOS<11>, Prev: Build<10>, Up: Python 3 8 0 release candidate 1 + +1.18.22.7 Windows +................. + + - bpo-38117(1): Update bundled OpenSSL to 1.1.1d + + - bpo-38092(2): Reduce overhead when using multiprocessing in a + Windows virtual environment. + + - bpo-38133(3): Allow py.exe launcher to locate installations from + the Microsoft Store and improve display of active virtual + environments. + + - bpo-38114(4): The ‘pip.ini’ is no longer included in the Nuget + package. + + - bpo-36634(5): *note os.cpu_count(): 864. now returns active + processors rather than maximum processors. + + - bpo-36634(6): venv activate.bat now works when the existing + variables contain double quote characters. + + - bpo-38081(7): Prevent error calling *note os.path.realpath(): 1eb. + on ‘'NUL'’. + + - bpo-38087(8): Fix case sensitivity in test_pathlib and test_ntpath. + + - bpo-38088(9): Fixes distutils not finding vcruntime140.dll with + only the v142 toolset installed. + + - bpo-37283(10): Ensure command-line and unattend.xml setting + override previously detected states in Windows installer. + + - bpo-38030(11): Fixes *note os.stat(): 1dd. failing for block + devices on Windows + + - bpo-38020(12): Fixes potential crash when calling *note + os.readlink(): 1df. (or indirectly through *note realpath(): 1eb.) + on a file that is not a supported link. + + - bpo-37705(13): Improve the implementation of ‘winerror_to_errno()’. + + - bpo-37702(14): Fix memory leak on Windows in creating an SSLContext + object or running urllib.request.urlopen(‘‘https://’…’). + + - bpo-37445(15): Include the ‘FORMAT_MESSAGE_IGNORE_INSERTS’ flag in + ‘FormatMessageW()’ calls. + + - bpo-37380(16): Don’t collect unfinished processes with + ‘subprocess._active’ on Windows to cleanup later. Patch by Ruslan + Kuprieiev. + + - bpo-32587(17): Make *note winreg.REG_MULTI_SZ: f5e. support + zero-length strings. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38117 + + (2) https://bugs.python.org/issue38092 + + (3) https://bugs.python.org/issue38133 + + (4) https://bugs.python.org/issue38114 + + (5) https://bugs.python.org/issue36634 + + (6) https://bugs.python.org/issue36634 + + (7) https://bugs.python.org/issue38081 + + (8) https://bugs.python.org/issue38087 + + (9) https://bugs.python.org/issue38088 + + (10) https://bugs.python.org/issue37283 + + (11) https://bugs.python.org/issue38030 + + (12) https://bugs.python.org/issue38020 + + (13) https://bugs.python.org/issue37705 + + (14) https://bugs.python.org/issue37702 + + (15) https://bugs.python.org/issue37445 + + (16) https://bugs.python.org/issue37380 + + (17) https://bugs.python.org/issue32587 + + +File: python.info, Node: macOS<11>, Next: IDLE<19>, Prev: Windows<14>, Up: Python 3 8 0 release candidate 1 + +1.18.22.8 macOS +............... + + - bpo-38117(1): Updated OpenSSL to 1.1.1d in macOS installer. + + - bpo-38089(2): Move Azure Pipelines to latest VM versions and make + macOS tests optional + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38117 + + (2) https://bugs.python.org/issue38089 + + +File: python.info, Node: IDLE<19>, Next: Tools/Demos<6>, Prev: macOS<11>, Up: Python 3 8 0 release candidate 1 + +1.18.22.9 IDLE +.............. + + - bpo-35379(1): When exiting IDLE, catch any AttributeError. One + happens when EditorWindow.close is called twice. Printing a + traceback, when IDLE is run from a terminal, is useless and + annoying. + + - bpo-38183(2): To avoid problems, test_idle ignores the user config + directory. It no longer tries to create or access .idlerc or any + files within. Users must run IDLE to discover problems with saving + settings. + + - bpo-38077(3): IDLE no longer adds ‘argv’ to the user namespace when + initializing it. This bug only affected 3.7.4 and 3.8.0b2 to + 3.8.0b4. + + - bpo-38041(4): Shell restart lines now fill the window width, always + start with ‘=’, and avoid wrapping unnecessarily. The line will + still wrap if the included file name is long relative to the width. + + - bpo-35771(5): To avoid occasional spurious test_idle failures on + slower machines, increase the ‘hover_delay’ in test_tooltip. + + - bpo-37902(6): Add mousewheel scrolling for IDLE module, path, and + stack browsers. Patch by George Zhang. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue35379 + + (2) https://bugs.python.org/issue38183 + + (3) https://bugs.python.org/issue38077 + + (4) https://bugs.python.org/issue38041 + + (5) https://bugs.python.org/issue35771 + + (6) https://bugs.python.org/issue37902 + + +File: python.info, Node: Tools/Demos<6>, Next: C API<9>, Prev: IDLE<19>, Up: Python 3 8 0 release candidate 1 + +1.18.22.10 Tools/Demos +...................... + + - bpo-37803(1): pdb’s ‘--help’ and ‘--version’ long options now work. + + - bpo-37064(2): Add option -k to pathscript.py script: preserve + shebang flags. Add option -a to pathscript.py script: add flags. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37803 + + (2) https://bugs.python.org/issue37064 + + +File: python.info, Node: C API<9>, Prev: Tools/Demos<6>, Up: Python 3 8 0 release candidate 1 + +1.18.22.11 C API +................ + + - bpo-38234(1): *note Py_SetPath(): 25f. now sets *note + sys.executable: 260. to the program full path (*note + Py_GetProgramFullPath(): 261.) rather than to the program name + (*note Py_GetProgramName(): 262.). + + - bpo-38234(2): Python ignored arguments passed to *note + Py_SetPath(): 25f, *note Py_SetPythonHome(): f63. and *note + Py_SetProgramName(): f64.: fix Python initialization to use + specified arguments. + + - bpo-38205(3): The *note Py_UNREACHABLE(): 413. macro now calls + *note Py_FatalError(): f65. + + - bpo-37879(4): Fix subtype_dealloc to suppress the type decref when + the base type is a C heap type + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue38234 + + (2) https://bugs.python.org/issue38234 + + (3) https://bugs.python.org/issue38205 + + (4) https://bugs.python.org/issue37879 + + +File: python.info, Node: Python 3 8 0 beta 4, Next: Python 3 8 0 beta 3, Prev: Python 3 8 0 release candidate 1, Up: Changelog + +1.18.23 Python 3.8.0 beta 4 +--------------------------- + +`Release date: 2019-08-29' + +* Menu: + +* Security: Security<15>. +* Core and Builtins: Core and Builtins<22>. +* Library: Library<22>. +* Documentation: Documentation<18>. +* Tests: Tests<13>. +* Build: Build<11>. +* Windows: Windows<15>. +* macOS: macOS<12>. +* IDLE: IDLE<20>. +* Tools/Demos: Tools/Demos<7>. +* C API: C API<10>. + + +File: python.info, Node: Security<15>, Next: Core and Builtins<22>, Up: Python 3 8 0 beta 4 + +1.18.23.1 Security +.................. + + - bpo-34155(1): Fix parsing of invalid email addresses with more than + one ‘@’ (e.g. a@b@c.com.) to not return the part before 2nd ‘@’ + as valid email address. Patch by maxking & jpic. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue34155 + + +File: python.info, Node: Core and Builtins<22>, Next: Library<22>, Prev: Security<15>, Up: Python 3 8 0 beta 4 + +1.18.23.2 Core and Builtins +........................... + + - bpo-37947(1): Adjust correctly the recursion level in the symtable + generation for named expressions. Patch by Pablo Galindo. + + - bpo-37830(2): Fixed compilation of *note break: 2c7. and *note + continue: 16e. in the *note finally: 16f. block when the + corresponding *note try: d4c. block contains *note return: 17d. + with a non-constant value. + + - bpo-32912(3): Reverted bpo-32912(4): emitting *note SyntaxWarning: + 17e. instead of *note DeprecationWarning: 264. for invalid escape + sequences in string and bytes literals. + + - bpo-37757(5): PEP 572(6): As described in the PEP, assignment + expressions now raise *note SyntaxError: 449. when their interaction with comprehension scoping results in an ambiguous target scope. @@ -62418,2331 +57288,708 @@ File: python.info, Node: Core and Builtins<19>, Next: Library<21>, Prev: Secu been removed in favour of just raising regular syntax errors for the disallowed cases. - - bpo-36279(54): Fix potential use of uninitialized memory in *note - os.wait3(): 75e. + - bpo-36311(7): Decoding bytes objects larger than 2GiB is faster and + no longer fails when a multibyte characters spans a chunk boundary. - - bpo-36311(55): Decoding bytes objects larger than 2GiB is faster - and no longer fails when a multibyte characters spans a chunk - boundary. - - - bpo-34880(56): The *note assert: 23f. statement now works properly - if the *note AssertionError: 240. exception is being shadowed. - Patch by Zackery Spytz. - - - bpo-37340(57): Removed object cache (‘free_list’) for bound method - objects. Temporary bound method objects are less used than before - thanks to the ‘LOAD_METHOD’ opcode and the - ‘_PyObject_VectorcallMethod’ C API. - - - bpo-37648(58): Fixed minor inconsistency in ‘list.__contains__()’, - ‘tuple.__contains__()’ and a few other places. The collection’s - item is now always at the left and the needle is on the right of - ‘==’. - - - bpo-37444(59): Update differing exception between - ‘builtins.__import__()’ and *note importlib.__import__(): a90. - - - bpo-37619(60): When adding a wrapper descriptor from one class to a - different class (for example, setting ‘__add__ = str.__add__’ on an - ‘int’ subclass), an exception is correctly raised when the operator - is called. - - - bpo-37593(61): Swap the positions of the `posonlyargs' and `args' - parameters in the constructor of ‘ast.parameters’ nodes. - - - bpo-37543(62): Optimized pymalloc for non PGO build. - - - bpo-37537(63): Compute allocated pymalloc blocks inside - _Py_GetAllocatedBlocks(). This slows down _Py_GetAllocatedBlocks() - but gives a small speedup to _PyObject_Malloc() and - _PyObject_Free(). - - - bpo-37467(64): Fix *note sys.excepthook(): f26. and - ‘PyErr_Display()’ if a filename is a bytes string. For example, - for a SyntaxError exception where the filename attribute is a bytes - string. - - - bpo-37433(65): Fix ‘SyntaxError’ indicator printing too many spaces + - bpo-37433(8): Fix ‘SyntaxError’ indicator printing too many spaces for multi-line strings - by Anthony Sottile. - - bpo-37417(66): ‘bytearray.extend()’ now correctly handles errors - that arise during iteration. Patch by Brandt Bucher. - - - bpo-37414(67): The undocumented ‘sys.callstats()’ function has been - removed. Since Python 3.7, it was deprecated and always returned - ‘None’. It required a special build option ‘CALL_PROFILE’ which - was already removed in Python 3.7. - - - bpo-37392(68): Remove ‘sys.getcheckinterval()’ and - ‘sys.setcheckinterval()’ functions. They were deprecated since - Python 3.2. Use *note sys.getswitchinterval(): 217. and *note - sys.setswitchinterval(): 218. instead. Remove also - ‘check_interval’ field of the ‘PyInterpreterState’ structure. - - - bpo-37388(69): In development mode and in debug build, `encoding' - and `errors' arguments are now checked on string encoding and - decoding operations. Examples: *note open(): 16f, *note - str.encode(): 170. and *note bytes.decode(): 171. - - By default, for best performances, the `errors' argument is only - checked at the first encoding/decoding error, and the `encoding' - argument is sometimes ignored for empty strings. - - - bpo-37348(70): Optimized decoding short ASCII string with UTF-8 and - ascii codecs. ‘b"foo".decode()’ is about 15% faster. Patch by - Inada Naoki. - - - bpo-24214(71): Improved support of the surrogatepass error handler - in the UTF-8 and UTF-16 incremental decoders. - - - bpo-37330(72): *note open(): 16f, *note io.open(): 74f, *note - codecs.open(): 1085. and *note fileinput.FileInput: 3a8. no longer - accept ‘'U'’ (“universal newline”) in the file mode. This flag was - deprecated since Python 3.3. - - - bpo-35224(73): Reverse evaluation order of key: value in dict - comprehensions as proposed in PEP 572. I.e. in ‘{k: v for ...}’, - ‘k’ will be evaluated before ‘v’. - - - bpo-37316(74): Fix the *note PySys_Audit(): 1029. call in *note - mmap.mmap: 31f. - - - bpo-37300(75): Remove an unnecssary Py_XINCREF in classobject.c. - - - bpo-37269(76): Fix a bug in the peephole optimizer that was not - treating correctly constant conditions with binary operators. - Patch by Pablo Galindo. - - - bpo-20443(77): Python now gets the absolute path of the script - filename specified on the command line (ex: “python3 script.py”): - the __file__ attribute of the __main__ module and sys.path[0] - become an absolute path, rather than a relative path. - - - bpo-37257(78): Python’s small object allocator (‘obmalloc.c’) now - allows (no more than) one empty arena to remain available for - immediate reuse, without returning it to the OS. This prevents - thrashing in simple loops where an arena could be created and - destroyed anew on each iteration. - - - bpo-37231(79): The dispatching of type slots to special methods - (for example calling ‘__mul__’ when doing ‘x * y’) has been made - faster. - - - bpo-36974(80): Implemented separate vectorcall functions for every - calling convention of builtin functions and methods. This improves - performance for calls. - - - bpo-37213(81): Handle correctly negative line offsets in the - peephole optimizer. Patch by Pablo Galindo. - - - bpo-37219(82): Remove erroneous optimization for empty set - differences. - - - bpo-15913(83): Implement *note PyBuffer_SizeFromFormat(): 1086. - function (previously documented but not implemented): call *note - struct.calcsize(): 1087. Patch by Joannah Nanjekye. - - - bpo-36922(84): Slot functions optimize any callable with - ‘Py_TPFLAGS_METHOD_DESCRIPTOR’ instead of only instances of - ‘function’. - - - bpo-36974(85): The slot ‘tp_vectorcall_offset’ is inherited - unconditionally to support ‘super().__call__()’ when the base class - uses vectorcall. - - - bpo-37160(86): *note threading.get_native_id(): 363. now also - supports NetBSD. - - - bpo-37077(87): Add *note threading.get_native_id(): 363. support - for AIX. Patch by M. Felt - - - bpo-36781(88): *note sum(): 319. has been optimized for boolean - values. - - - bpo-34556(89): Add ‘--upgrade-deps’ to venv module. Patch by - Cooper Ry Lees - - - bpo-20523(90): ‘pdb.Pdb’ supports ~/.pdbrc in Windows 7. Patch by + - bpo-20523(9): ‘pdb.Pdb’ supports ~/.pdbrc in Windows 7. Patch by Tim Hopper and Dan Lidral-Porter. - - bpo-35551(91): Updated encodings: - Removed the “tis260” encoding, - which was an alias for the nonexistent “tactis” codec. - Added - “mac_centeuro” as an alias for the mac_latin2 encoding. - - - bpo-19072(92): The *note classmethod: 30c. decorator can now wrap - other descriptors such as property objects. Adapted from a patch - written by Graham Dumpleton. - - - bpo-27575(93): Improve speed of dictview intersection by directly - using set intersection logic. Patch by David Su. - - - bpo-30773(94): Prohibit parallel running of aclose() / asend() / - athrow(). Fix ag_running to reflect the actual running status of - the AG. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38631 + (1) https://bugs.python.org/issue37947 - (2) https://bugs.python.org/issue38639 + (2) https://bugs.python.org/issue37830 - (3) https://bugs.python.org/issue38640 + (3) https://bugs.python.org/issue32912 - (4) https://bugs.python.org/issue38613 + (4) https://bugs.python.org/issue32912 - (5) https://bugs.python.org/issue28029 + (5) https://bugs.python.org/issue37757 - (6) https://bugs.python.org/issue38535 + (6) https://www.python.org/dev/peps/pep-0572 - (7) https://bugs.python.org/issue38525 + (7) https://bugs.python.org/issue36311 - (8) https://bugs.python.org/issue38465 + (8) https://bugs.python.org/issue37433 - (9) https://bugs.python.org/issue38469 - - (10) https://bugs.python.org/issue38437 - - (11) https://bugs.python.org/issue38379 - - (12) https://bugs.python.org/issue38379 - - (13) https://bugs.python.org/issue38392 - - (14) https://bugs.python.org/issue38210 - - (15) https://bugs.python.org/issue38210 - - (16) https://bugs.python.org/issue38402 - - (17) https://bugs.python.org/issue37474 - - (18) https://bugs.python.org/issue38006 - - (19) https://bugs.python.org/issue38317 - - (20) https://www.python.org/dev/peps/pep-0587 - - (21) https://bugs.python.org/issue38310 - - (22) https://bugs.python.org/issue36871 - - (23) https://bugs.python.org/issue11410 - - (24) https://bugs.python.org/issue38219 - - (25) https://bugs.python.org/issue38236 - - (26) https://bugs.python.org/issue38013 - - (27) https://bugs.python.org/issue38124 - - (28) https://bugs.python.org/issue38116 - - (29) https://bugs.python.org/issue38113 - - (30) https://bugs.python.org/issue38076 - - (31) https://bugs.python.org/issue38075 - - (32) https://bugs.python.org/issue38074 - - (33) https://bugs.python.org/issue38073 - - (34) https://bugs.python.org/issue38072 - - (35) https://bugs.python.org/issue38069 - - (36) https://bugs.python.org/issue38071 - - (37) https://bugs.python.org/issue38005 - - (38) https://bugs.python.org/issue36946 - - (39) https://bugs.python.org/issue37994 - - (40) https://bugs.python.org/issue8425 - - (41) https://bugs.python.org/issue37966 - - (42) https://bugs.python.org/issue37947 - - (43) https://bugs.python.org/issue37812 - - (44) https://bugs.python.org/issue37751 - - (45) https://bugs.python.org/issue37830 - - (46) https://bugs.python.org/issue20490 - - (47) https://bugs.python.org/issue37840 - - (48) https://bugs.python.org/issue37802 - - (49) https://bugs.python.org/issue37409 - - (50) https://bugs.python.org/issue32912 - - (51) https://bugs.python.org/issue32912 - - (52) https://bugs.python.org/issue37757 - - (53) https://www.python.org/dev/peps/pep-0572 - - (54) https://bugs.python.org/issue36279 - - (55) https://bugs.python.org/issue36311 - - (56) https://bugs.python.org/issue34880 - - (57) https://bugs.python.org/issue37340 - - (58) https://bugs.python.org/issue37648 - - (59) https://bugs.python.org/issue37444 - - (60) https://bugs.python.org/issue37619 - - (61) https://bugs.python.org/issue37593 - - (62) https://bugs.python.org/issue37543 - - (63) https://bugs.python.org/issue37537 - - (64) https://bugs.python.org/issue37467 - - (65) https://bugs.python.org/issue37433 - - (66) https://bugs.python.org/issue37417 - - (67) https://bugs.python.org/issue37414 - - (68) https://bugs.python.org/issue37392 - - (69) https://bugs.python.org/issue37388 - - (70) https://bugs.python.org/issue37348 - - (71) https://bugs.python.org/issue24214 - - (72) https://bugs.python.org/issue37330 - - (73) https://bugs.python.org/issue35224 - - (74) https://bugs.python.org/issue37316 - - (75) https://bugs.python.org/issue37300 - - (76) https://bugs.python.org/issue37269 - - (77) https://bugs.python.org/issue20443 - - (78) https://bugs.python.org/issue37257 - - (79) https://bugs.python.org/issue37231 - - (80) https://bugs.python.org/issue36974 - - (81) https://bugs.python.org/issue37213 - - (82) https://bugs.python.org/issue37219 - - (83) https://bugs.python.org/issue15913 - - (84) https://bugs.python.org/issue36922 - - (85) https://bugs.python.org/issue36974 - - (86) https://bugs.python.org/issue37160 - - (87) https://bugs.python.org/issue37077 - - (88) https://bugs.python.org/issue36781 - - (89) https://bugs.python.org/issue34556 - - (90) https://bugs.python.org/issue20523 - - (91) https://bugs.python.org/issue35551 - - (92) https://bugs.python.org/issue19072 - - (93) https://bugs.python.org/issue27575 - - (94) https://bugs.python.org/issue30773 + (9) https://bugs.python.org/issue20523  -File: python.info, Node: Library<21>, Next: Documentation<16>, Prev: Core and Builtins<19>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: Library<22>, Next: Documentation<18>, Prev: Core and Builtins<22>, Up: Python 3 8 0 beta 4 -1.19.22.3 Library +1.18.23.3 Library ................. - - bpo-36589(1): The *note curses.update_lines_cols(): 7bb. function - now returns ‘None’ instead of ‘1’ on success. - - - bpo-38807(2): Update *note TypeError: 1fe. messages for *note - os.path.join(): 1089. to include *note os.PathLike: 5e8. objects as - acceptable input types. - - - bpo-38724(3): Add a repr for ‘subprocess.Popen’ objects. Patch by - Andrey Doroschenko. - - - bpo-38786(4): pydoc now recognizes and parses HTTPS URLs. Patch by - python273. - - - bpo-38785(5): Prevent asyncio from crashing if parent ‘__init__’ is - not called from a constructor of object derived from - ‘asyncio.Future’. - - - bpo-38723(6): *note pdb: c9. now uses *note io.open_code(): 1011. - to trigger auditing events. - - - bpo-27805(7): Allow opening pipes and other non-seekable files in - append mode with *note open(): 16f. - - - bpo-38438(8): Simplify the *note argparse: 5. usage message for - ‘nargs="*"’. - - - bpo-38761(9): WeakSet is now registered as a - collections.abc.MutableSet. - - - bpo-38716(10): logging: change RotatingHandler namer and rotator to - class-level attributes. This stops __init__ from setting them to - None in the case where a subclass defines them with eponymous - methods. - - - bpo-38713(11): Add *note os.P_PIDFD: 1cb. constant, which may be - passed to *note os.waitid(): 761. to wait on a Linux process file - descriptor. - - - bpo-38692(12): Add *note asyncio.PidfdChildWatcher: 18e, a - Linux-specific child watcher implementation that polls process file - descriptors. - - - bpo-38692(13): Expose the Linux ‘pidfd_open’ syscall as *note - os.pidfd_open(): 158. - - - bpo-38602(14): Added constants ‘F_OFD_GETLK’, ‘F_OFD_SETLK’ and - ‘F_OFD_SETLKW’ to the *note fcntl: 7c. module. Patch by Dong-hee - Na. - - - bpo-38334(15): Fixed seeking backward on an encrypted - ‘zipfile.ZipExtFile’. - - - bpo-38312(16): Add *note curses.get_escdelay(): 198, *note - curses.set_escdelay(): 199, *note curses.get_tabsize(): 19a, and - *note curses.set_tabsize(): 19b. functions - by Anthony Sottile. - - - bpo-38586(17): Now *note fileConfig(): 4b2. correcty sets the .name - of handlers loaded. - - - bpo-38565(18): Add new cache_parameters() method for - functools.lru_cache() to better support pickling. - - - bpo-34679(19): asynci.ProactorEventLoop.close() now only calls - signal.set_wakeup_fd() in the main thread. - - - bpo-31202(20): The case the result of ‘pathlib.WindowsPath.glob()’ - matches now the case of the pattern for literal parts. - - - bpo-36321(21): Remove misspelled attribute. The 3.8 changelog - noted that this would be removed in 3.9. - - - bpo-38521(22): Fixed erroneous equality comparison in - statistics.NormalDist(). - - - bpo-38493(23): Added *note CLD_KILLED: 1c9. and *note CLD_STOPPED: - 1ca. for ‘si_code’. Patch by Dong-hee Na. - - - bpo-38478(24): Fixed a bug in ‘inspect.signature.bind()’ that was - causing it to fail when handling a keyword argument with same name - as positional-only parameter. Patch by Pablo Galindo. - - - bpo-33604(25): Fixed *note hmac.new: 942. and ‘hmac.HMAC’ to raise - TypeError instead of ValueError when the digestmod parameter, now - required in 3.8, is omitted. Also clarified the hmac module - documentation and docstrings. - - - bpo-38378(26): Parameters `out' and `in' of *note os.sendfile(): - 463. was renamed to `out_fd' and `in_fd'. - - - bpo-38417(27): Added support for setting the umask in the child - process to the subprocess module on POSIX systems. - - - bpo-38449(28): Revert GH-15522, which introduces a regression in - *note mimetypes.guess_type(): 1063. due to improper handling of - filenames as urls. - - - bpo-38431(29): Fix ‘__repr__’ method for ‘dataclasses.InitVar’ to - support typing objects, patch by Samuel Colvin. - - - bpo-38109(30): Add missing *note stat.S_IFDOOR: 9bc, *note - stat.S_IFPORT: 9bd, *note stat.S_IFWHT: 9be, *note stat.S_ISDOOR(): - 108a, *note stat.S_ISPORT(): 108b, and *note stat.S_ISWHT(): 108c. - values to the Python implementation of *note stat: f4. - - - bpo-38422(31): Clarify docstrings of pathlib suffix(es) - - - bpo-38405(32): Nested subclasses of *note typing.NamedTuple: 227. - are now pickleable. - - - bpo-38332(33): Prevent *note KeyError: 3ec. thrown by - ‘_encoded_words.decode()’ when given an encoded-word with invalid - content-type encoding from propagating all the way to - ‘email.message.get()’. - - - bpo-38371(34): Deprecated the ‘split()’ method in - ‘_tkinter.TkappType’ in favour of the ‘splitlist()’ method which - has more consistent and predicable behavior. - - - bpo-38341(35): Add *note smtplib.SMTPNotSupportedError: 108d. to - the *note smtplib: ed. exported names. - - - bpo-38319(36): sendfile() used in socket and shutil modules was - raising OverflowError for files >= 2GiB on 32-bit architectures. - (patch by Giampaolo Rodola) - - - bpo-38242(37): Revert the new asyncio Streams API - - - bpo-13153(38): OS native encoding is now used for converting - between Python strings and Tcl objects. This allows to display, - copy and paste to clipboard emoji and other non-BMP characters. - Converting strings from Tcl to Python and back now never fails - (except MemoryError). - - - bpo-38019(39): Correctly handle pause/resume reading of closed - asyncio unix pipe. - - - bpo-38163(40): Child mocks will now detect their type as either - synchronous or asynchronous, asynchronous child mocks will be - AsyncMocks and synchronous child mocks will be either MagicMock or - Mock (depending on their parent type). - - - bpo-38161(41): Removes _AwaitEvent from AsyncMock. - - - bpo-38216(42): Allow the rare code that wants to send invalid http - requests from the *note http.client: 93. library a way to do so. - The fixes for bpo-30458(43) led to breakage for some projects that - were relying on this ability to test their own behavior in the face - of bad requests. - - - bpo-28286(44): Deprecate opening *note GzipFile: 206. for writing - implicitly. Always specify the `mode' argument for writing. - - - bpo-38108(45): Any synchronous magic methods on an AsyncMock now - return a MagicMock. Any asynchronous magic methods on a MagicMock - now return an AsyncMock. - - - bpo-38265(46): Update the `length' parameter of *note os.pread(): - 4c2. to accept ‘Py_ssize_t’ instead of ‘int’. - - - bpo-38112(47): *note compileall: 20. has a higher default recursion - limit and new command-line arguments for path manipulation, - symlinks handling, and multiple optimization levels. - - - bpo-38248(48): asyncio: Fix inconsistent immediate Task - cancellation - - - bpo-38237(49): The arguments for the builtin pow function are more - descriptive. They can now also be passed in as keywords. - - - bpo-34002(50): Improve efficiency in parts of email package by - changing while-pop to a for loop, using isdisjoint instead of set - intersections. - - - bpo-38191(51): Constructors of *note NamedTuple: 227. and *note - TypedDict: 36a. types now accept arbitrary keyword argument names, - including “cls”, “self”, “typename”, “_typename”, “fields” and - “_fields”. - - - bpo-38155(52): Add ‘__all__’ to *note datetime: 30. Patch by Tahia - Khan. - - - bpo-38185(53): Fixed case-insensitive string comparison in *note - sqlite3.Row: 84f. indexing. - - - bpo-38136(54): Changes AsyncMock call count and await count to be - two different counters. Now await count only counts when a - coroutine has been awaited, not when it has been called, and - vice-versa. Update the documentation around this. - - - bpo-37828(55): Fix default mock name in *note - unittest.mock.Mock.assert_called(): 6a1. exceptions. Patch by - Abraham Toriz Cruz. - - - bpo-38175(56): Fix a memory leak in comparison of *note - sqlite3.Row: 84f. objects. - - - bpo-33936(57): _hashlib no longer calls obsolete OpenSSL - initialization function with OpenSSL 1.1.0+. - - - bpo-34706(58): Preserve subclassing in - inspect.Signature.from_callable. - - - bpo-38153(59): Names of hashing algorithms frome OpenSSL are now - normalized to follow Python’s naming conventions. For example - OpenSSL uses sha3-512 instead of sha3_512 or blake2b512 instead of - blake2b. - - - bpo-38115(60): Fix a bug in dis.findlinestarts() where it would - return invalid bytecode offsets. Document that a code object’s - co_lnotab can contain invalid bytecode offsets. - - - bpo-38148(61): Add slots to *note asyncio: 9. transport classes, - which can reduce memory usage. - - - bpo-38142(62): The _hashlib OpenSSL wrapper extension module is now - PEP-384 compliant. - - - bpo-9216(63): hashlib constructors now support usedforsecurity flag - to signal that a hashing algorithm is not used in a security - context. - - - bpo-36991(64): Fixes a potential incorrect AttributeError exception - escaping ZipFile.extract() in some unsupported input error - situations. - - - bpo-38134(65): Remove obsolete copy of PBKDF2_HMAC_fast. All - supported OpenSSL versions contain a fast implementation. - - - bpo-38132(66): The OpenSSL hashlib wrapper uses a simpler - implementation. Several Macros and pointless caches are gone. The - hash name now comes from OpenSSL’s EVP. The algorithm name stays - the same, except it is now always lower case. - - - bpo-38008(67): Fix parent class check in protocols to correctly - identify the module that provides a builtin protocol, instead of - assuming they all come from the *note collections.abc: 1e. module - - - bpo-34037(68): For *note asyncio: 9, add a new coroutine - ‘loop.shutdown_default_executor()’. The new coroutine provides an - API to schedule an executor shutdown that waits on the threadpool - to finish closing. Also, *note asyncio.run(): 18d. has been - updated to utilize the new coroutine. Patch by Kyle Stanley. - - - bpo-37405(69): Fixed regression bug for socket.getsockname() for - non-CAN_ISOTP AF_CAN address family sockets by returning a 1-tuple - instead of string. - - - bpo-38121(70): Update parameter names on functions in - importlib.metadata matching the changes in the 0.22 release of - importlib_metadata. - - - bpo-38110(71): The os.closewalk() implementation now uses the libc - fdwalk() API on platforms where it is available. - - - bpo-38093(72): Fixes AsyncMock so it doesn’t crash when used with - AsyncContextManagers or AsyncIterators. - - - bpo-37488(73): Add warning to ‘datetime.utctimetuple()’, - ‘datetime.utcnow()’ and ‘datetime.utcfromtimestamp()’ . - - - bpo-35640(74): Allow passing a *note path-like object: 474. as - ‘directory’ argument to the *note - http.server.SimpleHTTPRequestHandler: 49e. class. Patch by Géry - Ogam. - - - bpo-38086(75): Update importlib.metadata with changes from - importlib_metadata 0.21(76). - - - bpo-37251(77): Remove ‘__code__’ check in AsyncMock that - incorrectly evaluated function specs as async objects but failed to - evaluate classes with ‘__await__’ but no ‘__code__’ attribute - defined as async objects. - - - bpo-38037(78): Fix reference counters in the *note signal: ea. - module. - - - bpo-38066(79): Hide internal asyncio.Stream methods: feed_eof(), - feed_data(), set_exception() and set_transport(). - - - bpo-38059(80): inspect.py now uses sys.exit() instead of exit() - - - bpo-38049(81): Added command-line interface for the *note ast: 7. - module. - - - bpo-37953(82): In *note typing: 122, improved the ‘__hash__’ and - ‘__eq__’ methods for ‘ForwardReferences’. - - - bpo-38026(83): Fixed *note inspect.getattr_static(): c9b. used - ‘isinstance’ while it should avoid dynamic lookup. - - - bpo-35923(84): Update *note importlib.machinery.BuiltinImporter: - 651. to use ‘loader._ORIGIN’ instead of a hardcoded value. Patch - by Dong-hee Na. - - - bpo-38010(85): In ‘importlib.metadata’ sync with - ‘importlib_metadata’ 0.20, clarifying behavior of ‘files()’ and - fixing issue where only one requirement was returned for - ‘requires()’ on ‘dist-info’ packages. - - - bpo-38006(86): weakref.WeakValueDictionary defines a local remove() - function used as callback for weak references. This function was - created with a closure. Modify the implementation to avoid the - closure. - - - bpo-37995(87): Added the `indent' option to *note ast.dump(): 185. - which allows it to produce a multiline indented output. - - - bpo-34410(88): Fixed a crash in the ‘tee()’ iterator when re-enter - it. RuntimeError is now raised in this case. - - - bpo-37140(89): Fix a ctypes regression of Python 3.8. When a - ctypes.Structure is passed by copy to a function, ctypes internals - created a temporary object which had the side effect of calling the - structure finalizer (__del__) twice. The Python semantics requires - a finalizer to be called exactly once. Fix ctypes internals to no - longer call the finalizer twice. - - - bpo-37587(90): ‘_json.scanstring’ is now up to 3x faster when there - are many backslash escaped characters in the JSON string. - - - bpo-37834(91): Prevent shutil.rmtree exception when built on + - bpo-37834(1): Prevent shutil.rmtree exception when built on non-Windows system without fd system call support, like older versions of macOS. - - bpo-10978(92): Semaphores and BoundedSemaphores can now release - more than one waiting thread at a time. - - - bpo-37972(93): Subscripts to the *note unittest.mock.call: 108e. - objects now receive the same chaining mechanism as any other custom - attributes, so that the following usage no longer raises a *note - TypeError: 1fe.: - - call().foo().__getitem__(‘bar’) - - Patch by blhsing - - - bpo-37965(94): Fix C compiler warning caused by + - bpo-37965(2): Fix C compiler warning caused by distutils.ccompiler.CCompiler.has_function. - - bpo-37964(95): Add ‘F_GETPATH’ command to *note fcntl: 7c. - - - bpo-37960(96): ‘repr()’ of buffered and text streams now silences + - bpo-37960(3): ‘repr()’ of buffered and text streams now silences only expected exceptions when get the value of “name” and “mode” attributes. - - bpo-37961(97): Add a ‘total_nframe’ field to the traces collected - by the tracemalloc module. This field indicates the original - number of frames before it was truncated. - - - bpo-37951(98): Most features of the subprocess module now work - again in subinterpreters. Only `preexec_fn' is restricted in + - bpo-37951(4): Most features of the subprocess module now work again + in subinterpreters. Only `preexec_fn' is restricted in subinterpreters. - - bpo-36205(99): Fix the rusage implementation of time.process_time() + - bpo-36205(5): Fix the rusage implementation of time.process_time() to correctly report the sum of the system and user CPU time. - - bpo-37950(100): Fix *note ast.dump(): 185. when call with + - bpo-37950(6): Fix *note ast.dump(): f6a. when call with incompletely initialized node. - - bpo-34679(101): Restores instantiation of Windows IOCP event loops + - bpo-34679(7): Restores instantiation of Windows IOCP event loops from the non-main thread. - - bpo-36917(102): Add default implementation of the + - bpo-36917(8): Add default implementation of the ‘ast.NodeVisitor.visit_Constant()’ method which emits a deprecation warning and calls corresponding methody ‘visit_Num()’, ‘visit_Str()’, etc. - - bpo-37798(103): Update test_statistics.py to verify that the + - bpo-37798(9): Update test_statistics.py to verify that the statistics module works well for both C and Python implementations. Patch by Dong-hee Na - - bpo-26589(104): Added a new status code to the http module: 451 + - bpo-26589(10): Added a new status code to the http module: 451 UNAVAILABLE_FOR_LEGAL_REASONS - - bpo-37915(105): Fix a segmentation fault that appeared when + - bpo-37915(11): Fix a segmentation fault that appeared when comparing instances of ‘datetime.timezone’ and ‘datetime.tzinfo’ objects. Patch by Pablo Galindo. - - bpo-32554(106): Deprecate having random.seed() call hash on - arbitrary types. - - - bpo-9938(107): Add optional keyword argument ‘exit_on_error’ for - ‘ArgumentParser’. - - - bpo-37851(108): The *note faulthandler: 7b. module no longer - allocates its alternative stack at Python startup. Now the stack - is only allocated at the first faulthandler usage. - - - bpo-32793(109): Fix a duplicated debug message when *note - smtplib.SMTP.connect(): 108f. is called. - - - bpo-37885(110): venv: Don’t generate unset variable warning on - deactivate. - - - bpo-37868(111): Fix dataclasses.is_dataclass when given an instance + - bpo-37868(12): Fix dataclasses.is_dataclass when given an instance that never raises AttributeError in __getattr__. That is, an object that returns something for __dataclass_fields__ even if it’s not a dataclass. - - bpo-37811(112): Fix ‘socket’ module’s ‘socket.connect(address)’ + - bpo-37811(13): Fix ‘socket’ module’s ‘socket.connect(address)’ function being unable to establish connection in case of interrupted system call. The problem was observed on all OSes which ‘poll(2)’ system call can take only non-negative integers and -1 as a timeout value. - - bpo-37863(113): Optimizations for Fraction.__hash__ suggested by - Tim Peters. - - - bpo-21131(114): Fix ‘faulthandler.register(chain=True)’ stack. + - bpo-21131(14): Fix ‘faulthandler.register(chain=True)’ stack. faulthandler now allocates a dedicated stack of ‘SIGSTKSZ*2’ bytes, instead of just ‘SIGSTKSZ’ bytes. Calling the previous signal handler in faulthandler signal handler uses more than ‘SIGSTKSZ’ bytes of stack memory on some platforms. - - bpo-37798(115): Add C fastpath for statistics.NormalDist.inv_cdf() + - bpo-37798(15): Add C fastpath for statistics.NormalDist.inv_cdf() Patch by Dong-hee Na - - bpo-37804(116): Remove the deprecated method - ‘threading.Thread.isAlive()’. Patch by Dong-hee Na. - - - bpo-37819(117): Add Fraction.as_integer_ratio() to match the + - bpo-37819(16): Add Fraction.as_integer_ratio() to match the corresponding methods in bool, int, float, and decimal. - - bpo-14465(118): Add an xml.etree.ElementTree.indent() function for - pretty-printing XML trees. Contributed by Stefan Behnel. - - - bpo-37810(119): Fix *note difflib: 36. ‘?’ hint in diff output when + - bpo-37810(17): Fix *note difflib: 37. ‘?’ hint in diff output when dealing with tabs. Patch by Anthony Sottile. - - bpo-37772(120): In ‘zipfile.Path’, when adding implicit dirs, - ensure that ancestral directories are added and that duplicates are + - bpo-37772(18): In ‘zipfile.Path’, when adding implicit dirs, ensure + that ancestral directories are added and that duplicates are excluded. - - bpo-18578(121): Renamed and documented ‘test.bytecode_helper’ as - *note test.support.bytecode_helper: 107. Patch by Joannah - Nanjekye. - - - bpo-37785(122): Fix xgettext warnings in *note argparse: 5. - - - bpo-34488(123): ‘writelines()’ method of *note io.BytesIO: 88c. is - now slightly faster when many small lines are passed. Patch by - Sergey Fedoseev. - - - bpo-37449(124): *note ensurepip: 78. now uses *note - importlib.resources.read_binary(): 1090. to read data instead of - *note pkgutil.get_data(): 1091. Patch by Joannah Nanjekye. - - - bpo-28292(125): Mark calendar.py helper functions as being private. + - bpo-28292(19): Mark calendar.py helper functions as being private. The follows PEP 8 guidance to maintain the style conventions in the module and it addresses a known case of user confusion. - - bpo-18049(126): Add definition of THREAD_STACK_SIZE for AIX in + - bpo-18049(20): Add definition of THREAD_STACK_SIZE for AIX in Python/thread_pthread.h The default thread stacksize caused crashes with the default recursion limit Patch by M Felt - - bpo-37742(127): The logging.getLogger() API now returns the root - logger when passed the name ‘root’, whereas previously it returned - a non-root logger named ‘root’. This could affect cases where user - code explicitly wants a non-root logger named ‘root’, or - instantiates a logger using logging.getLogger(__name__) in some - top-level module called ‘root.py’. - - - bpo-37738(128): Fix the implementation of curses ‘addch(str, + - bpo-37738(21): Fix the implementation of curses ‘addch(str, color_pair)’: pass the color pair to ‘setcchar()’, instead of always passing 0 as the color pair. - - bpo-37723(129): Fix performance regression on regular expression + - bpo-37723(22): Fix performance regression on regular expression parsing with huge character sets. Patch by Yann Vaginay. - - bpo-35943(130): The function *note PyImport_GetModule(): 527. now - ensures any module it returns is fully initialized. Patch by - Joannah Nanjekye. - - - bpo-32178(131): Fix IndexError in *note email: 67. package when + - bpo-32178(23): Fix IndexError in *note email: 69. package when trying to parse invalid address fields starting with ‘:’. - - bpo-37268(132): The *note parser: c7. module is deprecated and will - be removed in future versions of Python. + - bpo-37685(24): Fixed comparisons of *note datetime.timedelta: 182. + and *note datetime.timezone: 9e2. - - bpo-11953(133): Completing WSA* error codes in *note socket: ef. - - - bpo-37685(134): Fixed comparisons of *note datetime.timedelta: 2cd. - and *note datetime.timezone: ae2. - - - bpo-37697(135): Syncronize ‘importlib.metadata’ with - importlib_metadata 0.19(136), improving handling of EGG-INFO files - and fixing a crash when entry point names contained colons. - - - bpo-37695(137): Correct *note curses.unget_wch(): ac1. error + - bpo-37695(25): Correct *note curses.unget_wch(): 9c1. error message. Patch by Anthony Sottile. - - bpo-37689(138): Add ‘is_relative_to()’ in ‘PurePath’ to determine - whether or not one path is relative to another. - - - bpo-29553(139): Fixed *note argparse.ArgumentParser.format_usage(): - 1092. for mutually exclusive groups. Patch by Andrew Nester. - - - bpo-37691(140): Let math.dist() accept coordinates as sequences (or - iterables) rather than just tuples. - - - bpo-37685(141): Fixed ‘__eq__’, ‘__lt__’ etc implementations in - some classes. They now return *note NotImplemented: 202. for - unsupported type of the other operand. This allows the other - operand to play role (for example the equality comparison with - *note ANY: 1093. will return ‘True’). - - - bpo-37354(142): Make Activate.ps1 Powershell script static to allow + - bpo-37354(26): Make Activate.ps1 Powershell script static to allow for signing it. - - bpo-37664(143): Update wheels bundled with ensurepip (pip 19.2.3 - and setuptools 41.2.0) + - bpo-37664(27): Update wheels bundled with ensurepip (pip 19.2.3 and + setuptools 41.2.0) - - bpo-37663(144): Bring consistency to venv shell activation scripts - by always using __VENV_PROMPT__. - - - bpo-37642(145): Allowed the pure Python implementation of *note - datetime.timezone: ae2. to represent sub-minute offsets close to + - bpo-37642(28): Allowed the pure Python implementation of *note + datetime.timezone: 9e2. to represent sub-minute offsets close to minimum and maximum boundaries, specifically in the ranges (23:59, 24:00) and (-23:59, 24:00). Patch by Ngalim Siregar - - bpo-36161(146): In *note posix: d1, use ‘ttyname_r’ instead of - ‘ttyname’ for thread safety. + - bpo-16970(29): Adding a value error when an invalid value in passed + to nargs Patch by Robert Leenders - - bpo-36324(147): Make internal attributes for - statistics.NormalDist() private. - - - bpo-37555(148): Fix ‘NonCallableMock._call_matcher’ returning tuple - instead of ‘_Call’ object when ‘self._spec_signature’ exists. - Patch by Elizabeth Uselton - - - bpo-29446(149): Make ‘from tkinter import *’ import only the - expected objects. - - - bpo-16970(150): Adding a value error when an invalid value in - passed to nargs Patch by Robert Leenders - - - bpo-34443(151): Exceptions from *note enum: 79. now use the - ‘__qualname’ of the enum class in the exception message instead of - the ‘__name__’. - - - bpo-37491(152): Fix ‘IndexError’ when parsing email headers with - unexpectedly ending bare-quoted string value. Patch by Abhilash - Raj. - - - bpo-37587(153): Make json.loads faster for long strings. (Patch by + - bpo-37587(30): Make json.loads faster for long strings. (Patch by Marco Paolini) - - bpo-18378(154): Recognize “UTF-8” as a valid value for LC_CTYPE in + - bpo-18378(31): Recognize “UTF-8” as a valid value for LC_CTYPE in locale._parse_localename. - - bpo-37579(155): Return *note NotImplemented: 202. in Python - implementation of ‘__eq__’ for *note timedelta: 2cd. and *note - time: 5ef. when the other object being compared is not of the same - type to match C implementation. Patch by Karthikeyan Singaravelan. - - - bpo-21478(156): Record calls to parent when autospecced object is - attached to a mock using ‘unittest.mock.attach_mock()’. Patch by - Karthikeyan Singaravelan. - - - bpo-37531(157): “python3 -m test -jN –timeout=TIMEOUT” now kills a + - bpo-37531(32): “python3 -m test -jN –timeout=TIMEOUT” now kills a worker process if it runs longer than `TIMEOUT' seconds. - - bpo-37482(158): Fix serialization of display name in originator or + - bpo-37482(33): Fix serialization of display name in originator or destination address fields with both encoded words and special chars. - - bpo-36993(159): Improve error reporting for corrupt zip files with - bad zip64 extra data. Patch by Daniel Hillier. + - bpo-37372(34): Fix error unpickling datetime.time objects from + Python 2 with seconds>=24. Patch by Justin Blanchard. - - bpo-37502(160): pickle.loads() no longer raises TypeError when the + - bpo-37085(35): Add the optional Linux SocketCAN Broadcast Manager + constants, used as flags to configure the BCM behaviour, in the + socket module. Patch by Karl Ding. + + - bpo-36871(36): Ensure method signature is used instead of + constructor signature of a class while asserting mock object + against method calls. Patch by Karthikeyan Singaravelan. + + - bpo-36582(37): Fix ‘UserString.encode()’ to correctly return + ‘bytes’ rather than a ‘UserString’ instance. + + - bpo-34775(38): Division handling of PurePath now returns + NotImplemented instead of raising a TypeError when passed something + other than an instance of str or PurePath. Patch by Roger Aiudi. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37834 + + (2) https://bugs.python.org/issue37965 + + (3) https://bugs.python.org/issue37960 + + (4) https://bugs.python.org/issue37951 + + (5) https://bugs.python.org/issue36205 + + (6) https://bugs.python.org/issue37950 + + (7) https://bugs.python.org/issue34679 + + (8) https://bugs.python.org/issue36917 + + (9) https://bugs.python.org/issue37798 + + (10) https://bugs.python.org/issue26589 + + (11) https://bugs.python.org/issue37915 + + (12) https://bugs.python.org/issue37868 + + (13) https://bugs.python.org/issue37811 + + (14) https://bugs.python.org/issue21131 + + (15) https://bugs.python.org/issue37798 + + (16) https://bugs.python.org/issue37819 + + (17) https://bugs.python.org/issue37810 + + (18) https://bugs.python.org/issue37772 + + (19) https://bugs.python.org/issue28292 + + (20) https://bugs.python.org/issue18049 + + (21) https://bugs.python.org/issue37738 + + (22) https://bugs.python.org/issue37723 + + (23) https://bugs.python.org/issue32178 + + (24) https://bugs.python.org/issue37685 + + (25) https://bugs.python.org/issue37695 + + (26) https://bugs.python.org/issue37354 + + (27) https://bugs.python.org/issue37664 + + (28) https://bugs.python.org/issue37642 + + (29) https://bugs.python.org/issue16970 + + (30) https://bugs.python.org/issue37587 + + (31) https://bugs.python.org/issue18378 + + (32) https://bugs.python.org/issue37531 + + (33) https://bugs.python.org/issue37482 + + (34) https://bugs.python.org/issue37372 + + (35) https://bugs.python.org/issue37085 + + (36) https://bugs.python.org/issue36871 + + (37) https://bugs.python.org/issue36582 + + (38) https://bugs.python.org/issue34775 + + +File: python.info, Node: Documentation<18>, Next: Tests<13>, Prev: Library<22>, Up: Python 3 8 0 beta 4 + +1.18.23.4 Documentation +....................... + + - bpo-37979(1): Added a link to dateutil.parser.isoparse in the + datetime.fromisoformat documentation. Patch by Paul Ganssle + + - bpo-37759(2): Beginning edits to Whatsnew 3.8 + + - bpo-37726(3): Stop recommending getopt in the tutorial for command + line argument parsing and promote argparse. + + - bpo-37256(4): Fix wording of arguments for ‘Request’ in *note + urllib.request: 121. + + - bpo-37004(5): In the documentation for difflib, a note was added + explicitly warning that the results of SequenceMatcher’s ratio + method may depend on the order of the input strings. + + - bpo-36487(6): Make C-API docs clear about what the “main” + interpreter is. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37979 + + (2) https://bugs.python.org/issue37759 + + (3) https://bugs.python.org/issue37726 + + (4) https://bugs.python.org/issue37256 + + (5) https://bugs.python.org/issue37004 + + (6) https://bugs.python.org/issue36487 + + +File: python.info, Node: Tests<13>, Next: Build<11>, Prev: Documentation<18>, Up: Python 3 8 0 beta 4 + +1.18.23.5 Tests +............... + + - bpo-37805(1): Add tests for json.dump(…, skipkeys=True). Patch by + Dong-hee Na. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37805 + + +File: python.info, Node: Build<11>, Next: Windows<15>, Prev: Tests<13>, Up: Python 3 8 0 beta 4 + +1.18.23.6 Build +............... + + - bpo-37707(1): Mark some individual tests to skip when –pgo is used. + The tests marked increase the PGO task time significantly and + likely don’t help improve optimization of the final executable. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37707 + + +File: python.info, Node: Windows<15>, Next: macOS<12>, Prev: Build<11>, Up: Python 3 8 0 beta 4 + +1.18.23.7 Windows +................. + + - bpo-37549(1): *note os.dup(): f6f. no longer fails for standard + streams on Windows 7. + + - bpo-1311(2): The ‘nul’ file on Windows now returns True from *note + exists(): 1e2. and a valid result from *note os.stat(): 1dd. with + ‘S_IFCHR’ set. + + - bpo-9949(3): Enable support for following symlinks in + ‘os.realpath()’. + + - bpo-37834(4): Treat all name surrogate reparse points on Windows in + *note os.lstat(): 1de. and other reparse points as regular files in + *note os.stat(): 1dd. + + - bpo-36266(5): Add the module name in the formatted error message + when DLL load fail happens during module import in + ‘_PyImport_FindSharedFuncptrWindows()’. Patch by Srinivas + Nyayapati. + + - bpo-25172(6): Trying to import the *note crypt: 29. module on + Windows will result in an *note ImportError: 325. with a message + explaining that the module isn’t supported on Windows. On other + platforms, if the underlying ‘_crypt’ module is not available, the + ImportError will include a message explaining the problem. + + - bpo-37778(7): Fixes the icons used for file associations to the + Microsoft Store package. + + - bpo-37734(8): Fix use of registry values to launch Python from + Microsoft Store app. + + - bpo-28269(9): Replace use of ‘strcasecmp()’ for the system function + ‘_stricmp()’. Patch by Minmin Gong. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37549 + + (2) https://bugs.python.org/issue1311 + + (3) https://bugs.python.org/issue9949 + + (4) https://bugs.python.org/issue37834 + + (5) https://bugs.python.org/issue36266 + + (6) https://bugs.python.org/issue25172 + + (7) https://bugs.python.org/issue37778 + + (8) https://bugs.python.org/issue37734 + + (9) https://bugs.python.org/issue28269 + + +File: python.info, Node: macOS<12>, Next: IDLE<20>, Prev: Windows<15>, Up: Python 3 8 0 beta 4 + +1.18.23.8 macOS +............... + + - bpo-18049(1): Increase the default stack size of threads from 5MB + to 16MB on macOS, to match the stack size of the main thread. This + avoids crashes on deep recursion in threads. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue18049 + + +File: python.info, Node: IDLE<20>, Next: Tools/Demos<7>, Prev: macOS<12>, Up: Python 3 8 0 beta 4 + +1.18.23.9 IDLE +.............. + + - bpo-37824(1): Properly handle user input warnings in IDLE shell. + Cease turning SyntaxWarnings into SyntaxErrors. + + - bpo-37929(2): IDLE Settings dialog now closes properly when there + is no shell window. + + - bpo-37849(3): Fixed completions list appearing too high or low when + shown above the current line. + + - bpo-36419(4): Refactor IDLE autocomplete and improve testing. + + - bpo-37748(5): Reorder the Run menu. Put the most common choice, + Run Module, at the top. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37824 + + (2) https://bugs.python.org/issue37929 + + (3) https://bugs.python.org/issue37849 + + (4) https://bugs.python.org/issue36419 + + (5) https://bugs.python.org/issue37748 + + +File: python.info, Node: Tools/Demos<7>, Next: C API<10>, Prev: IDLE<20>, Up: Python 3 8 0 beta 4 + +1.18.23.10 Tools/Demos +...................... + + - bpo-37942(1): Improve ArgumentClinic converter for floats. + + - bpo-37034(2): Argument Clinic now uses the argument name on errors + with keyword-only argument instead of their position. Patch + contributed by Rémi Lapeyre. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37942 + + (2) https://bugs.python.org/issue37034 + + +File: python.info, Node: C API<10>, Prev: Tools/Demos<7>, Up: Python 3 8 0 beta 4 + +1.18.23.11 C API +................ + + - bpo-36763(1): Options added by ‘PySys_AddXOption()’ are now handled + the same way than ‘PyConfig.xoptions’ and command line ‘-X’ + options. + + - bpo-37926(2): Fix a crash in ‘PySys_SetArgvEx(0, NULL, 0)’. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue36763 + + (2) https://bugs.python.org/issue37926 + + +File: python.info, Node: Python 3 8 0 beta 3, Next: Python 3 8 0 beta 2, Prev: Python 3 8 0 beta 4, Up: Changelog + +1.18.24 Python 3.8.0 beta 3 +--------------------------- + +`Release date: 2019-07-29' + +* Menu: + +* Security: Security<16>. +* Core and Builtins: Core and Builtins<23>. +* Library: Library<23>. +* Documentation: Documentation<19>. +* Tests: Tests<14>. +* Build: Build<12>. +* Windows: Windows<16>. +* IDLE: IDLE<21>. +* Tools/Demos: Tools/Demos<8>. + + +File: python.info, Node: Security<16>, Next: Core and Builtins<23>, Up: Python 3 8 0 beta 3 + +1.18.24.1 Security +.................. + + - bpo-37461(1): Fix an infinite loop when parsing specially crafted + email headers. Patch by Abhilash Raj. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37461 + + +File: python.info, Node: Core and Builtins<23>, Next: Library<23>, Prev: Security<16>, Up: Python 3 8 0 beta 3 + +1.18.24.2 Core and Builtins +........................... + + - bpo-37593(1): Swap the positions of the `posonlyargs' and `args' + parameters in the constructor of ‘ast.parameters’ nodes. + + - bpo-36974(2): Implemented separate vectorcall functions for every + calling convention of builtin functions and methods. This improves + performance for calls. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37593 + + (2) https://bugs.python.org/issue36974 + + +File: python.info, Node: Library<23>, Next: Documentation<19>, Prev: Core and Builtins<23>, Up: Python 3 8 0 beta 3 + +1.18.24.3 Library +................. + + - bpo-37697(1): Syncronize ‘importlib.metadata’ with + importlib_metadata 0.19(2), improving handling of EGG-INFO files + and fixing a crash when entry point names contained colons. + + - bpo-37691(3): Let math.dist() accept coordinates as sequences (or + iterables) rather than just tuples. + + - bpo-37664(4): Update wheels bundled with ensurepip (pip 19.2.1 and + setuptools 41.0.1) + + - bpo-36324(5): Make internal attributes for statistics.NormalDist() + private. + + - bpo-37491(6): Fix ‘IndexError’ when parsing email headers with + unexpectedly ending bare-quoted string value. Patch by Abhilash + Raj. + + - bpo-37579(7): Return *note NotImplemented: 831. in Python + implementation of ‘__eq__’ for *note timedelta: 182. and *note + time: 4e4. when the other object being compared is not of the same + type to match C implementation. Patch by Karthikeyan Singaravelan. + + - bpo-21478(8): Record calls to parent when autospecced object is + attached to a mock using ‘unittest.mock.attach_mock()’. Patch by + Karthikeyan Singaravelan. + + - bpo-37502(9): pickle.loads() no longer raises TypeError when the buffers argument is set to None - - bpo-37520(161): Correct behavior for zipfile.Path.parent when the + - bpo-37520(10): Correct behavior for zipfile.Path.parent when the path object identifies a subdirectory. - - bpo-18374(162): Fix the ‘.col_offset’ attribute of nested *note - ast.BinOp: 1094. instances which had a too large value in some + - bpo-18374(11): Fix the ‘.col_offset’ attribute of nested + ‘ast.BinOp’ instances which had a too large value in some situations. - - bpo-37424(163): Fixes a possible hang when using a timeout on *note - subprocess.run(): 4f5. while capturing output. If the child - process spawned its own children or otherwise connected its stdout - or stderr handles with another process, we could hang after the - timeout was reached and our child was killed when attempting to - read final output from the pipes. + - bpo-37421(12): Fix ‘multiprocessing.util.get_temp_dir()’ finalizer: + clear also the ‘tempdir’ configuration of the current process, so + next call to ‘get_temp_dir()’ will create a new temporary + directory, rather than reusing the removed temporary directory. - - bpo-37421(164): Fix ‘multiprocessing.util.get_temp_dir()’ - finalizer: clear also the ‘tempdir’ configuration of the current - process, so next call to ‘get_temp_dir()’ will create a new - temporary directory, rather than reusing the removed temporary - directory. - - - bpo-37481(165): The distutils ‘bdist_wininst’ command is deprecated + - bpo-37481(13): The distutils ‘bdist_wininst’ command is deprecated in Python 3.8, use ‘bdist_wheel’ (wheel packages) instead. - - bpo-37479(166): When ‘Enum.__str__’ is overridden in a derived - class, the override will be used by ‘Enum.__format__’ regardless of - whether mixin classes are present. - - - bpo-37440(167): http.client now enables TLS 1.3 post-handshake - authentication for default context or if a cert_file is passed to - HTTPSConnection. - - - bpo-37437(168): Update vendorized expat version to 2.2.7. - - - bpo-37428(169): SSLContext.post_handshake_auth = True no longer - sets SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. - Although the option is documented as ignored for clients, OpenSSL - implicitly enables cert chain validation when the flag is set. - - - bpo-37420(170): *note os.sched_setaffinity(): b32. now correctly - handles errors that arise during iteration over its ‘mask’ - argument. Patch by Brandt Bucher. - - - bpo-37412(171): The *note os.getcwdb(): 3dd. function now uses the - UTF-8 encoding on Windows, rather than the ANSI code page: see PEP - 529(172) for the rationale. The function is no longer deprecated - on Windows. - - - bpo-37406(173): The sqlite3 module now raises TypeError, rather - than ValueError, if operation argument type is not str: execute(), - executemany() and calling a connection. - - - bpo-29412(174): Fix IndexError in parsing a header value ending - unexpectedly. Patch by Abhilash Raj. - - - bpo-36546(175): The `dist' argument for statistics.quantiles() is - now positional only. The current name doesn’t reflect that the - argument can be either a dataset or a distribution. Marking the - parameter as positional avoids confusion and makes it possible to - change the name later. - - - bpo-37394(176): Fix a bug that was causing the *note queue: da. - module to fail if the accelerator module was not available. Patch - by Pablo Galindo. - - - bpo-37376(177): *note pprint: d2. now has support for *note - types.SimpleNamespace: 1d8. Patch by Carl Bordum Hansen. - - - bpo-26967(178): An *note ArgumentParser: 78a. with + - bpo-26967(14): An *note ArgumentParser: 67e. with ‘allow_abbrev=False’ no longer disables grouping of short flags, such as ‘-vv’, but only disables abbreviation of long flags as documented. Patch by Zac Hatfield-Dodds. - - bpo-37212(179): *note unittest.mock.call(): 108e. now preserves the - order of keyword arguments in repr output. Patch by Karthikeyan - Singaravelan. - - - bpo-37372(180): Fix error unpickling datetime.time objects from - Python 2 with seconds>=24. Patch by Justin Blanchard. - - - bpo-37345(181): Add formal support for UDPLITE sockets. Support - was present before, but it is now easier to detect support with - ‘hasattr(socket, 'IPPROTO_UDPLITE')’ and there are constants - defined for each of the values needed: ‘socket.IPPROTO_UDPLITE’, - ‘UDPLITE_SEND_CSCOV’, and ‘UDPLITE_RECV_CSCOV’. Patch by Gabe - Appleton. - - - bpo-37358(182): Optimized ‘functools.partial’ by using vectorcall. - - - bpo-37347(183): *note sqlite3.Connection.create_aggregate(): 1095, - *note sqlite3.Connection.create_function(): 1096, *note - sqlite3.Connection.set_authorizer(): 1097, *note - sqlite3.Connection.set_progress_handler(): 1098. *note - sqlite3.Connection.set_trace_callback(): b67. methods lead to + - bpo-37347(15): *note sqlite3.Connection.create_aggregate(): f78, + *note sqlite3.Connection.create_function(): f79, *note + sqlite3.Connection.set_authorizer(): f7a, *note + sqlite3.Connection.set_progress_handler(): f7b. *note + sqlite3.Connection.set_trace_callback(): a6e. methods lead to segfaults if some of these methods are called twice with an equal object but not the same. Now callbacks are stored more carefully. Patch by Aleksandr Balezin. - - bpo-37163(184): The `obj' argument of *note dataclasses.replace(): - f6b. is positional-only now. - - - bpo-37085(185): Add the optional Linux SocketCAN Broadcast Manager - constants, used as flags to configure the BCM behaviour, in the - socket module. Patch by Karl Ding. - - - bpo-37328(186): ‘HTMLParser.unescape’ is removed. It was - undocumented and deprecated since Python 3.4. - - - bpo-37305(187): Add .webmanifest -> application/manifest+json to - list of recognized file types and content type headers - - - bpo-37320(188): ‘aifc.openfp()’ alias to ‘aifc.open()’, - ‘sunau.openfp()’ alias to ‘sunau.open()’, and ‘wave.openfp()’ alias - to ‘wave.open()’ have been removed. They were deprecated since - Python 3.7. - - - bpo-37315(189): Deprecated accepting floats with integral value - (like ‘5.0’) in *note math.factorial(): 1fc. - - - bpo-37312(190): ‘_dummy_thread’ and ‘dummy_threading’ modules have - been removed. These modules were deprecated since Python 3.7 which - requires threading support. - - - bpo-33972(191): Email with single part but content-type set to - ‘multipart/*’ doesn’t raise AttributeError anymore. - - - bpo-37280(192): Use threadpool for reading from file for sendfile - fallback mode. - - - bpo-37279(193): Fix asyncio sendfile support when sendfile sends - extra data in fallback mode. - - - bpo-19865(194): *note ctypes.create_unicode_buffer(): 1099. now - also supports non-BMP characters on platforms with 16-bit ‘wchar_t’ - (for example, Windows and AIX). - - - bpo-37266(195): In a subinterpreter, spawning a daemon thread now - raises an exception. Daemon threads were never supported in - subinterpreters. Previously, the subinterpreter finalization - crashed with a Pyton fatal error if a daemon thread was still - running. - - - bpo-37210(196): Allow pure Python implementation of *note pickle: - ca. to work even when the C ‘_pickle’ module is unavailable. - - - bpo-21872(197): Fix *note lzma: ad.: module decompresses data - incompletely. When decompressing a FORMAT_ALONE format file, and - it doesn’t have the end marker, sometimes the last one to dozens - bytes can’t be output. Patch by Ma Lin. - - - bpo-35922(198): Fix ‘RobotFileParser.crawl_delay()’ and - ‘RobotFileParser.request_rate()’ to return ‘None’ rather than raise - *note AttributeError: 4a4. when no relevant rule is defined in the - robots.txt file. Patch by Rémi Lapeyre. - - - bpo-35766(199): Change the format of feature_version to be a - (major, minor) tuple. - - - bpo-36607(200): Eliminate *note RuntimeError: 3df. raised by *note - asyncio.all_tasks(): 229. if internal tasks weak set is changed by - another thread during iteration. - - - bpo-18748(201): ‘_pyio.IOBase’ destructor now does nothing if - getting the ‘closed’ attribute fails to better mimick ‘_io.IOBase’ - finalizer. - - - bpo-36402(202): Fix a race condition at Python shutdown when - waiting for threads. Wait until the Python thread state of all - non-daemon threads get deleted (join all non-daemon threads), - rather than just wait until non-daemon Python threads complete. - - - bpo-37206(203): Default values which cannot be represented as - Python objects no longer improperly represented as ‘None’ in - function signatures. - - - bpo-37111(204): Added ‘encoding’ and ‘errors’ keyword parameters to - ‘logging.basicConfig’. - - - bpo-12144(205): Ensure cookies with ‘expires’ attribute are handled - in ‘CookieJar.make_cookies()’. - - - bpo-34886(206): Fix an unintended ValueError from *note - subprocess.run(): 4f5. when checking for conflicting *note input: - d35. and ‘stdin’ or ‘capture_output’ and ‘stdout’ or ‘stderr’ args - when they were explicitly provided but with *note None: 203. values - within a passed in ‘**kwargs’ dict rather than as passed directly - by name. Patch contributed by Rémi Lapeyre. - - - bpo-37173(207): The exception message for ‘inspect.getfile()’ now - correctly reports the passed class rather than the builtins module. - - - bpo-37178(208): Give math.perm() a one argument form that means the - same as math.factorial(). - - - bpo-37178(209): For math.perm(n, k), let k default to n, giving the - same result as factorial. - - - bpo-37165(210): Converted _collections._count_elements to use the - Argument Clinic. - - - bpo-34767(211): Do not always create a *note collections.deque: - 62d. in *note asyncio.Lock: 3b1. - - - bpo-37158(212): Speed-up statistics.fmean() by switching from a - function to a generator. - - - bpo-34282(213): Remove ‘Enum._convert’ method, deprecated in 3.8. - - - bpo-37150(214): ‘argparse._ActionsContainer.add_argument’ now - throws error, if someone accidentally pass FileType class object - instead of instance of FileType as *note type: 701. argument - - - bpo-28724(215): The socket module now has the *note - socket.send_fds(): 1e4. and ‘socket.recv.fds()’ methods. - Contributed by Joannah Nanjekye, Shinya Okano and Victor Stinner. - - - bpo-35621(216): Support running asyncio subprocesses when execution - event loop in a thread on UNIX. - - - bpo-36520(217): Lengthy email headers with UTF-8 characters are now - properly encoded when they are folded. Patch by Jeffrey Kintscher. - - - bpo-30835(218): Fixed a bug in email parsing where a message with - invalid bytes in content-transfer-encoding of a multipart message - can cause an AttributeError. Patch by Andrew Donnellan. - - - bpo-31163(219): pathlib.Path instance’s rename and replace methods - now return the new Path instance. - - - bpo-25068(220): *note urllib.request.ProxyHandler: 109a. now - lowercases the keys of the passed dictionary. - - - bpo-26185(221): Fix *note repr(): 8bb. on empty ‘ZipInfo’ object. - Patch by Mickaël Schoentgen. - - - bpo-21315(222): Email headers containing RFC2047 encoded words are - parsed despite the missing whitespace, and a defect registered. - Also missing trailing whitespace after encoded words is now - registered as a defect. - - - bpo-31904(223): Port test_datetime to VxWorks: skip zoneinfo tests - on VxWorks - - - bpo-35805(224): Add parser for Message-ID header and add it to - default HeaderRegistry. This should prevent folding of Message-ID - using RFC 2048 encoded words. - - - bpo-36871(225): Ensure method signature is used instead of - constructor signature of a class while asserting mock object - against method calls. Patch by Karthikeyan Singaravelan. - - - bpo-35070(226): posix.getgrouplist() now works correctly when the - user belongs to NGROUPS_MAX supplemental groups. Patch by Jeffrey - Kintscher. - - - bpo-31783(227): Fix race condition in ThreadPoolExecutor when - worker threads are created during interpreter shutdown. - - - bpo-36582(228): Fix ‘UserString.encode()’ to correctly return - ‘bytes’ rather than a ‘UserString’ instance. - - - bpo-32424(229): Deprecate xml.etree.ElementTree.Element.copy() in - favor of copy.copy(). - - Patch by Gordon P. Hemsley - - - bpo-36564(230): Fix infinite loop in email header folding logic - that would be triggered when an email policy’s max_line_length is - not long enough to include the required markup and any values in - the message. Patch by Paul Ganssle - - - bpo-36543(231): Removed methods Element.getchildren(), - Element.getiterator() and ElementTree.getiterator() and the - xml.etree.cElementTree module. - - - bpo-36409(232): Remove the old plistlib API deprecated in Python - 3.4 - - - bpo-36302(233): distutils sorts source file lists so that Extension - .so files build more reproducibly by default - - - bpo-36250(234): Ignore ‘ValueError’ from ‘signal’ with - ‘interaction’ in non-main thread. - - - bpo-36046(235): Added ‘user’, ‘group’ and ‘extra_groups’ parameters - to the subprocess.Popen constructor. Patch by Patrick McLean. - - - bpo-32627(236): Fix compile error when ‘_uuid’ headers conflicting - included. - - - bpo-35800(237): Deprecate ‘smtpd.MailmanProxy’ ready for future - removal. - - - bpo-35168(238): *note shlex.shlex.punctuation_chars: 109b. is now a - read-only property. - - - bpo-8538(239): Add support for boolean actions like ‘--foo’ and - ‘--no-foo’ to argparse. Patch contributed by Rémi Lapeyre. - - - bpo-20504(240): Fixes a bug in *note cgi: 15. module when a - multipart/form-data request has no ‘Content-Length’ header. - - - bpo-25988(241): The abstract base classes in *note collections.abc: - 1e. no longer are exposed in the regular *note collections: 1d. - module. - - - bpo-11122(242): Distutils won’t check for rpmbuild in specified - paths only. - - - bpo-34775(243): Division handling of PurePath now returns - NotImplemented instead of raising a TypeError when passed something - other than an instance of str or PurePath. Patch by Roger Aiudi. - - - bpo-34749(244): *note binascii.a2b_base64(): 109c. is now up to 2 - times faster. Patch by Sergey Fedoseev. - - - bpo-34519(245): Add additional aliases for HP Roman 8. Patch by - Michael Osipov. - - - bpo-28009(246): Fix uuid.getnode() on platforms with ‘.’ as MAC - Addr delimiter as well fix for MAC Addr format that omits a leading - 0 in MAC Addr values. Currently, AIX is the only know platform - with these settings. Patch by Michael Felt. - - - bpo-30618(247): Add *note readlink(): 1d0. Patch by Girts - Folkmanis. - - - bpo-32498(248): Made *note urllib.parse.unquote(): 109d. accept - bytes in addition to strings. Patch by Stein Karlsen. - - - bpo-33348(249): lib2to3 now recognizes expressions after ‘*’ and - ‘**’ like in ‘f(*[] or [])’. - - - bpo-32689(250): Update *note shutil.move(): 388. function to allow - for Path objects to be used as source argument. Patch by Emily - Morehouse and Maxwell “5.13b” McKinnon. - - - bpo-32820(251): Added __format__ to IPv4 and IPv6 classes. Always - outputs a fully zero- padded string. Supports b/x/n modifiers - (bin/hex/native format). Native format for IPv4 is bin, native - format for IPv6 is hex. Also supports ‘#’ and ‘_’ modifiers. - - - bpo-27657(252): Fix urllib.parse.urlparse() with numeric paths. A - string like “path:80” is no longer parsed as a path but as a scheme - (“path”) and a path (“80”). - - - bpo-4963(253): Fixed non-deterministic behavior related to - mimetypes extension mapping and module reinitialization. + - bpo-36564(16): Fix infinite loop in email header folding logic that + would be triggered when an email policy’s max_line_length is not + long enough to include the required markup and any values in the + message. Patch by Paul Ganssle ---------- Footnotes ---------- - (1) https://bugs.python.org/issue36589 + (1) https://bugs.python.org/issue37697 - (2) https://bugs.python.org/issue38807 + (2) https://gitlab.com/python-devs/importlib_metadata/-/milestones/20 - (3) https://bugs.python.org/issue38724 + (3) https://bugs.python.org/issue37691 - (4) https://bugs.python.org/issue38786 + (4) https://bugs.python.org/issue37664 - (5) https://bugs.python.org/issue38785 + (5) https://bugs.python.org/issue36324 - (6) https://bugs.python.org/issue38723 + (6) https://bugs.python.org/issue37491 - (7) https://bugs.python.org/issue27805 + (7) https://bugs.python.org/issue37579 - (8) https://bugs.python.org/issue38438 + (8) https://bugs.python.org/issue21478 - (9) https://bugs.python.org/issue38761 + (9) https://bugs.python.org/issue37502 - (10) https://bugs.python.org/issue38716 + (10) https://bugs.python.org/issue37520 - (11) https://bugs.python.org/issue38713 + (11) https://bugs.python.org/issue18374 - (12) https://bugs.python.org/issue38692 + (12) https://bugs.python.org/issue37421 - (13) https://bugs.python.org/issue38692 + (13) https://bugs.python.org/issue37481 - (14) https://bugs.python.org/issue38602 + (14) https://bugs.python.org/issue26967 - (15) https://bugs.python.org/issue38334 + (15) https://bugs.python.org/issue37347 - (16) https://bugs.python.org/issue38312 - - (17) https://bugs.python.org/issue38586 - - (18) https://bugs.python.org/issue38565 - - (19) https://bugs.python.org/issue34679 - - (20) https://bugs.python.org/issue31202 - - (21) https://bugs.python.org/issue36321 - - (22) https://bugs.python.org/issue38521 - - (23) https://bugs.python.org/issue38493 - - (24) https://bugs.python.org/issue38478 - - (25) https://bugs.python.org/issue33604 - - (26) https://bugs.python.org/issue38378 - - (27) https://bugs.python.org/issue38417 - - (28) https://bugs.python.org/issue38449 - - (29) https://bugs.python.org/issue38431 - - (30) https://bugs.python.org/issue38109 - - (31) https://bugs.python.org/issue38422 - - (32) https://bugs.python.org/issue38405 - - (33) https://bugs.python.org/issue38332 - - (34) https://bugs.python.org/issue38371 - - (35) https://bugs.python.org/issue38341 - - (36) https://bugs.python.org/issue38319 - - (37) https://bugs.python.org/issue38242 - - (38) https://bugs.python.org/issue13153 - - (39) https://bugs.python.org/issue38019 - - (40) https://bugs.python.org/issue38163 - - (41) https://bugs.python.org/issue38161 - - (42) https://bugs.python.org/issue38216 - - (43) https://bugs.python.org/issue30458 - - (44) https://bugs.python.org/issue28286 - - (45) https://bugs.python.org/issue38108 - - (46) https://bugs.python.org/issue38265 - - (47) https://bugs.python.org/issue38112 - - (48) https://bugs.python.org/issue38248 - - (49) https://bugs.python.org/issue38237 - - (50) https://bugs.python.org/issue34002 - - (51) https://bugs.python.org/issue38191 - - (52) https://bugs.python.org/issue38155 - - (53) https://bugs.python.org/issue38185 - - (54) https://bugs.python.org/issue38136 - - (55) https://bugs.python.org/issue37828 - - (56) https://bugs.python.org/issue38175 - - (57) https://bugs.python.org/issue33936 - - (58) https://bugs.python.org/issue34706 - - (59) https://bugs.python.org/issue38153 - - (60) https://bugs.python.org/issue38115 - - (61) https://bugs.python.org/issue38148 - - (62) https://bugs.python.org/issue38142 - - (63) https://bugs.python.org/issue9216 - - (64) https://bugs.python.org/issue36991 - - (65) https://bugs.python.org/issue38134 - - (66) https://bugs.python.org/issue38132 - - (67) https://bugs.python.org/issue38008 - - (68) https://bugs.python.org/issue34037 - - (69) https://bugs.python.org/issue37405 - - (70) https://bugs.python.org/issue38121 - - (71) https://bugs.python.org/issue38110 - - (72) https://bugs.python.org/issue38093 - - (73) https://bugs.python.org/issue37488 - - (74) https://bugs.python.org/issue35640 - - (75) https://bugs.python.org/issue38086 - - (76) -https://gitlab.com/python-devs/importlib_metadata/blob/0.21/importlib_metadata/docs/changelog.rst - - (77) https://bugs.python.org/issue37251 - - (78) https://bugs.python.org/issue38037 - - (79) https://bugs.python.org/issue38066 - - (80) https://bugs.python.org/issue38059 - - (81) https://bugs.python.org/issue38049 - - (82) https://bugs.python.org/issue37953 - - (83) https://bugs.python.org/issue38026 - - (84) https://bugs.python.org/issue35923 - - (85) https://bugs.python.org/issue38010 - - (86) https://bugs.python.org/issue38006 - - (87) https://bugs.python.org/issue37995 - - (88) https://bugs.python.org/issue34410 - - (89) https://bugs.python.org/issue37140 - - (90) https://bugs.python.org/issue37587 - - (91) https://bugs.python.org/issue37834 - - (92) https://bugs.python.org/issue10978 - - (93) https://bugs.python.org/issue37972 - - (94) https://bugs.python.org/issue37965 - - (95) https://bugs.python.org/issue37964 - - (96) https://bugs.python.org/issue37960 - - (97) https://bugs.python.org/issue37961 - - (98) https://bugs.python.org/issue37951 - - (99) https://bugs.python.org/issue36205 - - (100) https://bugs.python.org/issue37950 - - (101) https://bugs.python.org/issue34679 - - (102) https://bugs.python.org/issue36917 - - (103) https://bugs.python.org/issue37798 - - (104) https://bugs.python.org/issue26589 - - (105) https://bugs.python.org/issue37915 - - (106) https://bugs.python.org/issue32554 - - (107) https://bugs.python.org/issue9938 - - (108) https://bugs.python.org/issue37851 - - (109) https://bugs.python.org/issue32793 - - (110) https://bugs.python.org/issue37885 - - (111) https://bugs.python.org/issue37868 - - (112) https://bugs.python.org/issue37811 - - (113) https://bugs.python.org/issue37863 - - (114) https://bugs.python.org/issue21131 - - (115) https://bugs.python.org/issue37798 - - (116) https://bugs.python.org/issue37804 - - (117) https://bugs.python.org/issue37819 - - (118) https://bugs.python.org/issue14465 - - (119) https://bugs.python.org/issue37810 - - (120) https://bugs.python.org/issue37772 - - (121) https://bugs.python.org/issue18578 - - (122) https://bugs.python.org/issue37785 - - (123) https://bugs.python.org/issue34488 - - (124) https://bugs.python.org/issue37449 - - (125) https://bugs.python.org/issue28292 - - (126) https://bugs.python.org/issue18049 - - (127) https://bugs.python.org/issue37742 - - (128) https://bugs.python.org/issue37738 - - (129) https://bugs.python.org/issue37723 - - (130) https://bugs.python.org/issue35943 - - (131) https://bugs.python.org/issue32178 - - (132) https://bugs.python.org/issue37268 - - (133) https://bugs.python.org/issue11953 - - (134) https://bugs.python.org/issue37685 - - (135) https://bugs.python.org/issue37697 - - (136) -https://gitlab.com/python-devs/importlib_metadata/-/milestones/20 - - (137) https://bugs.python.org/issue37695 - - (138) https://bugs.python.org/issue37689 - - (139) https://bugs.python.org/issue29553 - - (140) https://bugs.python.org/issue37691 - - (141) https://bugs.python.org/issue37685 - - (142) https://bugs.python.org/issue37354 - - (143) https://bugs.python.org/issue37664 - - (144) https://bugs.python.org/issue37663 - - (145) https://bugs.python.org/issue37642 - - (146) https://bugs.python.org/issue36161 - - (147) https://bugs.python.org/issue36324 - - (148) https://bugs.python.org/issue37555 - - (149) https://bugs.python.org/issue29446 - - (150) https://bugs.python.org/issue16970 - - (151) https://bugs.python.org/issue34443 - - (152) https://bugs.python.org/issue37491 - - (153) https://bugs.python.org/issue37587 - - (154) https://bugs.python.org/issue18378 - - (155) https://bugs.python.org/issue37579 - - (156) https://bugs.python.org/issue21478 - - (157) https://bugs.python.org/issue37531 - - (158) https://bugs.python.org/issue37482 - - (159) https://bugs.python.org/issue36993 - - (160) https://bugs.python.org/issue37502 - - (161) https://bugs.python.org/issue37520 - - (162) https://bugs.python.org/issue18374 - - (163) https://bugs.python.org/issue37424 - - (164) https://bugs.python.org/issue37421 - - (165) https://bugs.python.org/issue37481 - - (166) https://bugs.python.org/issue37479 - - (167) https://bugs.python.org/issue37440 - - (168) https://bugs.python.org/issue37437 - - (169) https://bugs.python.org/issue37428 - - (170) https://bugs.python.org/issue37420 - - (171) https://bugs.python.org/issue37412 - - (172) https://www.python.org/dev/peps/pep-0529 - - (173) https://bugs.python.org/issue37406 - - (174) https://bugs.python.org/issue29412 - - (175) https://bugs.python.org/issue36546 - - (176) https://bugs.python.org/issue37394 - - (177) https://bugs.python.org/issue37376 - - (178) https://bugs.python.org/issue26967 - - (179) https://bugs.python.org/issue37212 - - (180) https://bugs.python.org/issue37372 - - (181) https://bugs.python.org/issue37345 - - (182) https://bugs.python.org/issue37358 - - (183) https://bugs.python.org/issue37347 - - (184) https://bugs.python.org/issue37163 - - (185) https://bugs.python.org/issue37085 - - (186) https://bugs.python.org/issue37328 - - (187) https://bugs.python.org/issue37305 - - (188) https://bugs.python.org/issue37320 - - (189) https://bugs.python.org/issue37315 - - (190) https://bugs.python.org/issue37312 - - (191) https://bugs.python.org/issue33972 - - (192) https://bugs.python.org/issue37280 - - (193) https://bugs.python.org/issue37279 - - (194) https://bugs.python.org/issue19865 - - (195) https://bugs.python.org/issue37266 - - (196) https://bugs.python.org/issue37210 - - (197) https://bugs.python.org/issue21872 - - (198) https://bugs.python.org/issue35922 - - (199) https://bugs.python.org/issue35766 - - (200) https://bugs.python.org/issue36607 - - (201) https://bugs.python.org/issue18748 - - (202) https://bugs.python.org/issue36402 - - (203) https://bugs.python.org/issue37206 - - (204) https://bugs.python.org/issue37111 - - (205) https://bugs.python.org/issue12144 - - (206) https://bugs.python.org/issue34886 - - (207) https://bugs.python.org/issue37173 - - (208) https://bugs.python.org/issue37178 - - (209) https://bugs.python.org/issue37178 - - (210) https://bugs.python.org/issue37165 - - (211) https://bugs.python.org/issue34767 - - (212) https://bugs.python.org/issue37158 - - (213) https://bugs.python.org/issue34282 - - (214) https://bugs.python.org/issue37150 - - (215) https://bugs.python.org/issue28724 - - (216) https://bugs.python.org/issue35621 - - (217) https://bugs.python.org/issue36520 - - (218) https://bugs.python.org/issue30835 - - (219) https://bugs.python.org/issue31163 - - (220) https://bugs.python.org/issue25068 - - (221) https://bugs.python.org/issue26185 - - (222) https://bugs.python.org/issue21315 - - (223) https://bugs.python.org/issue31904 - - (224) https://bugs.python.org/issue35805 - - (225) https://bugs.python.org/issue36871 - - (226) https://bugs.python.org/issue35070 - - (227) https://bugs.python.org/issue31783 - - (228) https://bugs.python.org/issue36582 - - (229) https://bugs.python.org/issue32424 - - (230) https://bugs.python.org/issue36564 - - (231) https://bugs.python.org/issue36543 - - (232) https://bugs.python.org/issue36409 - - (233) https://bugs.python.org/issue36302 - - (234) https://bugs.python.org/issue36250 - - (235) https://bugs.python.org/issue36046 - - (236) https://bugs.python.org/issue32627 - - (237) https://bugs.python.org/issue35800 - - (238) https://bugs.python.org/issue35168 - - (239) https://bugs.python.org/issue8538 - - (240) https://bugs.python.org/issue20504 - - (241) https://bugs.python.org/issue25988 - - (242) https://bugs.python.org/issue11122 - - (243) https://bugs.python.org/issue34775 - - (244) https://bugs.python.org/issue34749 - - (245) https://bugs.python.org/issue34519 - - (246) https://bugs.python.org/issue28009 - - (247) https://bugs.python.org/issue30618 - - (248) https://bugs.python.org/issue32498 - - (249) https://bugs.python.org/issue33348 - - (250) https://bugs.python.org/issue32689 - - (251) https://bugs.python.org/issue32820 - - (252) https://bugs.python.org/issue27657 - - (253) https://bugs.python.org/issue4963 + (16) https://bugs.python.org/issue36564  -File: python.info, Node: Documentation<16>, Next: Tests<16>, Prev: Library<21>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: Documentation<19>, Next: Tests<14>, Prev: Library<23>, Up: Python 3 8 0 beta 3 -1.19.22.4 Documentation +1.18.24.4 Documentation ....................... - - bpo-21767(1): Explicitly mention abc support in - functools.singledispatch - - - bpo-38816(2): Provides more details about the interaction between - ‘fork()’ and CPython’s runtime, focusing just on the C-API. This - includes cautions about where ‘fork()’ should and shouldn’t be - called. - - - bpo-38351(3): Modernize *note email: 67. examples from %-formatting - to f-strings. - - - bpo-38778(4): Document the fact that *note RuntimeError: 3df. is - raised if *note os.fork(): a44. is called in a subinterpreter. - - - bpo-38592(5): Add Brazilian Portuguese to the language switcher at - Python Documentation website. - - - bpo-38294(6): Add list of no-longer-escaped chars to re.escape - documentation - - - bpo-38053(7): Modernized the plistlib documentation - - - bpo-26868(8): Fix example usage of *note PyModule_AddObject(): - 109f. to properly handle errors. - - - bpo-36797(9): Fix a dead link in the distutils API Reference. - - - bpo-37977(10): Warn more strongly and clearly about pickle - insecurity - - - bpo-37979(11): Added a link to dateutil.parser.isoparse in the - datetime.fromisoformat documentation. Patch by Paul Ganssle - - - bpo-12707(12): Deprecate info(), geturl(), getcode() methods in - favor of the headers, url, and status properties, respectively, for - HTTPResponse and addinfourl. Also deprecate the code attribute of - addinfourl in favor of the status attribute. Patch by Ashwin - Ramaswami - - - bpo-37937(13): Mention ‘frame.f_trace’ in *note sys.settrace(): - f02. docs. - - - bpo-37878(14): Make *note PyThreadState_DeleteCurrent(): 10a0. - Internal. - - - bpo-37759(15): Beginning edits to Whatsnew 3.8 - - - bpo-37726(16): Stop recommending getopt in the tutorial for command - line argument parsing and promote argparse. - - - bpo-32910(17): Remove implementation-specific behaviour of how + - bpo-32910(1): Remove implementation-specific behaviour of how venv’s Deactivate works. - - bpo-37256(18): Fix wording of arguments for ‘Request’ in *note - urllib.request: 129. - - - bpo-37284(19): Add a brief note to indicate that any new + - bpo-37284(2): Add a brief note to indicate that any new ‘sys.implementation’ required attributes must go through the PEP process. - - bpo-30088(20): Documented that *note mailbox.Maildir: d72. + - bpo-30088(3): Documented that *note mailbox.Maildir: c7f. constructor doesn’t attempt to verify the maildir folder layout correctness. Patch by Sviatoslav Sydorenko. - - bpo-37521(21): Fix *note importlib: 9a. examples to insert any - newly created modules via importlib.util.module_from_spec() - immediately into sys.modules instead of after calling - loader.exec_module(). + - bpo-37521(4): Fix *note importlib: 9b. examples to insert any newly + created modules via importlib.util.module_from_spec() immediately + into sys.modules instead of after calling loader.exec_module(). Thanks to Benjamin Mintz for finding the bug. - - bpo-37456(22): Slash (‘/’) is now part of syntax. + - bpo-37456(5): Slash (‘/’) is now part of syntax. - - bpo-37487(23): Fix PyList_GetItem index description to include 0. + - bpo-37487(6): Fix PyList_GetItem index description to include 0. - - bpo-37149(24): Replace the dead link to the Tkinter 8.5 reference - by John Shipman, New Mexico Tech, with a link to the archive.org - copy. + - bpo-37149(7): Replace the dead link to the Tkinter 8.5 reference by + John Shipman, New Mexico Tech, with a link to the archive.org copy. - - bpo-37478(25): Added possible exceptions to the description of + - bpo-37478(8): Added possible exceptions to the description of os.chdir(). - - bpo-34903(26): Documented that in *note - datetime.datetime.strptime(): f54, the leading zero in some - two-digit formats is optional. Patch by Mike Gleen. - - - bpo-36260(27): Add decompression pitfalls to zipfile module - documentation. - - - bpo-37004(28): In the documentation for difflib, a note was added - explicitly warning that the results of SequenceMatcher’s ratio - method may depend on the order of the input strings. - - - bpo-36960(29): Restructured the *note datetime: 30. docs in the - interest of making them more user-friendly and improving - readability. Patch by Brad Solomon. - - - bpo-36487(30): Make C-API docs clear about what the “main” - interpreter is. - - - bpo-23460(31): The documentation for decimal string formatting - using the ‘:g’ specifier has been updated to reflect the correct - exponential notation cutoff point. Original patch contributed by - Tuomas Suutari. - - - bpo-35803(32): Document and test that ‘tempfile’ functions may - accept a *note path-like object: 474. for the ‘dir’ argument. - Patch by Anthony Sottile. - - - bpo-33944(33): Added a note about the intended use of code in .pth - files. - - - bpo-34293(34): Fix the Doc/Makefile regarding PAPER environment - variable and PDF builds - - - bpo-25237(35): Add documentation for tkinter modules - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue21767 + (1) https://bugs.python.org/issue32910 - (2) https://bugs.python.org/issue38816 + (2) https://bugs.python.org/issue37284 - (3) https://bugs.python.org/issue38351 + (3) https://bugs.python.org/issue30088 - (4) https://bugs.python.org/issue38778 + (4) https://bugs.python.org/issue37521 - (5) https://bugs.python.org/issue38592 + (5) https://bugs.python.org/issue37456 - (6) https://bugs.python.org/issue38294 + (6) https://bugs.python.org/issue37487 - (7) https://bugs.python.org/issue38053 + (7) https://bugs.python.org/issue37149 - (8) https://bugs.python.org/issue26868 - - (9) https://bugs.python.org/issue36797 - - (10) https://bugs.python.org/issue37977 - - (11) https://bugs.python.org/issue37979 - - (12) https://bugs.python.org/issue12707 - - (13) https://bugs.python.org/issue37937 - - (14) https://bugs.python.org/issue37878 - - (15) https://bugs.python.org/issue37759 - - (16) https://bugs.python.org/issue37726 - - (17) https://bugs.python.org/issue32910 - - (18) https://bugs.python.org/issue37256 - - (19) https://bugs.python.org/issue37284 - - (20) https://bugs.python.org/issue30088 - - (21) https://bugs.python.org/issue37521 - - (22) https://bugs.python.org/issue37456 - - (23) https://bugs.python.org/issue37487 - - (24) https://bugs.python.org/issue37149 - - (25) https://bugs.python.org/issue37478 - - (26) https://bugs.python.org/issue34903 - - (27) https://bugs.python.org/issue36260 - - (28) https://bugs.python.org/issue37004 - - (29) https://bugs.python.org/issue36960 - - (30) https://bugs.python.org/issue36487 - - (31) https://bugs.python.org/issue23460 - - (32) https://bugs.python.org/issue35803 - - (33) https://bugs.python.org/issue33944 - - (34) https://bugs.python.org/issue34293 - - (35) https://bugs.python.org/issue25237 + (8) https://bugs.python.org/issue37478  -File: python.info, Node: Tests<16>, Next: Build<16>, Prev: Documentation<16>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: Tests<14>, Next: Build<12>, Prev: Documentation<19>, Up: Python 3 8 0 beta 3 -1.19.22.5 Tests +1.18.24.5 Tests ............... - - bpo-38614(1): Fix test_communicate() of - test_asyncio.test_subprocess: use ‘support.LONG_TIMEOUT’ (5 - minutes), instead of just 1 minute. - - - bpo-38614(2): Add timeout constants to *note test.support: 106.: - *note LOOPBACK_TIMEOUT: 1073, *note INTERNET_TIMEOUT: 1074, *note - SHORT_TIMEOUT: f57. and *note LONG_TIMEOUT: 1075. - - - bpo-38502(3): test.regrtest now uses process groups in the - multiprocessing mode (-jN command line option) if process groups - are available: if *note os.setsid(): 10a2. and *note os.killpg(): - 10a3. functions are available. - - - bpo-35998(4): Fix a race condition in - test_asyncio.test_start_tls_server_1(). Previously, there was a - race condition between the test main() function which replaces the - protocol and the test ServerProto protocol which sends ANSWER once - it gets HELLO. Now, only the test main() function is responsible to - send data, ServerProto no longer sends data. - - - bpo-38470(5): Fix ‘test_compileall.test_compile_dir_maxlevels()’ on - Windows without long path support: only create 3 subdirectories - instead of between 20 and 100 subdirectories. - - - bpo-37531(6): On timeout, regrtest no longer attempts to call - ‘popen.communicate()’ again: it can hang until all child processes - using stdout and stderr pipes completes. Kill the worker process - and ignores its output. Change also the faulthandler timeout of - the main process from 1 minute to 5 minutes, for Python slowest - buildbots. - - - bpo-38239(7): Fix test_gdb for Link Time Optimization (LTO) builds. - - - bpo-38275(8): test_ssl now handles disabled TLS/SSL versions - better. OpenSSL’s crypto policy and run-time settings are - recognized and tests for disabled versions are skipped. Tests also - accept more TLS minimum_versions for platforms that override - OpenSSL’s default with strict settings. - - - bpo-38271(9): The private keys for test_ssl were encrypted with - 3DES in traditional PKCS#5 format. 3DES and the digest algorithm - of PKCS#5 are blocked by some strict crypto policies. Use PKCS#8 - format with AES256 encryption instead. - - - bpo-38270(10): test.support now has a helper function to check for - availibility of a hash digest function. Several tests are - refactored avoid MD5 and use SHA256 instead. Other tests are - marked to use MD5 and skipped when MD5 is disabled. - - - bpo-37123(11): Multiprocessing test test_mymanager() now also - expects -SIGTERM, not only exitcode 0. - BaseManager._finalize_manager() sends SIGTERM to the manager - process if it takes longer than 1 second to stop, which happens on - slow buildbots. - - - bpo-38212(12): Multiprocessing tests: increase - test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds. - - - bpo-38117(13): Test with OpenSSL 1.1.1d - - - bpo-38018(14): Increase code coverage for - multiprocessing.shared_memory. - - - bpo-37805(15): Add tests for json.dump(…, skipkeys=True). Patch by - Dong-hee Na. - - - bpo-37531(16): Enhance regrtest multiprocess timeout: write a - message when killing a worker process, catch popen.kill() and - popen.wait() exceptions, put a timeout on the second call to - popen.communicate(). - - - bpo-37876(17): Add tests for ROT-13 codec. - - - bpo-36833(18): Added tests for PyDateTime_xxx_GET_xxx() macros of - the C API of the *note datetime: 30. module. Patch by Joannah - Nanjekye. - - - bpo-37558(19): Fix + - bpo-37558(1): Fix test_shared_memory_cleaned_after_process_termination name handling - - bpo-37526(20): Add *note test.support.catch_threading_exception(): - 10a4.: context manager catching *note threading.Thread: 21a. - exception using *note threading.excepthook(): 361. + - bpo-37526(2): Add *note test.support.catch_threading_exception(): + f7e.: context manager catching *note threading.Thread: 221. + exception using *note threading.excepthook(): 21d. - - bpo-37421(21): test_concurrent_futures now explicitly stops the + - bpo-37421(3): test_concurrent_futures now explicitly stops the ForkServer instance if it’s running. - - bpo-37421(22): multiprocessing tests now stop the ForkServer + - bpo-37421(4): multiprocessing tests now stop the ForkServer instance if it’s running: close the “alive” file descriptor to ask the server to stop and then remove its UNIX address. - - bpo-37421(23): test_distutils.test_build_ext() is now able to - remove the temporary directory on Windows: don’t import the newly - built C extension (“xx”) in the current process, but test it in a - separated process. - - - bpo-37421(24): test_concurrent_futures now cleans up - multiprocessing to remove immediately temporary directories created - by multiprocessing.util.get_temp_dir(). - - - bpo-37421(25): test_winconsoleio doesn’t leak a temporary file - anymore: use tempfile.TemporaryFile() to remove it when the test - completes. - - - bpo-37421(26): multiprocessing tests now explicitly call - ‘_run_finalizers()’ to immediately remove temporary directories - created by tests. - - - bpo-37421(27): urllib.request tests now call *note urlcleanup(): - 10a5. to remove temporary files created by ‘urlretrieve()’ tests - and to clear the ‘_opener’ global variable set by ‘urlopen()’ and - functions calling indirectly ‘urlopen()’. - - - bpo-37472(28): Remove ‘Lib/test/outstanding_bugs.py’. - - - bpo-37199(29): Fix test failures when IPv6 is unavailable or - disabled. - - - bpo-19696(30): Replace deprecated method “random.choose” with - “random.choice” in “test_pkg_import.py”. - - - bpo-37335(31): Remove no longer necessary code from c locale - coercion tests - - - bpo-37421(32): Fix test_shutil to no longer leak temporary files. - - - bpo-37411(33): Fix test_wsgiref.testEnviron() to no longer depend - on the environment variables (don’t fail if “X” variable is set). - - - bpo-37400(34): Fix test_os.test_chown(): use os.getgroups() rather - than grp.getgrall() to get groups. Rename also the test to - test_chown_gid(). - - - bpo-37359(35): Add –cleanup option to python3 -m test to remove - ‘test_python_*’ directories of previous failed jobs. Add “make - cleantest” to run ‘python3 -m test --cleanup’. - - - bpo-37362(36): test_gdb no longer fails if it gets an “unexpected” - message on stderr: it now ignores stderr. The purpose of test_gdb - is to test that python-gdb.py commands work as expected, not to - test gdb. - - - bpo-35998(37): Avoid TimeoutError in test_asyncio: - test_start_tls_server_1() - - - bpo-37278(38): Fix test_asyncio ProactorLoopCtrlC: join the thread - to prevent leaking a running thread and leaking a reference. - - - bpo-37261(39): Fix *note test.support.catch_unraisable_exception(): - 10a6.: its __exit__() method now ignores unraisable exception - raised when clearing its ‘unraisable’ attribute. - - - bpo-37069(40): regrtest now uses *note sys.unraisablehook(): 35d. - to mark a test as “environment altered” (ENV_CHANGED) if it emits - an “unraisable exception”. Moreover, regrtest logs a warning in - this case. - - Use ‘python3 -m test --fail-env-changed’ to catch unraisable - exceptions in tests. - - - bpo-37252(41): Fix assertions in ‘test_close’ and - ‘test_events_mask_overflow’ devpoll tests. - - - bpo-37169(42): Rewrite ‘_PyObject_IsFreed()’ unit tests. - - - bpo-37153(43): ‘test_venv.test_multiprocessing()’ now explicitly - calls ‘pool.terminate()’ to wait until the pool completes. - - - bpo-34001(44): Make test_ssl pass with LibreSSL. LibreSSL handles - minimum and maximum TLS version differently than OpenSSL. - - - bpo-36919(45): Make ‘test_source_encoding.test_issue2301’ - implementation independent. The test will work now for both - CPython and IronPython. - - - bpo-30202(46): Update ‘test.test_importlib.test_abc’ to test - ‘find_spec()’. - - - bpo-28009(47): Modify the test_uuid logic to test when a program is - available AND can be used to obtain a MACADDR as basis for an UUID. - Patch by M. Felt - - - bpo-34596(48): Fallback to a default reason when *note - unittest.skip(): 10a7. is uncalled. Patch by Naitree Zhu. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38614 + (1) https://bugs.python.org/issue37558 - (2) https://bugs.python.org/issue38614 + (2) https://bugs.python.org/issue37526 - (3) https://bugs.python.org/issue38502 + (3) https://bugs.python.org/issue37421 - (4) https://bugs.python.org/issue35998 - - (5) https://bugs.python.org/issue38470 - - (6) https://bugs.python.org/issue37531 - - (7) https://bugs.python.org/issue38239 - - (8) https://bugs.python.org/issue38275 - - (9) https://bugs.python.org/issue38271 - - (10) https://bugs.python.org/issue38270 - - (11) https://bugs.python.org/issue37123 - - (12) https://bugs.python.org/issue38212 - - (13) https://bugs.python.org/issue38117 - - (14) https://bugs.python.org/issue38018 - - (15) https://bugs.python.org/issue37805 - - (16) https://bugs.python.org/issue37531 - - (17) https://bugs.python.org/issue37876 - - (18) https://bugs.python.org/issue36833 - - (19) https://bugs.python.org/issue37558 - - (20) https://bugs.python.org/issue37526 - - (21) https://bugs.python.org/issue37421 - - (22) https://bugs.python.org/issue37421 - - (23) https://bugs.python.org/issue37421 - - (24) https://bugs.python.org/issue37421 - - (25) https://bugs.python.org/issue37421 - - (26) https://bugs.python.org/issue37421 - - (27) https://bugs.python.org/issue37421 - - (28) https://bugs.python.org/issue37472 - - (29) https://bugs.python.org/issue37199 - - (30) https://bugs.python.org/issue19696 - - (31) https://bugs.python.org/issue37335 - - (32) https://bugs.python.org/issue37421 - - (33) https://bugs.python.org/issue37411 - - (34) https://bugs.python.org/issue37400 - - (35) https://bugs.python.org/issue37359 - - (36) https://bugs.python.org/issue37362 - - (37) https://bugs.python.org/issue35998 - - (38) https://bugs.python.org/issue37278 - - (39) https://bugs.python.org/issue37261 - - (40) https://bugs.python.org/issue37069 - - (41) https://bugs.python.org/issue37252 - - (42) https://bugs.python.org/issue37169 - - (43) https://bugs.python.org/issue37153 - - (44) https://bugs.python.org/issue34001 - - (45) https://bugs.python.org/issue36919 - - (46) https://bugs.python.org/issue30202 - - (47) https://bugs.python.org/issue28009 - - (48) https://bugs.python.org/issue34596 + (4) https://bugs.python.org/issue37421  -File: python.info, Node: Build<16>, Next: Windows<15>, Prev: Tests<16>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: Build<12>, Next: Windows<16>, Prev: Tests<14>, Up: Python 3 8 0 beta 3 -1.19.22.6 Build +1.18.24.6 Build ............... - - bpo-38809(1): On Windows, build scripts will now recognize and use - python.exe from an active virtual env. - - - bpo-38684(2): Fix _hashlib build when Blake2 is disabled, but - OpenSSL supports it. - - - bpo-38468(3): Misc/python-config.in now uses ‘getvar()’ for all - still existing *note sysconfig.get_config_var(): a47. calls. Patch - by Joannah Nanjekye. - - - bpo-37415(4): Fix stdatomic.h header check for ICC compiler: the - ICC implementation lacks atomic_uintptr_t type which is needed by - Python. - - - bpo-38301(5): In Solaris family, we must be sure to use - ‘-D_REENTRANT’. Patch by Jesús Cea Avión. - - - bpo-36002(6): Locate ‘llvm-profdata’ and ‘llvm-ar’ binaries using - ‘AC_PATH_TOOL’ rather than ‘AC_PATH_TARGET_TOOL’. - - - bpo-37936(7): The ‘.gitignore’ file systematically keeps “rooted”, - with a non-trailing slash, all the rules that are meant to apply to - files in a specific place in the repo. Previously, when the - intended file to ignore happened to be at the root of the repo, - we’d most often accidentally also ignore files and directories with - the same name anywhere in the tree. - - - bpo-37760(8): The ‘Tools/unicode/makeunicodedata.py’ script, which - is used for converting information from the Unicode Character - Database into generated code and data used by the methods of *note - str: 205. and by the *note unicodedata: 123. module, now handles - each character’s data as a ‘dataclass’ with named attributes, - rather than a length-18 list of different fields. - - - bpo-37936(9): The ‘.gitignore’ file no longer applies to any files - that are in fact tracked in the Git repository. Patch by Greg - Price. - - - bpo-37725(10): Change “clean” makefile target to also clean the - program guided optimization (PGO) data. Previously you would have - to use “make clean” and “make profile-removal”, or “make clobber”. - - - bpo-37707(11): Mark some individual tests to skip when –pgo is - used. The tests marked increase the PGO task time significantly - and likely don’t help improve optimization of the final executable. - - - bpo-36044(12): Reduce the number of unit tests run for the PGO + - bpo-36044(1): Reduce the number of unit tests run for the PGO generation task. This speeds up the task by a factor of about 15x. Running the full unit test suite is slow. This change may result in a slightly less optimized build since not as many code branches @@ -64753,773 +58000,752 @@ File: python.info, Node: Build<16>, Next: Windows<15>, Prev: Tests<16>, Up: run their own relevant benchmarks as results can depend on the environment, workload, and compiler tool chain. - - bpo-37468(13): ‘make install’ no longer installs ‘wininst-*.exe’ - files used by distutils bdist_wininst: bdist_wininst only works on - Windows. - - - bpo-37189(14): Many ‘PyRun_XXX()’ functions like *note - PyRun_String(): 10a9. were no longer exported in ‘libpython38.dll’ - by mistake. Export them again to fix the ABI compatibility. - - - bpo-25361(15): Enables use of SSE2 instructions in Windows 32-bit - build. - - - bpo-36210(16): Update optional extension module detection for AIX. - ossaudiodev and spwd are not applicable for AIX, and are no longer - reported as missing. 3rd-party packaging of ncurses (with ASIS - support) conflicts with officially supported AIX curses library, so - configure AIX to use libcurses.a. However, skip trying to build - _curses_panel. - - patch by M Felt - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38809 - - (2) https://bugs.python.org/issue38684 - - (3) https://bugs.python.org/issue38468 - - (4) https://bugs.python.org/issue37415 - - (5) https://bugs.python.org/issue38301 - - (6) https://bugs.python.org/issue36002 - - (7) https://bugs.python.org/issue37936 - - (8) https://bugs.python.org/issue37760 - - (9) https://bugs.python.org/issue37936 - - (10) https://bugs.python.org/issue37725 - - (11) https://bugs.python.org/issue37707 - - (12) https://bugs.python.org/issue36044 - - (13) https://bugs.python.org/issue37468 - - (14) https://bugs.python.org/issue37189 - - (15) https://bugs.python.org/issue25361 - - (16) https://bugs.python.org/issue36210 + (1) https://bugs.python.org/issue36044  -File: python.info, Node: Windows<15>, Next: macOS<14>, Prev: Build<16>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: Windows<16>, Next: IDLE<21>, Prev: Build<12>, Up: Python 3 8 0 beta 3 -1.19.22.7 Windows +1.18.24.7 Windows ................. - - bpo-38589(1): Fixes HTML Help shortcut when Windows is not - installed to C drive - - - bpo-38453(2): Ensure ntpath.realpath() correctly resolves relative - paths. - - - bpo-38519(3): Restores the internal C headers that were missing - from the nuget.org and Microsoft Store packages. - - - bpo-38492(4): Remove ‘pythonw.exe’ dependency on the Microsoft C++ - runtime. - - - bpo-38344(5): Fix error message in activate.bat - - - bpo-38359(6): Ensures ‘pyw.exe’ launcher reads correct registry - key. - - - bpo-38355(7): Fixes ‘ntpath.realpath’ failing on ‘sys.executable’. - - - bpo-38117(8): Update bundled OpenSSL to 1.1.1d - - - bpo-38092(9): Reduce overhead when using multiprocessing in a - Windows virtual environment. - - - bpo-38133(10): Allow py.exe launcher to locate installations from - the Microsoft Store and improve display of active virtual - environments. - - - bpo-38114(11): The ‘pip.ini’ is no longer included in the Nuget - package. - - - bpo-32592(12): Set Windows 8 as the minimum required version for - API support - - - bpo-36634(13): *note os.cpu_count(): 96c. now returns active - processors rather than maximum processors. - - - bpo-36634(14): venv activate.bat now works when the existing - variables contain double quote characters. - - - bpo-38081(15): Prevent error calling *note os.path.realpath(): 330. - on ‘'NUL'’. - - - bpo-38087(16): Fix case sensitivity in test_pathlib and - test_ntpath. - - - bpo-38088(17): Fixes distutils not finding vcruntime140.dll with - only the v142 toolset installed. - - - bpo-37283(18): Ensure command-line and unattend.xml setting - override previously detected states in Windows installer. - - - bpo-38030(19): Fixes *note os.stat(): 324. failing for block - devices on Windows - - - bpo-38020(20): Fixes potential crash when calling *note - os.readlink(): 1d1. (or indirectly through *note realpath(): 330.) - on a file that is not a supported link. - - - bpo-37705(21): Improve the implementation of ‘winerror_to_errno()’. - - - bpo-37549(22): *note os.dup(): 10ab. no longer fails for standard - streams on Windows 7. - - - bpo-1311(23): The ‘nul’ file on Windows now returns True from *note - exists(): 328. and a valid result from *note os.stat(): 324. with - ‘S_IFCHR’ set. - - - bpo-9949(24): Enable support for following symlinks in - ‘os.realpath()’. - - - bpo-37834(25): Treat all name surrogate reparse points on Windows - in *note os.lstat(): 325. and other reparse points as regular files - in *note os.stat(): 324. - - - bpo-36266(26): Add the module name in the formatted error message - when DLL load fail happens during module import in - ‘_PyImport_FindSharedFuncptrWindows()’. Patch by Srinivas - Nyayapati. - - - bpo-25172(27): Trying to import the *note crypt: 28. module on - Windows will result in an *note ImportError: 16c. with a message - explaining that the module isn’t supported on Windows. On other - platforms, if the underlying ‘_crypt’ module is not available, the - ImportError will include a message explaining the problem. - - - bpo-37778(28): Fixes the icons used for file associations to the - Microsoft Store package. - - - bpo-37734(29): Fix use of registry values to launch Python from - Microsoft Store app. - - - bpo-37702(30): Fix memory leak on Windows in creating an SSLContext - object or running urllib.request.urlopen(’‘https://’…’). - - - bpo-37672(31): Switch Windows Store package’s pip to use bundled + - bpo-37672(1): Switch Windows Store package’s pip to use bundled ‘pip.ini’ instead of ‘PIP_USER’ variable. - - bpo-10945(32): Officially drop support for creating bdist_wininst - installers on non-Windows systems. - - - bpo-37445(33): Include the ‘FORMAT_MESSAGE_IGNORE_INSERTS’ flag in - ‘FormatMessageW()’ calls. - - - bpo-37369(34): Fixes path for *note sys.executable: 3a0. when - running from the Microsoft Store. - - - bpo-37380(35): Don’t collect unfinished processes with - ‘subprocess._active’ on Windows to cleanup later. Patch by Ruslan - Kuprieiev. - - - bpo-37351(36): Removes libpython38.a from standard Windows - distribution. - - - bpo-35360(37): Update Windows builds to use SQLite 3.28.0. - - - bpo-37267(38): On Windows, *note os.dup(): 10ab. no longer creates - an inheritable fd when handling a character file. - - - bpo-36779(39): Ensure ‘time.tzname’ is correct on Windows when the - active code page is set to CP_UTF7 or CP_UTF8. - - - bpo-32587(40): Make *note winreg.REG_MULTI_SZ: 10ac. support - zero-length strings. - - - bpo-28269(41): Replace use of ‘strcasecmp()’ for the system - function ‘_stricmp()’. Patch by Minmin Gong. - - - bpo-36590(42): Add native Bluetooth RFCOMM support to socket - module. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue38589 - - (2) https://bugs.python.org/issue38453 - - (3) https://bugs.python.org/issue38519 - - (4) https://bugs.python.org/issue38492 - - (5) https://bugs.python.org/issue38344 - - (6) https://bugs.python.org/issue38359 - - (7) https://bugs.python.org/issue38355 - - (8) https://bugs.python.org/issue38117 - - (9) https://bugs.python.org/issue38092 - - (10) https://bugs.python.org/issue38133 - - (11) https://bugs.python.org/issue38114 - - (12) https://bugs.python.org/issue32592 - - (13) https://bugs.python.org/issue36634 - - (14) https://bugs.python.org/issue36634 - - (15) https://bugs.python.org/issue38081 - - (16) https://bugs.python.org/issue38087 - - (17) https://bugs.python.org/issue38088 - - (18) https://bugs.python.org/issue37283 - - (19) https://bugs.python.org/issue38030 - - (20) https://bugs.python.org/issue38020 - - (21) https://bugs.python.org/issue37705 - - (22) https://bugs.python.org/issue37549 - - (23) https://bugs.python.org/issue1311 - - (24) https://bugs.python.org/issue9949 - - (25) https://bugs.python.org/issue37834 - - (26) https://bugs.python.org/issue36266 - - (27) https://bugs.python.org/issue25172 - - (28) https://bugs.python.org/issue37778 - - (29) https://bugs.python.org/issue37734 - - (30) https://bugs.python.org/issue37702 - - (31) https://bugs.python.org/issue37672 - - (32) https://bugs.python.org/issue10945 - - (33) https://bugs.python.org/issue37445 - - (34) https://bugs.python.org/issue37369 - - (35) https://bugs.python.org/issue37380 - - (36) https://bugs.python.org/issue37351 - - (37) https://bugs.python.org/issue35360 - - (38) https://bugs.python.org/issue37267 - - (39) https://bugs.python.org/issue36779 - - (40) https://bugs.python.org/issue32587 - - (41) https://bugs.python.org/issue28269 - - (42) https://bugs.python.org/issue36590 + (1) https://bugs.python.org/issue37672  -File: python.info, Node: macOS<14>, Next: IDLE<18>, Prev: Windows<15>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: IDLE<21>, Next: Tools/Demos<8>, Prev: Windows<16>, Up: Python 3 8 0 beta 3 -1.19.22.8 macOS -............... - - - bpo-38117(1): Updated OpenSSL to 1.1.1d in macOS installer. - - - bpo-38089(2): Move Azure Pipelines to latest VM versions and make - macOS tests optional - - - bpo-18049(3): Increase the default stack size of threads from 5MB - to 16MB on macOS, to match the stack size of the main thread. This - avoids crashes on deep recursion in threads. - - - bpo-34602(4): Avoid test suite failures on macOS by no longer - calling resource.setrlimit to increase the process stack size limit - at runtime. The runtime change is no longer needed since the - interpreter is being built with a larger default stack size. - - - bpo-35360(5): Update macOS installer to use SQLite 3.28.0. - - - bpo-34631(6): Updated OpenSSL to 1.1.1c in macOS installer. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38117 - - (2) https://bugs.python.org/issue38089 - - (3) https://bugs.python.org/issue18049 - - (4) https://bugs.python.org/issue34602 - - (5) https://bugs.python.org/issue35360 - - (6) https://bugs.python.org/issue34631 - - -File: python.info, Node: IDLE<18>, Next: Tools/Demos<6>, Prev: macOS<14>, Up: Python 3 9 0 alpha 1 - -1.19.22.9 IDLE +1.18.24.8 IDLE .............. - - bpo-26353(1): Stop adding newline when saving an IDLE shell window. - - - bpo-4630(2): Add an option to toggle IDLE’s cursor blink for shell, - editor, and output windows. See Settings, General, Window - Preferences, Cursor Blink. Patch by Zackery Spytz. - - - bpo-38598(3): Do not try to compile IDLE shell or output windows - - - bpo-36698(4): IDLE no longer fails when write non-encodable - characters to stderr. It now escapes them with a backslash, as the - regular Python interpreter. Added the ‘errors’ field to the - standard streams. - - - bpo-35379(5): When exiting IDLE, catch any AttributeError. One - happens when EditorWindow.close is called twice. Printing a - traceback, when IDLE is run from a terminal, is useless and - annoying. - - - bpo-38183(6): To avoid problems, test_idle ignores the user config - directory. It no longer tries to create or access .idlerc or any - files within. Users must run IDLE to discover problems with saving - settings. - - - bpo-38077(7): IDLE no longer adds ‘argv’ to the user namespace when - initializing it. This bug only affected 3.7.4 and 3.8.0b2 to - 3.8.0b4. - - - bpo-38041(8): Shell restart lines now fill the window width, always - start with ‘=’, and avoid wrapping unnecessarily. The line will - still wrap if the included file name is long relative to the width. - - - bpo-35771(9): To avoid occasional spurious test_idle failures on - slower machines, increase the ‘hover_delay’ in test_tooltip. - - - bpo-37824(10): Properly handle user input warnings in IDLE shell. - Cease turning SyntaxWarnings into SyntaxErrors. - - - bpo-37929(11): IDLE Settings dialog now closes properly when there - is no shell window. - - - bpo-37902(12): Add mousewheel scrolling for IDLE module, path, and - stack browsers. Patch by George Zhang. - - - bpo-37849(13): Fixed completions list appearing too high or low - when shown above the current line. - - - bpo-36419(14): Refactor IDLE autocomplete and improve testing. - - - bpo-37748(15): Reorder the Run menu. Put the most common choice, - Run Module, at the top. - - - bpo-37692(16): Improve highlight config sample with example shell + - bpo-37692(1): Improve highlight config sample with example shell interaction and better labels for shell elements. - - bpo-37628(17): Settings dialog no longer expands with font size. + - bpo-37628(2): Settings dialog no longer expands with font size. - - bpo-37627(18): Initialize the Customize Run dialog with the command + - bpo-37627(3): Initialize the Customize Run dialog with the command line arguments most recently entered before. The user can optionally edit before submitting them. - - bpo-33610(19): Fix code context not showing the correct context - when first toggled on. + - bpo-33610(4): Fix code context not showing the correct context when + first toggled on. - - bpo-37530(20): Optimize code context to reduce unneeded background + - bpo-37530(5): Optimize code context to reduce unneeded background activity. Font and highlight changes now occur along with text changes instead of after a random delay. - - bpo-27452(21): Cleanup ‘config.py’ by inlining ‘RemoveFile’ and + - bpo-27452(6): Cleanup ‘config.py’ by inlining ‘RemoveFile’ and simplifying the handling of ‘file’ in ‘CreateConfigHandlers’. - - bpo-37325(22): Fix tab focus traversal order for help source and - custom run dialogs. - - - bpo-37321(23): Both subprocess connection error messages now refer - to the ‘Startup failure’ section of the IDLE doc. - - - bpo-17535(24): Add optional line numbers for IDLE editor windows. + - bpo-17535(7): Add optional line numbers for IDLE editor windows. Windows open without line numbers unless set otherwise in the General tab of the configuration dialog. - - bpo-26806(25): To compensate for stack frames added by IDLE and + - bpo-26806(8): To compensate for stack frames added by IDLE and avoid possible problems with low recursion limits, add 30 to limits in the user code execution process. Subtract 30 when reporting recursion limits to make this addition mostly transparent. - - bpo-37177(26): Properly ‘attach’ search dialogs to their main - window so that they behave like other dialogs and do not get hidden - behind their main window. + - bpo-36390(9): Gather Format menu functions into format.py. Combine + paragraph.py, rstrip.py, and format methods from editor.py. - - bpo-37039(27): Adjust “Zoom Height” to individual screens by - momentarily maximizing the window on first use with a particular + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37692 + + (2) https://bugs.python.org/issue37628 + + (3) https://bugs.python.org/issue37627 + + (4) https://bugs.python.org/issue33610 + + (5) https://bugs.python.org/issue37530 + + (6) https://bugs.python.org/issue27452 + + (7) https://bugs.python.org/issue17535 + + (8) https://bugs.python.org/issue26806 + + (9) https://bugs.python.org/issue36390 + + +File: python.info, Node: Tools/Demos<8>, Prev: IDLE<21>, Up: Python 3 8 0 beta 3 + +1.18.24.9 Tools/Demos +..................... + + - bpo-37675(1): 2to3 now works when run from a zipped standard + library. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37675 + + +File: python.info, Node: Python 3 8 0 beta 2, Next: Python 3 8 0 beta 1, Prev: Python 3 8 0 beta 3, Up: Changelog + +1.18.25 Python 3.8.0 beta 2 +--------------------------- + +`Release date: 2019-07-04' + +* Menu: + +* Security: Security<17>. +* Core and Builtins: Core and Builtins<24>. +* Library: Library<24>. +* Documentation: Documentation<20>. +* Tests: Tests<15>. +* Build: Build<13>. +* Windows: Windows<17>. +* macOS: macOS<13>. +* IDLE: IDLE<22>. +* C API: C API<11>. + + +File: python.info, Node: Security<17>, Next: Core and Builtins<24>, Up: Python 3 8 0 beta 2 + +1.18.25.1 Security +.................. + + - bpo-37363(1): Adds audit events for the range of supported run + commands (see *note Command line and environment: f85.). + + - bpo-37463(2): ssl.match_hostname() no longer accepts IPv4 addresses + with additional text after the address and only quad-dotted + notation without trailing whitespaces. Some inet_aton() + implementations ignore whitespace and all data after whitespace, + e.g. ‘127.0.0.1 whatever’. + + - bpo-37363(3): Adds audit events for *note ensurepip: 7a, *note + ftplib: 84, *note glob: 8a, *note imaplib: 98, *note nntplib: c1, + *note pdb: ca, *note poplib: d1, *note shutil: ea, *note smtplib: + ee, *note sqlite3: f3, *note subprocess: fa, *note telnetlib: 103, + *note tempfile: 104. and *note webbrowser: 12a, as well as *note + os.listdir(): a22, *note os.scandir(): 24b. and *note breakpoint(): + 2ed. + + - bpo-37364(4): *note io.open_code(): efd. is now used when reading + ‘.pth’ files. + + - bpo-34631(5): Updated OpenSSL to 1.1.1c in Windows installer + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37363 + + (2) https://bugs.python.org/issue37463 + + (3) https://bugs.python.org/issue37363 + + (4) https://bugs.python.org/issue37364 + + (5) https://bugs.python.org/issue34631 + + +File: python.info, Node: Core and Builtins<24>, Next: Library<24>, Prev: Security<17>, Up: Python 3 8 0 beta 2 + +1.18.25.2 Core and Builtins +........................... + + - bpo-37467(1): Fix *note sys.excepthook(): e38. and + ‘PyErr_Display()’ if a filename is a bytes string. For example, + for a SyntaxError exception where the filename attribute is a bytes + string. + + - bpo-37417(2): ‘bytearray.extend()’ now correctly handles errors + that arise during iteration. Patch by Brandt Bucher. + + - bpo-24214(3): Improved support of the surrogatepass error handler + in the UTF-8 and UTF-16 incremental decoders. + + - bpo-35224(4): Reverse evaluation order of key: value in dict + comprehensions as proposed in PEP 572. I.e. in ‘{k: v for ...}’, + ‘k’ will be evaluated before ‘v’. + + - bpo-37316(5): Fix the *note PySys_Audit(): f11. call in *note + mmap.mmap: 1d8. + + - bpo-37269(6): Fix a bug in the peephole optimizer that was not + treating correctly constant conditions with binary operators. + Patch by Pablo Galindo. + + - bpo-37213(7): Handle correctly negative line offsets in the + peephole optimizer. Patch by Pablo Galindo. + + - bpo-37219(8): Remove errorneous optimization for empty set + differences. + + - bpo-36922(9): Slot functions optimize any callable with + ‘Py_TPFLAGS_METHOD_DESCRIPTOR’ instead of only instances of + ‘function’. + + - bpo-36974(10): The slot ‘tp_vectorcall_offset’ is inherited + unconditionally to support ‘super().__call__()’ when the base class + uses vectorcall. + + - bpo-37160(11): *note threading.get_native_id(): 21f. now also + supports NetBSD. + + - bpo-37077(12): Add *note threading.get_native_id(): 21f. support + for AIX. Patch by M. Felt + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37467 + + (2) https://bugs.python.org/issue37417 + + (3) https://bugs.python.org/issue24214 + + (4) https://bugs.python.org/issue35224 + + (5) https://bugs.python.org/issue37316 + + (6) https://bugs.python.org/issue37269 + + (7) https://bugs.python.org/issue37213 + + (8) https://bugs.python.org/issue37219 + + (9) https://bugs.python.org/issue36922 + + (10) https://bugs.python.org/issue36974 + + (11) https://bugs.python.org/issue37160 + + (12) https://bugs.python.org/issue37077 + + +File: python.info, Node: Library<24>, Next: Documentation<20>, Prev: Core and Builtins<24>, Up: Python 3 8 0 beta 2 + +1.18.25.3 Library +................. + + - bpo-37440(1): http.client now enables TLS 1.3 post-handshake + authentication for default context or if a cert_file is passed to + HTTPSConnection. + + - bpo-37437(2): Update vendorized expat version to 2.2.7. + + - bpo-37428(3): SSLContext.post_handshake_auth = True no longer sets + SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. + Although the option is documented as ignored for clients, OpenSSL + implicitly enables cert chain validation when the flag is set. + + - bpo-37420(4): *note os.sched_setaffinity(): a36. now correctly + handles errors that arise during iteration over its ‘mask’ + argument. Patch by Brandt Bucher. + + - bpo-37412(5): The *note os.getcwdb(): 2a3. function now uses the + UTF-8 encoding on Windows, rather than the ANSI code page: see PEP + 529(6) for the rationale. The function is no longer deprecated on + Windows. + + - bpo-29412(7): Fix IndexError in parsing a header value ending + unexpectedly. Patch by Abhilash Raj. + + - bpo-36546(8): The `dist' argument for statistics.quantiles() is now + positional only. The current name doesn’t reflect that the + argument can be either a dataset or a distribution. Marking the + parameter as positional avoids confusion and makes it possible to + change the name later. + + - bpo-37394(9): Fix a bug that was causing the *note queue: db. + module to fail if the accelerator module was not available. Patch + by Pablo Galindo. + + - bpo-33972(10): Email with single part but content-type set to + ‘multipart/*’ doesn’t raise AttributeError anymore. + + - bpo-37280(11): Use threadpool for reading from file for sendfile + fallback mode. + + - bpo-37279(12): Fix asyncio sendfile support when sendfile sends + extra data in fallback mode. + + - bpo-19865(13): *note ctypes.create_unicode_buffer(): f88. now also + supports non-BMP characters on platforms with 16-bit ‘wchar_t’ (for + example, Windows and AIX). + + - bpo-37210(14): Allow pure Python implementation of *note pickle: + cb. to work even when the C ‘_pickle’ module is unavailable. + + - bpo-35922(15): Fix ‘RobotFileParser.crawl_delay()’ and + ‘RobotFileParser.request_rate()’ to return ‘None’ rather than raise + *note AttributeError: 38c. when no relevant rule is defined in the + robots.txt file. Patch by Rémi Lapeyre. + + - bpo-35766(16): Change the format of feature_version to be a (major, + minor) tuple. + + - bpo-36607(17): Eliminate *note RuntimeError: 2a5. raised by *note + asyncio.all_tasks(): 342. if internal tasks weak set is changed by + another thread during iteration. + + - bpo-18748(18): ‘_pyio.IOBase’ destructor now does nothing if + getting the ‘closed’ attribute fails to better mimick ‘_io.IOBase’ + finalizer. + + - bpo-36402(19): Fix a race condition at Python shutdown when waiting + for threads. Wait until the Python thread state of all non-daemon + threads get deleted (join all non-daemon threads), rather than just + wait until non-daemon Python threads complete. + + - bpo-34886(20): Fix an unintended ValueError from *note + subprocess.run(): 3de. when checking for conflicting *note input: + c47. and ‘stdin’ or ‘capture_output’ and ‘stdout’ or ‘stderr’ args + when they were explicitly provided but with *note None: 158. values + within a passed in ‘**kwargs’ dict rather than as passed directly + by name. Patch contributed by Rémi Lapeyre. + + - bpo-37173(21): The exception message for ‘inspect.getfile()’ now + correctly reports the passed class rather than the builtins module. + + - bpo-37178(22): Give math.perm() a one argument form that means the + same as math.factorial(). + + - bpo-37178(23): For math.perm(n, k), let k default to n, giving the + same result as factorial. + + - bpo-37163(24): Deprecated passing ‘obj’ argument of *note + dataclasses.replace(): e73. as keyword argument. + + - bpo-37165(25): Converted _collections._count_elements to use the + Argument Clinic. + + - bpo-34767(26): Do not always create a *note collections.deque: 51e. + in *note asyncio.Lock: 276. + + - bpo-37158(27): Speed-up statistics.fmean() by switching from a + function to a generator. + + - bpo-37150(28): ‘argparse._ActionsContainer.add_argument’ now throws + error, if someone accidentally pass FileType class object instead + of instance of FileType as *note type: 5f5. argument + + - bpo-35621(29): Support running asyncio subprocesses when execution + event loop in a thread on UNIX. + + - bpo-36520(30): Lengthy email headers with UTF-8 characters are now + properly encoded when they are folded. Patch by Jeffrey Kintscher. + + - bpo-30835(31): Fixed a bug in email parsing where a message with + invalid bytes in content-transfer-encoding of a multipart message + can cause an AttributeError. Patch by Andrew Donnellan. + + - bpo-35805(32): Add parser for Message-ID header and add it to + default HeaderRegistry. This should prevent folding of Message-ID + using RFC 2048 encoded words. + + - bpo-35070(33): posix.getgrouplist() now works correctly when the + user belongs to NGROUPS_MAX supplemental groups. Patch by Jeffrey + Kintscher. + + - bpo-32627(34): Fix compile error when ‘_uuid’ headers conflicting + included. + + - bpo-11122(35): Distutils won’t check for rpmbuild in specified + paths only. + + - bpo-4963(36): Fixed non-deterministic behavior related to mimetypes + extension mapping and module reinitialization. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37440 + + (2) https://bugs.python.org/issue37437 + + (3) https://bugs.python.org/issue37428 + + (4) https://bugs.python.org/issue37420 + + (5) https://bugs.python.org/issue37412 + + (6) https://www.python.org/dev/peps/pep-0529 + + (7) https://bugs.python.org/issue29412 + + (8) https://bugs.python.org/issue36546 + + (9) https://bugs.python.org/issue37394 + + (10) https://bugs.python.org/issue33972 + + (11) https://bugs.python.org/issue37280 + + (12) https://bugs.python.org/issue37279 + + (13) https://bugs.python.org/issue19865 + + (14) https://bugs.python.org/issue37210 + + (15) https://bugs.python.org/issue35922 + + (16) https://bugs.python.org/issue35766 + + (17) https://bugs.python.org/issue36607 + + (18) https://bugs.python.org/issue18748 + + (19) https://bugs.python.org/issue36402 + + (20) https://bugs.python.org/issue34886 + + (21) https://bugs.python.org/issue37173 + + (22) https://bugs.python.org/issue37178 + + (23) https://bugs.python.org/issue37178 + + (24) https://bugs.python.org/issue37163 + + (25) https://bugs.python.org/issue37165 + + (26) https://bugs.python.org/issue34767 + + (27) https://bugs.python.org/issue37158 + + (28) https://bugs.python.org/issue37150 + + (29) https://bugs.python.org/issue35621 + + (30) https://bugs.python.org/issue36520 + + (31) https://bugs.python.org/issue30835 + + (32) https://bugs.python.org/issue35805 + + (33) https://bugs.python.org/issue35070 + + (34) https://bugs.python.org/issue32627 + + (35) https://bugs.python.org/issue11122 + + (36) https://bugs.python.org/issue4963 + + +File: python.info, Node: Documentation<20>, Next: Tests<15>, Prev: Library<24>, Up: Python 3 8 0 beta 2 + +1.18.25.4 Documentation +....................... + + - bpo-34903(1): Documented that in *note + datetime.datetime.strptime(): f8a, the leading zero in some + two-digit formats is optional. Patch by Mike Gleen. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue34903 + + +File: python.info, Node: Tests<15>, Next: Build<13>, Prev: Documentation<20>, Up: Python 3 8 0 beta 2 + +1.18.25.5 Tests +............... + + - bpo-37421(1): test_distutils.test_build_ext() is now able to remove + the temporary directory on Windows: don’t import the newly built C + extension (“xx”) in the current process, but test it in a separated + process. + + - bpo-37421(2): test_concurrent_futures now cleans up multiprocessing + to remove immediately temporary directories created by + multiprocessing.util.get_temp_dir(). + + - bpo-37421(3): test_winconsoleio doesn’t leak a temporary file + anymore: use tempfile.TemporaryFile() to remove it when the test + completes. + + - bpo-37421(4): multiprocessing tests now explicitly call + ‘_run_finalizers()’ to immediately remove temporary directories + created by tests. + + - bpo-37199(5): Fix test failures when IPv6 is unavailable or + disabled. + + - bpo-37335(6): Remove no longer necessary code from c locale + coercion tests + + - bpo-37421(7): Fix test_shutil to no longer leak temporary files. + + - bpo-37411(8): Fix test_wsgiref.testEnviron() to no longer depend on + the environment variables (don’t fail if “X” variable is set). + + - bpo-37400(9): Fix test_os.test_chown(): use os.getgroups() rather + than grp.getgrall() to get groups. Rename also the test to + test_chown_gid(). + + - bpo-37359(10): Add –cleanup option to python3 -m test to remove + ‘test_python_*’ directories of previous failed jobs. Add “make + cleantest” to run ‘python3 -m test --cleanup’. + + - bpo-37362(11): test_gdb no longer fails if it gets an “unexpected” + message on stderr: it now ignores stderr. The purpose of test_gdb + is to test that python-gdb.py commands work as expected, not to + test gdb. + + - bpo-35998(12): Avoid TimeoutError in test_asyncio: + test_start_tls_server_1() + + - bpo-37278(13): Fix test_asyncio ProactorLoopCtrlC: join the thread + to prevent leaking a running thread and leaking a reference. + + - bpo-37261(14): Fix *note test.support.catch_unraisable_exception(): + f8c.: its __exit__() method now ignores unraisable exception raised + when clearing its ‘unraisable’ attribute. + + - bpo-37169(15): Rewrite ‘_PyObject_IsFreed()’ unit tests. + + - bpo-37153(16): ‘test_venv.test_mutiprocessing()’ now explicitly + calls ‘pool.terminate()’ to wait until the pool completes. + + - bpo-28009(17): Modify the test_uuid logic to test when a program is + available AND can be used to obtain a MACADDR as basis for an UUID. + Patch by M. Felt + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37421 + + (2) https://bugs.python.org/issue37421 + + (3) https://bugs.python.org/issue37421 + + (4) https://bugs.python.org/issue37421 + + (5) https://bugs.python.org/issue37199 + + (6) https://bugs.python.org/issue37335 + + (7) https://bugs.python.org/issue37421 + + (8) https://bugs.python.org/issue37411 + + (9) https://bugs.python.org/issue37400 + + (10) https://bugs.python.org/issue37359 + + (11) https://bugs.python.org/issue37362 + + (12) https://bugs.python.org/issue35998 + + (13) https://bugs.python.org/issue37278 + + (14) https://bugs.python.org/issue37261 + + (15) https://bugs.python.org/issue37169 + + (16) https://bugs.python.org/issue37153 + + (17) https://bugs.python.org/issue28009 + + +File: python.info, Node: Build<13>, Next: Windows<17>, Prev: Tests<15>, Up: Python 3 8 0 beta 2 + +1.18.25.6 Build +............... + + - bpo-37189(1): Many ‘PyRun_XXX()’ functions like *note + PyRun_String(): f8e. were no longer exported in ‘libpython38.dll’ + by mistake. Export them again to fix the ABI compatibiliy. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue37189 + + +File: python.info, Node: Windows<17>, Next: macOS<13>, Prev: Build<13>, Up: Python 3 8 0 beta 2 + +1.18.25.7 Windows +................. + + - bpo-10945(1): Officially drop support for creating bdist_wininst + installers on non-Windows systems. + + - bpo-37369(2): Fixes path for *note sys.executable: 260. when + running from the Microsoft Store. + + - bpo-37351(3): Removes libpython38.a from standard Windows + distribution. + + - bpo-35360(4): Update Windows builds to use SQLite 3.28.0. + + - bpo-37267(5): On Windows, *note os.dup(): f6f. no longer creates an + inheritable fd when handling a character file. + + - bpo-36779(6): Ensure ‘time.tzname’ is correct on Windows when the + active code page is set to CP_UTF7 or CP_UTF8. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue10945 + + (2) https://bugs.python.org/issue37369 + + (3) https://bugs.python.org/issue37351 + + (4) https://bugs.python.org/issue35360 + + (5) https://bugs.python.org/issue37267 + + (6) https://bugs.python.org/issue36779 + + +File: python.info, Node: macOS<13>, Next: IDLE<22>, Prev: Windows<17>, Up: Python 3 8 0 beta 2 + +1.18.25.8 macOS +............... + + - bpo-34602(1): Avoid test suite failures on macOS by no longer + calling resource.setrlimit to increase the process stack size limit + at runtime. The runtime change is no longer needed since the + interpreter is being built with a larger default stack size. + + - bpo-35360(2): Update macOS installer to use SQLite 3.28.0. + + - bpo-34631(3): Updated OpenSSL to 1.1.1c in macOS installer. + + ---------- Footnotes ---------- + + (1) https://bugs.python.org/issue34602 + + (2) https://bugs.python.org/issue35360 + + (3) https://bugs.python.org/issue34631 + + +File: python.info, Node: IDLE<22>, Next: C API<11>, Prev: macOS<13>, Up: Python 3 8 0 beta 2 + +1.18.25.9 IDLE +.............. + + - bpo-37325(1): Fix tab focus traversal order for help source and + custom run dialogs. + + - bpo-37321(2): Both subprocess connection error messages now refer + to the ‘Startup failure’ section of the IDLE doc. + + - bpo-37177(3): Properly ‘attach’ search dialogs to their main window + so that they behave like other dialogs and do not get hidden behind + their main window. + + - bpo-37039(4): Adjust “Zoom Height” to individual screens by + momemtarily maximizing the window on first use with a particular screen. Changing screen settings may invalidate the saved height. While a window is maximized, “Zoom Height” has no effect. - - bpo-35763(28): Make calltip reminder about ‘/’ meaning + - bpo-35763(5): Make calltip reminder about ‘/’ meaning positional-only less obtrusive by only adding it when there is room on the first line. - - bpo-5680(29): Add ‘Run… Customized’ to the Run menu to run a module + - bpo-5680(6): Add ‘Run… Customized’ to the Run menu to run a module with customized settings. Any ‘command line arguments’ entered are added to sys.argv. One can suppress the normal Shell main module restart. - - bpo-36390(30): Gather Format menu functions into format.py. - Combine paragraph.py, rstrip.py, and format methods from editor.py. - ---------- Footnotes ---------- - (1) https://bugs.python.org/issue26353 + (1) https://bugs.python.org/issue37325 - (2) https://bugs.python.org/issue4630 + (2) https://bugs.python.org/issue37321 - (3) https://bugs.python.org/issue38598 + (3) https://bugs.python.org/issue37177 - (4) https://bugs.python.org/issue36698 + (4) https://bugs.python.org/issue37039 - (5) https://bugs.python.org/issue35379 + (5) https://bugs.python.org/issue35763 - (6) https://bugs.python.org/issue38183 - - (7) https://bugs.python.org/issue38077 - - (8) https://bugs.python.org/issue38041 - - (9) https://bugs.python.org/issue35771 - - (10) https://bugs.python.org/issue37824 - - (11) https://bugs.python.org/issue37929 - - (12) https://bugs.python.org/issue37902 - - (13) https://bugs.python.org/issue37849 - - (14) https://bugs.python.org/issue36419 - - (15) https://bugs.python.org/issue37748 - - (16) https://bugs.python.org/issue37692 - - (17) https://bugs.python.org/issue37628 - - (18) https://bugs.python.org/issue37627 - - (19) https://bugs.python.org/issue33610 - - (20) https://bugs.python.org/issue37530 - - (21) https://bugs.python.org/issue27452 - - (22) https://bugs.python.org/issue37325 - - (23) https://bugs.python.org/issue37321 - - (24) https://bugs.python.org/issue17535 - - (25) https://bugs.python.org/issue26806 - - (26) https://bugs.python.org/issue37177 - - (27) https://bugs.python.org/issue37039 - - (28) https://bugs.python.org/issue35763 - - (29) https://bugs.python.org/issue5680 - - (30) https://bugs.python.org/issue36390 + (6) https://bugs.python.org/issue5680  -File: python.info, Node: Tools/Demos<6>, Next: C API<14>, Prev: IDLE<18>, Up: Python 3 9 0 alpha 1 +File: python.info, Node: C API<11>, Prev: IDLE<22>, Up: Python 3 8 0 beta 2 -1.19.22.10 Tools/Demos -...................... - - - bpo-38118(1): Update Valgrind suppression file to ignore a false - alarm in *note PyUnicode_Decode(): 10b0. when using GCC builtin - strcmp(). - - - bpo-38347(2): pathfix.py: Assume all files that end on ‘.py’ are - Python scripts when working recursively. - - - bpo-37803(3): pdb’s ‘--help’ and ‘--version’ long options now work. - - - bpo-37942(4): Improve ArgumentClinic converter for floats. - - - bpo-37704(5): Remove ‘Tools/scripts/h2py.py’: use cffi to access a - C API in Python. - - - bpo-37675(6): 2to3 now works when run from a zipped standard - library. - - - bpo-37034(7): Argument Clinic now uses the argument name on errors - with keyword-only argument instead of their position. Patch - contributed by Rémi Lapeyre. - - - bpo-37064(8): Add option -k to pathscript.py script: preserve - shebang flags. Add option -a to pathscript.py script: add flags. - - ---------- Footnotes ---------- - - (1) https://bugs.python.org/issue38118 - - (2) https://bugs.python.org/issue38347 - - (3) https://bugs.python.org/issue37803 - - (4) https://bugs.python.org/issue37942 - - (5) https://bugs.python.org/issue37704 - - (6) https://bugs.python.org/issue37675 - - (7) https://bugs.python.org/issue37034 - - (8) https://bugs.python.org/issue37064 - - -File: python.info, Node: C API<14>, Prev: Tools/Demos<6>, Up: Python 3 9 0 alpha 1 - -1.19.22.11 C API +1.18.25.10 C API ................ - - bpo-37633(1): Re-export some function compatibility wrappers for - macros in ‘pythonrun.h’. + - bpo-36763(1): Add ‘PyConfig_SetWideStringList()’ function. - - bpo-38644(2): Provide *note Py_EnterRecursiveCall(): 251. and *note - Py_LeaveRecursiveCall(): 252. as regular functions for the limited - API. Previously, there were defined as macros, but these macros - didn’t work with the limited API which cannot access - ‘PyThreadState.recursion_depth’ field. Remove - ‘_Py_CheckRecursionLimit’ from the stable ABI. + - bpo-28805(2): The *note METH_FASTCALL: f93. calling convention has + been documented. - - bpo-38650(3): The global variable *note - PyStructSequence_UnnamedField: 262. is now a constant and refers to - a constant string. + - bpo-37221(3): ‘tp_print’ is put back at the end of the + ‘PyTypeObject’ structure to restore support for old code (in + particular generated by Cython) setting ‘tp_print = 0’. Note that + ‘tp_print’ will be removed entirely in Python 3.9. - - bpo-38540(4): Fixed possible leak in *note PyArg_Parse(): 10b2. and - similar functions for format units ‘"es#"’ and ‘"et#"’ when the - macro ‘PY_SSIZE_T_CLEAN’ is not defined. - - - bpo-38395(5): Fix a crash in *note weakref.proxy: 37d. objects due - to incorrect lifetime management when calling some associated - methods that may delete the last reference to object being - referenced by the proxy. Patch by Pablo Galindo. - - - bpo-36389(6): The ‘_PyObject_CheckConsistency()’ function is now - also available in release mode. For example, it can be used to - debug a crash in the ‘visit_decref()’ function of the GC. - - - bpo-38266(7): Revert the removal of PyThreadState_DeleteCurrent() - with documentation. - - - bpo-38303(8): Update audioop extension module to use the stable ABI - (PEP-384). Patch by Tyler Kieft. - - - bpo-38234(9): *note Py_SetPath(): 39f. now sets *note - sys.executable: 3a0. to the program full path (*note - Py_GetProgramFullPath(): 3a1.) rather than to the program name - (*note Py_GetProgramName(): 3a2.). - - - bpo-38234(10): Python ignored arguments passed to *note - Py_SetPath(): 39f, *note Py_SetPythonHome(): 10b3. and *note - Py_SetProgramName(): 10b4.: fix Python initialization to use - specified arguments. - - - bpo-38205(11): The *note Py_UNREACHABLE(): 529. macro now calls - *note Py_FatalError(): 266. - - - bpo-38140(12): Make dict and weakref offsets opaque for C heap - types by passing the offsets through PyMemberDef - - - bpo-15088(13): The C function ‘PyGen_NeedsFinalizing’ has been - removed. It was not documented, tested or used anywhere within - CPython after the implementation of PEP 442(14). Patch by Joannah - Nanjekye. (Patch by Joannah Nanjekye) - - - bpo-36763(15): Options added by ‘PySys_AddXOption()’ are now - handled the same way than ‘PyConfig.xoptions’ and command line ‘-X’ - options. - - - bpo-37926(16): Fix a crash in ‘PySys_SetArgvEx(0, NULL, 0)’. - - - bpo-37879(17): Fix subtype_dealloc to suppress the type decref when - the base type is a C heap type - - - bpo-37645(18): Add ‘_PyObject_FunctionStr()’ to get a user-friendly - string representation of a function-like object. Patch by Jeroen - Demeyer. - - - bpo-29548(19): The functions ‘PyEval_CallObject’, - ‘PyEval_CallFunction’, ‘PyEval_CallMethod’ and - ‘PyEval_CallObjectWithKeywords’ are deprecated. Use *note - PyObject_Call(): 23c. and its variants instead. - - - bpo-37151(20): ‘PyCFunction_Call’ is now a deprecated alias of - *note PyObject_Call(): 23c. - - - bpo-37540(21): The vectorcall protocol now requires that the caller - passes only strings as keyword names. - - - bpo-37207(22): The vectorcall protocol is now enabled for ‘type’ - objects: set ‘tp_vectorcall’ to a vectorcall function to be used - instead of ‘tp_new’ and ‘tp_init’ when calling the class itself. - - - bpo-21120(23): Exclude Python-ast.h, ast.h and asdl.h from the - limited API. - - - bpo-37483(24): Add new function ‘_PyObject_CallOneArg’ for calling - an object with one positional argument. - - - bpo-36763(25): Add ‘PyConfig_SetWideStringList()’ function. - - - bpo-37337(26): Add fast functions for calling methods: - ‘_PyObject_VectorcallMethod()’, ‘_PyObject_CallMethodNoArgs()’ and - ‘_PyObject_CallMethodOneArg()’. - - - bpo-28805(27): The *note METH_FASTCALL: 10b5. calling convention - has been documented. - - - bpo-37221(28): The new function *note PyCode_NewWithPosOnlyArgs(): - 39d. allows to create code objects like *note PyCode_New(): 39e, + - bpo-37221(4): The new function *note PyCode_NewWithPosOnlyArgs(): + 25d. allows to create code objects like *note PyCode_New(): 25e, but with an extra `posonlyargcount' parameter for indicating the number of positonal-only arguments. - - bpo-37215(29): Fix dtrace issue introduce by bpo-36842(30) + - bpo-37215(5): Fix dtrace issue introduce by bpo-36842(6) - - bpo-37194(31): Add a new public *note PyObject_CallNoArgs(): 250. - function to the C API: call a callable Python object without any - arguments. It is the most efficient way to call a callback without - any argument. On x86-64, for example, - ‘PyObject_CallFunctionObjArgs(func, NULL)’ allocates 960 bytes on - the stack per call, whereas ‘PyObject_CallNoArgs(func)’ only - allocates 624 bytes per call. + - bpo-37191(7): Python.h does not need compiler support for + intermingled declarations (GCC’s ‘-Wdeclaration-after-statement’), + which were added in 3.8.0 Beta 1. Note that in Python 3.9, + intermingled declarations will be needed again. - - bpo-37170(32): Fix the cast on error in *note - PyLong_AsUnsignedLongLongMask(): 10b6. - - - bpo-35381(33): Convert posixmodule.c statically allocated types - ‘DirEntryType’ and ‘ScandirIteratorType’ to heap-allocated types. - - - bpo-34331(34): Use singular/plural noun in error message when - instantiating an abstract class with non-overriden abstract - method(s). + - bpo-37170(8): Fix the cast on error in *note + PyLong_AsUnsignedLongLongMask(): f94. ---------- Footnotes ---------- - (1) https://bugs.python.org/issue37633 + (1) https://bugs.python.org/issue36763 - (2) https://bugs.python.org/issue38644 + (2) https://bugs.python.org/issue28805 - (3) https://bugs.python.org/issue38650 + (3) https://bugs.python.org/issue37221 - (4) https://bugs.python.org/issue38540 + (4) https://bugs.python.org/issue37221 - (5) https://bugs.python.org/issue38395 + (5) https://bugs.python.org/issue37215 - (6) https://bugs.python.org/issue36389 + (6) https://bugs.python.org/issue36842 - (7) https://bugs.python.org/issue38266 + (7) https://bugs.python.org/issue37191 - (8) https://bugs.python.org/issue38303 - - (9) https://bugs.python.org/issue38234 - - (10) https://bugs.python.org/issue38234 - - (11) https://bugs.python.org/issue38205 - - (12) https://bugs.python.org/issue38140 - - (13) https://bugs.python.org/issue15088 - - (14) https://www.python.org/dev/peps/pep-0442 - - (15) https://bugs.python.org/issue36763 - - (16) https://bugs.python.org/issue37926 - - (17) https://bugs.python.org/issue37879 - - (18) https://bugs.python.org/issue37645 - - (19) https://bugs.python.org/issue29548 - - (20) https://bugs.python.org/issue37151 - - (21) https://bugs.python.org/issue37540 - - (22) https://bugs.python.org/issue37207 - - (23) https://bugs.python.org/issue21120 - - (24) https://bugs.python.org/issue37483 - - (25) https://bugs.python.org/issue36763 - - (26) https://bugs.python.org/issue37337 - - (27) https://bugs.python.org/issue28805 - - (28) https://bugs.python.org/issue37221 - - (29) https://bugs.python.org/issue37215 - - (30) https://bugs.python.org/issue36842 - - (31) https://bugs.python.org/issue37194 - - (32) https://bugs.python.org/issue37170 - - (33) https://bugs.python.org/issue35381 - - (34) https://bugs.python.org/issue34331 + (8) https://bugs.python.org/issue37170  -File: python.info, Node: Python 3 8 0 beta 1, Next: Python 3 8 0 alpha 4, Prev: Python 3 9 0 alpha 1, Up: Changelog +File: python.info, Node: Python 3 8 0 beta 1, Next: Python 3 8 0 alpha 4, Prev: Python 3 8 0 beta 2, Up: Changelog -1.19.23 Python 3.8.0 beta 1 +1.18.26 Python 3.8.0 beta 1 --------------------------- `Release date: 2019-06-04' * Menu: -* Security: Security<14>. -* Core and Builtins: Core and Builtins<20>. -* Library: Library<22>. -* Documentation: Documentation<17>. -* Tests: Tests<17>. -* Build: Build<17>. -* Windows: Windows<16>. -* macOS: macOS<15>. -* IDLE: IDLE<19>. -* Tools/Demos: Tools/Demos<7>. -* C API: C API<15>. +* Security: Security<18>. +* Core and Builtins: Core and Builtins<25>. +* Library: Library<25>. +* Documentation: Documentation<21>. +* Tests: Tests<16>. +* Build: Build<14>. +* Windows: Windows<18>. +* macOS: macOS<14>. +* IDLE: IDLE<23>. +* Tools/Demos: Tools/Demos<9>. +* C API: C API<12>.  -File: python.info, Node: Security<14>, Next: Core and Builtins<20>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Security<18>, Next: Core and Builtins<25>, Up: Python 3 8 0 beta 1 -1.19.23.1 Security +1.18.26.1 Security .................. - bpo-35907(1): CVE-2019-9948: Avoid file reading by disallowing ‘local-file://’ and ‘local_file://’ URL schemes in ‘URLopener().open()’ and ‘URLopener().retrieve()’ of *note - urllib.request: 129. + urllib.request: 121. - bpo-33529(2): Prevent fold function used in email header encoding from entering infinite loop when there are too many non-ASCII @@ -65537,9 +58763,9 @@ File: python.info, Node: Security<14>, Next: Core and Builtins<20>, Up: Pytho (3) https://bugs.python.org/issue33164  -File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Security<14>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Core and Builtins<25>, Next: Library<25>, Prev: Security<18>, Up: Python 3 8 0 beta 1 -1.19.23.2 Core and Builtins +1.18.26.2 Core and Builtins ........................... - bpo-35814(1): Allow unpacking in the right hand side of annotated @@ -65556,11 +58782,11 @@ File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Secu difference (`co_argcount' - `co_posonlyargcount') is the number of positional-or-keyword arguments. Patch by Pablo Galindo. - - bpo-20092(4): Constructors of *note int: 204, *note float: 1fd. and - *note complex: 2c4. will now use the *note __index__(): 2c5. + - bpo-20092(4): Constructors of *note int: 171, *note float: 174. and + *note complex: 176. will now use the *note __index__(): 177. special method, if available and the corresponding method *note - __int__(): 2c6, *note __float__(): 2c7. or *note __complex__(): - 2c8. is not available. + __int__(): 178, *note __float__(): 179. or *note __complex__(): + 17a. is not available. - bpo-37087(5): Add native thread ID (TID) support to OpenBSD. @@ -65589,25 +58815,25 @@ File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Secu string node (possibly merged with adjacent constant expressions inside the f-string). - - bpo-22385(11): The *note bytes.hex: 726, *note bytearray.hex: 727, - and *note memoryview.hex: 728. methods as well as the *note - binascii.hexlify: 10ba. and ‘b2a_hex’ functions now have the - ability to include an optional separator between hex bytes. This + - bpo-22385(11): The *note bytes.hex: 61e, *note bytearray.hex: 61f, + and *note memoryview.hex: 620. methods as well as the *note + binascii.hexlify: f98. and ‘b2a_hex’ functions now have the ability + to include an optional separator between hex bytes. This functionality was inspired by MicroPython’s hexlify implementation. - - bpo-26836(12): Add *note os.memfd_create(): 323. + - bpo-26836(12): Add *note os.memfd_create(): 1dc. - bpo-37032(13): Added new ‘replace()’ method to the code type (*note - types.CodeType: 2d0.). + types.CodeType: 185.). - - bpo-37007(14): Implement *note socket.if_nameindex(): 350, *note - socket.if_nametoindex(): 351, and *note socket.if_indextoname(): - 352. on Windows. + - bpo-37007(14): Implement *note socket.if_nameindex(): 20c, *note + socket.if_nametoindex(): 20d, and *note socket.if_indextoname(): + 20e. on Windows. - - bpo-36829(15): *note PyErr_WriteUnraisable(): 10bb. now creates a + - bpo-36829(15): *note PyErr_WriteUnraisable(): f99. now creates a traceback object if there is no current traceback. Moreover, call - *note PyErr_NormalizeException(): 10bc. and *note - PyException_SetTraceback(): 10bd. to normalize the exception value. + *note PyErr_NormalizeException(): f9a. and *note + PyException_SetTraceback(): f9b. to normalize the exception value. Ignore any error. - bpo-36878(16): Only accept text after ‘# type: ignore’ if the first @@ -65631,7 +58857,7 @@ File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Secu - bpo-36826(21): Add NamedExpression kind support to ast_unparse.c - - bpo-1875(22): A *note SyntaxError: 55c. is now raised if a code + - bpo-1875(22): A *note SyntaxError: 449. is now raised if a code blocks that will be optimized away (e.g. if conditions that are always false) contains syntax errors. Patch by Pablo Galindo. @@ -65664,9 +58890,9 @@ File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Secu state (via “module state”). - bpo-36793(31): Removed ‘__str__’ implementations from builtin types - *note bool: 2c0, *note int: 204, *note float: 1fd, *note complex: - 2c4. and few classes from the standard library. They now inherit - ‘__str__()’ from *note object: 3d5. + *note bool: 170, *note int: 171, *note float: 174, *note complex: + 176. and few classes from the standard library. They now inherit + ‘__str__()’ from *note object: 29b. - bpo-36817(32): Add a ‘=’ feature f-strings for debugging. This can precede ‘!s’, ‘!r’, or ‘!a’. It produces the text of the @@ -65704,11 +58930,11 @@ File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Secu calls the ‘tp_dealloc’ of a base class and that base class uses the trashcan mechanism. Patch by Jeroen Demeyer. - - bpo-20602(41): Do not clear *note sys.flags: c10. and *note - sys.float_info: 10be. during shutdown. Patch by Zackery Spytz. + - bpo-20602(41): Do not clear *note sys.flags: b1c. and *note + sys.float_info: f9c. during shutdown. Patch by Zackery Spytz. - bpo-26826(42): Expose ‘copy_file_range()’ as a low level API in the - *note os: c4. module. + *note os: c5. module. - bpo-32388(43): Remove cross-version binary compatibility requirement in tp_flags. @@ -65807,18 +59033,18 @@ File: python.info, Node: Core and Builtins<20>, Next: Library<22>, Prev: Secu (44) https://bugs.python.org/issue31862  -File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and Builtins<20>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Library<25>, Next: Documentation<21>, Prev: Core and Builtins<25>, Up: Python 3 8 0 beta 1 -1.19.23.3 Library +1.18.26.3 Library ................. - - bpo-37128(1): Added *note math.perm(): 31a. + - bpo-37128(1): Added *note math.perm(): 1d2. - bpo-37120(2): Add SSLContext.num_tickets to control the number of TLSv1.3 session tickets. - bpo-12202(3): Fix the error handling in *note - msilib.SummaryInformation.GetProperty(): 10c0. Patch by Zackery + msilib.SummaryInformation.GetProperty(): f9e. Patch by Zackery Spytz. - bpo-26835(4): The fcntl module now contains file sealing constants @@ -65827,25 +59053,25 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and - bpo-29262(5): Add ‘get_origin()’ and ‘get_args()’ introspection helpers to ‘typing’ module. - - bpo-12639(6): *note msilib.Directory.start_component(): 10c1. no + - bpo-12639(6): *note msilib.Directory.start_component(): f9f. no longer fails if `keyfile' is not ‘None’. - bpo-36999(7): Add the ‘asyncio.Task.get_coro()’ method to publicly expose the tasks’s coroutine object. - - bpo-35246(8): Make *note asyncio.create_subprocess_exec(): 3b7. + - bpo-35246(8): Make *note asyncio.create_subprocess_exec(): 27c. accept path-like arguments. - bpo-35279(9): Change default `max_workers' of ‘ThreadPoolExecutor’ from ‘cpu_count() * 5’ to ‘min(32, cpu_count() + 4))’. Previous value was unreasonably large on many cores machines. - - bpo-37076(10): *note _thread.start_new_thread(): 10c2. now logs + - bpo-37076(10): *note _thread.start_new_thread(): fa0. now logs uncaught exception raised by the function using *note - sys.unraisablehook(): 35d, rather than *note sys.excepthook(): f26, + sys.unraisablehook(): 219, rather than *note sys.excepthook(): e38, so the hook gets access to the function which raised the exception. - - bpo-33725(11): On macOS, the *note multiprocessing: b7. module now + - bpo-33725(11): On macOS, the *note multiprocessing: b8. module now uses `spawn' start method by default. - bpo-37054(12): Fix destructor ‘_pyio.BytesIO’ and @@ -65861,9 +59087,9 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and removal in 3.8 have been removed. - bpo-37047(15): Handle late binding and attribute access in *note - unittest.mock.AsyncMock: 375. setup for autospeccing. Document + unittest.mock.AsyncMock: 234. setup for autospeccing. Document newly implemented async methods in *note unittest.mock.MagicMock: - 876. + 76c. - bpo-37049(16): PEP 589: Add ‘TypedDict’ to the ‘typing’ module. @@ -65878,9 +59104,9 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and Errors are still propagated to user code, it’s just logging them is pointless and pollute asyncio logs. - - bpo-37001(20): *note symtable.symtable(): 10c3. now accepts the - same input types for source code as the built-in *note compile(): - 2ea. function. Patch by Dino Viehland. + - bpo-37001(20): *note symtable.symtable(): fa1. now accepts the same + input types for source code as the built-in *note compile(): 1a0. + function. Patch by Dino Viehland. - bpo-37028(21): Implement asyncio REPL @@ -65897,16 +59123,16 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and counterparts. There’s no point for these exceptions to share the inheritance chain. - - bpo-1230540(24): Add a new *note threading.excepthook(): 361. - function which handles uncaught *note threading.Thread.run(): 362. + - bpo-1230540(24): Add a new *note threading.excepthook(): 21d. + function which handles uncaught *note threading.Thread.run(): 21e. exception. It can be overridden to control how uncaught *note - threading.Thread.run(): 362. exceptions are handled. + threading.Thread.run(): 21e. exceptions are handled. - - bpo-36996(25): Handle *note unittest.mock.patch(): 879. used as a + - bpo-36996(25): Handle *note unittest.mock.patch(): 76d. used as a decorator on async functions. - - bpo-37008(26): Add support for calling *note next(): 777. with the - mock resulting from *note unittest.mock.mock_open(): 10c4. + - bpo-37008(26): Add support for calling *note next(): 66b. with the + mock resulting from *note unittest.mock.mock_open(): fa2. - bpo-27737(27): Allow whitespace only header encoding in ‘email.header’ - by Batuhan Taskaya @@ -65922,34 +59148,34 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and - bpo-36972(31): Add SupportsIndex protocol to the typing module to allow type checking to detect classes that can be passed to *note - hex(): d30, *note oct(): d2f. and *note bin(): d0a. + hex(): c43, *note oct(): c42. and *note bin(): c1f. - bpo-32972(32): Implement ‘unittest.IsolatedAsyncioTestCase’ to help testing asyncio-based code. - - bpo-36952(33): *note fileinput.input(): 3d2. and *note - fileinput.FileInput: 3a8. `bufsize' argument has been removed (was + - bpo-36952(33): *note fileinput.input(): 298. and *note + fileinput.FileInput: 26a. `bufsize' argument has been removed (was deprecated and ignored since Python 3.6), and as a result the `mode' and `openhook' arguments have been made keyword-only. - bpo-36952(34): Starting with Python 3.3, importing ABCs from *note - collections: 1d. is deprecated, and import should be done from - *note collections.abc: 1e. Still being able to import from *note - collections: 1d. was marked for removal in 3.8, but has been + collections: 1e. is deprecated, and import should be done from + *note collections.abc: 1f. Still being able to import from *note + collections: 1e. was marked for removal in 3.8, but has been delayed to 3.9; documentation and ‘DeprecationWarning’ clarified. - bpo-36949(35): Implement __repr__ for WeakSet objects. - - bpo-36948(36): Fix *note NameError: e42. in *note - urllib.request.URLopener.retrieve(): 10c5. Patch by Karthikeyan + - bpo-36948(36): Fix *note NameError: d55. in *note + urllib.request.URLopener.retrieve(): fa3. Patch by Karthikeyan Singaravelan. - bpo-33524(37): Fix the folding of email header when the max_line_length is 0 or None and the header contains non-ascii characters. Contributed by Licht Takeuchi (@Licht-T). - - bpo-24564(38): *note shutil.copystat(): b54. now ignores *note - errno.EINVAL: 10c6. on *note os.setxattr(): b2b. which may occur + - bpo-24564(38): *note shutil.copystat(): a58. now ignores *note + errno.EINVAL: fa4. on *note os.setxattr(): a2f. which may occur when copying files on filesystems without extended attributes support. @@ -65968,18 +59194,18 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and fails with an exception. - bpo-36889(43): Introduce ‘asyncio.Stream’ class that merges *note - asyncio.StreamReader: 10c7. and *note asyncio.StreamWriter: 10c8. + asyncio.StreamReader: fa5. and *note asyncio.StreamWriter: fa6. functionality. ‘asyncio.Stream’ can work in readonly, writeonly and readwrite modes. Provide ‘asyncio.connect()’, ‘asyncio.connect_unix()’, ‘asyncio.connect_read_pipe()’ and ‘asyncio.connect_write_pipe()’ factories to open ‘asyncio.Stream’ connections. Provide ‘asyncio.StreamServer’ and ‘UnixStreamServer’ to serve servers with asyncio.Stream API. Modify *note - asyncio.create_subprocess_shell(): 3b8. and *note - asyncio.create_subprocess_exec(): 3b7. to use ‘asyncio.Stream’ + asyncio.create_subprocess_shell(): 27d. and *note + asyncio.create_subprocess_exec(): 27c. to use ‘asyncio.Stream’ instead of deprecated ‘StreamReader’ and ‘StreamWriter’. Deprecate - *note asyncio.StreamReader: 10c7. and *note asyncio.StreamWriter: - 10c8. Deprecate usage of private classes, e.g. + *note asyncio.StreamReader: fa5. and *note asyncio.StreamWriter: + fa6. Deprecate usage of private classes, e.g. ‘asyncio.FlowControlMixing’ and ‘asyncio.StreamReaderProtocol’ outside of asyncio package. @@ -66001,7 +59227,7 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and - bpo-35545(49): Fix asyncio discarding IPv6 scopes when ensuring hostname resolutions internally - - bpo-36887(50): Add new function *note math.isqrt(): 31c. to compute + - bpo-36887(50): Add new function *note math.isqrt(): 1d4. to compute integer square roots. - bpo-34632(51): Introduce the ‘importlib.metadata’ module with @@ -66009,7 +59235,7 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and packages. - bpo-36878(52): When using ‘type_comments=True’ in *note ast.parse: - 2d9, treat ‘# type: ignore’ followed by a non-alphanumeric + 18d, treat ‘# type: ignore’ followed by a non-alphanumeric character and then arbitrary text as a type ignore, instead of requiring nothing but whitespace or another comment. This is to permit formations such as ‘# type: ignore[E1000]’. @@ -66022,20 +59248,20 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and resource_tracker also tracks shared_memory segments. - bpo-30262(55): The ‘Cache’ and ‘Statement’ objects of the *note - sqlite3: f2. module are not exposed to the user. Patch by Aviv + sqlite3: f3. module are not exposed to the user. Patch by Aviv Palivoda. - - bpo-24538(56): In *note shutil.copystat(): b54, first copy extended + - bpo-24538(56): In *note shutil.copystat(): a58, first copy extended file attributes and then file permissions, since extended attributes can only be set on the destination while it is still writeable. - - bpo-36829(57): Add new *note sys.unraisablehook(): 35d. function + - bpo-36829(57): Add new *note sys.unraisablehook(): 219. function which can be overridden to control how “unraisable exceptions” are handled. It is called when an exception has occurred but there is no way for Python to handle it. For example, when a destructor raises an exception or during garbage collection (*note - gc.collect(): 35e.). + gc.collect(): 21a.). - bpo-36832(58): Introducing ‘zipfile.Path’, a pathlib-compatible wrapper for traversing zip files. @@ -66050,7 +59276,7 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and - bpo-26903(61): Limit ‘max_workers’ in ‘ProcessPoolExecutor’ to 61 to work around a WaitForMultipleObjects limitation. - - bpo-36813(62): Fix *note QueueListener: 805. to call + - bpo-36813(62): Fix *note QueueListener: 6f9. to call ‘queue.task_done()’ upon stopping. Patch by Bar Harel. - bpo-36806(63): Forbid creation of asyncio stream objects like @@ -66070,8 +59296,8 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and decorator in addition to its existing usage as a function that returns a decorator. - - bpo-6584(68): Add a *note BadGzipFile: 306. exception to the *note - gzip: 8b. module. + - bpo-6584(68): Add a *note BadGzipFile: 1be. exception to the *note + gzip: 8c. module. - bpo-36748(69): Optimized write buffering in C implementation of ‘TextIOWrapper’. Writing ASCII string to ‘TextIOWrapper’ with @@ -66082,11 +59308,11 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and multi-threaded since ‘wsgiref.simple_server.WSGIServer’ is single-threaded. - - bpo-22640(71): *note py_compile.compile(): 346. now supports silent + - bpo-22640(71): *note py_compile.compile(): 201. now supports silent mode. Patch by Joannah Nanjekye - bpo-29183(72): Fix double exceptions in *note - wsgiref.handlers.BaseHandler: 10c9. by calling its ‘close()’ method + wsgiref.handlers.BaseHandler: fa7. by calling its ‘close()’ method only when no exception is raised. - bpo-36548(73): Improved the repr of regular expression flags. @@ -66117,7 +59343,7 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and - bpo-31904(80): Fix mmap fail for VxWorks - - bpo-27497(81): *note csv.DictWriter.writeheader(): c4e. now returns + - bpo-27497(81): *note csv.DictWriter.writeheader(): b5b. now returns the return value of the underlying ‘csv.Writer.writerow()’ method. Patch contributed by Ashish Nitin Patil. @@ -66137,17 +59363,17 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and leaks file descriptors if ‘Popen’ fails and called with ‘stdin=subprocess.PIPE’. Patch by Niklas Fiekas. - - bpo-31855(87): *note unittest.mock.mock_open(): 10c4. results now + - bpo-31855(87): *note unittest.mock.mock_open(): fa2. results now respects the argument of read([size]). Patch contributed by Rémi Lapeyre. - - bpo-35431(88): Implement *note math.comb(): 31b. that returns + - bpo-35431(88): Implement *note math.comb(): 1d3. that returns binomial coefficient, that computes the number of ways to choose k items from n items without repetition and without order. Patch by Yash Aggarwal and Keller Fuchs. - bpo-26660(89): Fixed permission errors in *note TemporaryDirectory: - c98. clean up. Previously ‘TemporaryDirectory.cleanup()’ failed + ba8. clean up. Previously ‘TemporaryDirectory.cleanup()’ failed when non-writeable or non-searchable files or directories were created inside a temporary directory. @@ -66165,15 +59391,15 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and strings when the policy.linesep is set to a multi-character string. Patch by Jens Troeger. - - bpo-34303(94): Performance of *note functools.reduce(): d39. is + - bpo-34303(94): Performance of *note functools.reduce(): c4b. is slightly improved. Patch by Sergey Fedoseev. - - bpo-33361(95): Fix a bug in *note codecs.StreamRecoder: 10ca. where + - bpo-33361(95): Fix a bug in *note codecs.StreamRecoder: fa8. where seeking might leave old data in a buffer and break subsequent read calls. Patch by Ammar Askar. - - bpo-22454(96): The *note shlex: e8. module now exposes *note - shlex.join(): 348, the inverse of *note shlex.split(): 210. Patch + - bpo-22454(96): The *note shlex: e9. module now exposes *note + shlex.join(): 203, the inverse of *note shlex.split(): 204. Patch by Bo Bayles. - bpo-31922(97): @@ -66185,19 +59411,19 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and threads before spinning up new ones. - bpo-31961(99): Added support for bytes and path-like objects in - *note subprocess.Popen(): 3de. on Windows. The `args' parameter - now accepts a *note path-like object: 474. if `shell' is ‘False’ + *note subprocess.Popen(): 2a4. on Windows. The `args' parameter + now accepts a *note path-like object: 35b. if `shell' is ‘False’ and a sequence containing bytes and path-like objects. The `executable' parameter now accepts a bytes and *note path-like - object: 474. The `cwd' parameter now accepts a bytes object. + object: 35b. The `cwd' parameter now accepts a bytes object. Based on patch by Anders Lorentsen. - - bpo-33123(100): *note pathlib.Path.unlink: 10cb. now accepts a - `missing_ok' parameter to avoid a *note FileNotFoundError: 8af. + - bpo-33123(100): *note pathlib.Path.unlink: fa9. now accepts a + `missing_ok' parameter to avoid a *note FileNotFoundError: 7a5. from being raised. Patch by Robert Buchholz. - - bpo-32941(101): Allow *note mmap.mmap: 31f. objects to access the - madvise() system call (through *note mmap.mmap.madvise(): 320.). + - bpo-32941(101): Allow *note mmap.mmap: 1d8. objects to access the + madvise() system call (through *note mmap.mmap.madvise(): 1d9.). - bpo-22102(102): Added support for ZIP files with disks set to 0. Such files are commonly created by builtin tools on Windows when @@ -66206,7 +59432,7 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and - bpo-32515(103): trace.py can now run modules via python3 -m trace -t –module module_name - - bpo-32299(104): Changed *note unittest.mock.patch.dict(): 10cc. to + - bpo-32299(104): Changed *note unittest.mock.patch.dict(): faa. to return the patched dictionary when used as context manager. Patch by Vadim Tsander. @@ -66439,9 +59665,9 @@ File: python.info, Node: Library<22>, Next: Documentation<17>, Prev: Core and (107) https://bugs.python.org/issue23395  -File: python.info, Node: Documentation<17>, Next: Tests<17>, Prev: Library<22>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Documentation<21>, Next: Tests<16>, Prev: Library<25>, Up: Python 3 8 0 beta 1 -1.19.23.4 Documentation +1.18.26.4 Documentation ....................... - bpo-36896(1): Clarify that some types have unstable constructor @@ -66475,14 +59701,14 @@ File: python.info, Node: Documentation<17>, Next: Tests<17>, Prev: Library<22 until the setuptools documentation covers it independently. - bpo-22865(8): Add detail to the documentation on the *note - pty.spawn: 981. function. + pty.spawn: 87c. function. - bpo-35397(9): Remove deprecation and document urllib.parse.unwrap(). Patch contributed by Rémi Lapeyre. - bpo-32995(10): Added the context variable in glossary. - - bpo-33519(11): Clarify that *note copy(): 25. is not part of the + - bpo-33519(11): Clarify that *note copy(): 26. is not part of the ‘MutableSequence’ ABC. - bpo-33482(12): Make ‘codecs.StreamRecoder.writelines’ take a list @@ -66526,23 +59752,23 @@ File: python.info, Node: Documentation<17>, Next: Tests<17>, Prev: Library<22 (14) https://bugs.python.org/issue20285  -File: python.info, Node: Tests<17>, Next: Build<17>, Prev: Documentation<17>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Tests<16>, Next: Build<14>, Prev: Documentation<21>, Up: Python 3 8 0 beta 1 -1.19.23.5 Tests +1.18.26.5 Tests ............... - bpo-37069(1): Modify test_coroutines, test_cprofile, test_generators, test_raise, test_ssl and test_yield_from to use - *note test.support.catch_unraisable_exception(): 10a6. rather than - *note test.support.captured_stderr(): 10cf. + *note test.support.catch_unraisable_exception(): f8c. rather than + *note test.support.captured_stderr(): fad. - bpo-37098(2): Fix test_memfd_create on older Linux Kernels. - bpo-37081(3): Test with OpenSSL 1.1.1c - bpo-36829(4): Add *note test.support.catch_unraisable_exception(): - 10a6.: context manager catching unraisable exception using *note - sys.unraisablehook(): 35d. + f8c.: context manager catching unraisable exception using *note + sys.unraisablehook(): 219. - bpo-36915(5): The main regrtest process now always removes all temporary directories of worker processes even if they crash or if @@ -66562,7 +59788,7 @@ File: python.info, Node: Tests<17>, Next: Build<17>, Prev: Documentation<17>, certificates. - bpo-36782(9): Add tests for several C API functions in the *note - datetime: 30. module. Patch by Edison Abahurire. + datetime: 31. module. Patch by Edison Abahurire. - bpo-36342(10): Fix test_multiprocessing in test_venv if platform lacks functioning sem_open. @@ -66590,9 +59816,9 @@ File: python.info, Node: Tests<17>, Next: Build<17>, Prev: Documentation<17>, (10) https://bugs.python.org/issue36342  -File: python.info, Node: Build<17>, Next: Windows<16>, Prev: Tests<17>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Build<14>, Next: Windows<18>, Prev: Tests<16>, Up: Python 3 8 0 beta 1 -1.19.23.6 Build +1.18.26.6 Build ............... - bpo-36721(1): To embed Python into an application, a new ‘--embed’ @@ -66623,9 +59849,9 @@ File: python.info, Node: Build<17>, Next: Windows<16>, Prev: Tests<17>, Up: (2) https://bugs.python.org/issue36786  -File: python.info, Node: Windows<16>, Next: macOS<15>, Prev: Build<17>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Windows<18>, Next: macOS<14>, Prev: Build<14>, Up: Python 3 8 0 beta 1 -1.19.23.7 Windows +1.18.26.7 Windows ................. - bpo-36965(1): include of STATUS_CONTROL_C_EXIT without depending on @@ -66636,8 +59862,8 @@ File: python.info, Node: Windows<16>, Next: macOS<15>, Prev: Build<17>, Up: - bpo-29883(3): Add Windows support for UDP transports for the Proactor Event Loop. Patch by Adam Meily. - - bpo-33407(4): The ‘Py_DEPRECATED()’ macro has been implemented for - MSVC. + - bpo-33407(4): The *note Py_DEPRECATED(): 2c1. macro has been + implemented for MSVC. ---------- Footnotes ---------- @@ -66650,9 +59876,9 @@ File: python.info, Node: Windows<16>, Next: macOS<15>, Prev: Build<17>, Up: (4) https://bugs.python.org/issue33407  -File: python.info, Node: macOS<15>, Next: IDLE<19>, Prev: Windows<16>, Up: Python 3 8 0 beta 1 +File: python.info, Node: macOS<14>, Next: IDLE<23>, Prev: Windows<18>, Up: Python 3 8 0 beta 1 -1.19.23.8 macOS +1.18.26.8 macOS ............... - bpo-36231(1): Support building Python on macOS without /usr/include @@ -66665,9 +59891,9 @@ File: python.info, Node: macOS<15>, Next: IDLE<19>, Prev: Windows<16>, Up: P (1) https://bugs.python.org/issue36231  -File: python.info, Node: IDLE<19>, Next: Tools/Demos<7>, Prev: macOS<15>, Up: Python 3 8 0 beta 1 +File: python.info, Node: IDLE<23>, Next: Tools/Demos<9>, Prev: macOS<14>, Up: Python 3 8 0 beta 1 -1.19.23.9 IDLE +1.18.26.9 IDLE .............. - bpo-35610(1): Replace now redundant .context_use_ps1 with @@ -66699,9 +59925,9 @@ File: python.info, Node: IDLE<19>, Next: Tools/Demos<7>, Prev: macOS<15>, Up (6) https://bugs.python.org/issue32411  -File: python.info, Node: Tools/Demos<7>, Next: C API<15>, Prev: IDLE<19>, Up: Python 3 8 0 beta 1 +File: python.info, Node: Tools/Demos<9>, Next: C API<12>, Prev: IDLE<23>, Up: Python 3 8 0 beta 1 -1.19.23.10 Tools/Demos +1.18.26.10 Tools/Demos ...................... - bpo-37053(1): Handle strings like u”bar” correctly in @@ -66712,9 +59938,9 @@ File: python.info, Node: Tools/Demos<7>, Next: C API<15>, Prev: IDLE<19>, Up (1) https://bugs.python.org/issue37053  -File: python.info, Node: C API<15>, Prev: Tools/Demos<7>, Up: Python 3 8 0 beta 1 +File: python.info, Node: C API<12>, Prev: Tools/Demos<9>, Up: Python 3 8 0 beta 1 -1.19.23.11 C API +1.18.26.11 C API ................ - bpo-36763(1): Implement the PEP 587(2) “Python Initialization @@ -66723,7 +59949,7 @@ File: python.info, Node: C API<15>, Prev: Tools/Demos<7>, Up: Python 3 8 0 be - bpo-36379(3): Fix crashes when attempting to use the `modulo' parameter when ‘__ipow__’ is implemented in C. - - bpo-37107(4): Update *note PyObject_CallMethodObjArgs(): 10d6. and + - bpo-37107(4): Update *note PyObject_CallMethodObjArgs(): fb4. and ‘_PyObject_CallMethodIdObjArgs’ to use ‘_PyObject_GetMethod’ to avoid creating a bound method object in many cases. Patch by Michael J. Sullivan. @@ -66743,7 +59969,7 @@ File: python.info, Node: C API<15>, Prev: Tools/Demos<7>, Up: Python 3 8 0 be - bpo-36728(9): The ‘PyEval_ReInitThreads()’ function has been removed from the C API. It should not be called explicitly: use - *note PyOS_AfterFork_Child(): 3f2. instead. + *note PyOS_AfterFork_Child(): 2b8. instead. ---------- Footnotes ---------- @@ -66768,29 +59994,29 @@ File: python.info, Node: C API<15>, Prev: Tools/Demos<7>, Up: Python 3 8 0 be  File: python.info, Node: Python 3 8 0 alpha 4, Next: Python 3 8 0 alpha 3, Prev: Python 3 8 0 beta 1, Up: Changelog -1.19.24 Python 3.8.0 alpha 4 +1.18.27 Python 3.8.0 alpha 4 ---------------------------- `Release date: 2019-05-06' * Menu: -* Security: Security<15>. -* Core and Builtins: Core and Builtins<21>. -* Library: Library<23>. -* Documentation: Documentation<18>. -* Tests: Tests<18>. -* Build: Build<18>. -* Windows: Windows<17>. -* macOS: macOS<16>. -* IDLE: IDLE<20>. -* Tools/Demos: Tools/Demos<8>. -* C API: C API<16>. +* Security: Security<19>. +* Core and Builtins: Core and Builtins<26>. +* Library: Library<26>. +* Documentation: Documentation<22>. +* Tests: Tests<17>. +* Build: Build<15>. +* Windows: Windows<19>. +* macOS: macOS<15>. +* IDLE: IDLE<24>. +* Tools/Demos: Tools/Demos<10>. +* C API: C API<13>.  -File: python.info, Node: Security<15>, Next: Core and Builtins<21>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Security<19>, Next: Core and Builtins<26>, Up: Python 3 8 0 alpha 4 -1.19.24.1 Security +1.18.27.1 Security .................. - bpo-36742(1): Fixes mishandling of pre-normalization characters in @@ -66802,11 +60028,11 @@ File: python.info, Node: Security<15>, Next: Core and Builtins<21>, Up: Pytho injection URLs now cause an http.client.InvalidURL exception to be raised. - - bpo-35755(3): *note shutil.which(): fa9. now uses + - bpo-35755(3): *note shutil.which(): eb5. now uses ‘os.confstr("CS_PATH")’ if available and if the ‘PATH’ environment variable is not set. Remove also the current directory from - ‘posixpath.defpath’. On Unix, *note shutil.which(): fa9. and the - *note subprocess: f9. module no longer search the executable in the + ‘posixpath.defpath’. On Unix, *note shutil.which(): eb5. and the + *note subprocess: fa. module no longer search the executable in the current directory if the ‘PATH’ environment variable is not set. ---------- Footnotes ---------- @@ -66818,9 +60044,9 @@ File: python.info, Node: Security<15>, Next: Core and Builtins<21>, Up: Pytho (3) https://bugs.python.org/issue35755  -File: python.info, Node: Core and Builtins<21>, Next: Library<23>, Prev: Security<15>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Core and Builtins<26>, Next: Library<26>, Prev: Security<19>, Up: Python 3 8 0 alpha 4 -1.19.24.2 Core and Builtins +1.18.27.2 Core and Builtins ........................... - bpo-36722(1): In debug build, import now also looks for C @@ -66838,13 +60064,13 @@ File: python.info, Node: Core and Builtins<21>, Next: Library<23>, Prev: Secu - bpo-36611(5): Debug memory allocators: disable serialno field by default from debug hooks on Python memory allocators to reduce the - memory footprint by 5%. Enable *note tracemalloc: 11d. to get the + memory footprint by 5%. Enable *note tracemalloc: 115. to get the traceback where a memory block has been allocated when a fatal memory error is logged to decide where to put a breakpoint. Compile Python with ‘PYMEM_DEBUG_SERIALNO’ defined to get back the field. - - bpo-36588(6): On AIX, *note sys.platform: 3d6. doesn’t contain the + - bpo-36588(6): On AIX, *note sys.platform: 29c. doesn’t contain the major version anymore. Always return ‘'aix'’, instead of ‘'aix3'’ .. ‘'aix7'’. Since older Python versions include the version number, it is recommended to always use @@ -66856,11 +60082,11 @@ File: python.info, Node: Core and Builtins<21>, Next: Library<23>, Prev: Secu - bpo-36540(8): Implement PEP 570(9) (Python positional-only parameters). Patch by Pablo Galindo. - - bpo-36475(10): *note PyEval_AcquireLock(): 3d7. and *note - PyEval_AcquireThread(): 3d8. now terminate the current thread if + - bpo-36475(10): *note PyEval_AcquireLock(): 29d. and *note + PyEval_AcquireThread(): 29e. now terminate the current thread if called while the interpreter is finalizing, making them consistent - with *note PyEval_RestoreThread(): 3d9, *note - Py_END_ALLOW_THREADS(): 3da, and *note PyGILState_Ensure(): 3db. + with *note PyEval_RestoreThread(): 29f, *note + Py_END_ALLOW_THREADS(): 2a0, and *note PyGILState_Ensure(): 2a1. - bpo-36504(11): Fix signed integer overflow in _ctypes.c’s ‘PyCArrayType_new()’. @@ -66874,7 +60100,7 @@ File: python.info, Node: Core and Builtins<21>, Next: Library<23>, Prev: Secu - bpo-36452(14): Changing ‘dict’ keys during iteration of the dict itself, ‘keys()’, ‘values()’, or ‘items()’ will now be detected in certain corner cases where keys are deleted/added so that the - number of keys isn’t changed. A *note RuntimeError: 3df. will be + number of keys isn’t changed. A *note RuntimeError: 2a5. will be raised after ‘len(dict)’ iterations. Contributed by Thomas Perl. - bpo-36459(15): Fix a possible double ‘PyMem_FREE()’ due to @@ -66883,16 +60109,16 @@ File: python.info, Node: Core and Builtins<21>, Next: Library<23>, Prev: Secu - bpo-36433(16): Fixed TypeError message in classmethoddescr_call. - bpo-36430(17): Fix a possible reference leak in *note - itertools.count(): ce7. + itertools.count(): bfb. - bpo-36440(18): Include node names in ‘ParserError’ messages, instead of numeric IDs. Patch by A. Skrobov. - - bpo-36143(19): Regenerate *note keyword: a6. from the Grammar and + - bpo-36143(19): Regenerate *note keyword: a7. from the Grammar and Tokens file using pgen. Patch by Pablo Galindo. - - bpo-18372(20): Add missing *note PyObject_GC_Track(): f08. calls in - the *note pickle: ca. module. Patch by Zackery Spytz. + - bpo-18372(20): Add missing *note PyObject_GC_Track(): e1a. calls in + the *note pickle: cb. module. Patch by Zackery Spytz. ---------- Footnotes ---------- @@ -66937,9 +60163,9 @@ File: python.info, Node: Core and Builtins<21>, Next: Library<23>, Prev: Secu (20) https://bugs.python.org/issue18372  -File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and Builtins<21>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Library<26>, Next: Documentation<22>, Prev: Core and Builtins<26>, Up: Python 3 8 0 alpha 4 -1.19.24.3 Library +1.18.27.3 Library ................. - bpo-35952(1): Fix pythoninfo when the compiler is missing. @@ -66952,7 +60178,7 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and - bpo-26978(3): ‘pathlib.path.link_to()’ is now implemented. It creates a hard link pointing to a path. - - bpo-1613500(4): *note fileinput.FileInput: 3a8. now uses the input + - bpo-1613500(4): *note fileinput.FileInput: 26a. now uses the input file mode to correctly set the output file mode (previously it was hardcoded to ‘'w'’) when ‘inplace=True’ is passed to its constructor. @@ -66980,17 +60206,17 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and calls with no keywords at all. This did not result in an incorrect answer, but it did trigger an unexpected cache miss. - - bpo-28552(11): Fix *note distutils.sysconfig: 61. if *note - sys.executable: 3a0. is ‘None’ or an empty string: use *note - os.getcwd(): 10db. to initialize ‘project_base’. Fix also the - distutils build command: don’t use *note sys.executable: 3a0. if it + - bpo-28552(11): Fix *note distutils.sysconfig: 62. if *note + sys.executable: 260. is ‘None’ or an empty string: use *note + os.getcwd(): fb9. to initialize ‘project_base’. Fix also the + distutils build command: don’t use *note sys.executable: 260. if it is ‘None’ or an empty string. - - bpo-35755(12): *note shutil.which(): fa9. and + - bpo-35755(12): *note shutil.which(): eb5. and ‘distutils.spawn.find_executable()’ now use ‘os.confstr("CS_PATH")’ - if available instead of *note os.defpath: 10dc, if the ‘PATH’ + if available instead of *note os.defpath: fba, if the ‘PATH’ environment variable is not set. Moreover, don’t use - ‘os.confstr("CS_PATH")’ nor *note os.defpath: 10dc. if the ‘PATH’ + ‘os.confstr("CS_PATH")’ nor *note os.defpath: fba. if the ‘PATH’ environment variable is set to an empty string. - bpo-25430(13): improve performance of ‘IPNetwork.__contains__()’ @@ -67000,15 +60226,15 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and notation) by passing a default namespace with an empty string prefix. - - bpo-36613(15): Fix *note asyncio: 9. wait() not removing callback + - bpo-36613(15): Fix *note asyncio: a. wait() not removing callback if exception - bpo-36598(16): Fix ‘isinstance’ check for Mock objects with spec when the code is executed under tracing. Patch by Karthikeyan Singaravelan. - - bpo-18748(17): In development mode (*note -X: 293. ‘dev’) and in - debug build, the *note io.IOBase: 30f. destructor now logs + - bpo-18748(17): In development mode (*note -X: 156. ‘dev’) and in + debug build, the *note io.IOBase: 1c7. destructor now logs ‘close()’ exceptions. These exceptions are silent by default in release mode. @@ -67028,7 +60254,7 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and - bpo-17561(21): Set backlog=None as the default for socket.create_server. - - bpo-34373(22): Fix *note time.mktime(): c38. error handling on AIX + - bpo-34373(22): Fix *note time.mktime(): b44. error handling on AIX for year before 1970. - bpo-36232(23): Improve error message when trying to open existing @@ -67040,7 +60266,7 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and large response. Patch by Inada Naoki. - bpo-36522(26): If `debuglevel' is set to >0 in *note http.client: - 93, print all values for headers with multiple values for the same + 94, print all values for headers with multiple values for the same header name. Patch by Matt Houglum. - bpo-36492(27): Deprecated passing required arguments like `func' as @@ -67072,8 +60298,8 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and objects when __slots__ is a dictionary. - bpo-36366(34): Calling ‘stop()’ on an unstarted or stopped *note - unittest.mock.patch(): 879. object will now return *note None: 203. - instead of raising *note RuntimeError: 3df, making the method + unittest.mock.patch(): 76d. object will now return *note None: 158. + instead of raising *note RuntimeError: 2a5, making the method idempotent. Patch by Karthikeyan Singaravelan. - bpo-36348(35): The ‘imap.IMAP4.logout()’ method no longer ignores @@ -67087,33 +60313,33 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and ElementTree.tostring() and ElementTree.tostringlist(). - bpo-36004(38): Added new alternate constructors *note - datetime.date.fromisocalendar(): 2f8. and *note - datetime.datetime.fromisocalendar(): 2f9, which construct date + datetime.date.fromisocalendar(): 1b0. and *note + datetime.datetime.fromisocalendar(): 1b1, which construct date objects from ISO year, week number and weekday; these are the inverse of each class’s ‘isocalendar’ method. Patch by Paul Ganssle. - - bpo-35936(39): *note modulefinder: b4. no longer depends on the - deprecated *note imp: 99. module, and the initializer for *note - modulefinder.ModuleFinder: 10dd. now has immutable default + - bpo-35936(39): *note modulefinder: b5. no longer depends on the + deprecated *note imp: 9a. module, and the initializer for *note + modulefinder.ModuleFinder: fbb. now has immutable default arguments. Patch by Brandt Bucher. - - bpo-35376(40): *note modulefinder: b4. correctly handles modules + - bpo-35376(40): *note modulefinder: b5. correctly handles modules that have the same name as a bad package. Patch by Brandt Bucher. - - bpo-17396(41): *note modulefinder: b4. no longer crashes when + - bpo-17396(41): *note modulefinder: b5. no longer crashes when encountering syntax errors in followed imports. Patch by Brandt Bucher. - - bpo-35934(42): Added *note create_server(): 34e. and *note - has_dualstack_ipv6(): 34f. convenience functions to automate the + - bpo-35934(42): Added *note create_server(): 20a. and *note + has_dualstack_ipv6(): 20b. convenience functions to automate the necessary tasks usually involved when creating a server socket, including accepting both IPv4 and IPv6 connections on the same socket. (Contributed by Giampaolo Rodola in bpo-17561(43).) - - bpo-23078(44): Add support for *note classmethod(): 30c. and *note - staticmethod(): 30d. to *note unittest.mock.create_autospec(): - 1049. Initial patch by Felipe Ochoa. + - bpo-23078(44): Add support for *note classmethod(): 1c4. and *note + staticmethod(): 1c5. to *note unittest.mock.create_autospec(): f24. + Initial patch by Felipe Ochoa. - bpo-35416(45): Fix potential resource warnings in distutils. Patch by Mickaël Schoentgen. @@ -67122,14 +60348,14 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and Patch by Zackery Spytz. - bpo-35082(47): Don’t return deleted attributes when calling dir on - a *note unittest.mock.Mock: 376. + a *note unittest.mock.Mock: 235. - - bpo-34547(48): *note wsgiref.handlers.BaseHandler: 10c9. now - handles abrupt client connection terminations gracefully. Patch by - Petter Strandmark. + - bpo-34547(48): *note wsgiref.handlers.BaseHandler: fa7. now handles + abrupt client connection terminations gracefully. Patch by Petter + Strandmark. - - bpo-31658(49): *note xml.sax.parse(): 10de. now supports *note - path-like: 474. Patch by Mickaël Schoentgen. + - bpo-31658(49): *note xml.sax.parse(): fbc. now supports *note + path-like: 35b. Patch by Mickaël Schoentgen. - bpo-34139(50): Remove stale unix datagram socket before binding @@ -67260,9 +60486,9 @@ File: python.info, Node: Library<23>, Next: Documentation<18>, Prev: Core and (54) https://bugs.python.org/issue31292  -File: python.info, Node: Documentation<18>, Next: Tests<18>, Prev: Library<23>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Documentation<22>, Next: Tests<17>, Prev: Library<26>, Up: Python 3 8 0 alpha 4 -1.19.24.4 Documentation +1.18.27.4 Documentation ....................... - bpo-36625(1): Remove obsolete comments from docstrings in @@ -67277,10 +60503,10 @@ File: python.info, Node: Documentation<18>, Next: Tests<18>, Prev: Library<23 - bpo-36345(6): Avoid the duplication of code from ‘Tools/scripts/serve.py’ in using the ‘literalinclude’ directive for the basic wsgiref-based web server in the documentation of - *note wsgiref: 135. Contributed by Stéphane Wirtel. + *note wsgiref: 12d. Contributed by Stéphane Wirtel. - bpo-36345(7): Using the code of the ‘Tools/scripts/serve.py’ script - as an example in the *note wsgiref: 135. documentation. + as an example in the *note wsgiref: 12d. documentation. Contributed by Stéphane Wirtel. - bpo-36157(8): Added Documention for PyInterpreterState_Main(). @@ -67325,9 +60551,9 @@ File: python.info, Node: Documentation<18>, Next: Tests<18>, Prev: Library<23 (12) https://bugs.python.org/issue32913  -File: python.info, Node: Tests<18>, Next: Build<18>, Prev: Documentation<18>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Tests<17>, Next: Build<15>, Prev: Documentation<22>, Up: Python 3 8 0 alpha 4 -1.19.24.5 Tests +1.18.27.5 Tests ............... - bpo-36719(1): regrtest now always detects uncollectable objects. @@ -67335,7 +60561,7 @@ File: python.info, Node: Tests<18>, Next: Build<18>, Prev: Documentation<18>, now also works with ‘-jN/--multiprocess N’. ‘--findleaks’ becomes a deprecated alias to ‘--fail-env-changed’. - - bpo-36725(2): When using multiprocessing mode (-jN), regrtest now + - bpo-36725(2): When using mulitprocessing mode (-jN), regrtest now better reports errors if a worker process fails, and it exits immediately on a worker thread failure or when interrupted. @@ -67354,10 +60580,10 @@ File: python.info, Node: Tests<18>, Next: Build<18>, Prev: Documentation<18>, internal C API. - bpo-36629(7): Fix ‘test_imap4_host_default_value()’ of - ‘test_imaplib’: catch also *note errno.ENETUNREACH: 10e1. error. + ‘test_imaplib’: catch also *note errno.ENETUNREACH: fbf. error. - bpo-36611(8): Fix ‘test_sys.test_getallocatedblocks()’ when *note - tracemalloc: 11d. is enabled. + tracemalloc: 115. is enabled. - bpo-36560(9): Fix reference leak hunting in regrtest: compute also deltas (of reference count, allocated memory blocks, file @@ -67415,9 +60641,9 @@ File: python.info, Node: Tests<18>, Next: Build<18>, Prev: Documentation<18>, (15) https://bugs.python.org/issue36341  -File: python.info, Node: Build<18>, Next: Windows<17>, Prev: Tests<18>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Build<15>, Next: Windows<19>, Prev: Tests<17>, Up: Python 3 8 0 alpha 4 -1.19.24.6 Build +1.18.27.6 Build ............... - bpo-36747(1): Remove the stale scriptsinstall Makefile target. @@ -67468,7 +60694,7 @@ File: python.info, Node: Build<18>, Next: Windows<17>, Prev: Tests<18>, Up: compatible: defining the ‘Py_DEBUG’ macro no longer implies the ‘Py_TRACE_REFS’ macro, which introduces the only ABI incompatibility. The ‘Py_TRACE_REFS’ macro, which adds the - ‘sys.getobjects()’ function and the *note PYTHONDUMPREFS: 296. + ‘sys.getobjects()’ function and the *note PYTHONDUMPREFS: 15a. environment variable, can be set using the new ‘./configure --with-trace-refs’ build option. @@ -67514,9 +60740,9 @@ File: python.info, Node: Build<18>, Next: Windows<17>, Prev: Tests<18>, Up: (13) https://bugs.python.org/issue36503  -File: python.info, Node: Windows<17>, Next: macOS<16>, Prev: Build<18>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Windows<19>, Next: macOS<15>, Prev: Build<15>, Up: Python 3 8 0 alpha 4 -1.19.24.7 Windows +1.18.27.7 Windows ................. - bpo-35920(1): Added platform.win32_edition() and @@ -67549,7 +60775,7 @@ File: python.info, Node: Windows<17>, Next: macOS<16>, Prev: Build<18>, Up: installed. - bpo-36085(7): Enable better DLL resolution on Windows by using safe - DLL search paths and adding *note os.add_dll_directory(): 2f6. + DLL search paths and adding *note os.add_dll_directory(): 1ae. - bpo-36010(8): Add the venv standard library module to the nuget distribution for Windows. @@ -67601,9 +60827,9 @@ File: python.info, Node: Windows<17>, Next: macOS<16>, Prev: Build<18>, Up: (12) https://bugs.python.org/issue31512  -File: python.info, Node: macOS<16>, Next: IDLE<20>, Prev: Windows<17>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: macOS<15>, Next: IDLE<24>, Prev: Windows<19>, Up: Python 3 8 0 alpha 4 -1.19.24.8 macOS +1.18.27.8 macOS ............... - bpo-34602(1): Avoid failures setting macOS stack resource limit @@ -67618,9 +60844,9 @@ File: python.info, Node: macOS<16>, Next: IDLE<20>, Prev: Windows<17>, Up: P (2) https://bugs.python.org/issue18075  -File: python.info, Node: IDLE<20>, Next: Tools/Demos<8>, Prev: macOS<16>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: IDLE<24>, Next: Tools/Demos<10>, Prev: macOS<15>, Up: Python 3 8 0 alpha 4 -1.19.24.9 IDLE +1.18.27.9 IDLE .............. - bpo-36429(1): Fix starting IDLE with pyshell. Add idlelib.pyshell @@ -67632,9 +60858,9 @@ File: python.info, Node: IDLE<20>, Next: Tools/Demos<8>, Prev: macOS<16>, Up (1) https://bugs.python.org/issue36429  -File: python.info, Node: Tools/Demos<8>, Next: C API<16>, Prev: IDLE<20>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: Tools/Demos<10>, Next: C API<13>, Prev: IDLE<24>, Up: Python 3 8 0 alpha 4 -1.19.24.10 Tools/Demos +1.18.27.10 Tools/Demos ...................... - bpo-14546(1): Fix the argument handling in Tools/scripts/lll.py. @@ -67644,28 +60870,28 @@ File: python.info, Node: Tools/Demos<8>, Next: C API<16>, Prev: IDLE<20>, Up (1) https://bugs.python.org/issue14546  -File: python.info, Node: C API<16>, Prev: Tools/Demos<8>, Up: Python 3 8 0 alpha 4 +File: python.info, Node: C API<13>, Prev: Tools/Demos<10>, Up: Python 3 8 0 alpha 4 -1.19.24.11 C API +1.18.27.11 C API ................ - bpo-36763(1): Fix memory leak in *note - Py_SetStandardStreamEncoding(): a0c.: release memory if the + Py_SetStandardStreamEncoding(): 907.: release memory if the function is called twice. - - bpo-36641(2): ‘PyDoc_VAR(name)’ and ‘PyDoc_STRVAR(name,str)’ now - create ‘static const char name[]’ instead of ‘static char name[]’. - Patch by Inada Naoki. + - bpo-36641(2): PyDoc_VAR(name) and *note PyDoc_STRVAR: f07.(name, + str) now create ‘static const char name[]’ instead of ‘static char + name[]’. Patch by Inada Naoki. - bpo-36389(3): Change the value of ‘CLEANBYTE’, ‘DEADDYTE’ and ‘FORBIDDENBYTE’ internal constants used by debug hooks on Python - memory allocators (*note PyMem_SetupDebugHooks(): 606. function). + memory allocators (*note PyMem_SetupDebugHooks(): 4f9. function). Byte patterns ‘0xCB’, ‘0xDB’ and ‘0xFB’ have been replaced with ‘0xCD’, ‘0xDD’ and ‘0xFD’ to use the same values than Windows CRT debug ‘malloc()’ and ‘free()’. - bpo-36443(4): Since Python 3.7.0, calling *note Py_DecodeLocale(): - 541. before *note Py_Initialize(): 20f. produces mojibake if the + 42c. before *note Py_Initialize(): 429. produces mojibake if the ‘LC_CTYPE’ locale is coerced and/or if the UTF-8 Mode is enabled by the user configuration. The LC_CTYPE coercion and UTF-8 Mode are now disabled by default to fix the mojibake issue. They must now @@ -67673,10 +60899,10 @@ File: python.info, Node: C API<16>, Prev: Tools/Demos<8>, Up: Python 3 8 0 al API with ‘_PyPreConfig’. - bpo-36025(5): Fixed an accidental change to the datetime C API - where the arguments to the *note PyDate_FromTimestamp(): 10e8. + where the arguments to the *note PyDate_FromTimestamp(): fc6. function were incorrectly interpreted as a single timestamp rather than an arguments tuple, which causes existing code to start - raising *note TypeError: 1fe. The backwards-incompatible change + raising *note TypeError: 17f. The backwards-incompatible change was only present in alpha releases of Python 3.8. Patch by Paul Ganssle. @@ -67702,28 +60928,28 @@ File: python.info, Node: C API<16>, Prev: Tools/Demos<8>, Up: Python 3 8 0 al  File: python.info, Node: Python 3 8 0 alpha 3, Next: Python 3 8 0 alpha 2, Prev: Python 3 8 0 alpha 4, Up: Changelog -1.19.25 Python 3.8.0 alpha 3 +1.18.28 Python 3.8.0 alpha 3 ---------------------------- `Release date: 2019-03-25' * Menu: -* Security: Security<16>. -* Core and Builtins: Core and Builtins<22>. -* Library: Library<24>. -* Documentation: Documentation<19>. -* Tests: Tests<19>. -* Build: Build<19>. -* Windows: Windows<18>. -* IDLE: IDLE<21>. -* Tools/Demos: Tools/Demos<9>. -* C API: C API<17>. +* Security: Security<20>. +* Core and Builtins: Core and Builtins<27>. +* Library: Library<27>. +* Documentation: Documentation<23>. +* Tests: Tests<18>. +* Build: Build<16>. +* Windows: Windows<20>. +* IDLE: IDLE<25>. +* Tools/Demos: Tools/Demos<11>. +* C API: C API<14>.  -File: python.info, Node: Security<16>, Next: Core and Builtins<22>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Security<20>, Next: Core and Builtins<27>, Up: Python 3 8 0 alpha 3 -1.19.25.1 Security +1.18.28.1 Security .................. - bpo-36216(1): Changes urlsplit() to raise ValueError when the URL @@ -67734,7 +60960,7 @@ File: python.info, Node: Security<16>, Next: Core and Builtins<22>, Up: Pytho - bpo-35121(2): Don’t send cookies of domain A without Domain attribute to domain B when domain A is a suffix match of domain B while using a cookiejar with *note - http.cookiejar.DefaultCookiePolicy: 10eb. policy. Patch by + http.cookiejar.DefaultCookiePolicy: fc9. policy. Patch by Karthikeyan Singaravelan. ---------- Footnotes ---------- @@ -67744,9 +60970,9 @@ File: python.info, Node: Security<16>, Next: Core and Builtins<22>, Up: Pytho (2) https://bugs.python.org/issue35121  -File: python.info, Node: Core and Builtins<22>, Next: Library<24>, Prev: Security<16>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Core and Builtins<27>, Next: Library<27>, Prev: Security<20>, Up: Python 3 8 0 alpha 3 -1.19.25.2 Core and Builtins +1.18.28.2 Core and Builtins ........................... - bpo-36421(1): Fix a possible double decref in _ctypes.c’s @@ -67766,7 +60992,7 @@ File: python.info, Node: Core and Builtins<22>, Next: Library<24>, Prev: Secu ‘merge_consts_recursive()’. Patch by Zackery Spytz. - bpo-36236(7): At Python initialization, the current directory is no - longer prepended to *note sys.path: 260. if it has been removed. + longer prepended to *note sys.path: 479. if it has been removed. - bpo-36352(8): Python initialization now fails with an error, rather than silently truncating paths, if a path is too long. @@ -67777,7 +61003,7 @@ File: python.info, Node: Core and Builtins<22>, Next: Library<24>, Prev: Secu - bpo-36333(10): Fix leak in _PyRuntimeState_Fini. Contributed by Stéphane Wirtel. - - bpo-36332(11): The builtin *note compile(): 2ea. can now handle AST + - bpo-36332(11): The builtin *note compile(): 1a0. can now handle AST objects that contain assignment expressions. Patch by Pablo Galindo. @@ -67791,8 +61017,8 @@ File: python.info, Node: Core and Builtins<22>, Next: Library<24>, Prev: Secu - bpo-36262(14): Fix an unlikely memory leak on conversion from string to float in the function ‘_Py_dg_strtod()’ used by - ‘float(str)’, ‘complex(str)’, *note pickle.load(): 6bb, *note - marshal.load(): 10ed, etc. + ‘float(str)’, ‘complex(str)’, *note pickle.load(): 5af, *note + marshal.load(): fcb, etc. - bpo-36252(15): Update Unicode databases to version 12.0.0. @@ -67821,8 +61047,8 @@ File: python.info, Node: Core and Builtins<22>, Next: Library<24>, Prev: Secu - bpo-31904(20): Use UTF-8 as the system encoding on VxWorks. - - bpo-36048(21): The *note __index__(): 2c5. special method will be - used instead of *note __int__(): 2c6. for implicit conversion of + - bpo-36048(21): The *note __index__(): 177. special method will be + used instead of *note __int__(): 178. for implicit conversion of Python numbers to C integers. Using the ‘__int__()’ method in implicit conversions has been deprecated. @@ -67876,9 +61102,9 @@ File: python.info, Node: Core and Builtins<22>, Next: Library<24>, Prev: Secu (22) https://bugs.python.org/issue35808  -File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and Builtins<22>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Library<27>, Next: Documentation<23>, Prev: Core and Builtins<27>, Up: Python 3 8 0 alpha 3 -1.19.25.3 Library +1.18.28.3 Library ................. - bpo-36401(1): The class documentation created by pydoc now has a @@ -67889,7 +61115,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and which carried the same information. Also, both attributes were converted from OrderedDict to a regular dict. - - bpo-34745(3): Fix *note asyncio: 9. ssl memory issues caused by + - bpo-34745(3): Fix *note asyncio: a. ssl memory issues caused by circular references - bpo-36324(4): Add method to statistics.NormalDist for computing the @@ -67909,7 +61135,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and can’t be found. Thanks to ‘mental’ for the bug report. - bpo-36268(8): Switch the default format used for writing tars with - mod:*note tarfile: 101. to the modern POSIX.1-2001 pax standard, + mod:*note tarfile: 102. to the modern POSIX.1-2001 pax standard, from the vendor-specific GNU. Contributed by C.A.M. Gerlach. - bpo-36285(9): Fix integer overflows in the array module. Patch by @@ -67917,14 +61143,14 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and - bpo-31904(10): Add _signal module support for VxWorks. - - bpo-36272(11): *note logging: aa. does not silently ignore + - bpo-36272(11): *note logging: ab. does not silently ignore RecursionError anymore. Patch contributed by Rémi Lapeyre. - bpo-36280(12): Add a kind field to ast.Constant. It is ‘u’ if the literal has a ‘u’ prefix (i.e. a Python 2 style unicode literal), else None. - - bpo-35931(13): The *note pdb: c9. ‘debug’ command now gracefully + - bpo-35931(13): The *note pdb: ca. ‘debug’ command now gracefully handles all exceptions. - bpo-36251(14): Fix format strings used for stderrprinter and @@ -67938,7 +61164,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and - bpo-35807(16): Update ensurepip to install pip 19.0.3 and setuptools 40.8.0. - - bpo-36139(17): Release GIL when closing *note mmap: 31f. objects. + - bpo-36139(17): Release GIL when closing *note mmap: 1d8. objects. - bpo-36179(18): Fix two unlikely reference leaks in _hashopenssl. The leaks only occur in out-of-memory cases. @@ -67956,7 +61182,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and - bpo-35652(22): shutil.copytree(copy_function=…) erroneously pass DirEntry instead of a path string. - - bpo-35178(23): Ensure custom *note warnings.formatwarning(): 10ef. + - bpo-35178(23): Ensure custom *note warnings.formatwarning(): fcd. function can receive ‘line’ as positional argument. Based on patch by Tashrif Billah. @@ -67967,7 +61193,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and Patch by Henry Chen. - bpo-36043(26): ‘FileCookieJar’ supports *note path-like object: - 474. Contributed by Stéphane Wirtel + 35b. Contributed by Stéphane Wirtel - bpo-35899(27): Enum has been fixed to correctly handle empty strings and strings with non-Latin characters (ie. ‘α’, ‘א’) @@ -67977,11 +61203,11 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and - bpo-21269(28): Add ‘args’ and ‘kwargs’ properties to mock call objects. Contributed by Kumar Akshay. - - bpo-30670(29): *note pprint.pp: 343. has been added to pretty-print + - bpo-30670(29): *note pprint.pp: 1fe. has been added to pretty-print objects with dictionary keys being sorted with their insertion order by default. Parameter `sort_dicts' has been added to *note - pprint.pprint: 344, *note pprint.pformat: 97f. and *note - pprint.PrettyPrinter: 97e. Contributed by Rémi Lapeyre. + pprint.pprint: 1ff, *note pprint.pformat: 87a. and *note + pprint.PrettyPrinter: 879. Contributed by Rémi Lapeyre. - bpo-35843(30): Implement ‘__getitem__’ for ‘_NamespacePath’. Patch by Anthony Sottile. @@ -67993,7 +61219,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and - bpo-35715(32): Librates the return value of a ProcessPoolExecutor _process_worker after it’s no longer needed to free memory - - bpo-35493(33): Use *note multiprocessing.connection.wait(): b03. + - bpo-35493(33): Use *note multiprocessing.connection.wait(): a05. instead of polling each 0.2 seconds for worker updates in ‘multiprocessing.Pool’. Patch by Pablo Galindo. @@ -68004,7 +61230,7 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and with “/”. Patch by Karthikeyan Singaravelan. - bpo-21478(36): Calls to a child function created with *note - unittest.mock.create_autospec(): 1049. should propagate to the + unittest.mock.create_autospec(): f24. should propagate to the parent. Patch by Karthikeyan Singaravelan. - bpo-35198(37): Fix C++ extension compilation on AIX @@ -68086,9 +61312,9 @@ File: python.info, Node: Library<24>, Next: Documentation<19>, Prev: Core and (37) https://bugs.python.org/issue35198  -File: python.info, Node: Documentation<19>, Next: Tests<19>, Prev: Library<24>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Documentation<23>, Next: Tests<18>, Prev: Library<27>, Up: Python 3 8 0 alpha 3 -1.19.25.4 Documentation +1.18.28.4 Documentation ....................... - bpo-36329(1): Declare the path of the Python binary for the usage @@ -68111,9 +61337,9 @@ File: python.info, Node: Documentation<19>, Next: Tests<19>, Prev: Library<24 (3) https://bugs.python.org/issue21314  -File: python.info, Node: Tests<19>, Next: Build<19>, Prev: Documentation<19>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Tests<18>, Next: Build<16>, Prev: Documentation<23>, Up: Python 3 8 0 alpha 3 -1.19.25.5 Tests +1.18.28.5 Tests ............... - bpo-36234(1): test_posix.PosixUidGidTests: add tests for invalid @@ -68135,9 +61361,9 @@ File: python.info, Node: Tests<19>, Next: Build<19>, Prev: Documentation<19>, (3) https://bugs.python.org/issue36123  -File: python.info, Node: Build<19>, Next: Windows<18>, Prev: Tests<19>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Build<16>, Next: Windows<20>, Prev: Tests<18>, Up: Python 3 8 0 alpha 3 -1.19.25.6 Build +1.18.28.6 Build ............... - bpo-36356(1): Fix leaks that led to build failure when configured @@ -68162,9 +61388,9 @@ File: python.info, Node: Build<19>, Next: Windows<18>, Prev: Tests<19>, Up: (4) https://bugs.python.org/issue31904  -File: python.info, Node: Windows<18>, Next: IDLE<21>, Prev: Build<19>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Windows<20>, Next: IDLE<25>, Prev: Build<16>, Up: Python 3 8 0 alpha 3 -1.19.25.7 Windows +1.18.28.7 Windows ................. - bpo-36312(1): Fixed decoders for the following code pages: 50220, @@ -68186,9 +61412,9 @@ File: python.info, Node: Windows<18>, Next: IDLE<21>, Prev: Build<19>, Up: P (3) https://bugs.python.org/issue24643  -File: python.info, Node: IDLE<21>, Next: Tools/Demos<9>, Prev: Windows<18>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: IDLE<25>, Next: Tools/Demos<11>, Prev: Windows<20>, Up: Python 3 8 0 alpha 3 -1.19.25.8 IDLE +1.18.28.8 IDLE .............. - bpo-36405(1): Use dict unpacking in idlelib. @@ -68240,9 +61466,9 @@ File: python.info, Node: IDLE<21>, Next: Tools/Demos<9>, Prev: Windows<18>, (9) https://bugs.python.org/issue30348  -File: python.info, Node: Tools/Demos<9>, Next: C API<17>, Prev: IDLE<21>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: Tools/Demos<11>, Next: C API<14>, Prev: IDLE<25>, Up: Python 3 8 0 alpha 3 -1.19.25.9 Tools/Demos +1.18.28.9 Tools/Demos ..................... - bpo-35132(1): Fix py-list and py-bt commands of python-gdb.py on @@ -68257,9 +61483,9 @@ File: python.info, Node: Tools/Demos<9>, Next: C API<17>, Prev: IDLE<21>, Up (2) https://bugs.python.org/issue32217  -File: python.info, Node: C API<17>, Prev: Tools/Demos<9>, Up: Python 3 8 0 alpha 3 +File: python.info, Node: C API<14>, Prev: Tools/Demos<11>, Up: Python 3 8 0 alpha 3 -1.19.25.10 C API +1.18.28.10 C API ................ - bpo-36381(1): Raise ‘DeprecationWarning’ when ‘#’ formats are used @@ -68278,28 +61504,28 @@ File: python.info, Node: C API<17>, Prev: Tools/Demos<9>, Up: Python 3 8 0 al  File: python.info, Node: Python 3 8 0 alpha 2, Next: Python 3 8 0 alpha 1, Prev: Python 3 8 0 alpha 3, Up: Changelog -1.19.26 Python 3.8.0 alpha 2 +1.18.29 Python 3.8.0 alpha 2 ---------------------------- `Release date: 2019-02-25' * Menu: -* Core and Builtins: Core and Builtins<23>. -* Library: Library<25>. -* Documentation: Documentation<20>. -* Tests: Tests<20>. -* Windows: Windows<19>. -* IDLE: IDLE<22>. +* Core and Builtins: Core and Builtins<28>. +* Library: Library<28>. +* Documentation: Documentation<24>. +* Tests: Tests<19>. +* Windows: Windows<21>. +* IDLE: IDLE<26>.  -File: python.info, Node: Core and Builtins<23>, Next: Library<25>, Up: Python 3 8 0 alpha 2 +File: python.info, Node: Core and Builtins<28>, Next: Library<28>, Up: Python 3 8 0 alpha 2 -1.19.26.1 Core and Builtins +1.18.29.1 Core and Builtins ........................... - - bpo-36052(1): Raise a *note SyntaxError: 55c. when assigning a - value to *note __debug__: 10f9. with the Assignment Operator. + - bpo-36052(1): Raise a *note SyntaxError: 449. when assigning a + value to *note __debug__: fd7. with the Assignment Operator. Contributed by Stéphane Wirtel and Pablo Galindo. - bpo-36012(2): Doubled the speed of class variable writes. When a @@ -68308,7 +61534,7 @@ File: python.info, Node: Core and Builtins<23>, Next: Library<25>, Up: Python - bpo-35942(3): The error message emitted when returning invalid types from ‘__fspath__’ in interfaces that allow passing *note - PathLike: 5e8. objects has been improved and now it does explain + PathLike: 4dc. objects has been improved and now it does explain the origin of the error. - bpo-36016(4): ‘gc.get_objects’ can now receive an optional @@ -68362,7 +61588,7 @@ File: python.info, Node: Core and Builtins<23>, Next: Library<25>, Up: Python object the other interpreter owns. The existing Py_AddPendingCall() only operates relative to the main interpreter. - - bpo-33989(17): Fix a possible crash in *note list.sort(): 54a. when + - bpo-33989(17): Fix a possible crash in *note list.sort(): 435. when sorting objects with ‘ob_type->tp_richcompare == NULL’. Patch by Zackery Spytz. @@ -68403,12 +61629,12 @@ File: python.info, Node: Core and Builtins<23>, Next: Library<25>, Up: Python (17) https://bugs.python.org/issue33989  -File: python.info, Node: Library<25>, Next: Documentation<20>, Prev: Core and Builtins<23>, Up: Python 3 8 0 alpha 2 +File: python.info, Node: Library<28>, Next: Documentation<24>, Prev: Core and Builtins<28>, Up: Python 3 8 0 alpha 2 -1.19.26.2 Library +1.18.29.2 Library ................. - - bpo-35512(1): *note unittest.mock.patch.dict(): 10cc. used as a + - bpo-35512(1): *note unittest.mock.patch.dict(): faa. used as a decorator with string target resolves the target during function call instead of during decorator construction. Patch by Karthikeyan Singaravelan. @@ -68425,16 +61651,16 @@ File: python.info, Node: Library<25>, Next: Documentation<20>, Prev: Core and multiprocessing.managers.SyncManager.dict. Contributed by Rémi Lapeyre. - - bpo-18283(5): Add support for bytes to *note shutil.which(): fa9. + - bpo-18283(5): Add support for bytes to *note shutil.which(): eb5. - - bpo-35960(6): Fix *note dataclasses.field(): 10fb. throwing away + - bpo-35960(6): Fix *note dataclasses.field(): fd9. throwing away empty mapping objects passed as metadata. - bpo-35500(7): Write expected and actual call parameters on separate - lines in *note unittest.mock.Mock.assert_called_with(): 10fc. + lines in *note unittest.mock.Mock.assert_called_with(): fda. assertion errors. Contributed by Susan Su. - - bpo-35931(8): The *note pdb: c9. ‘debug’ command now gracefully + - bpo-35931(8): The *note pdb: ca. ‘debug’ command now gracefully handles syntax errors. - bpo-24209(9): In http.server script, rely on getaddrinfo to bind to @@ -68454,31 +61680,31 @@ File: python.info, Node: Library<25>, Next: Documentation<20>, Prev: Core and pool iterator is still alive. - bpo-34294(12): re module, fix wrong capturing groups in rare cases. - *note re.search(): c84, *note re.findall(): a46, *note re.sub(): - 57c. and other functions that scan through string looking for a + *note re.search(): b92, *note re.findall(): 944, *note re.sub(): + 46c. and other functions that scan through string looking for a match, should reset capturing groups between two match attempts. Patch by Ma Lin. - - bpo-35615(13): *note weakref: 131.: Fix a RuntimeError when copying + - bpo-35615(13): *note weakref: 129.: Fix a RuntimeError when copying a WeakKeyDictionary or a WeakValueDictionary, due to some keys or values disappearing while iterating. - - bpo-35606(14): Implement *note math.prod(): 318. as analogous - function to *note sum(): 319. that returns the product of a ‘start’ + - bpo-35606(14): Implement *note math.prod(): 1d0. as analogous + function to *note sum(): 1d1. that returns the product of a ‘start’ value (default: 1) times an iterable of numbers. Patch by Pablo Galindo. - bpo-32417(15): Performing arithmetic between *note - datetime.datetime: 1a0. subclasses and *note datetime.timedelta: - 2cd. now returns an object of the same type as the *note - datetime.datetime: 1a0. subclass. As a result, *note - datetime.datetime.astimezone(): 2ce. and alternate constructors - like *note datetime.datetime.now(): 10fd. and + datetime.datetime: 181. subclasses and *note datetime.timedelta: + 182. now returns an object of the same type as the *note + datetime.datetime: 181. subclass. As a result, *note + datetime.datetime.astimezone(): 183. and alternate constructors + like *note datetime.datetime.now(): fdb. and ‘datetime.fromtimestamp()’ called with a ‘tz’ argument now `also' retain their subclass. - bpo-35153(16): Add `headers' optional keyword-only parameter to - *note xmlrpc.client.ServerProxy: 382, ‘xmlrpc.client.Transport’ and + *note xmlrpc.client.ServerProxy: 241, ‘xmlrpc.client.Transport’ and ‘xmlrpc.client.SafeTransport’. Patch by Cédric Krier. - bpo-34572(17): Fix C implementation of pickle.loads to use @@ -68522,9 +61748,9 @@ File: python.info, Node: Library<25>, Next: Documentation<20>, Prev: Core and (17) https://bugs.python.org/issue34572  -File: python.info, Node: Documentation<20>, Next: Tests<20>, Prev: Library<25>, Up: Python 3 8 0 alpha 2 +File: python.info, Node: Documentation<24>, Next: Tests<19>, Prev: Library<28>, Up: Python 3 8 0 alpha 2 -1.19.26.3 Documentation +1.18.29.3 Documentation ....................... - bpo-36083(1): Fix formatting of –check-hash-based-pycs options in @@ -68545,9 +61771,9 @@ File: python.info, Node: Documentation<20>, Next: Tests<20>, Prev: Library<25 (3) https://bugs.python.org/issue22062  -File: python.info, Node: Tests<20>, Next: Windows<19>, Prev: Documentation<20>, Up: Python 3 8 0 alpha 2 +File: python.info, Node: Tests<19>, Next: Windows<21>, Prev: Documentation<24>, Up: Python 3 8 0 alpha 2 -1.19.26.4 Tests +1.18.29.4 Tests ............... - bpo-27313(1): Avoid test_ttk_guionly ComboboxTest failure with @@ -68562,8 +61788,7 @@ File: python.info, Node: Tests<20>, Next: Windows<19>, Prev: Documentation<20 version of the server SSL context if needed, to test TLS version older than default minimum TLS version. - - bpo-35798(4): Added *note test.support.check_syntax_warning(): - 1100. + - bpo-35798(4): Added *note test.support.check_syntax_warning(): fde. - bpo-35505(5): Make test_imap4_host_default_value independent on whether the local IMAP server is running. @@ -68601,9 +61826,9 @@ File: python.info, Node: Tests<20>, Next: Windows<19>, Prev: Documentation<20 (8) https://bugs.python.org/issue34720  -File: python.info, Node: Windows<19>, Next: IDLE<22>, Prev: Tests<20>, Up: Python 3 8 0 alpha 2 +File: python.info, Node: Windows<21>, Next: IDLE<26>, Prev: Tests<19>, Up: Python 3 8 0 alpha 2 -1.19.26.5 Windows +1.18.29.5 Windows ................. - bpo-35976(1): Added ARM build support to Windows build files in @@ -68634,9 +61859,9 @@ File: python.info, Node: Windows<19>, Next: IDLE<22>, Prev: Tests<20>, Up: P (5) https://bugs.python.org/issue35299  -File: python.info, Node: IDLE<22>, Prev: Windows<19>, Up: Python 3 8 0 alpha 2 +File: python.info, Node: IDLE<26>, Prev: Windows<21>, Up: Python 3 8 0 alpha 2 -1.19.26.6 IDLE +1.18.29.6 IDLE .............. - bpo-24310(1): IDLE – Document settings dialog font tab sample. @@ -68657,29 +61882,29 @@ File: python.info, Node: IDLE<22>, Prev: Windows<19>, Up: Python 3 8 0 alpha  File: python.info, Node: Python 3 8 0 alpha 1, Next: Python 3 7 0 final, Prev: Python 3 8 0 alpha 2, Up: Changelog -1.19.27 Python 3.8.0 alpha 1 +1.18.30 Python 3.8.0 alpha 1 ---------------------------- `Release date: 2019-02-03' * Menu: -* Security: Security<17>. -* Core and Builtins: Core and Builtins<24>. -* Library: Library<26>. -* Documentation: Documentation<21>. -* Tests: Tests<21>. -* Build: Build<20>. -* Windows: Windows<20>. -* macOS: macOS<17>. -* IDLE: IDLE<23>. -* Tools/Demos: Tools/Demos<10>. -* C API: C API<18>. +* Security: Security<21>. +* Core and Builtins: Core and Builtins<29>. +* Library: Library<29>. +* Documentation: Documentation<25>. +* Tests: Tests<20>. +* Build: Build<17>. +* Windows: Windows<22>. +* macOS: macOS<16>. +* IDLE: IDLE<27>. +* Tools/Demos: Tools/Demos<12>. +* C API: C API<15>.  -File: python.info, Node: Security<17>, Next: Core and Builtins<24>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Security<21>, Next: Core and Builtins<29>, Up: Python 3 8 0 alpha 1 -1.19.27.1 Security +1.18.30.1 Security .................. - bpo-35746(1): [CVE-2019-5010] Fix a NULL pointer deref in ssl @@ -68688,11 +61913,11 @@ File: python.info, Node: Security<17>, Next: Core and Builtins<24>, Up: Pytho can result into segfault. Vulnerability (TALOS-2018-0758) reported by Colin Read and Nicolas Edet of Cisco. - - bpo-34812(2): The *note -I: 232. command line option (run Python in - isolated mode) is now also copied by the *note multiprocessing: b7. - and *note distutils: 38. modules when spawning child processes. - Previously, only *note -E: 231. and *note -s: ddd. options (enabled - by *note -I: 232.) were copied. + - bpo-34812(2): The *note -I: fe3. command line option (run Python in + isolated mode) is now also copied by the *note multiprocessing: b8. + and *note distutils: 39. modules when spawning child processes. + Previously, only *note -E: fe4. and *note -s: cec. options (enabled + by *note -I: fe3.) were copied. - bpo-34791(3): The xml.sax and xml.dom.domreg no longer use environment variables to override parser implementations when @@ -68709,7 +61934,7 @@ File: python.info, Node: Security<17>, Next: Core and Builtins<24>, Up: Pytho - bpo-34405(6): Updated to OpenSSL 1.1.0i for Windows builds. - bpo-33871(7): Fixed sending the part of the file in *note - os.sendfile(): 463. on macOS. Using the `trailers' argument could + os.sendfile(): 34a. on macOS. Using the `trailers' argument could cause sending more bytes from the input file than was specified. - bpo-32533(8): Fixed thread-safety of error handling in _ssl. @@ -68756,9 +61981,9 @@ File: python.info, Node: Security<17>, Next: Core and Builtins<24>, Up: Pytho (12) https://bugs.python.org/issue28414  -File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Security<17>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Core and Builtins<29>, Next: Library<29>, Prev: Security<21>, Up: Python 3 8 0 alpha 1 -1.19.27.2 Core and Builtins +1.18.30.2 Core and Builtins ........................... - bpo-35877(1): Make parenthesis optional for named expressions in @@ -68795,17 +62020,17 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu added to work around false positives from posix, socket, time, test_io, and test_faulthandler. - - bpo-35560(10): Fix an assertion error in *note format(): 5d8. in + - bpo-35560(10): Fix an assertion error in *note format(): 4cc. in debug build for floating point formatting with “n” format, zero padding and small width. Release build is not impacted. Patch by Karthikeyan Singaravelan. - bpo-35552(11): Format characters ‘%s’ and ‘%V’ in *note - PyUnicode_FromFormat(): 8ba. and ‘%s’ in *note - PyBytes_FromFormat(): 1106. no longer read memory past the limit if + PyUnicode_FromFormat(): 7b0. and ‘%s’ in *note + PyBytes_FromFormat(): fe6. no longer read memory past the limit if `precision' is specified. - - bpo-35504(12): Fix segfaults and *note SystemError: 6f4.s when + - bpo-35504(12): Fix segfaults and *note SystemError: 5e8.s when deleting certain attributes. Patch by Zackery Spytz. - bpo-35504(13): Fixed a SystemError when delete the @@ -68840,7 +62065,7 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu now point to the opening parenthesis or square brace. For tuples without parenthesis they point to the position of the first item. - - bpo-33954(22): For *note str.format(): 5d7, ‘float.__format__()’ + - bpo-33954(22): For *note str.format(): 4cb, ‘float.__format__()’ and ‘complex.__format__()’ methods for non-ASCII decimal point when using the “n” formatter. @@ -68871,45 +62096,45 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-35169(30): Improved error messages for forbidden assignments. - bpo-34022(31): Fix handling of hash-based bytecode files in *note - zipimport: 14c. Patch by Elvis Pranskevichus. + zipimport: 144. Patch by Elvis Pranskevichus. - bpo-28401(32): Debug builds will no longer to attempt to import extension modules built for the ABI as they were never compatible to begin with. Patch by Stefano Rivera. - - bpo-29341(33): Clarify in the docstrings of *note os: c4. methods + - bpo-29341(33): Clarify in the docstrings of *note os: c5. methods that path-like objects are also accepted as input parameters. - - bpo-35050(34): *note socket: ef.: Fix off-by-one bug in length + - bpo-35050(34): *note socket: f0.: Fix off-by-one bug in length check for ‘AF_ALG’ name and type. - - bpo-29743(35): Raise *note ValueError: 16d. instead of *note - OverflowError: a43. in case of a negative ‘_length_’ in a *note - ctypes.Array: 1107. subclass. Also raise *note TypeError: 1fe. - instead of *note AttributeError: 4a4. for non-integer ‘_length_’. + - bpo-29743(35): Raise *note ValueError: 1e7. instead of *note + OverflowError: 941. in case of a negative ‘_length_’ in a *note + ctypes.Array: fe7. subclass. Also raise *note TypeError: 17f. + instead of *note AttributeError: 38c. for non-integer ‘_length_’. Original patch by Oren Milman. - bpo-16806(36): Fix ‘lineno’ and ‘col_offset’ for multi-line string tokens. - - bpo-35029(37): *note SyntaxWarning: 2cc. raised as an exception at + - bpo-35029(37): *note SyntaxWarning: 17e. raised as an exception at code generation time will be now replaced with a *note SyntaxError: - 55c. for better error reporting. + 449. for better error reporting. - - bpo-34983(38): Expose *note symtable.Symbol.is_nonlocal(): 1108. in + - bpo-34983(38): Expose *note symtable.Symbol.is_nonlocal(): fe8. in the symtable module. Patch by Pablo Galindo. - - bpo-34974(39): *note bytes: 172. and *note bytearray: 173. + - bpo-34974(39): *note bytes: 322. and *note bytearray: 323. constructors no longer convert unexpected exceptions (e.g. *note - MemoryError: f53. and *note KeyboardInterrupt: 2cf.) to *note - TypeError: 1fe. + MemoryError: ec7. and *note KeyboardInterrupt: 184.) to *note + TypeError: 17f. - bpo-34939(40): Allow annotated names in module namespace that are declared global before the annotation happens. Patch by Pablo Galindo. - - bpo-34973(41): Fixed crash in *note bytes(): 172. when the *note - list: 1f8. argument is mutated while it is iterated. + - bpo-34973(41): Fixed crash in *note bytes(): 322. when the *note + list: 24e. argument is mutated while it is iterated. - bpo-34876(42): The `lineno' and `col_offset' attributes of the AST for decorated function and class refer now to the position of the @@ -68924,8 +62149,8 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-34784(44): Fix the implementation of PyStructSequence_NewType in order to create heap allocated StructSequences. - - bpo-32912(45): A *note SyntaxWarning: 2cc. is now emitted instead - of a *note DeprecationWarning: 15a. for invalid escape sequences in + - bpo-32912(45): A *note SyntaxWarning: 17e. is now emitted instead + of a *note DeprecationWarning: 264. for invalid escape sequences in string and bytes literals. - bpo-34854(46): Fixed a crash in compiling string annotations @@ -68933,7 +62158,7 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu a default value. - bpo-34850(47): The compiler now produces a *note SyntaxWarning: - 2cc. when identity checks (‘is’ and ‘is not’) are used with certain + 17e. when identity checks (‘is’ and ‘is not’) are used with certain types of literals (e.g. strings, ints). These can often work by accident in CPython, but are not guaranteed by the language spec. The warning advises users to use equality tests (‘==’ and ‘!=’) @@ -68971,7 +62196,7 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu PyParser_SimpleParseStringFilename. - bpo-32236(56): Warn that line buffering is not supported if *note - open(): 16f. is called with binary mode and ‘buffering=1’. + open(): 4e1. is called with binary mode and ‘buffering=1’. - bpo-34641(57): Further restrict the syntax of the left-hand side of keyword arguments in function calls. In particular, @@ -69040,7 +62265,7 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu ‘PyObject_Free’/‘PyObject_Realloc’. - bpo-34353(74): Added the “socket” option in the *note - stat.filemode(): b77. Python implementation to match the C + stat.filemode(): a7e. Python implementation to match the C implementation. - bpo-34320(75): Fix ‘dict(od)’ didn’t copy iteration order of @@ -69059,7 +62284,7 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-34170(79): -X dev: it is now possible to override the memory allocator using PYTHONMALLOC even if the developer mode is enabled. - - bpo-33237(80): Improved *note AttributeError: 4a4. message for + - bpo-33237(80): Improved *note AttributeError: 38c. message for partially initialized module. - bpo-34149(81): Fix min and max functions to get default behavior @@ -69077,8 +62302,8 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-24618(85): Fixed reading invalid memory when create the code object with too small varnames tuple or too large argument counts. - - bpo-34068(86): In *note io.IOBase.close(): 1109, ensure that the - *note closed: 110a. attribute is not set with a live exception. + - bpo-34068(86): In *note io.IOBase.close(): fe9, ensure that the + *note closed: fea. attribute is not set with a live exception. Patch by Zackery Spytz and Serhiy Storchaka. - bpo-34087(87): Fix buffer overflow while converting unicode to @@ -69101,8 +62326,8 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-33956(93): Update vendored Expat library copy to version 2.2.5. - bpo-24596(94): Decref the module object in *note - PyRun_SimpleFileExFlags(): f8a. before calling *note PyErr_Print(): - ff0. Patch by Zackery Spytz. + PyRun_SimpleFileExFlags(): ea2. before calling *note PyErr_Print(): + ee4. Patch by Zackery Spytz. - bpo-33451(95): Close directly executed pyc files before calling ‘PyEval_EvalCode()’. @@ -69124,8 +62349,8 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu for an object that hadn’t all of its fields set to NULL. - bpo-33738(99): Seven macro incompatibilities with the Limited API - were fixed, and the macros *note PyIter_Check(): 110b, *note - PyIndex_Check(): 271. and ‘PyExceptionClass_Name()’ were added as + were fixed, and the macros *note PyIter_Check(): feb, *note + PyIndex_Check(): fec. and ‘PyExceptionClass_Name()’ were added as functions. A script for automatic macro checks was added. - bpo-33786(100): Fix asynchronous generators to handle GeneratorExit @@ -69146,23 +62371,23 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-33622(105): Fixed a leak when the garbage collector fails to add an object with the ‘__del__’ method or referenced by it into - the *note gc.garbage: c14. list. ‘PyGC_Collect()’ can now be + the *note gc.garbage: b20. list. ‘PyGC_Collect()’ can now be called when an exception is set and preserves it. - bpo-33462(106): Make dict and dict views reversible. Patch by Rémi Lapeyre. - - bpo-23722(107): A *note RuntimeError: 3df. is now raised when the + - bpo-23722(107): A *note RuntimeError: 2a5. is now raised when the custom metaclass doesn’t provide the ‘__classcell__’ entry in the namespace passed to ‘type.__new__’. A *note DeprecationWarning: - 15a. was emitted in Python 3.6–3.7. + 264. was emitted in Python 3.6–3.7. - - bpo-33499(108): Add *note PYTHONPYCACHEPREFIX: 292. environment - variable and *note -X: 293. ‘pycache_prefix’ command-line option to + - bpo-33499(108): Add *note PYTHONPYCACHEPREFIX: 155. environment + variable and *note -X: 156. ‘pycache_prefix’ command-line option to set an alternate root directory for writing module bytecode cache files. - - bpo-25711(109): The *note zipimport: 14c. module has been rewritten + - bpo-25711(109): The *note zipimport: 144. module has been rewritten in pure Python. - bpo-33509(110): Fix module_globals parameter of @@ -69244,11 +62469,11 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-33083(133): ‘math.factorial’ no longer accepts arguments that are not int-like. Patch by Pablo Galindo. - - bpo-33041(134): Added new opcode *note END_ASYNC_FOR: 3ff. and + - bpo-33041(134): Added new opcode *note END_ASYNC_FOR: 2ce. and fixes the following issues: - * Setting global *note StopAsyncIteration: 110c. no longer - breaks ‘async for’ loops. + * Setting global *note StopAsyncIteration: fed. no longer breaks + ‘async for’ loops. * Jumping into an ‘async for’ loop is now disabled. @@ -69313,19 +62538,20 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu caused by write out-of-bound errors when using customized decode error handlers. - - bpo-32489(153): A *note continue: 2be. statement is now allowed in - the *note finally: 2bf. clause. + - bpo-32489(153): A *note continue: 16e. statement is now allowed in + the *note finally: 16f. clause. - bpo-17611(154): Simplified the interpreter loop by moving the logic of unrolling the stack of blocks into the compiler. The compiler emits now explicit instructions for adjusting the stack of values - and calling the cleaning up code for *note break: 3fd, *note - continue: 2be. and *note return: 2cb. + and calling the cleaning up code for *note break: 2c7, *note + continue: 16e. and *note return: 17d. Removed opcodes ‘BREAK_LOOP’, ‘CONTINUE_LOOP’, ‘SETUP_LOOP’ and - ‘SETUP_EXCEPT’. Added new opcodes *note ROT_FOUR: 3fe, - ‘BEGIN_FINALLY’ and ‘CALL_FINALLY’ and ‘POP_FINALLY’. Changed the - behavior of ‘END_FINALLY’ and ‘WITH_CLEANUP_START’. + ‘SETUP_EXCEPT’. Added new opcodes *note ROT_FOUR: 2c8, *note + BEGIN_FINALLY: 2c9. and *note CALL_FINALLY: 2ca. and *note + POP_FINALLY: 2cb. Changed the behavior of *note END_FINALLY: 2cc. + and *note WITH_CLEANUP_START: 2cd. - bpo-32285(155): New function unicodedata.is_normalized, which can check whether a string is in a specific normal form. @@ -69346,11 +62572,11 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu - bpo-25862(159): Fix assertion failures in the ‘tell()’ method of ‘io.TextIOWrapper’. Patch by Zackery Spytz. - - bpo-21983(160): Fix a crash in *note ctypes.cast(): 110d. in case + - bpo-21983(160): Fix a crash in *note ctypes.cast(): fee. in case the type argument is a ctypes structured data type. Patch by Eryk Sun and Oren Milman. - - bpo-31577(161): Fix a crash in *note os.utime(): b1b. in case of a + - bpo-31577(161): Fix a crash in *note os.utime(): a1e. in case of a bad ns argument. Patch by Oren Milman. - bpo-29832(162): Remove references to ‘getsockaddrarg’ from various @@ -69683,9 +62909,9 @@ File: python.info, Node: Core and Builtins<24>, Next: Library<26>, Prev: Secu (162) https://bugs.python.org/issue29832  -File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and Builtins<24>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Library<29>, Next: Documentation<25>, Prev: Core and Builtins<29>, Up: Python 3 8 0 alpha 1 -1.19.27.3 Library +1.18.30.3 Library ................. - bpo-35845(1): Add ‘order’ parameter to memoryview.tobytes(). @@ -69718,17 +62944,17 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and misses. In error cases, the miss count was out of sync with the actual number of times the underlying user function was called. - - bpo-35537(7): *note os.posix_spawn(): 384. and *note - os.posix_spawnp(): 110f. now have a `setsid' parameter. + - bpo-35537(7): *note os.posix_spawn(): 243. and *note + os.posix_spawnp(): ff0. now have a `setsid' parameter. - - bpo-23846(8): *note asyncio.ProactorEventLoop: 2e1. now catches and + - bpo-23846(8): *note asyncio.ProactorEventLoop: 197. now catches and logs send errors when the self-pipe is full. - - bpo-34323(9): *note asyncio: 9.: Enhance ‘IocpProactor.close()’ + - bpo-34323(9): *note asyncio: a.: Enhance ‘IocpProactor.close()’ log: wait 1 second before the first log, then log every second. Log also the number of seconds since ‘close()’ was called. - - bpo-35674(10): Add a new *note os.posix_spawnp(): 110f. function. + - bpo-35674(10): Add a new *note os.posix_spawnp(): ff0. function. Patch by Joannah Nanjekye. - bpo-35733(11): ‘ast.Constant(boolean)’ no longer an instance of @@ -69738,7 +62964,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and record before modifying and enqueueing it, to avoid affecting other handlers in the chain. - - bpo-35719(13): Sped up multi-argument *note math: b1. functions + - bpo-35719(13): Sped up multi-argument *note math: b2. functions atan2(), copysign(), remainder() and hypot() by 1.3–2.5 times. - bpo-35717(14): Fix KeyError exception raised when using enums and @@ -69750,7 +62976,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-32710(16): Fix memory leaks in asyncio ProactorEventLoop on overlapped operation failure. - - bpo-35702(17): The *note time.CLOCK_UPTIME_RAW: 368. constant is + - bpo-35702(17): The *note time.CLOCK_UPTIME_RAW: 225. constant is now available for macOS 10.12. - bpo-32710(18): Fix a memory leak in asyncio in the @@ -69773,10 +62999,10 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen. - bpo-35619(23): Improved support of custom data descriptors in *note - help(): 175. and *note pydoc: d9. + help(): 55f. and *note pydoc: da. - - bpo-28503(24): The *note crypt: 28. module now internally uses the - ‘crypt_r()’ library function instead of *note crypt(): 28. when + - bpo-28503(24): The *note crypt: 29. module now internally uses the + ‘crypt_r()’ library function instead of *note crypt(): 29. when available. - bpo-35614(25): Fixed help() on metaclasses. Patch by Sanyam @@ -69785,48 +63011,48 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-35568(26): Expose ‘raise(signum)’ as ‘raise_signal’ - bpo-35588(27): The floor division and modulo operations and the - *note divmod(): 290. function on *note fractions.Fraction: 2c1. + *note divmod(): 153. function on *note fractions.Fraction: 172. types are 2–4x faster. Patch by Stefan Behnel. - bpo-35585(28): Speed-up building enums by value, e.g. http.HTTPStatus(200). - bpo-30561(29): random.gammavariate(1.0, beta) now computes the same - result as random.expovariate(1.0 / beta). This synchronizes the - two algorithms and eliminates some idiosyncrasies in the old + result as random.expovariate(1.0 / beta). This synchonizes the two + algorithms and eliminates some idiosyncrasies in the old implementation. It does however produce a difference stream of random variables than it used to. - - bpo-35537(30): The *note subprocess: f9. module can now use the - *note os.posix_spawn(): 384. function in some cases for better + - bpo-35537(30): The *note subprocess: fa. module can now use the + *note os.posix_spawn(): 243. function in some cases for better performance. - bpo-35526(31): Delaying the ‘joke’ of barry_as_FLUFL.mandatory to Python version 4.0 - - bpo-35523(32): Remove *note ctypes: 2a. callback workaround: no + - bpo-35523(32): Remove *note ctypes: 2b. callback workaround: no longer create a callback at startup. Avoid SELinux alert on ‘import ctypes’ and ‘import uuid’. - - bpo-31784(33): *note uuid.uuid1(): 51a. now calls *note - time.time_ns(): 435. rather than ‘int(time.time() * 1e9)’. + - bpo-31784(33): *note uuid.uuid1(): 404. now calls *note + time.time_ns(): 315. rather than ‘int(time.time() * 1e9)’. - bpo-35513(34): ‘TextTestRunner’ of ‘unittest.runner’ now uses *note - time.perf_counter(): 3cf. rather than *note time.time(): 42f. to - measure the execution time of a test: *note time.time(): 42f. can - go backwards, whereas *note time.perf_counter(): 3cf. is monotonic. + time.perf_counter(): 295. rather than *note time.time(): 30f. to + measure the execution time of a test: *note time.time(): 30f. can + go backwards, whereas *note time.perf_counter(): 295. is monotonic. - bpo-35502(35): Fixed reference leaks in *note - xml.etree.ElementTree.TreeBuilder: 380. in case of unfinished + xml.etree.ElementTree.TreeBuilder: 23f. in case of unfinished building of the tree (in particular when an error was raised during parsing XML). - - bpo-35348(36): Make *note platform.architecture(): 1110. parsing of + - bpo-35348(36): Make *note platform.architecture(): ff1. parsing of ‘file’ command output more reliable: add the ‘-b’ option to the ‘file’ command to omit the filename, force the usage of the C locale, and search also the “shared object” pattern. - - bpo-35491(37): *note multiprocessing: b7.: Add ‘Pool.__repr__()’ + - bpo-35491(37): *note multiprocessing: b8.: Add ‘Pool.__repr__()’ and enhance ‘BaseProcess.__repr__()’ (add pid and parent pid) to ease debugging. Pool state constant values are now strings instead of integers, for example ‘RUN’ value becomes ‘'RUN'’ instead of @@ -69849,9 +63075,9 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and an entity. - bpo-20239(43): Allow repeated assignment deletion of *note - unittest.mock.Mock: 376. attributes. Patch by Pablo Galindo. + unittest.mock.Mock: 235. attributes. Patch by Pablo Galindo. - - bpo-17185(44): Set ‘__signature__’ on mock for *note inspect: a0. + - bpo-17185(44): Set ‘__signature__’ on mock for *note inspect: a1. to get signature. Patch by Karthikeyan Singaravelan. - bpo-35445(45): Memory errors during creating posix.environ no @@ -69860,7 +63086,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-35415(46): Validate fileno= argument to socket.socket(). - bpo-35424(47): ‘multiprocessing.Pool’ destructor now emits *note - ResourceWarning: 5cd. if the pool is still running. + ResourceWarning: 4c1. if the pool is still running. - bpo-35330(48): When a ‘Mock’ instance was used to wrap an object, if ‘side_effect’ is used in one of the mocks of it methods, don’t @@ -69868,30 +63094,30 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and side effect the same way that it is done with return_value. - bpo-35346(49): Drop Mac OS 9 and Rhapsody support from the *note - platform: ce. module. Rhapsody last release was in 2000. Mac OS 9 + platform: cf. module. Rhapsody last release was in 2000. Mac OS 9 last release was in 2001. - bpo-10496(50): ‘check_environ()’ of ‘distutils.utils’ now catches - *note KeyError: 3ec. on calling *note pwd.getpwuid(): 1111.: don’t + *note KeyError: 2b2. on calling *note pwd.getpwuid(): ff2.: don’t create the ‘HOME’ environment variable in this case. - bpo-10496(51): ‘posixpath.expanduser()’ now returns the input `path' unchanged if the ‘HOME’ environment variable is not set and the current user has no home directory (if the current user identifier doesn’t exist in the password database). This change - fix the *note site: eb. module if the current user doesn’t exist in + fix the *note site: ec. module if the current user doesn’t exist in the password database (if the user has no home directory). - - bpo-35389(52): *note platform.libc_ver(): 1112. now uses + - bpo-35389(52): *note platform.libc_ver(): ff3. now uses ‘os.confstr('CS_GNU_LIBC_VERSION')’ if available and the `executable' parameter is not set. - bpo-35394(53): Add empty slots to asyncio abstract protocols. - - bpo-35310(54): Fix a bug in *note select.select(): 768. where, in + - bpo-35310(54): Fix a bug in *note select.select(): 65c. where, in some cases, the file descriptor sequences were returned unmodified after a signal interruption, even though the file descriptors might - not be ready yet. *note select.select(): 768. will now always + not be ready yet. *note select.select(): 65c. will now always return empty lists if a timeout has occurred. Patch by Oran Avraham. @@ -69904,8 +63130,8 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-35371(57): Fixed possible crash in ‘os.utime()’ on Windows when pass incorrect arguments. - - bpo-35346(58): *note platform.uname(): 1113. now redirects ‘stderr’ - to *note os.devnull: 1114. when running external programs like ‘cmd + - bpo-35346(58): *note platform.uname(): ff4. now redirects ‘stderr’ + to *note os.devnull: ff5. when running external programs like ‘cmd /c ver’. - bpo-35066(59): Previously, calling the strftime() method on a @@ -69916,11 +63142,11 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and not throw an exception on a trailing ‘%’. - bpo-35345(60): The function ‘platform.popen’ has been removed, it - was deprecated since Python 3.3: use *note os.popen(): 3ce. + was deprecated since Python 3.3: use *note os.popen(): 294. instead. - - bpo-35344(61): On macOS, *note platform.platform(): 1115. now uses - *note platform.mac_ver(): 1116, if it returns a non-empty release + - bpo-35344(61): On macOS, *note platform.platform(): ff6. now uses + *note platform.mac_ver(): ff7, if it returns a non-empty release string, to get the macOS version rather than the darwin version. - bpo-35312(62): Make ‘lib2to3.pgen2.parse.ParseError’ round-trip @@ -69934,7 +63160,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and diff. Original patch by R. David Murray & Jairo Trad. Enhanced by Sanyam Khurana. - - bpo-28604(65): *note locale.localeconv(): 587. now sets temporarily + - bpo-28604(65): *note locale.localeconv(): 47b. now sets temporarily the ‘LC_CTYPE’ locale to the ‘LC_MONETARY’ locale if the two locales are different and monetary strings are non-ASCII. This temporary change affects other threads. @@ -69946,7 +63172,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and directly. - bpo-35226(68): Recursively check arguments when testing for - equality of *note unittest.mock.call: 108e. objects and add note + equality of *note unittest.mock.call: f55. objects and add note that tracking of parameters used to create ancestors of mocks in ‘mock_calls’ is not possible. @@ -69981,16 +63207,16 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and doc by adding ‘non-overlapping’ and changing ‘!=’ to ‘<’. - bpo-33710(78): Deprecated ‘l*gettext()’ functions and methods in - the *note gettext: 87. module. They return encoded bytes instead + the *note gettext: 89. module. They return encoded bytes instead of Unicode strings and are artifacts from Python 2 times. Also deprecated functions and methods related to setting the charset for ‘l*gettext()’ functions and methods. - - bpo-35017(79): *note socketserver.BaseServer.serve_forever(): b65. - now exits immediately if it’s *note shutdown(): 1117. method is + - bpo-35017(79): *note socketserver.BaseServer.serve_forever(): a6c. + now exits immediately if it’s *note shutdown(): ff8. method is called while it is polling for new events. - - bpo-35024(80): *note importlib: 9a. no longer logs ‘wrote’ + - bpo-35024(80): *note importlib: 9b. no longer logs ‘wrote’ redundantly after ‘(created|could not create)’ is already logged. Patch by Quentin Agren. @@ -70014,12 +63240,12 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34909(86): Enum: fix grandchildren subclassing when parent mixed with concrete data types. - - bpo-35022(87): *note unittest.mock.MagicMock: 876. now supports the - ‘__fspath__’ method (from *note os.PathLike: 5e8.). + - bpo-35022(87): *note unittest.mock.MagicMock: 76c. now supports the + ‘__fspath__’ method (from *note os.PathLike: 4dc.). - bpo-35008(88): Fixed references leaks when call the ‘__setstate__()’ method of *note xml.etree.ElementTree.Element: - 21d. in the C implementation for already initialized element. + aa5. in the C implementation for already initialized element. - bpo-23420(89): Verify the value for the parameter ‘-s’ of the cProfile CLI. Patch by Robert Kuska @@ -70027,13 +63253,13 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33947(90): dataclasses now handle recursive reprs without raising RecursionError. - - bpo-34890(91): Make *note inspect.iscoroutinefunction(): 7eb, *note - inspect.isgeneratorfunction(): 1118. and *note - inspect.isasyncgenfunction(): 1119. work with *note - functools.partial(): 8b7. Patch by Pablo Galindo. + - bpo-34890(91): Make *note inspect.iscoroutinefunction(): 6df, *note + inspect.isgeneratorfunction(): ff9. and *note + inspect.isasyncgenfunction(): ffa. work with *note + functools.partial(): 7ad. Patch by Pablo Galindo. - - bpo-34521(92): Use *note socket.CMSG_SPACE(): 111a. to calculate - ancillary data size instead of *note socket.CMSG_LEN(): 111b. in + - bpo-34521(92): Use *note socket.CMSG_SPACE(): ffb. to calculate + ancillary data size instead of *note socket.CMSG_LEN(): ffc. in ‘multiprocessing.reduction.recvfds()’ as RFC 3542(93) requires the use of the former for portable applications. @@ -70048,26 +63274,26 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and the best method compress (slower, but smaller file). Also, change the default compression level to 6 (tradeoff). - - bpo-16965(97): The *note 2to3: 111c. *note execfile: 111d. fixer - now opens the file with mode ‘'rb'’. Patch by Zackery Spytz. + - bpo-16965(97): The *note 2to3: ffd. *note execfile: ffe. fixer now + opens the file with mode ‘'rb'’. Patch by Zackery Spytz. - - bpo-34966(98): *note pydoc: d9. now supports aliases not only to + - bpo-34966(98): *note pydoc: da. now supports aliases not only to methods defined in the end class, but also to inherited methods. The docstring is not duplicated for aliases. - - bpo-34926(99): *note mimetypes.MimeTypes.guess_type(): 111e. now - accepts *note path-like object: 474. in addition to url strings. + - bpo-34926(99): *note mimetypes.MimeTypes.guess_type(): fff. now + accepts *note path-like object: 35b. in addition to url strings. Patch by Mayank Asthana. - bpo-23831(100): Add ‘moveto()’ method to the ‘tkinter.Canvas’ widget. Patch by Juliette Monsel. - bpo-34941(101): Methods ‘find()’, ‘findtext()’ and ‘findall()’ of - the ‘Element’ class in the *note xml.etree.ElementTree: 140. module + the ‘Element’ class in the *note xml.etree.ElementTree: 138. module are now able to find children which are instances of ‘Element’ subclasses. - - bpo-32680(102): *note smtplib.SMTP: 1de. objects now always have a + - bpo-32680(102): *note smtplib.SMTP: a62. objects now always have a ‘sock’ attribute present - bpo-34769(103): Fix for async generators not finalizing when event @@ -70086,14 +63312,14 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and protocols and also to add support by default for `wss', the secure websocket protocol. - - bpo-34922(107): Fixed integer overflow in the *note digest(): 111f. - and *note hexdigest(): 1120. methods for the SHAKE algorithm in the - *note hashlib: 8c. module. + - bpo-34922(107): Fixed integer overflow in the *note digest(): 1000. + and *note hexdigest(): 1001. methods for the SHAKE algorithm in the + *note hashlib: 8d. module. - bpo-34925(108): 25% speedup in argument parsing for the functions in the bisect module. - - bpo-34900(109): Fixed *note unittest.TestCase.debug(): 1121. when + - bpo-34900(109): Fixed *note unittest.TestCase.debug(): 1002. when used to call test methods with subtests. Patch by Bruno Oliveira. - bpo-34844(110): logging.Formatter enhancement - Ensure styles and @@ -70111,7 +63337,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34871(112): Fix inspect module polluted ‘sys.modules’ when parsing ‘__text_signature__’ of callable. - - bpo-34898(113): Add ‘mtime’ argument to *note gzip.compress: 305. + - bpo-34898(113): Add ‘mtime’ argument to *note gzip.compress: 1bd. for reproducible output. Patch by Guo Ci Teo. - bpo-28441(114): On Cygwin and MinGW, ensure that ‘sys.executable’ @@ -70137,7 +63363,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34022(119): The ‘SOURCE_DATE_EPOCH’ environment variable no longer overrides the value of the `invalidation_mode' argument to - *note py_compile.compile(): 346, and determines its default value + *note py_compile.compile(): 201, and determines its default value instead. - bpo-34819(120): Use a monotonic clock to compute timeouts in @@ -70147,7 +63373,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34758(121): Add .wasm -> application/wasm to list of recognized file types and content type headers - - bpo-34789(122): *note xml.sax.make_parser(): 1122. now accepts any + - bpo-34789(122): *note xml.sax.make_parser(): 1003. now accepts any iterable as its `parser_list' argument. Patch by Andrés Delfino. - bpo-34334(123): In ‘QueueHandler’, clear ‘exc_text’ from @@ -70157,19 +63383,19 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and instead of SelectorEventLoop, by default. - bpo-5950(125): Support reading zip files with archive comments in - *note zipimport: 14c. + *note zipimport: 144. - - bpo-32892(126): The parser now represents all constants as *note - ast.Constant: 3a9. instead of using specific constant AST types - (‘Num’, ‘Str’, ‘Bytes’, ‘NameConstant’ and ‘Ellipsis’). These - classes are considered deprecated and will be removed in future - Python versions. + - bpo-32892(126): The parser now represents all constants as + ‘ast.Constant’ instead of using specific constant AST types (‘Num’, + ‘Str’, ‘Bytes’, ‘NameConstant’ and ‘Ellipsis’). These classes are + considered deprecated and will be removed in future Python + versions. - bpo-34728(127): Add deprecation warning when ‘loop’ is used in - methods: *note asyncio.sleep: 3ad, *note asyncio.wait: 207. and - *note asyncio.wait_for: 191. + methods: *note asyncio.sleep: 270, *note asyncio.wait: 274. and + *note asyncio.wait_for: 273. - - bpo-34738(128): ZIP files created by *note distutils: 38. will now + - bpo-34738(128): ZIP files created by *note distutils: 39. will now include entries for directories. - bpo-34659(129): Add an optional `initial' argument to @@ -70185,11 +63411,11 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and PowerShell Core 6.1 and is now available under all operating systems. - - bpo-31177(133): Fix bug that prevented using *note reset_mock: 6a3. + - bpo-31177(133): Fix bug that prevented using *note reset_mock: 597. on mock instances with deleted attributes - bpo-34672(134): Add a workaround, so the ‘'Z'’ *note - time.strftime(): c39. specifier on the musl C library can work in + time.strftime(): b45. specifier on the musl C library can work in some cases. - bpo-34666(135): Implement ‘asyncio.StreamWriter.awrite’ and @@ -70205,7 +63431,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and an after_parent handler has been registered with os.register_at_fork and the fork system call fails. - - bpo-34652(138): Ensure *note os.lchmod(): 1123. is never defined on + - bpo-34652(138): Ensure *note os.lchmod(): 1004. is never defined on Linux. - bpo-34638(139): Store a weak reference to stream reader to break @@ -70213,21 +63439,21 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and detect and close the socket if the stream is deleted (garbage collected) without ‘close()’ call. - - bpo-34536(140): ‘Enum._missing_’: raise *note ValueError: 16d. if - None returned and *note TypeError: 1fe. if non-member is returned. + - bpo-34536(140): ‘Enum._missing_’: raise *note ValueError: 1e7. if + None returned and *note TypeError: 17f. if non-member is returned. - bpo-34636(141): Speed up re scanning of many non-matching characters for s w and d within bytes objects. (microoptimization) - - bpo-24412(142): Add *note addModuleCleanup(): 377. and *note - addClassCleanup(): 378. to unittest to support cleanups for - ‘setUpModule()’ and *note setUpClass(): 379. Patch by Lisa Roach. + - bpo-24412(142): Add *note addModuleCleanup(): 236. and *note + addClassCleanup(): 237. to unittest to support cleanups for + ‘setUpModule()’ and *note setUpClass(): 238. Patch by Lisa Roach. - bpo-34630(143): Don’t log SSL certificate errors in asyncio code (connection error logging is skipped already). - bpo-32490(144): Prevent filename duplication in *note subprocess: - f9. exception messages. Patch by Zackery Spytz. + fa. exception messages. Patch by Zackery Spytz. - bpo-34363(145): dataclasses.asdict() and .astuple() now handle namedtuples correctly. @@ -70251,7 +63477,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and caused installation issues on Windows. - bpo-34604(151): Fix possible mojibake in the error message of *note - pwd.getpwnam: 1124. and *note grp.getgrnam: 1125. using string + pwd.getpwnam: 1005. and *note grp.getgrnam: 1006. using string representation because of invisible characters or trailing whitespaces. Patch by William Grzybowski. @@ -70261,12 +63487,12 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34574(153): OrderedDict iterators are not exhausted during pickling anymore. Patch by Sergey Fedoseev. - - bpo-8110(154): Refactored *note subprocess: f9. to check for + - bpo-8110(154): Refactored *note subprocess: fa. to check for Windows-specific modules rather than ‘sys.platform == 'win32'’. - bpo-34530(155): ‘distutils.spawn.find_executable()’ now falls back - on *note os.defpath: 10dc. if the ‘PATH’ environment variable is - not set. + on *note os.defpath: fba. if the ‘PATH’ environment variable is not + set. - bpo-34563(156): On Windows, fix multiprocessing.Connection for very large read: fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for @@ -70277,10 +63503,11 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34282(158): Move ‘Enum._convert’ to ‘EnumMeta._convert_’ and fix enum members getting shadowed by parent attributes. - - bpo-22872(159): When the queue is closed, *note ValueError: 16d. is - now raised by *note multiprocessing.Queue.put(): 1126. and *note - multiprocessing.Queue.get(): 1127. instead of *note AssertionError: - 240. and *note OSError: 307, respectively. Patch by Zackery Spytz. + - bpo-22872(159): When the queue is closed, *note ValueError: 1e7. is + now raised by *note multiprocessing.Queue.put(): 1007. and *note + multiprocessing.Queue.get(): 1008. instead of *note AssertionError: + 1009. and *note OSError: 1bf, respectively. Patch by Zackery + Spytz. - bpo-34515(160): Fix parsing non-ASCII identifiers in ‘lib2to3.pgen2.tokenize’ (PEP 3131). @@ -70290,7 +63517,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and very low negative year value. - bpo-34472(162): Improved compatibility for streamed files in *note - zipfile: 14b. Previously an optional signature was not being + zipfile: 143. Previously an optional signature was not being written and certain ZIP applications were not supported. Patch by Silas Sewell. @@ -70303,17 +63530,17 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-6700(164): Fix inspect.getsourcelines for module level frames/tracebacks. Patch by Vladimir Matveev. - - bpo-34171(165): Running the *note trace: 11b. module no longer + - bpo-34171(165): Running the *note trace: 113. module no longer creates the ‘trace.cover’ file. - bpo-34441(166): Fix crash when an ‘ABC’-derived class with invalid ‘__subclasses__’ is passed as the second argument to *note - issubclass(): 555. Patch by Alexey Izbyshev. + issubclass(): 441. Patch by Alexey Izbyshev. - bpo-34427(167): Fix infinite loop in ‘a.extend(a)’ for ‘MutableSequence’ subclasses. - - bpo-34412(168): Make *note signal.strsignal(): 1128. work on HP-UX. + - bpo-34412(168): Make *note signal.strsignal(): 100a. work on HP-UX. Patch by Michael Osipov. - bpo-20849(169): shutil.copytree now accepts a new ‘dirs_exist_ok’ @@ -70322,14 +63549,14 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-31715(170): Associate ‘.mjs’ file extension with ‘application/javascript’ MIME Type. - - bpo-34384(171): *note os.readlink(): 1d1. now accepts *note - path-like: 474. and *note bytes: 172. objects on Windows. + - bpo-34384(171): *note os.readlink(): 1df. now accepts *note + path-like: 35b. and *note bytes: 322. objects on Windows. - bpo-22602(172): The UTF-7 decoder now raises *note - UnicodeDecodeError: 32e. for ill-formed sequences starting with “+” + UnicodeDecodeError: 1e9. for ill-formed sequences starting with “+” (as specified in RFC 2152). Patch by Zackery Spytz. - - bpo-2122(173): The *note mmap.flush(): 3e8. method now returns + - bpo-2122(173): The *note mmap.flush(): 2ae. method now returns ‘None’ on success, raises an exception on error under all platforms. @@ -70338,41 +63565,41 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and entries. - bpo-34333(175): Fix %-formatting in *note - pathlib.PurePath.with_suffix(): 1129. when formatting an error + pathlib.PurePath.with_suffix(): 100b. when formatting an error message. - - bpo-18540(176): The *note imaplib.IMAP4: 1af. and *note - imaplib.IMAP4_SSL: 1b0. classes now resolve to the local host IP + - bpo-18540(176): The *note imaplib.IMAP4: 5f8. and *note + imaplib.IMAP4_SSL: 9f8. classes now resolve to the local host IP correctly when the default value of `host' parameter (‘''’) is used. - bpo-26502(177): Implement ‘traceback.FrameSummary.__len__()’ method to preserve compatibility with the old tuple API. - - bpo-34318(178): *note assertRaises(): b94, *note - assertRaisesRegex(): b95, *note assertWarns(): b96. and *note - assertWarnsRegex(): b97. no longer success if the passed callable + - bpo-34318(178): *note assertRaises(): a9b, *note + assertRaisesRegex(): a9c, *note assertWarns(): a9d. and *note + assertWarnsRegex(): a9e. no longer success if the passed callable is None. They no longer ignore unknown keyword arguments in the context manager mode. A DeprecationWarning was raised in these cases since Python 3.5. - - bpo-9372(179): Deprecate *note __getitem__(): 3a5. methods of *note - xml.dom.pulldom.DOMEventStream: 3a6, *note - wsgiref.util.FileWrapper: 3a7. and *note fileinput.FileInput: 3a8. + - bpo-9372(179): Deprecate ‘__getitem__()’ methods of *note + xml.dom.pulldom.DOMEventStream: 268, *note + wsgiref.util.FileWrapper: 269. and *note fileinput.FileInput: 26a. - bpo-33613(180): Fix a race condition in ‘multiprocessing.semaphore_tracker’ when the tracker receives SIGINT before it can register signal handlers for ignoring it. - bpo-34248(181): Report filename in the exception raised when the - database file cannot be opened by *note dbm.gnu.open(): 112a. and - *note dbm.ndbm.open(): 112b. due to OS-related error. Patch by + database file cannot be opened by *note dbm.gnu.open(): 100c. and + *note dbm.ndbm.open(): 100d. due to OS-related error. Patch by Zsolt Cserna. - bpo-33089(182): Add math.dist() to compute the Euclidean distance between two points. - - bpo-34246(183): *note smtplib.SMTP.send_message(): 836. no longer + - bpo-34246(183): *note smtplib.SMTP.send_message(): 72c. no longer modifies the content of the `mail_options' argument. Patch by Pablo S. Blum de Aguiar. @@ -70384,10 +63611,10 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34270(186): The default asyncio task class now always has a name which can be get or set using two new methods (*note - get_name(): 2e7. and *note set_name(): 2e6.) and is visible in the - *note repr(): 8bb. output. An initial name can also be set using + get_name(): 19d. and *note set_name(): 19c.) and is visible in the + *note repr(): 7b1. output. An initial name can also be set using the new ‘name’ keyword argument to *note asyncio.create_task(): - 2e4. or the ‘create_task()’ method of the event loop. If no + 19a. or the ‘create_task()’ method of the event loop. If no initial name is set, the default Task implementation generates a name like ‘Task-1’ using a monotonic counter. @@ -70397,7 +63624,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-34035(188): Fix several AttributeError in zipfile seek() methods. Patch by Mickaël Schoentgen. - - bpo-32215(189): Fix performance regression in *note sqlite3: f2. + - bpo-32215(189): Fix performance regression in *note sqlite3: f3. when a DML statement appeared in a different line than the rest of the SQL query. @@ -70405,7 +63632,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and to ‘AbstractEventLoop.set_default_executor()’. - bpo-34251(191): Restore ‘msilib.Win64’ to preserve backwards - compatibility since it’s already used by *note distutils: 38.’ + compatibility since it’s already used by *note distutils: 39.’ ‘bdist_msi’ command. - bpo-19891(192): Ignore errors caused by missing / non-writable @@ -70419,7 +63646,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and variable and -X tracemalloc=0 command line option are now allowed to disable explicitly tracemalloc at startup. - - bpo-13041(195): Use *note shutil.get_terminal_size(): b27. to + - bpo-13041(195): Use *note shutil.get_terminal_size(): a2b. to calculate the terminal width correctly in the ‘argparse.HelpFormatter’ class. Initial patch by Zbyszek Jędrzejewski-Szmek. @@ -70428,35 +63655,35 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and “object”. Previously this conflicted with an internal use of “object”. - - bpo-34052(197): *note sqlite3.Connection.create_aggregate(): 1095, - *note sqlite3.Connection.create_function(): 1096, *note - sqlite3.Connection.set_authorizer(): 1097, *note - sqlite3.Connection.set_progress_handler(): 1098. methods raises + - bpo-34052(197): *note sqlite3.Connection.create_aggregate(): f78, + *note sqlite3.Connection.create_function(): f79, *note + sqlite3.Connection.set_authorizer(): f7a, *note + sqlite3.Connection.set_progress_handler(): f7b. methods raises TypeError when unhashable objects are passed as callable. These methods now don’t pass such objects to SQLite API. Previous behavior could lead to segfaults. Patch by Sergey Fedoseev. - bpo-34197(198): Attributes `skipinitialspace', `doublequote' and - `strict' of the `dialect' attribute of the *note csv: 29. reader - are now *note bool: 2c0. instances instead of integers 0 or 1. + `strict' of the `dialect' attribute of the *note csv: 2a. reader + are now *note bool: 170. instances instead of integers 0 or 1. - - bpo-32788(199): Errors other than *note TypeError: 1fe. raised in - methods ‘__adapt__()’ and ‘__conform__()’ in the *note sqlite3: f2. + - bpo-32788(199): Errors other than *note TypeError: 17f. raised in + methods ‘__adapt__()’ and ‘__conform__()’ in the *note sqlite3: f3. module are now propagated to the user. - - bpo-21446(200): The *note reload: 112c. fixer now uses *note - importlib.reload(): 4a2. instead of deprecated *note imp.reload(): - d3a. + - bpo-21446(200): The *note reload: 100e. fixer now uses *note + importlib.reload(): 38a. instead of deprecated *note imp.reload(): + c4c. - bpo-940286(201): pydoc’s ‘Helper.showtopic()’ method now prints the cross references of a topic correctly. - - bpo-34164(202): *note base64.b32decode(): a40. could raise + - bpo-34164(202): *note base64.b32decode(): 93e. could raise UnboundLocalError or OverflowError for incorrect padding. Now it always raises ‘base64.Error’ in these cases. - bpo-33729(203): Fixed issues with arguments parsing in *note - hashlib: 8c. + hashlib: 8d. - bpo-34097(204): ZipFile can zip files older than 1980-01-01 and newer than 2107-12-31 using a new ‘strict_timestamps’ parameter at @@ -70474,16 +63701,16 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and instead of IndexError when no positional arguments are passed. - bpo-34041(210): Add the parameter `deterministic' to the *note - sqlite3.Connection.create_function(): 1096. method. Patch by - Sergey Fedoseev. + sqlite3.Connection.create_function(): f79. method. Patch by Sergey + Fedoseev. - bpo-34056(211): Ensure the loader shim created by ‘imp.load_module’ always returns bytes from its ‘get_data()’ function. This fixes using ‘imp.load_module’ with PEP 552(212) hash-based pycs. - bpo-34054(213): The multiprocessing module now uses the monotonic - clock *note time.monotonic(): 860. instead of the system clock - *note time.time(): 42f. to implement timeout. + clock *note time.monotonic(): 756. instead of the system clock + *note time.time(): 30f. to implement timeout. - bpo-34043(214): Optimize tarfile uncompress performance about 15% when gzip is used. @@ -70513,7 +63740,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33974(221): Fixed passing lists and tuples of strings containing special characters ‘"’, ‘\’, ‘{’, ‘}’ and ‘\n’ as - options to *note ttk: 118. widgets. + options to *note ttk: 110. widgets. - bpo-27500(222): Fix getaddrinfo to resolve IPv6 addresses correctly. @@ -70521,13 +63748,13 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-24567(223): Improve random.choices() to handle subnormal input weights that could occasionally trigger an IndexError. - - bpo-33871(224): Fixed integer overflow in *note os.readv(): 4c1, - *note os.writev(): 4c4, *note os.preadv(): 4c0. and *note - os.pwritev(): 4c3. and in *note os.sendfile(): 463. with `headers' + - bpo-33871(224): Fixed integer overflow in *note os.readv(): 3a9, + *note os.writev(): 3ac, *note os.preadv(): 3a8. and *note + os.pwritev(): 3ab. and in *note os.sendfile(): 34a. with `headers' or `trailers' arguments (on BSD-based OSes and macOS). - - bpo-25007(225): Add *note copy.copy(): 4d4. and *note - copy.deepcopy(): 4d5. support to zlib compressors and + - bpo-25007(225): Add *note copy.copy(): 3bc. and *note + copy.deepcopy(): 3bd. support to zlib compressors and decompressors. Patch by Zackery Spytz. - bpo-33929(226): multiprocessing: Fix a race condition in Popen of @@ -70545,13 +63772,13 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33897(228): Added a ‘force’ keyword argument to logging.basicConfig(). - - bpo-33695(229): *note shutil.copytree(): 34a. uses *note - os.scandir(): 38c. function and all copy functions depending from - it use cached *note os.stat(): 324. values. The speedup for + - bpo-33695(229): *note shutil.copytree(): 206. uses *note + os.scandir(): 24b. function and all copy functions depending from + it use cached *note os.stat(): 1dd. values. The speedup for copying a directory with 8000 files is around +9% on Linux, +20% on Windows and + 30% on a Windows SMB share. Also the number of *note - os.stat(): 324. syscalls is reduced by 38% making *note - shutil.copytree(): 34a. especially faster on network filesystems. + os.stat(): 1dd. syscalls is reduced by 38% making *note + shutil.copytree(): 206. especially faster on network filesystems. (Contributed by Giampaolo Rodola’ in bpo-33695(230).) - bpo-33916(231): bz2 and lzma: When Decompressor.__init__() is @@ -70566,21 +63793,21 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33663(234): Convert content length to string before putting to header. - - bpo-33721(235): *note os.path: c5. functions that return a boolean - result like *note exists(): 328, *note lexists(): 329, *note - isdir(): 32a, *note isfile(): 32b, *note islink(): 326, and *note - ismount(): 32c, and *note pathlib.Path: 332. methods that return a - boolean result like *note exists(): 333, *note is_dir(): 334, *note - is_file(): 335, *note is_mount(): 336, *note is_symlink(): 337, - *note is_block_device(): 338, *note is_char_device(): 339, *note - is_fifo(): 33a, *note is_socket(): 33b. now return ‘False’ instead - of raising *note ValueError: 16d. or its subclasses *note - UnicodeEncodeError: 32d. and *note UnicodeDecodeError: 32e. for + - bpo-33721(235): *note os.path: c6. functions that return a boolean + result like *note exists(): 1e2, *note lexists(): 1e3, *note + isdir(): 1e4, *note isfile(): 1e5, *note islink(): 1e0, and *note + ismount(): 1e6, and *note pathlib.Path: 1ed. methods that return a + boolean result like *note exists(): 1ee, *note is_dir(): 1ef, *note + is_file(): 1f0, *note is_mount(): 1f1, *note is_symlink(): 1f2, + *note is_block_device(): 1f3, *note is_char_device(): 1f4, *note + is_fifo(): 1f5, *note is_socket(): 1f6. now return ‘False’ instead + of raising *note ValueError: 1e7. or its subclasses *note + UnicodeEncodeError: 1e8. and *note UnicodeDecodeError: 1e9. for paths that contain characters or bytes unrepresentable at the OS level. - bpo-26544(236): Fixed implementation of *note platform.libc_ver(): - 1112. It almost always returned version ‘2.9’ for glibc. + ff3. It almost always returned version ‘2.9’ for glibc. - bpo-33843(237): Remove deprecated ‘cgi.escape’, ‘cgi.parse_qs’ and ‘cgi.parse_qsl’. @@ -70641,15 +63868,15 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and closed if it is aborted. - bpo-33767(256): The concatenation (‘+’) and repetition (‘*’) - sequence operations now raise *note TypeError: 1fe. instead of - *note SystemError: 6f4. when performed on *note mmap.mmap: 31f. + sequence operations now raise *note TypeError: 17f. instead of + *note SystemError: 5e8. when performed on *note mmap.mmap: 1d8. objects. Patch by Zackery Spytz. - bpo-33734(257): asyncio/ssl: Fix AttributeError, increase default handshake timeout - bpo-31014(258): Fixed creating a controller for *note webbrowser: - 132. when a user specifies a path to an entry in the BROWSER + 12a. when a user specifies a path to an entry in the BROWSER environment variable. Based on patch by John Still. - bpo-2504(259): Add gettext.pgettext() and variants. @@ -70657,7 +63884,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33197(260): Add description property for _ParameterKind - bpo-32751(261): When cancelling the task due to a timeout, *note - asyncio.wait_for(): 191. will now wait until the cancellation is + asyncio.wait_for(): 273. will now wait until the cancellation is complete. - bpo-32684(262): Fix gather to propagate cancellation of itself even @@ -70670,13 +63897,13 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and reduce the risk of data_received() being called before connection_made(). - - bpo-33671(265): *note shutil.copyfile(): 385, *note shutil.copy(): - 386, *note shutil.copy2(): 387, *note shutil.copytree(): 34a. and - *note shutil.move(): 388. use platform-specific fast-copy syscalls + - bpo-33671(265): *note shutil.copyfile(): 244, *note shutil.copy(): + 245, *note shutil.copy2(): 246, *note shutil.copytree(): 206. and + *note shutil.move(): 247. use platform-specific fast-copy syscalls on Linux and macOS in order to copy the file more efficiently. On - Windows *note shutil.copyfile(): 385. uses a bigger default buffer - size (1 MiB instead of 16 KiB) and a *note memoryview(): 389.-based - variant of *note shutil.copyfileobj(): 38a. is used. The speedup + Windows *note shutil.copyfile(): 244. uses a bigger default buffer + size (1 MiB instead of 16 KiB) and a *note memoryview(): 248.-based + variant of *note shutil.copyfileobj(): 249. is used. The speedup for copying a 512MiB file is about +26% on Linux, +50% on macOS and +40% on Windows. Also, much less CPU cycles are consumed. (Contributed by Giampaolo Rodola’ in bpo-25427(266).) @@ -70708,19 +63935,19 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33652(274): Pickles of type variables and subscripted generics are now future-proof and compatible with older Python versions. - - bpo-32493(275): Fixed *note uuid.uuid1(): 51a. on FreeBSD. + - bpo-32493(275): Fixed *note uuid.uuid1(): 404. on FreeBSD. - bpo-33238(276): Add ‘InvalidStateError’ to *note - concurrent.futures: 21. ‘Future.set_result’ and + concurrent.futures: 22. ‘Future.set_result’ and ‘Future.set_exception’ now raise ‘InvalidStateError’ if the futures are not pending or running. Patch by Jason Haydaman. - bpo-33618(277): Finalize and document preliminary and experimental TLS 1.3 support with OpenSSL 1.1.1 - - bpo-33625(278): Release GIL on *note grp.getgrnam: 1125, *note - grp.getgrgid: 6d8, *note pwd.getpwnam: 1124. and *note - pwd.getpwuid: 1111. if reentrant variants of these functions are + - bpo-33625(278): Release GIL on *note grp.getgrnam: 1006, *note + grp.getgrgid: 5cc, *note pwd.getpwnam: 1005. and *note + pwd.getpwuid: ff2. if reentrant variants of these functions are available. Patch by William Grzybowski. - bpo-33623(279): Fix possible SIGSGV when asyncio.Future is created @@ -70748,17 +63975,17 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and will have TLS 1.3 ciphers enabled by default. - bpo-28556(286): Do not simplify arguments to *note typing.Union: - 112d. Now ‘Union[Manager, Employee]’ is not simplified to + 100f. Now ‘Union[Manager, Employee]’ is not simplified to ‘Employee’ at runtime. Such simplification previously caused several bugs and limited possibilities for introspection. - - bpo-12486(287): *note tokenize.generate_tokens(): 112e. is now + - bpo-12486(287): *note tokenize.generate_tokens(): 1010. is now documented as a public API to tokenize unicode strings. It was previously present but undocumented. - bpo-33540(288): Add a new ‘block_on_close’ class attribute to ‘ForkingMixIn’ and ‘ThreadingMixIn’ classes of *note socketserver: - f0. + f1. - bpo-33548(289): tempfile._candidate_tempdir_list should consider common TEMP locations @@ -70780,22 +64007,22 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-26819(295): Fix race condition with ‘ReadTransport.resume_reading’ in Windows proactor event loop. - - Fix failure in *note typing.get_type_hints(): 1ef. when ClassVar + - Fix failure in *note typing.get_type_hints(): 2fe. when ClassVar was provided as a string forward reference. - - bpo-33516(296): *note unittest.mock.MagicMock: 876. now supports + - bpo-33516(296): *note unittest.mock.MagicMock: 76c. now supports the ‘__round__’ magic method. - bpo-28612(297): Added support for Site Maps to urllib’s - ‘RobotFileParser’ as *note RobotFileParser.site_maps(): 112f. + ‘RobotFileParser’ as *note RobotFileParser.site_maps(): 1011. Patch by Lady Red, based on patch by Peter Wirtz. - bpo-28167(298): Remove platform.linux_distribution, which was deprecated since 3.5. - bpo-33504(299): Switch the default dictionary implementation for - *note configparser: 22. from *note collections.OrderedDict: 2ed. to - the standard *note dict: 164. type. + *note configparser: 23. from *note collections.OrderedDict: 1a5. to + the standard *note dict: 1a4. type. - bpo-33505(300): Optimize asyncio.ensure_future() by reordering if checks: 1.17x faster. @@ -70816,11 +64043,11 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and ‘__set__’ or ‘__delete__’. Patch by Aaron Hall. - bpo-29209(305): Removed the ‘doctype()’ method and the `html' - parameter of the constructor of *note XMLParser: 37f. The + parameter of the constructor of *note XMLParser: 23e. The ‘doctype()’ method defined in a subclass will no longer be called. Deprecated methods ‘getchildren()’ and ‘getiterator()’ in the *note - ElementTree: 140. module emit now a *note DeprecationWarning: 15a. - instead of *note PendingDeprecationWarning: 15c. + ElementTree: 138. module emit now a *note DeprecationWarning: 264. + instead of *note PendingDeprecationWarning: 265. - bpo-33453(306): Fix dataclasses to work if using literal string type annotations or if using PEP 563 “Postponed Evaluation of @@ -70835,7 +64062,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33365(308): Print the header values besides the header keys instead just the header keys if `debuglevel' is set to >0 in *note - http.client: 93. Patch by Marco Strigl. + http.client: 94. Patch by Marco Strigl. - bpo-20087(309): Updated alias mapping with glibc 2.27 supported locales. @@ -70857,17 +64084,17 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and `errors' parameter that complements the already existing `encoding'. Patch by Stephan Hohe. - - bpo-32933(315): *note unittest.mock.mock_open(): 10c4. now supports + - bpo-32933(315): *note unittest.mock.mock_open(): fa2. now supports iteration over the file contents. Patch by Tony Flury. - - bpo-33217(316): Raise *note TypeError: 1fe. when looking up + - bpo-33217(316): Raise *note TypeError: 17f. when looking up non-Enum objects in Enum classes and Enum members. - bpo-33197(317): Update error message when constructing invalid inspect.Parameters Patch by Dong-hee Na. - bpo-33383(318): Fixed crash in the get() method of the *note - dbm.ndbm: 34. database object when it is called with a single + dbm.ndbm: 35. database object when it is called with a single argument. - bpo-33375(319): The warnings module now finds the Python file @@ -70881,29 +64108,29 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and name of supported method of ‘IMAP4’ object. - bpo-32455(321): Added `jump' parameter to *note dis.stack_effect(): - 929. + 81f. - bpo-27485(322): Rename and deprecate undocumented functions in - *note urllib.parse(): 128. + *note urllib.parse(): 120. - bpo-33332(323): Add ‘signal.valid_signals()’ to expose the POSIX sigfillset() functionality. - bpo-33251(324): ‘ConfigParser.items()’ was fixed so that key-value - pairs passed in via *note vars: 1130. are not included in the + pairs passed in via *note vars: 1012. are not included in the resulting output. - bpo-33329(325): Fix multiprocessing regression on newer glibcs - - bpo-33334(326): *note dis.stack_effect(): 929. now supports all + - bpo-33334(326): *note dis.stack_effect(): 81f. now supports all defined opcodes including NOP and EXTENDED_ARG. - bpo-991266(327): Fix quoting of the ‘Comment’ attribute of *note - http.cookies.SimpleCookie: 1131. + http.cookies.SimpleCookie: 1013. - bpo-33131(328): Upgrade bundled version of pip to 10.0.1. - - bpo-33308(329): Fixed a crash in the *note parser: c7. module when + - bpo-33308(329): Fixed a crash in the *note parser: c8. module when converting an ST object to a tree of tuples or lists with ‘line_info=False’ and ‘col_info=True’. @@ -70915,9 +64142,9 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-11594(332): Ensure line-endings are respected when using lib2to3. - - bpo-33254(333): Have *note importlib.resources.contents(): 1132. - and *note importlib.abc.ResourceReader.contents(): 1133. return an - *note iterable: c7e. instead of an *note iterator: 1134. + - bpo-33254(333): Have *note importlib.resources.contents(): 1014. + and *note importlib.abc.ResourceReader.contents(): 1015. return an + *note iterable: b8c. instead of an *note iterator: 1016. - bpo-33265(334): ‘contextlib.ExitStack’ and ‘contextlib.AsyncExitStack’ now use a method instead of a wrapper @@ -70936,17 +64163,17 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and large random integers. Patch by Wolfgang Maier. - bpo-33185(338): Fixed regression when running pydoc with the *note - -m: 445. switch. (The regression was introduced in 3.7.0b3 by the + -m: 328. switch. (The regression was introduced in 3.7.0b3 by the resolution of bpo-33053(339)) This fix also changed pydoc to add ‘os.getcwd()’ to *note sys.path: - 260. when necessary, rather than adding ‘"."’. + 479. when necessary, rather than adding ‘"."’. - bpo-29613(340): Added support for the ‘SameSite’ cookie flag to the ‘http.cookies’ module. - bpo-33169(341): Delete entries of ‘None’ in *note - sys.path_importer_cache: 59a. when + sys.path_importer_cache: 48e. when ‘importlib.machinery.invalidate_caches()’ is called. - bpo-33203(342): ‘random.Random.choice()’ now raises ‘IndexError’ @@ -70957,20 +64184,20 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and an uncaught StopIteration in a generator into a return-statement. - bpo-33209(345): End framing at the end of C implementation of *note - pickle.Pickler.dump(): 1135. + pickle.Pickler.dump(): 1017. - bpo-32861(346): The urllib.robotparser’s ‘__str__’ representation now includes wildcard entries and the “Crawl-delay” and “Request-rate” fields. Also removes extra newlines that were being appended to the end of the string. Patch by Michael Lazar. - - bpo-23403(347): ‘DEFAULT_PROTOCOL’ in *note pickle: ca. was bumped + - bpo-23403(347): ‘DEFAULT_PROTOCOL’ in *note pickle: cb. was bumped to 4. Protocol 4 is described in PEP 3154(348) and available since Python 3.4. It offers better performance and smaller size compared to protocol 3 introduced in Python 3.0. - bpo-20104(349): Improved error handling and fixed a reference leak - in *note os.posix_spawn(): 384. + in *note os.posix_spawn(): 243. - bpo-33106(350): Deleting a key from a read-only dbm database raises module specific error instead of KeyError. @@ -71057,7 +64284,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-33037(374): Skip sending/receiving data after SSL transport closing. - - bpo-27683(375): Fix a regression in *note ipaddress: a2. that + - bpo-27683(375): Fix a regression in *note ipaddress: a3. that result of ‘hosts()’ is empty when the network is constructed by a tuple containing an integer mask and only 1 bit left for addresses. @@ -71076,7 +64303,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-32056(380): Improved exceptions raised for invalid number of channels and sample width when read an audio file in modules *note - aifc: 4, *note wave: 130. and *note sunau: fa. + aifc: 5, *note wave: 128. and *note sunau: fb. - bpo-32970(381): Improved disassembly of the MAKE_FUNCTION instruction. @@ -71131,8 +64358,8 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and “No dist file created in earlier command” to the more helpful “Must create and upload files in one command”. - - bpo-32857(396): In *note tkinter: 10e, ‘after_cancel(None)’ now - raises a *note ValueError: 16d. instead of canceling the first + - bpo-32857(396): In *note tkinter: 10d, ‘after_cancel(None)’ now + raises a *note ValueError: 1e7. instead of canceling the first scheduled function. Patch by Cheryl Sabella. - bpo-32852(397): Make sure sys.argv remains as a list when running @@ -71150,7 +64377,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and are three debugging helper methods that can be used instead ‘_dump_registry’, ‘_abc_registry_clear’, and ‘_abc_caches_clear’. - - bpo-32841(399): Fixed *note asyncio.Condition: 3b3. issue which + - bpo-32841(399): Fixed *note asyncio.Condition: 278. issue which silently ignored cancellation after notifying and cancelling a conditional lock. Patch by Bar Harel. @@ -71179,8 +64406,8 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-32792(406): collections.ChainMap() preserves the order of the underlying mappings. - - bpo-32775(407): *note fnmatch.translate(): 1136. no longer produces - patterns which contain set operations. Sets starting with ‘[’ or + - bpo-32775(407): *note fnmatch.translate(): 1018. no longer produces + patterns which contain set operations. Sets starting with ‘[‘ or containing ‘–’, ‘&&’, ‘~~’ or ‘||’ will be interpreted differently in regular expressions in future versions. Currently they emit warnings. fnmatch.translate() now avoids producing patterns @@ -71198,8 +64425,8 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and linking for dlopen. The shared extension is now explicitly linked against libdl on platforms with dl. - - bpo-32749(411): A *note dbm.dumb: 32. database opened with flags - ‘r’ is now read-only. *note dbm.dumb.open(): 3e4. with flags ‘r’ + - bpo-32749(411): A *note dbm.dumb: 33. database opened with flags + ‘r’ is now read-only. *note dbm.dumb.open(): 2aa. with flags ‘r’ and ‘w’ no longer creates a database if it does not exist. - bpo-32741(412): Implement ‘asyncio.TimerHandle.when()’ method. @@ -71228,10 +64455,10 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-31848(418): Fix the error handling in Aifc_read.initfp() when the SSND chunk is not found. Patch by Zackery Spytz. - - bpo-32585(419): Add Ttk spinbox widget to *note tkinter.ttk: 118. + - bpo-32585(419): Add Ttk spinbox widget to *note tkinter.ttk: 110. Patch by Alan D Moore. - - bpo-32512(420): *note profile: d3. CLI accepts ‘-m module_name’ as + - bpo-32512(420): *note profile: d4. CLI accepts ‘-m module_name’ as an alternative to script path. - bpo-8525(421): help() on a type now displays builtin subclasses. @@ -71253,7 +64480,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and ‘socket.recvfrom()’ when it receives multicast packet since useless resolving of network interface name is omitted. - - bpo-32147(425): *note binascii.unhexlify(): 1137. is now up to 2 + - bpo-32147(425): *note binascii.unhexlify(): 1019. is now up to 2 times faster. Patch by Sergey Fedoseev. - bpo-30693(426): The TarFile class now recurses directories in a @@ -71262,7 +64489,7 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and - bpo-30693(427): The ZipFile class now recurses directories in a reproducible way. - - bpo-31680(428): Added *note curses.ncurses_version: 2f3. + - bpo-31680(428): Added *note curses.ncurses_version: 1ab. - bpo-31908(429): Fix output of cover files for ‘trace’ module command-line tool. Previously emitted cover files only when @@ -71278,18 +64505,18 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and Patch by Bjorn Andersson. - bpo-22005(432): Implemented unpickling instances of *note datetime: - 1a0, *note date: 19e. and *note time: 5ef. pickled by Python 2. + 181, *note date: 180. and *note time: 4e4. pickled by Python 2. ‘encoding='latin1'’ should be used for successful decoding. - - bpo-27645(433): *note sqlite3.Connection: 4e1. now exposes a *note - backup: 4e2. method, if the underlying SQLite library is at version + - bpo-27645(433): *note sqlite3.Connection: 3c9. now exposes a *note + backup: 3ca. method, if the underlying SQLite library is at version 3.6.11 or higher. Patch by Lele Gaifax. - - bpo-16865(434): Support arrays >=2GiB in *note ctypes: 2a. Patch + - bpo-16865(434): Support arrays >=2GiB in *note ctypes: 2b. Patch by Segev Finer. - bpo-31508(435): Removed support of arguments in *note - tkinter.ttk.Treeview.selection: 3e1. It was deprecated in 3.6. + tkinter.ttk.Treeview.selection: 2a7. It was deprecated in 3.6. Use specialized methods like ‘selection_set’ for changing the selection. @@ -72171,12 +65398,12 @@ File: python.info, Node: Library<26>, Next: Documentation<21>, Prev: Core and (436) https://bugs.python.org/issue29456  -File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Documentation<25>, Next: Tests<20>, Prev: Library<29>, Up: Python 3 8 0 alpha 1 -1.19.27.4 Documentation +1.18.30.4 Documentation ....................... - - bpo-21257(1): Document *note http.client.parse_headers(): 1139. + - bpo-21257(1): Document *note http.client.parse_headers(): 101b. - bpo-34764(2): Improve example of iter() with 2nd sentinel argument. @@ -72202,7 +65429,7 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 - bpo-35044(9): Fix the documentation with the role ‘exc’ for the appropriated exception. Patch by Stéphane Wirtel - - bpo-35035(10): Rename documentation for *note email.utils: 74. to + - bpo-35035(10): Rename documentation for *note email.utils: 76. to ‘email.utils.rst’. - bpo-34967(11): Use app.add_object_type() instead of the deprecated @@ -72250,10 +65477,10 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 with a slightly more consistent format. - bpo-33736(26): Improve the documentation of *note - asyncio.open_connection(): 46d, *note asyncio.start_server(): 46e. + asyncio.open_connection(): 354, *note asyncio.start_server(): 355. and their UNIX socket counterparts. - - bpo-23859(27): Document that *note asyncio.wait(): 207. does not + - bpo-23859(27): Document that *note asyncio.wait(): 274. does not cancel its futures on timeout. - bpo-32436(28): Document PEP 567(29) changes to asyncio. @@ -72292,7 +65519,7 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 - bpo-27212(40): Modify documentation for the ‘islice()’ recipe to consume initial values up to the start index. - - bpo-28247(41): Update *note zipapp: 14a. documentation to describe + - bpo-28247(41): Update *note zipapp: 142. documentation to describe how to make standalone applications. - bpo-18802(42): Documentation changes for ipaddress. Patch by Jon @@ -72313,16 +65540,16 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 - bpo-32800(47): Update link to w3c doc for xml default namespaces. - - bpo-11015(48): Update *note test.support: 106. documentation. + - bpo-11015(48): Update *note test.support: 107. documentation. - bpo-32613(49): Update the faq/windows.html to use the py command from PEP 397 instead of python. - - bpo-8722(50): Document *note __getattr__(): 42c. behavior when - property ‘get()’ method raises *note AttributeError: 4a4. + - bpo-8722(50): Document ‘__getattr__()’ behavior when property + ‘get()’ method raises *note AttributeError: 38c. - bpo-32614(51): Modify RE examples in documentation to use raw - strings to prevent *note DeprecationWarning: 15a. and add text to + strings to prevent *note DeprecationWarning: 264. and add text to REGEX HOWTO to highlight the deprecation. - bpo-20709(52): Remove the paragraph where we explain that @@ -72332,7 +65559,7 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 - bpo-32722(53): Remove the bad example in the tutorial of the Generator Expression. Patch by Stéphane Wirtel - - bpo-31972(54): Improve docstrings for *note pathlib.PurePath: 235. + - bpo-31972(54): Improve docstrings for *note pathlib.PurePath: 101c. subclasses. - bpo-30607(55): Use the externalized ‘python-docs-theme’ package @@ -72343,7 +65570,7 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 - bpo-32337(57): Update documentation related with ‘dict’ order. - - bpo-25041(58): Document ‘AF_PACKET’ in the *note socket: ef. + - bpo-25041(58): Document ‘AF_PACKET’ in the *note socket: f0. module. - bpo-31432(59): Clarify meaning of CERT_NONE, CERT_OPTIONAL, and @@ -72470,9 +65697,9 @@ File: python.info, Node: Documentation<21>, Next: Tests<21>, Prev: Library<26 (59) https://bugs.python.org/issue31432  -File: python.info, Node: Tests<21>, Next: Build<20>, Prev: Documentation<21>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Tests<20>, Next: Build<17>, Prev: Documentation<25>, Up: Python 3 8 0 alpha 1 -1.19.27.5 Tests +1.18.30.5 Tests ............... - bpo-35772(1): Fix sparse file tests of test_tarfile on ppc64 with @@ -72509,13 +65736,13 @@ File: python.info, Node: Tests<21>, Next: Build<20>, Prev: Documentation<21>, join the pool. - bpo-35519(8): Rename ‘test.bisect’ module to ‘test.bisect_cmd’ to - avoid conflict with *note bisect: 11. module when running directly + avoid conflict with *note bisect: 12. module when running directly a test like ‘./python Lib/test/test_xmlrpc.py’. - - bpo-35513(9): Replace *note time.time(): 42f. with *note - time.monotonic(): 860. in tests to measure time delta. + - bpo-35513(9): Replace *note time.time(): 30f. with *note + time.monotonic(): 756. in tests to measure time delta. - - bpo-34279(10): *note test.support.run_unittest(): 113b. no longer + - bpo-34279(10): *note test.support.run_unittest(): 101e. no longer raise ‘TestDidNotRun’ if the test result contains skipped tests. The exception is now only raised if no test have been run and no test have been skipped. @@ -72753,9 +65980,9 @@ File: python.info, Node: Tests<21>, Next: Build<20>, Prev: Documentation<21>, (48) https://bugs.python.org/issue31809  -File: python.info, Node: Build<20>, Next: Windows<20>, Prev: Tests<21>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Build<17>, Next: Windows<22>, Prev: Tests<20>, Up: Python 3 8 0 alpha 1 -1.19.27.6 Build +1.18.30.6 Build ............... - bpo-34691(1): The _contextvars module is now built into the core @@ -72957,9 +66184,9 @@ File: python.info, Node: Build<20>, Next: Windows<20>, Prev: Tests<21>, Up: (37) https://bugs.python.org/issue29442  -File: python.info, Node: Windows<20>, Next: macOS<17>, Prev: Build<20>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Windows<22>, Next: macOS<16>, Prev: Build<17>, Up: Python 3 8 0 alpha 1 -1.19.27.7 Windows +1.18.30.7 Windows ................. - bpo-35890(1): Fix API calling consistency of GetVersionEx and @@ -73046,7 +66273,7 @@ File: python.info, Node: Windows<20>, Next: macOS<17>, Prev: Build<20>, Up: builds. - bpo-29097(28): Fix bug where ‘datetime.fromtimestamp()’ erroneously - throws an *note OSError: 307. on Windows for values between 0 and + throws an *note OSError: 1bf. on Windows for values between 0 and 86400. Patch by Ammar Askar. - bpo-33316(29): PyThread_release_lock always fails @@ -73075,7 +66302,7 @@ File: python.info, Node: Windows<20>, Next: macOS<17>, Prev: Build<20>, Up: - bpo-32370(38): Use the correct encoding for ipconfig output in the uuid module. Patch by Segev Finer. - - bpo-29248(39): Fix *note os.readlink(): 1d1. on Windows, which was + - bpo-29248(39): Fix *note os.readlink(): 1df. on Windows, which was mistakenly treating the ‘PrintNameOffset’ field of the reparse data buffer as a number of characters instead of bytes. Patch by Craig Holmquist and SSE4. @@ -73167,9 +66394,9 @@ File: python.info, Node: Windows<20>, Next: macOS<17>, Prev: Build<20>, Up: (40) https://bugs.python.org/issue1104  -File: python.info, Node: macOS<17>, Next: IDLE<23>, Prev: Windows<20>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: macOS<16>, Next: IDLE<27>, Prev: Windows<22>, Up: Python 3 8 0 alpha 1 -1.19.27.8 macOS +1.18.30.8 macOS ............... - bpo-35401(1): Update macOS installer to use OpenSSL 1.1.0j. @@ -73230,9 +66457,9 @@ File: python.info, Node: macOS<17>, Next: IDLE<23>, Prev: Windows<20>, Up: P (10) https://bugs.python.org/issue31903  -File: python.info, Node: IDLE<23>, Next: Tools/Demos<10>, Prev: macOS<17>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: IDLE<27>, Next: Tools/Demos<12>, Prev: macOS<16>, Up: Python 3 8 0 alpha 1 -1.19.27.9 IDLE +1.18.30.9 IDLE .............. - bpo-35770(1): IDLE macosx deletes Options => Configure IDLE. It @@ -73406,7 +66633,7 @@ File: python.info, Node: IDLE<23>, Next: Tools/Demos<10>, Prev: macOS<17>, U Python, IDLE optionally runs one startup file in the Shell window before presenting the first interactive input prompt. For IDLE, ‘-s’ runs a file named in environmental variable ‘IDLESTARTUP’ or - *note PYTHONSTARTUP: 9cd.; ‘-r file’ runs ‘file’. Python sets + *note PYTHONSTARTUP: 8c8.; ‘-r file’ runs ‘file’. Python sets ‘__file__’ to the startup file name before running the file and unsets it before the first prompt. IDLE now does the same when run normally, without the ‘-n’ option. @@ -73556,9 +66783,9 @@ File: python.info, Node: IDLE<23>, Next: Tools/Demos<10>, Prev: macOS<17>, U (59) https://bugs.python.org/issue32765  -File: python.info, Node: Tools/Demos<10>, Next: C API<18>, Prev: IDLE<23>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: Tools/Demos<12>, Next: C API<15>, Prev: IDLE<27>, Up: Python 3 8 0 alpha 1 -1.19.27.10 Tools/Demos +1.18.30.10 Tools/Demos ...................... - bpo-35884(1): Add a benchmark script for timing various ways to @@ -73626,9 +66853,9 @@ File: python.info, Node: Tools/Demos<10>, Next: C API<18>, Prev: IDLE<23>, U (12) https://bugs.python.org/issue31583  -File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 alpha 1 +File: python.info, Node: C API<15>, Prev: Tools/Demos<12>, Up: Python 3 8 0 alpha 1 -1.19.27.11 C API +1.18.30.11 C API ................ - bpo-35713(1): The ‘PyByteArray_Init()’ and ‘PyByteArray_Fini()’ @@ -73636,16 +66863,16 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a and Python 3.2.0, were excluded from the limited API (stable ABI), and were not documented. - - bpo-33817(2): Fixed *note _PyBytes_Resize(): 1142. for empty bytes + - bpo-33817(2): Fixed *note _PyBytes_Resize(): 1025. for empty bytes objects. - bpo-35322(3): Fix memory leak in *note PyUnicode_EncodeLocale(): - 544. and *note PyUnicode_EncodeFSDefault(): 1143. on error + 42f. and *note PyUnicode_EncodeFSDefault(): 1026. on error handling. - bpo-35059(4): The following C macros have been converted to static - inline functions: *note Py_INCREF(): 391, *note Py_DECREF(): 392, - *note Py_XINCREF(): 393, *note Py_XDECREF(): 394, + inline functions: *note Py_INCREF(): 251, *note Py_DECREF(): 252, + *note Py_XINCREF(): 253, *note Py_XDECREF(): 254, ‘PyObject_INIT()’, ‘PyObject_INIT_VAR()’. - bpo-35296(5): ‘make install’ now also installs the internal API: @@ -73655,7 +66882,7 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a have been moved from ‘Include/*.h’ headers to new header files ‘Include/internal/pycore_*.h’. - - bpo-35259(7): Conditionally declare *note Py_FinalizeEx(): 6c2. + - bpo-35259(7): Conditionally declare *note Py_FinalizeEx(): 5b6. (new in 3.6) based on Py_LIMITED_API. Patch by Arthur Neufeld. - bpo-35081(8): The ‘_PyObject_GC_TRACK()’ and @@ -73667,7 +66894,7 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a - bpo-34725(10): Adds _Py_SetProgramFullPath so embedders may override sys.executable - - bpo-34910(11): Ensure that *note PyObject_Print(): 1144. always + - bpo-34910(11): Ensure that *note PyObject_Print(): 1027. always returns ‘-1’ on error. Patch by Zackery Spytz. - bpo-34523(12): Py_DecodeLocale() and Py_EncodeLocale() now use the @@ -73681,8 +66908,8 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a - bpo-34127(14): Return grammatically correct error message based on argument count. Patch by Karthikeyan Singaravelan. - - bpo-23927(15): Fixed *note SystemError: 6f4. in *note - PyArg_ParseTupleAndKeywords(): 6c3. when the ‘w*’ format unit is + - bpo-23927(15): Fixed *note SystemError: 5e8. in *note + PyArg_ParseTupleAndKeywords(): 5b7. when the ‘w*’ format unit is used for optional parameter. - bpo-32455(16): Added ‘PyCompile_OpcodeStackEffectWithJump()’. @@ -73691,9 +66918,9 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a as in Python 3.6. - bpo-32500(18): Fixed error messages for *note PySequence_Size(): - 1145, *note PySequence_GetItem(): 1146, *note PySequence_SetItem(): - 1147. and *note PySequence_DelItem(): 1148. called with a mapping - and *note PyMapping_Size(): 1149. called with a sequence. + 1028, *note PySequence_GetItem(): 1029, *note PySequence_SetItem(): + 102a. and *note PySequence_DelItem(): 102b. called with a mapping + and *note PyMapping_Size(): 102c. called with a sequence. - bpo-33818(19): ‘PyExceptionClass_Name()’ will now return ‘const char *’ instead of ‘char *’. @@ -73705,8 +66932,8 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a - bpo-32374(21): Document that m_traverse for multi-phase initialized modules can be called with m_state=NULL, and add a sanity check - - bpo-30863(22): *note PyUnicode_AsWideChar(): 114a. and *note - PyUnicode_AsWideCharString(): 53e. no longer cache the ‘wchar_t*’ + - bpo-30863(22): *note PyUnicode_AsWideChar(): 102d. and *note + PyUnicode_AsWideCharString(): 428. no longer cache the ‘wchar_t*’ representation of string objects. ---------- Footnotes ---------- @@ -73758,23 +66985,23 @@ File: python.info, Node: C API<18>, Prev: Tools/Demos<10>, Up: Python 3 8 0 a  File: python.info, Node: Python 3 7 0 final, Next: Python 3 7 0 release candidate 1, Prev: Python 3 8 0 alpha 1, Up: Changelog -1.19.28 Python 3.7.0 final +1.18.31 Python 3.7.0 final -------------------------- `Release date: 2018-06-27' * Menu: -* Library: Library<27>. -* C API: C API<19>. +* Library: Library<30>. +* C API: C API<16>.  -File: python.info, Node: Library<27>, Next: C API<19>, Up: Python 3 7 0 final +File: python.info, Node: Library<30>, Next: C API<16>, Up: Python 3 7 0 final -1.19.28.1 Library +1.18.31.1 Library ................. - - bpo-33851(1): Fix *note ast.get_docstring(): 114d. for a node that + - bpo-33851(1): Fix *note ast.get_docstring(): 1030. for a node that lacks a docstring. ---------- Footnotes ---------- @@ -73782,9 +67009,9 @@ File: python.info, Node: Library<27>, Next: C API<19>, Up: Python 3 7 0 final (1) https://bugs.python.org/issue33851  -File: python.info, Node: C API<19>, Prev: Library<27>, Up: Python 3 7 0 final +File: python.info, Node: C API<16>, Prev: Library<30>, Up: Python 3 7 0 final -1.19.28.2 C API +1.18.31.2 C API ............... - bpo-33932(1): Calling Py_Initialize() twice does nothing, instead @@ -73797,24 +67024,24 @@ File: python.info, Node: C API<19>, Prev: Library<27>, Up: Python 3 7 0 final  File: python.info, Node: Python 3 7 0 release candidate 1, Next: Python 3 7 0 beta 5, Prev: Python 3 7 0 final, Up: Changelog -1.19.29 Python 3.7.0 release candidate 1 +1.18.32 Python 3.7.0 release candidate 1 ---------------------------------------- `Release date: 2018-06-12' * Menu: -* Core and Builtins: Core and Builtins<25>. -* Library: Library<28>. -* Documentation: Documentation<22>. -* Build: Build<21>. -* Windows: Windows<21>. -* IDLE: IDLE<24>. +* Core and Builtins: Core and Builtins<30>. +* Library: Library<31>. +* Documentation: Documentation<26>. +* Build: Build<18>. +* Windows: Windows<23>. +* IDLE: IDLE<28>.  -File: python.info, Node: Core and Builtins<25>, Next: Library<28>, Up: Python 3 7 0 release candidate 1 +File: python.info, Node: Core and Builtins<30>, Next: Library<31>, Up: Python 3 7 0 release candidate 1 -1.19.29.1 Core and Builtins +1.18.32.1 Core and Builtins ........................... - bpo-33803(1): Fix a crash in hamt.c caused by enabling GC tracking @@ -73841,9 +67068,9 @@ File: python.info, Node: Core and Builtins<25>, Next: Library<28>, Up: Python (4) https://bugs.python.org/issue31849  -File: python.info, Node: Library<28>, Next: Documentation<22>, Prev: Core and Builtins<25>, Up: Python 3 7 0 release candidate 1 +File: python.info, Node: Library<31>, Next: Documentation<26>, Prev: Core and Builtins<30>, Up: Python 3 7 0 release candidate 1 -1.19.29.2 Library +1.18.32.2 Library ................. - bpo-30167(1): Prevent site.main() exception if PYTHONSTARTUP is @@ -73875,8 +67102,8 @@ File: python.info, Node: Library<28>, Next: Documentation<22>, Prev: Core and closed if it is aborted. - bpo-33767(10): The concatenation (‘+’) and repetition (‘*’) - sequence operations now raise *note TypeError: 1fe. instead of - *note SystemError: 6f4. when performed on *note mmap.mmap: 31f. + sequence operations now raise *note TypeError: 17f. instead of + *note SystemError: 5e8. when performed on *note mmap.mmap: 1d8. objects. Patch by Zackery Spytz. - bpo-33734(11): asyncio/ssl: Fix AttributeError, increase default @@ -73917,16 +67144,16 @@ File: python.info, Node: Library<28>, Next: Documentation<22>, Prev: Core and (13) https://bugs.python.org/issue33582  -File: python.info, Node: Documentation<22>, Next: Build<21>, Prev: Library<28>, Up: Python 3 7 0 release candidate 1 +File: python.info, Node: Documentation<26>, Next: Build<18>, Prev: Library<31>, Up: Python 3 7 0 release candidate 1 -1.19.29.3 Documentation +1.18.32.3 Documentation ....................... - bpo-33409(1): Clarified the relationship between PEP 538(2)’s PYTHONCOERCECLOCALE and PEP 540’s PYTHONUTF8 mode. - bpo-33736(3): Improve the documentation of *note - asyncio.open_connection(): 46d, *note asyncio.start_server(): 46e. + asyncio.open_connection(): 354, *note asyncio.start_server(): 355. and their UNIX socket counterparts. - bpo-31432(4): Clarify meaning of CERT_NONE, CERT_OPTIONAL, and @@ -73943,9 +67170,9 @@ File: python.info, Node: Documentation<22>, Next: Build<21>, Prev: Library<28 (4) https://bugs.python.org/issue31432  -File: python.info, Node: Build<21>, Next: Windows<21>, Prev: Documentation<22>, Up: Python 3 7 0 release candidate 1 +File: python.info, Node: Build<18>, Next: Windows<23>, Prev: Documentation<26>, Up: Python 3 7 0 release candidate 1 -1.19.29.4 Build +1.18.32.4 Build ............... - bpo-5755(1): Move ‘-Wstrict-prototypes’ option to ‘CFLAGS_NODIST’ @@ -73957,9 +67184,9 @@ File: python.info, Node: Build<21>, Next: Windows<21>, Prev: Documentation<22 (1) https://bugs.python.org/issue5755  -File: python.info, Node: Windows<21>, Next: IDLE<24>, Prev: Build<21>, Up: Python 3 7 0 release candidate 1 +File: python.info, Node: Windows<23>, Next: IDLE<28>, Prev: Build<18>, Up: Python 3 7 0 release candidate 1 -1.19.29.5 Windows +1.18.32.5 Windows ................. - bpo-33720(1): Reduces maximum marshal recursion depth on release @@ -73970,9 +67197,9 @@ File: python.info, Node: Windows<21>, Next: IDLE<24>, Prev: Build<21>, Up: P (1) https://bugs.python.org/issue33720  -File: python.info, Node: IDLE<24>, Prev: Windows<21>, Up: Python 3 7 0 release candidate 1 +File: python.info, Node: IDLE<28>, Prev: Windows<23>, Up: Python 3 7 0 release candidate 1 -1.19.29.6 IDLE +1.18.32.6 IDLE .............. - bpo-33656(1): On Windows, add API call saying that tk scales for @@ -74017,37 +67244,37 @@ File: python.info, Node: IDLE<24>, Prev: Windows<21>, Up: Python 3 7 0 releas  File: python.info, Node: Python 3 7 0 beta 5, Next: Python 3 7 0 beta 4, Prev: Python 3 7 0 release candidate 1, Up: Changelog -1.19.30 Python 3.7.0 beta 5 +1.18.33 Python 3.7.0 beta 5 --------------------------- `Release date: 2018-05-30' * Menu: -* Core and Builtins: Core and Builtins<26>. -* Library: Library<29>. -* Documentation: Documentation<23>. -* Tests: Tests<22>. -* Build: Build<22>. -* macOS: macOS<18>. -* IDLE: IDLE<25>. +* Core and Builtins: Core and Builtins<31>. +* Library: Library<32>. +* Documentation: Documentation<27>. +* Tests: Tests<21>. +* Build: Build<19>. +* macOS: macOS<17>. +* IDLE: IDLE<29>.  -File: python.info, Node: Core and Builtins<26>, Next: Library<29>, Up: Python 3 7 0 beta 5 +File: python.info, Node: Core and Builtins<31>, Next: Library<32>, Up: Python 3 7 0 beta 5 -1.19.30.1 Core and Builtins +1.18.33.1 Core and Builtins ........................... - bpo-33622(1): Fixed a leak when the garbage collector fails to add an object with the ‘__del__’ method or referenced by it into the - *note gc.garbage: c14. list. ‘PyGC_Collect()’ can now be called + *note gc.garbage: b20. list. ‘PyGC_Collect()’ can now be called when an exception is set and preserves it. - bpo-33509(2): Fix module_globals parameter of warnings.warn_explicit(): don’t crash if module_globals is not a dict. - - bpo-20104(3): The new *note os.posix_spawn: 384. added in 3.7.0b1 + - bpo-20104(3): The new *note os.posix_spawn: 243. added in 3.7.0b1 was removed as we are still working on what the API should look like. Expect this in 3.8 instead. @@ -74066,7 +67293,7 @@ File: python.info, Node: Core and Builtins<26>, Next: Library<29>, Up: Python expression is restored as a first statement in their body. Based on patch by Inada Naoki. - - bpo-21983(9): Fix a crash in *note ctypes.cast(): 110d. in case the + - bpo-21983(9): Fix a crash in *note ctypes.cast(): fee. in case the type argument is a ctypes structured data type. Patch by Eryk Sun and Oren Milman. @@ -74091,13 +67318,13 @@ File: python.info, Node: Core and Builtins<26>, Next: Library<29>, Up: Python (9) https://bugs.python.org/issue21983  -File: python.info, Node: Library<29>, Next: Documentation<23>, Prev: Core and Builtins<26>, Up: Python 3 7 0 beta 5 +File: python.info, Node: Library<32>, Next: Documentation<27>, Prev: Core and Builtins<31>, Up: Python 3 7 0 beta 5 -1.19.30.2 Library +1.18.33.2 Library ................. - bpo-32751(1): When cancelling the task due to a timeout, *note - asyncio.wait_for(): 191. will now wait until the cancellation is + asyncio.wait_for(): 273. will now wait until the cancellation is complete. - bpo-32684(2): Fix gather to propagate cancellation of itself even @@ -74137,7 +67364,7 @@ File: python.info, Node: Library<29>, Next: Documentation<23>, Prev: Core and - bpo-33652(12): Pickles of type variables and subscripted generics are now future-proof and compatible with older Python versions. - - bpo-32493(13): Fixed *note uuid.uuid1(): 51a. on FreeBSD. + - bpo-32493(13): Fixed *note uuid.uuid1(): 404. on FreeBSD. - bpo-33618(14): Finalize and document preliminary and experimental TLS 1.3 support with OpenSSL 1.1.1 @@ -74154,13 +67381,13 @@ File: python.info, Node: Library<29>, Next: Documentation<23>, Prev: Core and will have TLS 1.3 ciphers enabled by default. - bpo-28556(18): Do not simplify arguments to *note typing.Union: - 112d. Now ‘Union[Manager, Employee]’ is not simplified to + 100f. Now ‘Union[Manager, Employee]’ is not simplified to ‘Employee’ at runtime. Such simplification previously caused several bugs and limited possibilities for introspection. - bpo-33540(19): Add a new ‘block_on_close’ class attribute to ‘ForkingMixIn’ and ‘ThreadingMixIn’ classes of *note socketserver: - f0. + f1. - bpo-33548(20): tempfile._candidate_tempdir_list should consider common TEMP locations @@ -74179,7 +67406,7 @@ File: python.info, Node: Library<29>, Next: Documentation<23>, Prev: Core and - bpo-26819(25): Fix race condition with ‘ReadTransport.resume_reading’ in Windows proactor event loop. - - Fix failure in *note typing.get_type_hints(): 1ef. when ClassVar + - Fix failure in *note typing.get_type_hints(): 2fe. when ClassVar was provided as a string forward reference. - bpo-33505(26): Optimize asyncio.ensure_future() by reordering if @@ -74228,7 +67455,7 @@ File: python.info, Node: Library<29>, Next: Documentation<23>, Prev: Core and - bpo-32257(37): The ssl module now contains OP_NO_RENEGOTIATION constant, available with OpenSSL 1.1.0h or 1.1.1. - - bpo-16865(38): Support arrays >=2GiB in *note ctypes: 2a. Patch by + - bpo-16865(38): Support arrays >=2GiB in *note ctypes: 2b. Patch by Segev Finer. ---------- Footnotes ---------- @@ -74310,12 +67537,12 @@ File: python.info, Node: Library<29>, Next: Documentation<23>, Prev: Core and (38) https://bugs.python.org/issue16865  -File: python.info, Node: Documentation<23>, Next: Tests<22>, Prev: Library<29>, Up: Python 3 7 0 beta 5 +File: python.info, Node: Documentation<27>, Next: Tests<21>, Prev: Library<32>, Up: Python 3 7 0 beta 5 -1.19.30.3 Documentation +1.18.33.3 Documentation ....................... - - bpo-23859(1): Document that *note asyncio.wait(): 207. does not + - bpo-23859(1): Document that *note asyncio.wait(): 274. does not cancel its futures on timeout. - bpo-32436(2): Document PEP 567(3) changes to asyncio. @@ -74343,9 +67570,9 @@ File: python.info, Node: Documentation<23>, Next: Tests<22>, Prev: Library<29 (6) https://bugs.python.org/issue33421  -File: python.info, Node: Tests<22>, Next: Build<22>, Prev: Documentation<23>, Up: Python 3 7 0 beta 5 +File: python.info, Node: Tests<21>, Next: Build<19>, Prev: Documentation<27>, Up: Python 3 7 0 beta 5 -1.19.30.4 Tests +1.18.33.4 Tests ............... - bpo-33655(1): Ignore test_posix_fallocate failures on BSD platforms @@ -74362,9 +67589,9 @@ File: python.info, Node: Tests<22>, Next: Build<22>, Prev: Documentation<23>, (2) https://bugs.python.org/issue32604  -File: python.info, Node: Build<22>, Next: macOS<18>, Prev: Tests<22>, Up: Python 3 7 0 beta 5 +File: python.info, Node: Build<19>, Next: macOS<17>, Prev: Tests<21>, Up: Python 3 7 0 beta 5 -1.19.30.5 Build +1.18.33.5 Build ............... - bpo-33614(1): Ensures module definition files for the stable ABI on @@ -74386,9 +67613,9 @@ File: python.info, Node: Build<22>, Next: macOS<18>, Prev: Tests<22>, Up: Py (3) https://bugs.python.org/issue33012  -File: python.info, Node: macOS<18>, Next: IDLE<25>, Prev: Build<22>, Up: Python 3 7 0 beta 5 +File: python.info, Node: macOS<17>, Next: IDLE<29>, Prev: Build<19>, Up: Python 3 7 0 beta 5 -1.19.30.6 macOS +1.18.33.6 macOS ............... - bpo-13631(1): The .editrc file in user’s home directory is now @@ -74400,9 +67627,9 @@ File: python.info, Node: macOS<18>, Next: IDLE<25>, Prev: Build<22>, Up: Pyt (1) https://bugs.python.org/issue13631  -File: python.info, Node: IDLE<25>, Prev: macOS<18>, Up: Python 3 7 0 beta 5 +File: python.info, Node: IDLE<29>, Prev: macOS<17>, Up: Python 3 7 0 beta 5 -1.19.30.7 IDLE +1.18.33.7 IDLE .............. - bpo-33628(1): IDLE: Cleanup codecontext.py and its test. @@ -74423,27 +67650,27 @@ File: python.info, Node: IDLE<25>, Prev: macOS<18>, Up: Python 3 7 0 beta 5  File: python.info, Node: Python 3 7 0 beta 4, Next: Python 3 7 0 beta 3, Prev: Python 3 7 0 beta 5, Up: Changelog -1.19.31 Python 3.7.0 beta 4 +1.18.34 Python 3.7.0 beta 4 --------------------------- `Release date: 2018-05-02' * Menu: -* Core and Builtins: Core and Builtins<27>. -* Library: Library<30>. -* Documentation: Documentation<24>. -* Tests: Tests<23>. -* Build: Build<23>. -* Windows: Windows<22>. -* macOS: macOS<19>. -* IDLE: IDLE<26>. -* Tools/Demos: Tools/Demos<11>. +* Core and Builtins: Core and Builtins<32>. +* Library: Library<33>. +* Documentation: Documentation<28>. +* Tests: Tests<22>. +* Build: Build<20>. +* Windows: Windows<24>. +* macOS: macOS<18>. +* IDLE: IDLE<30>. +* Tools/Demos: Tools/Demos<13>.  -File: python.info, Node: Core and Builtins<27>, Next: Library<30>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Core and Builtins<32>, Next: Library<33>, Up: Python 3 7 0 beta 4 -1.19.31.1 Core and Builtins +1.18.34.1 Core and Builtins ........................... - bpo-33363(1): Raise a SyntaxError for ‘async with’ and ‘async for’ @@ -74486,25 +67713,25 @@ File: python.info, Node: Core and Builtins<27>, Next: Library<30>, Up: Python (7) https://bugs.python.org/issue33199  -File: python.info, Node: Library<30>, Next: Documentation<24>, Prev: Core and Builtins<27>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Library<33>, Next: Documentation<28>, Prev: Core and Builtins<32>, Up: Python 3 7 0 beta 4 -1.19.31.2 Library +1.18.34.2 Library ................. - bpo-33281(1): Fix ctypes.util.find_library regression on macOS. - bpo-33383(2): Fixed crash in the get() method of the *note - dbm.ndbm: 34. database object when it is called with a single + dbm.ndbm: 35. database object when it is called with a single argument. - bpo-33329(3): Fix multiprocessing regression on newer glibcs - bpo-991266(4): Fix quoting of the ‘Comment’ attribute of *note - http.cookies.SimpleCookie: 1131. + http.cookies.SimpleCookie: 1013. - bpo-33131(5): Upgrade bundled version of pip to 10.0.1. - - bpo-33308(6): Fixed a crash in the *note parser: c7. module when + - bpo-33308(6): Fixed a crash in the *note parser: c8. module when converting an ST object to a tree of tuples or lists with ‘line_info=False’ and ‘col_info=True’. @@ -74512,25 +67739,25 @@ File: python.info, Node: Library<30>, Next: Documentation<24>, Prev: Core and - bpo-11594(8): Ensure line-endings are respected when using lib2to3. - - bpo-33254(9): Have *note importlib.resources.contents(): 1132. and - *note importlib.abc.ResourceReader.contents(): 1133. return an - *note iterable: c7e. instead of an *note iterator: 1134. + - bpo-33254(9): Have *note importlib.resources.contents(): 1014. and + *note importlib.abc.ResourceReader.contents(): 1015. return an + *note iterable: b8c. instead of an *note iterator: 1016. - bpo-33256(10): Fix display of ‘’ call in the html produced by ‘cgitb.html()’. Patch by Stéphane Blondon. - bpo-33185(11): Fixed regression when running pydoc with the *note - -m: 445. switch. (The regression was introduced in 3.7.0b3 by the + -m: 328. switch. (The regression was introduced in 3.7.0b3 by the resolution of bpo-33053(12)) This fix also changed pydoc to add - ‘os.getcwd()’ to *note sys.path: 260. when necessary, rather than + ‘os.getcwd()’ to *note sys.path: 479. when necessary, rather than adding ‘"."’. - bpo-33169(13): Delete entries of ‘None’ in *note - sys.path_importer_cache: 59a. when + sys.path_importer_cache: 48e. when ‘importlib.machinery.invalidate_caches()’ is called. - bpo-33217(14): Deprecate looking up non-Enum objects in Enum - classes and Enum members (will raise *note TypeError: 1fe. in + classes and Enum members (will raise *note TypeError: 17f. in 3.8+). - bpo-33203(15): ‘random.Random.choice()’ now raises ‘IndexError’ for @@ -74541,10 +67768,10 @@ File: python.info, Node: Library<30>, Next: Documentation<24>, Prev: Core and uncaught StopIteration in a generator into a return-statement. - bpo-33209(18): End framing at the end of C implementation of *note - pickle.Pickler.dump(): 1135. + pickle.Pickler.dump(): 1017. - bpo-20104(19): Improved error handling and fixed a reference leak - in *note os.posix_spawn(): 384. + in *note os.posix_spawn(): 243. - bpo-33175(20): In dataclasses, Field.__set_name__ now looks up the __set_name__ special method on the class, not the instance, of the @@ -74604,9 +67831,9 @@ File: python.info, Node: Library<30>, Next: Documentation<24>, Prev: Core and (22) https://bugs.python.org/issue31908  -File: python.info, Node: Documentation<24>, Next: Tests<23>, Prev: Library<30>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Documentation<28>, Next: Tests<22>, Prev: Library<33>, Up: Python 3 7 0 beta 4 -1.19.31.3 Documentation +1.18.34.3 Documentation ....................... - bpo-33378(1): Add Korean language switcher for @@ -74642,9 +67869,9 @@ File: python.info, Node: Documentation<24>, Next: Tests<23>, Prev: Library<30 (6) https://bugs.python.org/issue32337  -File: python.info, Node: Tests<23>, Next: Build<23>, Prev: Documentation<24>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Tests<22>, Next: Build<20>, Prev: Documentation<28>, Up: Python 3 7 0 beta 4 -1.19.31.4 Tests +1.18.34.4 Tests ............... - bpo-33358(1): Fix @@ -74656,9 +67883,9 @@ File: python.info, Node: Tests<23>, Next: Build<23>, Prev: Documentation<24>, (1) https://bugs.python.org/issue33358  -File: python.info, Node: Build<23>, Next: Windows<22>, Prev: Tests<23>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Build<20>, Next: Windows<24>, Prev: Tests<22>, Up: Python 3 7 0 beta 4 -1.19.31.5 Build +1.18.34.5 Build ............... - bpo-33394(1): Enable the verbose build for extension modules, when @@ -74690,9 +67917,9 @@ File: python.info, Node: Build<23>, Next: Windows<22>, Prev: Tests<23>, Up: (5) https://bugs.python.org/issue33182  -File: python.info, Node: Windows<22>, Next: macOS<19>, Prev: Build<23>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Windows<24>, Next: macOS<18>, Prev: Build<20>, Up: Python 3 7 0 beta 4 -1.19.31.6 Windows +1.18.34.6 Windows ................. - bpo-33184(1): Update Windows installer to use OpenSSL 1.1.0h. @@ -74702,9 +67929,9 @@ File: python.info, Node: Windows<22>, Next: macOS<19>, Prev: Build<23>, Up: (1) https://bugs.python.org/issue33184  -File: python.info, Node: macOS<19>, Next: IDLE<26>, Prev: Windows<22>, Up: Python 3 7 0 beta 4 +File: python.info, Node: macOS<18>, Next: IDLE<30>, Prev: Windows<24>, Up: Python 3 7 0 beta 4 -1.19.31.7 macOS +1.18.34.7 macOS ............... - bpo-33184(1): Update macOS installer build to use OpenSSL 1.1.0h. @@ -74714,9 +67941,9 @@ File: python.info, Node: macOS<19>, Next: IDLE<26>, Prev: Windows<22>, Up: P (1) https://bugs.python.org/issue33184  -File: python.info, Node: IDLE<26>, Next: Tools/Demos<11>, Prev: macOS<19>, Up: Python 3 7 0 beta 4 +File: python.info, Node: IDLE<30>, Next: Tools/Demos<13>, Prev: macOS<18>, Up: Python 3 7 0 beta 4 -1.19.31.8 IDLE +1.18.34.8 IDLE .............. - bpo-21474(1): Update word/identifier definition from ascii to @@ -74736,9 +67963,9 @@ File: python.info, Node: IDLE<26>, Next: Tools/Demos<11>, Prev: macOS<19>, U (2) https://bugs.python.org/issue33204  -File: python.info, Node: Tools/Demos<11>, Prev: IDLE<26>, Up: Python 3 7 0 beta 4 +File: python.info, Node: Tools/Demos<13>, Prev: IDLE<30>, Up: Python 3 7 0 beta 4 -1.19.31.9 Tools/Demos +1.18.34.9 Tools/Demos ..................... - bpo-33189(1): ‘pygettext.py’ now recognizes only literal strings as @@ -74767,29 +67994,29 @@ File: python.info, Node: Tools/Demos<11>, Prev: IDLE<26>, Up: Python 3 7 0 be  File: python.info, Node: Python 3 7 0 beta 3, Next: Python 3 7 0 beta 2, Prev: Python 3 7 0 beta 4, Up: Changelog -1.19.32 Python 3.7.0 beta 3 +1.18.35 Python 3.7.0 beta 3 --------------------------- `Release date: 2018-03-29' * Menu: -* Security: Security<18>. -* Core and Builtins: Core and Builtins<28>. -* Library: Library<31>. -* Documentation: Documentation<25>. -* Tests: Tests<24>. -* Build: Build<24>. -* Windows: Windows<23>. -* macOS: macOS<20>. -* IDLE: IDLE<27>. -* Tools/Demos: Tools/Demos<12>. -* C API: C API<20>. +* Security: Security<22>. +* Core and Builtins: Core and Builtins<33>. +* Library: Library<34>. +* Documentation: Documentation<29>. +* Tests: Tests<23>. +* Build: Build<21>. +* Windows: Windows<25>. +* macOS: macOS<19>. +* IDLE: IDLE<31>. +* Tools/Demos: Tools/Demos<14>. +* C API: C API<17>.  -File: python.info, Node: Security<18>, Next: Core and Builtins<28>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Security<22>, Next: Core and Builtins<33>, Up: Python 3 7 0 beta 3 -1.19.32.1 Security +1.18.35.1 Security .................. - bpo-33136(1): Harden ssl module against LibreSSL CVE-2018-8970. @@ -74813,9 +68040,9 @@ File: python.info, Node: Security<18>, Next: Core and Builtins<28>, Up: Pytho (3) https://bugs.python.org/issue32981  -File: python.info, Node: Core and Builtins<28>, Next: Library<31>, Prev: Security<18>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Core and Builtins<33>, Next: Library<34>, Prev: Security<22>, Up: Python 3 7 0 beta 3 -1.19.32.2 Core and Builtins +1.18.35.2 Core and Builtins ........................... - bpo-33053(1): When using the -m switch, sys.path[0] is now @@ -74862,9 +68089,9 @@ File: python.info, Node: Core and Builtins<28>, Next: Library<31>, Prev: Secu (7) https://bugs.python.org/issue32836  -File: python.info, Node: Library<31>, Next: Documentation<25>, Prev: Core and Builtins<28>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Library<34>, Next: Documentation<29>, Prev: Core and Builtins<33>, Up: Python 3 7 0 beta 3 -1.19.32.3 Library +1.18.35.3 Library ................. - bpo-33141(1): Have Field objects pass through __set_name__ to their @@ -74929,7 +68156,7 @@ File: python.info, Node: Library<31>, Next: Documentation<25>, Prev: Core and - bpo-33037(18): Skip sending/receiving data after SSL transport closing. - - bpo-27683(19): Fix a regression in *note ipaddress: a2. that result + - bpo-27683(19): Fix a regression in *note ipaddress: a3. that result of ‘hosts()’ is empty when the network is constructed by a tuple containing an integer mask and only 1 bit left for addresses. @@ -74944,21 +68171,21 @@ File: python.info, Node: Library<31>, Next: Documentation<25>, Prev: Core and - bpo-32056(23): Improved exceptions raised for invalid number of channels and sample width when read an audio file in modules *note - aifc: 4, *note wave: 130. and *note sunau: fa. + aifc: 5, *note wave: 128. and *note sunau: fb. - bpo-32844(24): Fix wrong redirection of a low descriptor (0 or 1) to stderr in subprocess if another low descriptor is closed. - - bpo-32857(25): In *note tkinter: 10e, ‘after_cancel(None)’ now - raises a *note ValueError: 16d. instead of canceling the first + - bpo-32857(25): In *note tkinter: 10d, ‘after_cancel(None)’ now + raises a *note ValueError: 1e7. instead of canceling the first scheduled function. Patch by Cheryl Sabella. - bpo-31639(26): http.server now exposes a ThreadedHTTPServer class and uses it when the module is run with ‘-m’ to cope with web browsers pre-opening sockets. - - bpo-27645(27): *note sqlite3.Connection: 4e1. now exposes a *note - backup: 4e2. method, if the underlying SQLite library is at version + - bpo-27645(27): *note sqlite3.Connection: 3c9. now exposes a *note + backup: 3ca. method, if the underlying SQLite library is at version 3.6.11 or higher. Patch by Lele Gaifax. ---------- Footnotes ---------- @@ -75018,9 +68245,9 @@ File: python.info, Node: Library<31>, Next: Documentation<25>, Prev: Core and (27) https://bugs.python.org/issue27645  -File: python.info, Node: Documentation<25>, Next: Tests<24>, Prev: Library<31>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Documentation<29>, Next: Tests<23>, Prev: Library<34>, Up: Python 3 7 0 beta 3 -1.19.32.4 Documentation +1.18.35.4 Documentation ....................... - bpo-33126(1): Document PyBuffer_ToContiguous(). @@ -75028,7 +68255,7 @@ File: python.info, Node: Documentation<25>, Next: Tests<24>, Prev: Library<31 - bpo-27212(2): Modify documentation for the ‘islice()’ recipe to consume initial values up to the start index. - - bpo-28247(3): Update *note zipapp: 14a. documentation to describe + - bpo-28247(3): Update *note zipapp: 142. documentation to describe how to make standalone applications. - bpo-18802(4): Documentation changes for ipaddress. Patch by Jon @@ -75051,9 +68278,9 @@ File: python.info, Node: Documentation<25>, Next: Tests<24>, Prev: Library<31 (5) https://bugs.python.org/issue27428  -File: python.info, Node: Tests<24>, Next: Build<24>, Prev: Documentation<25>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Tests<23>, Next: Build<21>, Prev: Documentation<29>, Up: Python 3 7 0 beta 3 -1.19.32.5 Tests +1.18.35.5 Tests ............... - bpo-32872(1): Avoid regrtest compatibility issue with namespace @@ -75073,9 +68300,9 @@ File: python.info, Node: Tests<24>, Next: Build<24>, Prev: Documentation<25>, (3) https://bugs.python.org/issue19417  -File: python.info, Node: Build<24>, Next: Windows<23>, Prev: Tests<24>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Build<21>, Next: Windows<25>, Prev: Tests<23>, Up: Python 3 7 0 beta 3 -1.19.32.6 Build +1.18.35.6 Build ............... - bpo-33163(1): Upgrade pip to 9.0.3 and setuptools to v39.0.1. @@ -75085,9 +68312,9 @@ File: python.info, Node: Build<24>, Next: Windows<23>, Prev: Tests<24>, Up: (1) https://bugs.python.org/issue33163  -File: python.info, Node: Windows<23>, Next: macOS<20>, Prev: Build<24>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Windows<25>, Next: macOS<19>, Prev: Build<21>, Up: Python 3 7 0 beta 3 -1.19.32.7 Windows +1.18.35.7 Windows ................. - bpo-33016(1): Fix potential use of uninitialized memory in @@ -75103,9 +68330,9 @@ File: python.info, Node: Windows<23>, Next: macOS<20>, Prev: Build<24>, Up: (2) https://bugs.python.org/issue32903  -File: python.info, Node: macOS<20>, Next: IDLE<27>, Prev: Windows<23>, Up: Python 3 7 0 beta 3 +File: python.info, Node: macOS<19>, Next: IDLE<31>, Prev: Windows<25>, Up: Python 3 7 0 beta 3 -1.19.32.8 macOS +1.18.35.8 macOS ............... - bpo-32726(1): Build and link with private copy of Tcl/Tk 8.6 for @@ -75120,16 +68347,16 @@ File: python.info, Node: macOS<20>, Next: IDLE<27>, Prev: Windows<23>, Up: P (1) https://bugs.python.org/issue32726  -File: python.info, Node: IDLE<27>, Next: Tools/Demos<12>, Prev: macOS<20>, Up: Python 3 7 0 beta 3 +File: python.info, Node: IDLE<31>, Next: Tools/Demos<14>, Prev: macOS<19>, Up: Python 3 7 0 beta 3 -1.19.32.9 IDLE +1.18.35.9 IDLE .............. - bpo-32984(1): Set ‘__file__’ while running a startup file. Like Python, IDLE optionally runs one startup file in the Shell window before presenting the first interactive input prompt. For IDLE, ‘-s’ runs a file named in environmental variable ‘IDLESTARTUP’ or - *note PYTHONSTARTUP: 9cd.; ‘-r file’ runs ‘file’. Python sets + *note PYTHONSTARTUP: 8c8.; ‘-r file’ runs ‘file’. Python sets ‘__file__’ to the startup file name before running the file and unsets it before the first prompt. IDLE now does the same when run normally, without the ‘-n’ option. @@ -75144,9 +68371,9 @@ File: python.info, Node: IDLE<27>, Next: Tools/Demos<12>, Prev: macOS<20>, U (2) https://bugs.python.org/issue32940  -File: python.info, Node: Tools/Demos<12>, Next: C API<20>, Prev: IDLE<27>, Up: Python 3 7 0 beta 3 +File: python.info, Node: Tools/Demos<14>, Next: C API<17>, Prev: IDLE<31>, Up: Python 3 7 0 beta 3 -1.19.32.10 Tools/Demos +1.18.35.10 Tools/Demos ...................... - bpo-32885(1): Add an ‘-n’ flag for ‘Tools/scripts/pathfix.py’ to @@ -75157,9 +68384,9 @@ File: python.info, Node: Tools/Demos<12>, Next: C API<20>, Prev: IDLE<27>, U (1) https://bugs.python.org/issue32885  -File: python.info, Node: C API<20>, Prev: Tools/Demos<12>, Up: Python 3 7 0 beta 3 +File: python.info, Node: C API<17>, Prev: Tools/Demos<14>, Up: Python 3 7 0 beta 3 -1.19.32.11 C API +1.18.35.11 C API ................ - bpo-33042(1): Embedding applications may once again call @@ -75178,28 +68405,28 @@ File: python.info, Node: C API<20>, Prev: Tools/Demos<12>, Up: Python 3 7 0 b  File: python.info, Node: Python 3 7 0 beta 2, Next: Python 3 7 0 beta 1, Prev: Python 3 7 0 beta 3, Up: Changelog -1.19.33 Python 3.7.0 beta 2 +1.18.36 Python 3.7.0 beta 2 --------------------------- `Release date: 2018-02-27' * Menu: -* Security: Security<19>. -* Core and Builtins: Core and Builtins<29>. -* Library: Library<32>. -* Documentation: Documentation<26>. -* Tests: Tests<25>. -* Build: Build<25>. -* Windows: Windows<24>. -* macOS: macOS<21>. -* IDLE: IDLE<28>. -* Tools/Demos: Tools/Demos<13>. +* Security: Security<23>. +* Core and Builtins: Core and Builtins<34>. +* Library: Library<35>. +* Documentation: Documentation<30>. +* Tests: Tests<24>. +* Build: Build<22>. +* Windows: Windows<26>. +* macOS: macOS<20>. +* IDLE: IDLE<32>. +* Tools/Demos: Tools/Demos<15>.  -File: python.info, Node: Security<19>, Next: Core and Builtins<29>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Security<23>, Next: Core and Builtins<34>, Up: Python 3 7 0 beta 2 -1.19.33.1 Security +1.18.36.1 Security .................. - bpo-28414(1): The ssl module now allows users to perform their own @@ -75210,9 +68437,9 @@ File: python.info, Node: Security<19>, Next: Core and Builtins<29>, Up: Pytho (1) https://bugs.python.org/issue28414  -File: python.info, Node: Core and Builtins<29>, Next: Library<32>, Prev: Security<19>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Core and Builtins<34>, Next: Library<35>, Prev: Security<23>, Up: Python 3 7 0 beta 2 -1.19.33.2 Core and Builtins +1.18.36.2 Core and Builtins ........................... - bpo-32889(1): Update Valgrind suppression list to account for the @@ -75251,9 +68478,9 @@ File: python.info, Node: Core and Builtins<29>, Next: Library<32>, Prev: Secu (7) https://bugs.python.org/issue32583  -File: python.info, Node: Library<32>, Next: Documentation<26>, Prev: Core and Builtins<29>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Library<35>, Next: Documentation<30>, Prev: Core and Builtins<34>, Up: Python 3 7 0 beta 2 -1.19.33.3 Library +1.18.36.3 Library ................. - bpo-32960(1): For dataclasses, disallow inheriting frozen from @@ -75291,9 +68518,9 @@ File: python.info, Node: Library<32>, Next: Documentation<26>, Prev: Core and - bpo-32556(9): nt._getfinalpathname, nt._getvolumepathname and nt._getdiskusage now correctly convert from bytes. - - bpo-25988(10): Emit a *note DeprecationWarning: 15a. when using or - importing an ABC directly from *note collections: 1d. rather than - from *note collections.abc: 1e. + - bpo-25988(10): Emit a *note DeprecationWarning: 264. when using or + importing an ABC directly from *note collections: 1e. rather than + from *note collections.abc: 1f. - bpo-21060(11): Rewrite confusing message from setup.py upload from “No dist file created in earlier command” to the more helpful “Must @@ -75313,7 +68540,7 @@ File: python.info, Node: Library<32>, Next: Documentation<26>, Prev: Core and methods that can be used instead ‘_dump_registry’, ‘_abc_registry_clear’, and ‘_abc_caches_clear’. - - bpo-32841(14): Fixed *note asyncio.Condition: 3b3. issue which + - bpo-32841(14): Fixed *note asyncio.Condition: 278. issue which silently ignored cancellation after notifying and cancelling a conditional lock. Patch by Bar Harel. @@ -75336,8 +68563,8 @@ File: python.info, Node: Library<32>, Next: Documentation<26>, Prev: Core and - bpo-32792(19): collections.ChainMap() preserves the order of the underlying mappings. - - bpo-32775(20): *note fnmatch.translate(): 1136. no longer produces - patterns which contain set operations. Sets starting with ‘[’ or + - bpo-32775(20): *note fnmatch.translate(): 1018. no longer produces + patterns which contain set operations. Sets starting with ‘[‘ or containing ‘–’, ‘&&’, ‘~~’ or ‘||’ will be interpreted differently in regular expressions in future versions. Currently they emit warnings. fnmatch.translate() now avoids producing patterns @@ -75381,7 +68608,7 @@ File: python.info, Node: Library<32>, Next: Documentation<26>, Prev: Core and - bpo-31848(30): Fix the error handling in Aifc_read.initfp() when the SSND chunk is not found. Patch by Zackery Spytz. - - bpo-32585(31): Add Ttk spinbox widget to *note tkinter.ttk: 118. + - bpo-32585(31): Add Ttk spinbox widget to *note tkinter.ttk: 110. Patch by Alan D Moore. - bpo-32221(32): Various functions returning tuple containing IPv6 @@ -75467,9 +68694,9 @@ File: python.info, Node: Library<32>, Next: Documentation<26>, Prev: Core and (34) https://bugs.python.org/issue30693  -File: python.info, Node: Documentation<26>, Next: Tests<25>, Prev: Library<32>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Documentation<30>, Next: Tests<24>, Prev: Library<35>, Up: Python 3 7 0 beta 2 -1.19.33.4 Documentation +1.18.36.4 Documentation ....................... - bpo-28124(1): The ssl module function ssl.wrap_socket() has been @@ -75483,16 +68710,16 @@ File: python.info, Node: Documentation<26>, Next: Tests<25>, Prev: Library<32 - bpo-32800(4): Update link to w3c doc for xml default namespaces. - - bpo-11015(5): Update *note test.support: 106. documentation. + - bpo-11015(5): Update *note test.support: 107. documentation. - - bpo-8722(6): Document *note __getattr__(): 42c. behavior when - property ‘get()’ method raises *note AttributeError: 4a4. + - bpo-8722(6): Document ‘__getattr__()’ behavior when property + ‘get()’ method raises *note AttributeError: 38c. - bpo-32614(7): Modify RE examples in documentation to use raw - strings to prevent *note DeprecationWarning: 15a. and add text to + strings to prevent *note DeprecationWarning: 264. and add text to REGEX HOWTO to highlight the deprecation. - - bpo-31972(8): Improve docstrings for *note pathlib.PurePath: 235. + - bpo-31972(8): Improve docstrings for *note pathlib.PurePath: 101c. subclasses. ---------- Footnotes ---------- @@ -75514,9 +68741,9 @@ File: python.info, Node: Documentation<26>, Next: Tests<25>, Prev: Library<32 (8) https://bugs.python.org/issue31972  -File: python.info, Node: Tests<25>, Next: Build<25>, Prev: Documentation<26>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Tests<24>, Next: Build<22>, Prev: Documentation<30>, Up: Python 3 7 0 beta 2 -1.19.33.5 Tests +1.18.36.5 Tests ............... - bpo-31809(1): Add tests to verify connection with secp ECDH curves. @@ -75526,9 +68753,9 @@ File: python.info, Node: Tests<25>, Next: Build<25>, Prev: Documentation<26>, (1) https://bugs.python.org/issue31809  -File: python.info, Node: Build<25>, Next: Windows<24>, Prev: Tests<25>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Build<22>, Next: Windows<26>, Prev: Tests<24>, Up: Python 3 7 0 beta 2 -1.19.33.6 Build +1.18.36.6 Build ............... - bpo-32898(1): Fix the python debug build when using COUNT_ALLOCS. @@ -75538,9 +68765,9 @@ File: python.info, Node: Build<25>, Next: Windows<24>, Prev: Tests<25>, Up: (1) https://bugs.python.org/issue32898  -File: python.info, Node: Windows<24>, Next: macOS<21>, Prev: Build<25>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Windows<26>, Next: macOS<20>, Prev: Build<22>, Up: Python 3 7 0 beta 2 -1.19.33.7 Windows +1.18.36.7 Windows ................. - bpo-32901(1): Update Tcl and Tk versions to 8.6.8 @@ -75556,7 +68783,7 @@ File: python.info, Node: Windows<24>, Next: macOS<21>, Prev: Build<25>, Up: - bpo-32370(5): Use the correct encoding for ipconfig output in the uuid module. Patch by Segev Finer. - - bpo-29248(6): Fix *note os.readlink(): 1d1. on Windows, which was + - bpo-29248(6): Fix *note os.readlink(): 1df. on Windows, which was mistakenly treating the ‘PrintNameOffset’ field of the reparse data buffer as a number of characters instead of bytes. Patch by Craig Holmquist and SSE4. @@ -75576,9 +68803,9 @@ File: python.info, Node: Windows<24>, Next: macOS<21>, Prev: Build<25>, Up: (6) https://bugs.python.org/issue29248  -File: python.info, Node: macOS<21>, Next: IDLE<28>, Prev: Windows<24>, Up: Python 3 7 0 beta 2 +File: python.info, Node: macOS<20>, Next: IDLE<32>, Prev: Windows<26>, Up: Python 3 7 0 beta 2 -1.19.33.8 macOS +1.18.36.8 macOS ............... - bpo-32901(1): Update macOS 10.9+ installer to Tcl/Tk 8.6.8. @@ -75588,9 +68815,9 @@ File: python.info, Node: macOS<21>, Next: IDLE<28>, Prev: Windows<24>, Up: P (1) https://bugs.python.org/issue32901  -File: python.info, Node: IDLE<28>, Next: Tools/Demos<13>, Prev: macOS<21>, Up: Python 3 7 0 beta 2 +File: python.info, Node: IDLE<32>, Next: Tools/Demos<15>, Prev: macOS<20>, Up: Python 3 7 0 beta 2 -1.19.33.9 IDLE +1.18.36.9 IDLE .............. - bpo-32916(1): Change ‘str’ to ‘code’ in pyparse. @@ -75627,9 +68854,9 @@ File: python.info, Node: IDLE<28>, Next: Tools/Demos<13>, Prev: macOS<21>, U (6) https://bugs.python.org/issue32765  -File: python.info, Node: Tools/Demos<13>, Prev: IDLE<28>, Up: Python 3 7 0 beta 2 +File: python.info, Node: Tools/Demos<15>, Prev: IDLE<32>, Up: Python 3 7 0 beta 2 -1.19.33.10 Tools/Demos +1.18.36.10 Tools/Demos ...................... - bpo-32222(1): Fix pygettext not extracting docstrings for functions @@ -75642,26 +68869,26 @@ File: python.info, Node: Tools/Demos<13>, Prev: IDLE<28>, Up: Python 3 7 0 be  File: python.info, Node: Python 3 7 0 beta 1, Next: Python 3 7 0 alpha 4, Prev: Python 3 7 0 beta 2, Up: Changelog -1.19.34 Python 3.7.0 beta 1 +1.18.37 Python 3.7.0 beta 1 --------------------------- `Release date: 2018-01-30' * Menu: -* Core and Builtins: Core and Builtins<30>. -* Library: Library<33>. -* Documentation: Documentation<27>. -* Tests: Tests<26>. -* Build: Build<26>. -* Windows: Windows<25>. -* macOS: macOS<22>. -* C API: C API<21>. +* Core and Builtins: Core and Builtins<35>. +* Library: Library<36>. +* Documentation: Documentation<31>. +* Tests: Tests<25>. +* Build: Build<23>. +* Windows: Windows<27>. +* macOS: macOS<21>. +* C API: C API<18>.  -File: python.info, Node: Core and Builtins<30>, Next: Library<33>, Up: Python 3 7 0 beta 1 +File: python.info, Node: Core and Builtins<35>, Next: Library<36>, Up: Python 3 7 0 beta 1 -1.19.34.1 Core and Builtins +1.18.37.1 Core and Builtins ........................... - bpo-32703(1): Fix coroutine’s ResourceWarning when there’s an @@ -75790,9 +69017,9 @@ File: python.info, Node: Core and Builtins<30>, Next: Library<33>, Up: Python (23) https://bugs.python.org/issue31113  -File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and Builtins<30>, Up: Python 3 7 0 beta 1 +File: python.info, Node: Library<36>, Next: Documentation<31>, Prev: Core and Builtins<35>, Up: Python 3 7 0 beta 1 -1.19.34.2 Library +1.18.37.2 Library ................. - bpo-25988(1): Deprecate exposing the contents of collections.abc in @@ -75818,7 +69045,7 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and - bpo-32513(6): In dataclasses, allow easier overriding of dunder methods without specifying decorator parameters. - - bpo-32660(7): *note termios: 104. makes available ‘FIONREAD’, + - bpo-32660(7): *note termios: 105. makes available ‘FIONREAD’, ‘FIONCLEX’, ‘FIOCLEX’, ‘FIOASYNC’ and ‘FIONBIO’ also under Solaris/derivatives. @@ -75826,7 +69053,7 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and username is an empty quoted string. Patch by Xiang Zhang. - bpo-32659(9): Under Solaris and derivatives, *note os.stat_result: - 1182. provides a st_fstype attribute. + 1065. provides a st_fstype attribute. - bpo-32662(10): Implement Server.start_serving(), Server.serve_forever(), and Server.is_serving() methods. Add @@ -75834,7 +69061,7 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and loop.create_unix_server(). - bpo-32391(11): Implement *note asyncio.StreamWriter.wait_closed(): - 460. and *note asyncio.StreamWriter.is_closing(): 461. methods + 347. and *note asyncio.StreamWriter.is_closing(): 348. methods - bpo-32643(12): Make Task._step, Task._wakeup and Future._schedule_callbacks methods private. @@ -75904,11 +69131,11 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and from file descriptor by default. - bpo-32404(34): Fix bug where *note - datetime.datetime.fromtimestamp(): 1183. did not call __new__ in - *note datetime.datetime: 1a0. subclasses. + datetime.datetime.fromtimestamp(): 1066. did not call __new__ in + *note datetime.datetime: 181. subclasses. - - bpo-32403(35): Improved speed of *note datetime.date: 19e. and - *note datetime.datetime: 1a0. alternate constructors. + - bpo-32403(35): Improved speed of *note datetime.date: 180. and + *note datetime.datetime: 181. alternate constructors. - bpo-32228(36): Ensure that ‘truncate()’ preserves the file position (as reported by ‘tell()’) after writes longer than the buffer size. @@ -75921,12 +69148,12 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and - bpo-32373(39): Add socket.getblocking() method. - - bpo-32248(40): Add *note importlib.resources: 9e. and *note - importlib.abc.ResourceReader: 450. as the unified API for reading + - bpo-32248(40): Add *note importlib.resources: 9f. and *note + importlib.abc.ResourceReader: 333. as the unified API for reading resources contained within packages. Loaders wishing to support resource reading must implement the ‘get_resource_reader()’ method. File-based and zipimport-based loaders both implement these APIs. - *note importlib.abc.ResourceLoader: 56a. is deprecated in favor of + *note importlib.abc.ResourceLoader: 457. is deprecated in favor of these new APIs. - bpo-32320(41): collections.namedtuple() now supports default @@ -75936,18 +69163,18 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and Mohr and Ilya Kulakov. - bpo-31961(43): `Removed in Python 3.7.0b2.' The `args' argument of - subprocess.Popen can now be a *note path-like object: 474. If + subprocess.Popen can now be a *note path-like object: 35b. If `args' is given as a sequence, it’s first element can now be a - *note path-like object: 474. as well. + *note path-like object: 35b. as well. - - bpo-31900(44): The *note locale.localeconv(): 587. function now + - bpo-31900(44): The *note locale.localeconv(): 47b. function now sets temporarily the ‘LC_CTYPE’ locale to the ‘LC_NUMERIC’ locale to decode ‘decimal_point’ and ‘thousands_sep’ byte strings if they are non-ASCII or longer than 1 byte, and the ‘LC_NUMERIC’ locale is different than the ‘LC_CTYPE’ locale. This temporary change affects other threads. Same change for the *note str.format(): - 5d7. method when formatting a number (*note int: 204, *note float: - 1fd, *note float: 1fd. and subclasses) with the ‘n’ type (ex: + 4cb. method when formatting a number (*note int: 171, *note float: + 174, *note float: 174. and subclasses) with the ‘n’ type (ex: ‘'{:n}'.format(1234)’). - bpo-31853(45): Use super().method instead of socket.method in @@ -76058,9 +69285,9 @@ File: python.info, Node: Library<33>, Next: Documentation<27>, Prev: Core and (47) https://bugs.python.org/issue14976  -File: python.info, Node: Documentation<27>, Next: Tests<26>, Prev: Library<33>, Up: Python 3 7 0 beta 1 +File: python.info, Node: Documentation<31>, Next: Tests<25>, Prev: Library<36>, Up: Python 3 7 0 beta 1 -1.19.34.3 Documentation +1.18.37.3 Documentation ....................... - bpo-32724(1): Add references to some commands in the documentation @@ -76083,9 +69310,9 @@ File: python.info, Node: Documentation<27>, Next: Tests<26>, Prev: Library<33 (3) https://bugs.python.org/issue17799  -File: python.info, Node: Tests<26>, Next: Build<26>, Prev: Documentation<27>, Up: Python 3 7 0 beta 1 +File: python.info, Node: Tests<25>, Next: Build<23>, Prev: Documentation<31>, Up: Python 3 7 0 beta 1 -1.19.34.4 Tests +1.18.37.4 Tests ............... - bpo-32721(1): Fix test_hashlib to not fail if the _md5 module is @@ -76123,9 +69350,9 @@ File: python.info, Node: Tests<26>, Next: Build<26>, Prev: Documentation<27>, (6) https://bugs.python.org/issue32549  -File: python.info, Node: Build<26>, Next: Windows<25>, Prev: Tests<26>, Up: Python 3 7 0 beta 1 +File: python.info, Node: Build<23>, Next: Windows<27>, Prev: Tests<25>, Up: Python 3 7 0 beta 1 -1.19.34.5 Build +1.18.37.5 Build ............... - bpo-32635(1): Fix segfault of the crypt module when libxcrypt is @@ -76138,7 +69365,7 @@ File: python.info, Node: Build<26>, Next: Windows<25>, Prev: Tests<26>, Up: - bpo-32593(3): Drop support of FreeBSD 9 and older. - bpo-29708(4): If the ‘SOURCE_DATE_EPOCH’ environment variable is - set, *note py_compile: d7. will always create hash-based ‘.pyc’ + set, *note py_compile: d8. will always create hash-based ‘.pyc’ files. ---------- Footnotes ---------- @@ -76152,9 +69379,9 @@ File: python.info, Node: Build<26>, Next: Windows<25>, Prev: Tests<26>, Up: (4) https://bugs.python.org/issue29708  -File: python.info, Node: Windows<25>, Next: macOS<22>, Prev: Build<26>, Up: Python 3 7 0 beta 1 +File: python.info, Node: Windows<27>, Next: macOS<21>, Prev: Build<23>, Up: Python 3 7 0 beta 1 -1.19.34.6 Windows +1.18.37.6 Windows ................. - bpo-32588(1): Create standalone _distutils_findvs module and add @@ -76175,9 +69402,9 @@ File: python.info, Node: Windows<25>, Next: macOS<22>, Prev: Build<26>, Up: (3) https://bugs.python.org/issue32507  -File: python.info, Node: macOS<22>, Next: C API<21>, Prev: Windows<25>, Up: Python 3 7 0 beta 1 +File: python.info, Node: macOS<21>, Next: C API<18>, Prev: Windows<27>, Up: Python 3 7 0 beta 1 -1.19.34.7 macOS +1.18.37.7 macOS ............... - bpo-32726(1): Provide an additional, more modern macOS installer @@ -76196,9 +69423,9 @@ File: python.info, Node: macOS<22>, Next: C API<21>, Prev: Windows<25>, Up: (2) https://bugs.python.org/issue28440  -File: python.info, Node: C API<21>, Prev: macOS<22>, Up: Python 3 7 0 beta 1 +File: python.info, Node: C API<18>, Prev: macOS<21>, Up: Python 3 7 0 beta 1 -1.19.34.8 C API +1.18.37.8 C API ............... - bpo-32681(1): Fix uninitialized variable ‘res’ in the C @@ -76216,25 +69443,25 @@ File: python.info, Node: C API<21>, Prev: macOS<22>, Up: Python 3 7 0 beta 1  File: python.info, Node: Python 3 7 0 alpha 4, Next: Python 3 7 0 alpha 3, Prev: Python 3 7 0 beta 1, Up: Changelog -1.19.35 Python 3.7.0 alpha 4 +1.18.38 Python 3.7.0 alpha 4 ---------------------------- `Release date: 2018-01-08' * Menu: -* Core and Builtins: Core and Builtins<31>. -* Library: Library<34>. -* Documentation: Documentation<28>. -* Tests: Tests<27>. -* Windows: Windows<26>. -* Tools/Demos: Tools/Demos<14>. -* C API: C API<22>. +* Core and Builtins: Core and Builtins<36>. +* Library: Library<37>. +* Documentation: Documentation<32>. +* Tests: Tests<26>. +* Windows: Windows<28>. +* Tools/Demos: Tools/Demos<16>. +* C API: C API<19>.  -File: python.info, Node: Core and Builtins<31>, Next: Library<34>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: Core and Builtins<36>, Next: Library<37>, Up: Python 3 7 0 alpha 4 -1.19.35.1 Core and Builtins +1.18.38.1 Core and Builtins ........................... - bpo-31975(1): The default warning filter list now starts with a @@ -76260,8 +69487,8 @@ File: python.info, Node: Core and Builtins<31>, Next: Library<34>, Up: Python - bpo-27169(8): The ‘__debug__’ constant is now optimized out at compile time. This fixes also bpo-22091(9). - - bpo-32329(10): The *note -R: 118c. option now turns on hash - randomization when the *note PYTHONHASHSEED: aa6. environment + - bpo-32329(10): The *note -R: 106f. option now turns on hash + randomization when the *note PYTHONHASHSEED: 9a6. environment variable is set to ‘0’. Previously, the option was ignored. Moreover, ‘sys.flags.hash_randomization’ is now properly set to 0 when hash randomization is turned off by ‘PYTHONHASHSEED=0’. @@ -76303,7 +69530,7 @@ File: python.info, Node: Core and Builtins<31>, Next: Library<34>, Up: Python - bpo-32225(22): PEP 562(23): Add support for module ‘__getattr__’ and ‘__dir__’. Implemented by Ivan Levkivskyi. - - bpo-31901(24): The *note atexit: b. module now has its callback + - bpo-31901(24): The *note atexit: c. module now has its callback stored per interpreter. - bpo-31650(25): Implement PEP 552(26) (Deterministic pycs). Python @@ -76370,9 +69597,9 @@ File: python.info, Node: Core and Builtins<31>, Next: Library<34>, Up: Python (27) https://bugs.python.org/issue29469  -File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and Builtins<31>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: Library<37>, Next: Documentation<32>, Prev: Core and Builtins<36>, Up: Python 3 7 0 alpha 4 -1.19.35.2 Library +1.18.38.2 Library ................. - bpo-32506(1): Now that dict is defined as keeping insertion order, @@ -76437,9 +69664,9 @@ File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and any bit flags applied to socket’s type. This change only affects OSes that have SOCK_NONBLOCK and/or SOCK_CLOEXEC. - - bpo-32248(19): Add *note importlib.abc.ResourceReader: 450. as an + - bpo-32248(19): Add *note importlib.abc.ResourceReader: 333. as an ABC for loaders to provide a unified API for reading resources - contained within packages. Also add *note importlib.resources: 9e. + contained within packages. Also add *note importlib.resources: 9f. as the port of ‘importlib_resources’. - bpo-32311(20): Implement asyncio.create_task(coro) shortcut @@ -76449,7 +69676,7 @@ File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and loop.sock_recv, loop.sock_accept, loop.getaddrinfo, loop.getnameinfo. - - bpo-32323(22): *note urllib.parse.urlsplit(): 6f2. does not convert + - bpo-32323(22): *note urllib.parse.urlsplit(): 5e6. does not convert zone-id (scope) to lower case for scoped IPv6 addresses in hostnames now. @@ -76459,7 +69686,7 @@ File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and - bpo-29711(24): Fix ‘stop_serving’ in asyncio proactor loop kill all listening servers - - bpo-32308(25): *note re.sub(): 57c. now replaces empty matches + - bpo-32308(25): *note re.sub(): 46c. now replaces empty matches adjacent to a previous non-empty match. - bpo-29970(26): Abort asyncio SSLProtocol connection if handshake @@ -76525,9 +69752,9 @@ File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and implementations using type annotations. - bpo-15873(44): Added new alternate constructors *note - datetime.datetime.fromisoformat(): 488, *note - datetime.time.fromisoformat(): 118e. and *note - datetime.date.fromisoformat(): 118f. as the inverse operation of + datetime.datetime.fromisoformat(): 36f, *note + datetime.time.fromisoformat(): 1071. and *note + datetime.date.fromisoformat(): 1072. as the inverse operation of each classes’s respective ‘isoformat’ methods. - bpo-32199(45): The getnode() ip getter now uses ‘ip link’ instead @@ -76557,7 +69784,7 @@ File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and by Jelle Zijlstra. - bpo-31699(53): Fix deadlocks in *note - concurrent.futures.ProcessPoolExecutor: 196. when task arguments or + concurrent.futures.ProcessPoolExecutor: 28f. when task arguments or results cause pickling or unpickling errors. This should make sure that calls to the ‘ProcessPoolExecutor’ API always eventually return. @@ -76676,9 +69903,9 @@ File: python.info, Node: Library<34>, Next: Documentation<28>, Prev: Core and (54) https://bugs.python.org/issue15216  -File: python.info, Node: Documentation<28>, Next: Tests<27>, Prev: Library<34>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: Documentation<32>, Next: Tests<26>, Prev: Library<37>, Up: Python 3 7 0 alpha 4 -1.19.35.3 Documentation +1.18.38.3 Documentation ....................... - bpo-32418(1): Add get_loop() method to Server and AbstractServer @@ -76689,9 +69916,9 @@ File: python.info, Node: Documentation<28>, Next: Tests<27>, Prev: Library<34 (1) https://bugs.python.org/issue32418  -File: python.info, Node: Tests<27>, Next: Windows<26>, Prev: Documentation<28>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: Tests<26>, Next: Windows<28>, Prev: Documentation<32>, Up: Python 3 7 0 alpha 4 -1.19.35.4 Tests +1.18.38.4 Tests ............... - bpo-32252(1): Fix faulthandler_suppress_crash_report() used to @@ -76709,9 +69936,9 @@ File: python.info, Node: Tests<27>, Next: Windows<26>, Prev: Documentation<28 (2) https://bugs.python.org/issue32002  -File: python.info, Node: Windows<26>, Next: Tools/Demos<14>, Prev: Tests<27>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: Windows<28>, Next: Tools/Demos<16>, Prev: Tests<26>, Up: Python 3 7 0 alpha 4 -1.19.35.5 Windows +1.18.38.5 Windows ................. - bpo-19764(1): Implement support for @@ -76723,9 +69950,9 @@ File: python.info, Node: Windows<26>, Next: Tools/Demos<14>, Prev: Tests<27>, (1) https://bugs.python.org/issue19764  -File: python.info, Node: Tools/Demos<14>, Next: C API<22>, Prev: Windows<26>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: Tools/Demos<16>, Next: C API<19>, Prev: Windows<28>, Up: Python 3 7 0 alpha 4 -1.19.35.6 Tools/Demos +1.18.38.6 Tools/Demos ..................... - bpo-24960(1): 2to3 and lib2to3 can now read pickled grammar files @@ -76737,9 +69964,9 @@ File: python.info, Node: Tools/Demos<14>, Next: C API<22>, Prev: Windows<26>, (1) https://bugs.python.org/issue24960  -File: python.info, Node: C API<22>, Prev: Tools/Demos<14>, Up: Python 3 7 0 alpha 4 +File: python.info, Node: C API<19>, Prev: Tools/Demos<16>, Up: Python 3 7 0 alpha 4 -1.19.35.7 C API +1.18.38.7 C API ............... - bpo-32030(1): Py_Initialize() doesn’t reset the memory allocators @@ -76752,8 +69979,8 @@ File: python.info, Node: C API<22>, Prev: Tools/Demos<14>, Up: Python 3 7 0 a - bpo-32264(3): Moved the pygetopt.h header into internal/, since it has no public APIs. - - bpo-32241(4): *note Py_SetProgramName(): 10b4. and *note - Py_SetPythonHome(): 10b3. now take the ‘const wchar *’ arguments + - bpo-32241(4): *note Py_SetProgramName(): f64. and *note + Py_SetPythonHome(): f63. now take the ‘const wchar *’ arguments instead of ‘wchar *’. ---------- Footnotes ---------- @@ -76769,28 +69996,28 @@ File: python.info, Node: C API<22>, Prev: Tools/Demos<14>, Up: Python 3 7 0 a  File: python.info, Node: Python 3 7 0 alpha 3, Next: Python 3 7 0 alpha 2, Prev: Python 3 7 0 alpha 4, Up: Changelog -1.19.36 Python 3.7.0 alpha 3 +1.18.39 Python 3.7.0 alpha 3 ---------------------------- `Release date: 2017-12-05' * Menu: -* Core and Builtins: Core and Builtins<32>. -* Library: Library<35>. -* Documentation: Documentation<29>. -* Tests: Tests<28>. -* Build: Build<27>. -* Windows: Windows<27>. -* macOS: macOS<23>. -* IDLE: IDLE<29>. -* Tools/Demos: Tools/Demos<15>. -* C API: C API<23>. +* Core and Builtins: Core and Builtins<37>. +* Library: Library<38>. +* Documentation: Documentation<33>. +* Tests: Tests<27>. +* Build: Build<24>. +* Windows: Windows<29>. +* macOS: macOS<22>. +* IDLE: IDLE<33>. +* Tools/Demos: Tools/Demos<17>. +* C API: C API<20>.  -File: python.info, Node: Core and Builtins<32>, Next: Library<35>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Core and Builtins<37>, Next: Library<38>, Up: Python 3 7 0 alpha 3 -1.19.36.1 Core and Builtins +1.18.39.1 Core and Builtins ........................... - bpo-32176(1): co_flags.CO_NOFREE is now always set correctly by the @@ -76943,9 +70170,9 @@ File: python.info, Node: Core and Builtins<32>, Next: Library<35>, Up: Python (22) https://bugs.python.org/issue30817  -File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and Builtins<32>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Library<38>, Next: Documentation<33>, Prev: Core and Builtins<37>, Up: Python 3 7 0 alpha 3 -1.19.36.2 Library +1.18.39.2 Library ................. - bpo-28556(1): Two minor fixes for ‘typing’ module: allow shallow @@ -76969,7 +70196,7 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and - bpo-321010(8): Add ‘sys.flags.dev_mode’ flag - bpo-32154(9): The ‘asyncio.windows_utils.socketpair()’ function has - been removed: use directly *note socket.socketpair(): 57f. which is + been removed: use directly *note socket.socketpair(): 472. which is available on all platforms since Python 3.5 (before, it wasn’t available on Windows). ‘asyncio.windows_utils.socketpair()’ was just an alias to ‘socket.socketpair’ on Python 3.5 and newer. @@ -76987,16 +70214,16 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and - bpo-23033(12): Wildcard is now supported in hostname when it is one and only character in the left most segment of hostname in second - argument of *note ssl.match_hostname(): 4e5. Patch by Mandeep + argument of *note ssl.match_hostname(): 3cd. Patch by Mandeep Singh. - bpo-12239(13): Make *note msilib.SummaryInformation.GetProperty(): - 10c0. return ‘None’ when the value of property is ‘VT_EMPTY’. + f9e. return ‘None’ when the value of property is ‘VT_EMPTY’. Initial patch by Mark Mc Mahon. - - bpo-28334(14): Use *note os.path.expanduser(): 32f. to find the - ‘~/.netrc’ file in *note netrc.netrc: 1198. If it does not exist, - *note FileNotFoundError: 8af. is raised. Patch by Dimitri + - bpo-28334(14): Use *note os.path.expanduser(): 1ea. to find the + ‘~/.netrc’ file in *note netrc.netrc: 107b. If it does not exist, + *note FileNotFoundError: 7a5. is raised. Patch by Dimitri Merejkowsky. - bpo-32121(15): Made ‘tracemalloc.Traceback’ behave more like the @@ -77007,10 +70234,10 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and ‘Traceback.format()’. (Patch by Jesse Bakker.) - bpo-31325(16): Fix wrong usage of *note collections.namedtuple(): - 1a1. in the *note RobotFileParser.parse(): 1199. method. Initial + 1a3. in the *note RobotFileParser.parse(): 107c. method. Initial patch by Robin Wellner. - - bpo-12382(17): *note msilib.OpenDatabase(): fe1. now raises a + - bpo-12382(17): *note msilib.OpenDatabase(): eea. now raises a better exception message when it couldn’t open or create an MSI file. Initial patch by William Tisäter. @@ -77042,8 +70269,8 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and the registry anymore for the “ignore” action. - bpo-32088(24): warnings: When Python is build is debug mode - (‘Py_DEBUG’), *note DeprecationWarning: 15a, *note - PendingDeprecationWarning: 15c. and *note ImportWarning: 6d1. + (‘Py_DEBUG’), *note DeprecationWarning: 264, *note + PendingDeprecationWarning: 265. and *note ImportWarning: 5c5. warnings are now displayed by default. - bpo-1647489(25): Fixed searching regular expression patterns that @@ -77108,14 +70335,14 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and - bpo-31970(42): Reduce performance overhead of asyncio debug mode. - bpo-31843(43): `database' argument of sqlite3.connect() now accepts - a *note path-like object: 474, instead of just a string. + a *note path-like object: 35b, instead of just a string. - bpo-31945(44): Add Configurable `blocksize' to ‘HTTPConnection’ and ‘HTTPSConnection’ for improved upload throughput. Patch by Nir Soffer. - bpo-31943(45): Add a ‘cancelled()’ method to *note asyncio.Handle: - 119a. Patch by Marat Sharafutdinov. + 107d. Patch by Marat Sharafutdinov. - bpo-9678(46): Fixed determining the MAC address in the uuid module: Using ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, @@ -77139,8 +70366,8 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and as arguments. Based on patch by Steve Fink. - bpo-31917(52): Add 3 new clock identifiers: *note - time.CLOCK_BOOTTIME: 4fd, *note time.CLOCK_PROF: 4ff. and *note - time.CLOCK_UPTIME: 500. + time.CLOCK_BOOTTIME: 3e6, *note time.CLOCK_PROF: 3e8. and *note + time.CLOCK_UPTIME: 3e9. - bpo-31897(53): plistlib now catches more errors when read binary plists and raises InvalidFileException instead of unexpected @@ -77164,7 +70391,7 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and - bpo-31702(59): crypt.mksalt() now allows to specify the number of rounds for SHA-256 and SHA-512 hashing. - - bpo-30639(60): *note inspect.getfile(): 119b. no longer computes + - bpo-30639(60): *note inspect.getfile(): 107e. no longer computes the repr of unknown objects to display in an error message, to protect against badly behaved custom reprs. @@ -77200,8 +70427,8 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and stderr is closed or None. - bpo-20825(70): Add ‘subnet_of’ and ‘superset_of’ containment tests - to *note ipaddress.IPv6Network: 4a8. and *note - ipaddress.IPv4Network: 4a9. Patch by Michel Albert and Cheryl + to *note ipaddress.IPv6Network: 390. and *note + ipaddress.IPv4Network: 391. Patch by Michel Albert and Cheryl Sabella. - bpo-31827(71): Remove the os.stat_float_times() function. It was @@ -77209,7 +70436,7 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and 2.2, and was deprecated since Python 3.1. - bpo-31756(72): Add a ‘subprocess.Popen(text=False)’ keyword - argument to *note subprocess: f9. functions to be more explicit + argument to *note subprocess: fa. functions to be more explicit about when the library should attempt to decode outputs into text. Patch by Andrew Clegg. @@ -77243,10 +70470,10 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and automatically creation of child mocks. Patch by Mario Corchero. - bpo-31784(81): Implement the PEP 564(82), add new 6 new functions - with nanosecond resolution to the *note time: 10c. module: *note - clock_gettime_ns(): 430, *note clock_settime_ns(): 431, *note - monotonic_ns(): 432, *note perf_counter_ns(): 433, *note - process_time_ns(): 434, *note time_ns(): 435. + with nanosecond resolution to the *note time: 10b. module: *note + clock_gettime_ns(): 310, *note clock_settime_ns(): 311, *note + monotonic_ns(): 312, *note perf_counter_ns(): 313, *note + process_time_ns(): 314, *note time_ns(): 315. - bpo-30143(83): 2to3 now generates a code that uses abstract collection classes from collections.abc rather than collections. @@ -77281,7 +70508,7 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and ncurses 5.7 and earlier. - bpo-31307(93): Allow use of bytes objects for arguments to *note - configparser.ConfigParser.read(): 119c. Patch by Vincent Michel. + configparser.ConfigParser.read(): 107f. Patch by Vincent Michel. - bpo-31334(94): Fix ‘poll.poll([timeout])’ in the ‘select’ module for arbitrary negative timeouts on all OSes where it can only be a @@ -77298,7 +70525,7 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and ‘create_datagram_endpoint’. - bpo-30553(98): Add HTTP/2 status code 421 (Misdirected Request) to - *note http.HTTPStatus: 1ac. Patch by Vitor Pereira. + *note http.HTTPStatus: 6c9. Patch by Vitor Pereira. ---------- Footnotes ---------- @@ -77499,9 +70726,9 @@ File: python.info, Node: Library<35>, Next: Documentation<29>, Prev: Core and (98) https://bugs.python.org/issue30553  -File: python.info, Node: Documentation<29>, Next: Tests<28>, Prev: Library<35>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Documentation<33>, Next: Tests<27>, Prev: Library<38>, Up: Python 3 7 0 alpha 3 -1.19.36.3 Documentation +1.18.39.3 Documentation ....................... - bpo-32105(1): Added asyncio.BaseEventLoop.connect_accepted_socket @@ -77512,9 +70739,9 @@ File: python.info, Node: Documentation<29>, Next: Tests<28>, Prev: Library<35 (1) https://bugs.python.org/issue32105  -File: python.info, Node: Tests<28>, Next: Build<27>, Prev: Documentation<29>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Tests<27>, Next: Build<24>, Prev: Documentation<33>, Up: Python 3 7 0 alpha 3 -1.19.36.4 Tests +1.18.39.4 Tests ............... - bpo-31380(1): Skip test_httpservers test_undecodable_file on macOS: @@ -77560,9 +70787,9 @@ File: python.info, Node: Tests<28>, Next: Build<27>, Prev: Documentation<29>, (7) https://bugs.python.org/issue31174  -File: python.info, Node: Build<27>, Next: Windows<27>, Prev: Tests<28>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Build<24>, Next: Windows<29>, Prev: Tests<27>, Up: Python 3 7 0 alpha 3 -1.19.36.5 Build +1.18.39.5 Build ............... - bpo-28538(1): Revert the previous changes, the if_nameindex @@ -77624,9 +70851,9 @@ File: python.info, Node: Build<27>, Next: Windows<27>, Prev: Tests<28>, Up: (12) https://bugs.python.org/issue31866  -File: python.info, Node: Windows<27>, Next: macOS<23>, Prev: Build<27>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Windows<29>, Next: macOS<22>, Prev: Build<24>, Up: Python 3 7 0 alpha 3 -1.19.36.6 Windows +1.18.39.6 Windows ................. - bpo-1102(1): Return ‘None’ when ‘View.Fetch()’ returns @@ -77652,9 +70879,9 @@ File: python.info, Node: Windows<27>, Next: macOS<23>, Prev: Build<27>, Up: (4) https://bugs.python.org/issue31857  -File: python.info, Node: macOS<23>, Next: IDLE<29>, Prev: Windows<27>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: macOS<22>, Next: IDLE<33>, Prev: Windows<29>, Up: Python 3 7 0 alpha 3 -1.19.36.7 macOS +1.18.39.7 macOS ............... - bpo-31392(1): Update macOS installer to use OpenSSL 1.0.2m @@ -77664,9 +70891,9 @@ File: python.info, Node: macOS<23>, Next: IDLE<29>, Prev: Windows<27>, Up: P (1) https://bugs.python.org/issue31392  -File: python.info, Node: IDLE<29>, Next: Tools/Demos<15>, Prev: macOS<23>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: IDLE<33>, Next: Tools/Demos<17>, Prev: macOS<22>, Up: Python 3 7 0 alpha 3 -1.19.36.8 IDLE +1.18.39.8 IDLE .............. - bpo-32207(1): Improve tk event exception tracebacks in IDLE. When @@ -77728,9 +70955,9 @@ File: python.info, Node: IDLE<29>, Next: Tools/Demos<15>, Prev: macOS<23>, U (8) https://bugs.python.org/issue13802  -File: python.info, Node: Tools/Demos<15>, Next: C API<23>, Prev: IDLE<29>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: Tools/Demos<17>, Next: C API<20>, Prev: IDLE<33>, Up: Python 3 7 0 alpha 3 -1.19.36.9 Tools/Demos +1.18.39.9 Tools/Demos ..................... - bpo-32159(1): Remove CVS and Subversion tools: remove svneol.py and @@ -77749,9 +70976,9 @@ File: python.info, Node: Tools/Demos<15>, Next: C API<23>, Prev: IDLE<29>, U (2) https://bugs.python.org/issue30722  -File: python.info, Node: C API<23>, Prev: Tools/Demos<15>, Up: Python 3 7 0 alpha 3 +File: python.info, Node: C API<20>, Prev: Tools/Demos<17>, Up: Python 3 7 0 alpha 3 -1.19.36.10 C API +1.18.39.10 C API ................ - bpo-20891(1): Fix PyGILState_Ensure(). When PyGILState_Ensure() is @@ -77794,24 +71021,24 @@ File: python.info, Node: C API<23>, Prev: Tools/Demos<15>, Up: Python 3 7 0 a  File: python.info, Node: Python 3 7 0 alpha 2, Next: Python 3 7 0 alpha 1, Prev: Python 3 7 0 alpha 3, Up: Changelog -1.19.37 Python 3.7.0 alpha 2 +1.18.40 Python 3.7.0 alpha 2 ---------------------------- `Release date: 2017-10-16' * Menu: -* Core and Builtins: Core and Builtins<33>. -* Library: Library<36>. -* Documentation: Documentation<30>. -* Build: Build<28>. -* IDLE: IDLE<30>. -* C API: C API<24>. +* Core and Builtins: Core and Builtins<38>. +* Library: Library<39>. +* Documentation: Documentation<34>. +* Build: Build<25>. +* IDLE: IDLE<34>. +* C API: C API<21>.  -File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python 3 7 0 alpha 2 +File: python.info, Node: Core and Builtins<38>, Next: Library<39>, Up: Python 3 7 0 alpha 2 -1.19.37.1 Core and Builtins +1.18.40.1 Core and Builtins ........................... - bpo-31558(1): ‘gc.freeze()’ is a new API that allows for moving all @@ -77837,13 +71064,13 @@ File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python - bpo-31602(7): Fix an assertion failure in ‘zipimporter.get_source()’ in case of a bad *note - zlib.decompress(): 6b8. Patch by Oren Milman. + zlib.decompress(): 5ac. Patch by Oren Milman. - bpo-31592(8): Fixed an assertion failure in Python parser in case - of a bad *note unicodedata.normalize(): 11a7. Patch by Oren + of a bad *note unicodedata.normalize(): 108a. Patch by Oren Milman. - - bpo-31588(9): Raise a *note TypeError: 1fe. with a helpful error + - bpo-31588(9): Raise a *note TypeError: 17f. with a helpful error message when class creation fails due to a metaclass with a bad ‘__prepare__()’ method. Patch by Oren Milman. @@ -77856,7 +71083,7 @@ File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python - bpo-31506(12): Improved the error message logic for object.__new__ and object.__init__. - - bpo-31505(13): Fix an assertion failure in *note json: a4, in case + - bpo-31505(13): Fix an assertion failure in *note json: a5, in case ‘_json.make_encoder()’ received a bad ‘encoder()’ argument. Patch by Oren Milman. @@ -77875,7 +71102,7 @@ File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python - bpo-31415(17): Add ‘-X importtime’ option to show how long each import takes. It can be used to optimize application’s startup - time. Support the *note PYTHONPROFILEIMPORTTIME: 446. as an + time. Support the *note PYTHONPROFILEIMPORTTIME: 329. as an equivalent way to enable this. - bpo-31410(18): Optimized calling wrapper and classmethod @@ -77894,7 +71121,7 @@ File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python when spec.name is not a string. Patch by Oren Milman. - bpo-31311(23): Fix a crash in the ‘__setstate__()’ method of *note - ctypes._CData: 11a8, in case of a bad ‘__dict__’. Patch by Oren + ctypes._CData: 108b, in case of a bad ‘__dict__’. Patch by Oren Milman. - bpo-31293(24): Fix crashes in true division and multiplication of a @@ -77902,7 +71129,7 @@ File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python Patch by Oren Milman. - bpo-31285(25): Fix an assertion failure in *note - warnings.warn_explicit: 6a9, when the return value of the received + warnings.warn_explicit: 59d, when the return value of the received loader’s get_source() has a bad splitlines() method. Patch by Oren Milman. @@ -77966,9 +71193,9 @@ File: python.info, Node: Core and Builtins<33>, Next: Library<36>, Up: Python (27) https://www.python.org/dev/peps/pep-0492  -File: python.info, Node: Library<36>, Next: Documentation<30>, Prev: Core and Builtins<33>, Up: Python 3 7 0 alpha 2 +File: python.info, Node: Library<39>, Next: Documentation<34>, Prev: Core and Builtins<38>, Up: Python 3 7 0 alpha 2 -1.19.37.2 Library +1.18.40.2 Library ................. - bpo-30058(1): Fixed buffer overflow in select.kqueue.control(). @@ -78034,9 +71261,9 @@ File: python.info, Node: Library<36>, Next: Documentation<30>, Prev: Core and 0 - bpo-31540(20): Allow passing a context object in *note - concurrent.futures.ProcessPoolExecutor: 196. constructor. Also, + concurrent.futures.ProcessPoolExecutor: 28f. constructor. Also, free job resources in *note concurrent.futures.ProcessPoolExecutor: - 196. earlier to improve memory usage when a worker waits for new + 28f. earlier to improve memory usage when a worker waits for new jobs. - bpo-31516(21): ‘threading.current_thread()’ should not return a @@ -78053,9 +71280,9 @@ File: python.info, Node: Library<36>, Next: Documentation<30>, Prev: Core and required as had been the case since Python 3.3.) - bpo-27541(24): Reprs of subclasses of some collection and iterator - classes (*note bytearray: 173, *note array.array: 216, *note - collections.deque: 62d, *note collections.defaultdict: c0e, *note - itertools.count: ce7, *note itertools.repeat: 11aa.) now contain + classes (*note bytearray: 323, *note array.array: 442, *note + collections.deque: 51e, *note collections.defaultdict: b1b, *note + itertools.count: bfb, *note itertools.repeat: 108d.) now contain actual type name insteads of hardcoded name of the base class. - bpo-31351(25): python -m ensurepip now exits with non-zero exit @@ -78120,9 +71347,9 @@ File: python.info, Node: Library<36>, Next: Documentation<30>, Prev: Core and (26) https://bugs.python.org/issue31389  -File: python.info, Node: Documentation<30>, Next: Build<28>, Prev: Library<36>, Up: Python 3 7 0 alpha 2 +File: python.info, Node: Documentation<34>, Next: Build<25>, Prev: Library<39>, Up: Python 3 7 0 alpha 2 -1.19.37.3 Documentation +1.18.40.3 Documentation ....................... - bpo-31537(1): Fix incorrect usage of ‘get_history_length’ in @@ -78139,13 +71366,13 @@ File: python.info, Node: Documentation<30>, Next: Build<28>, Prev: Library<36 (2) https://bugs.python.org/issue30085  -File: python.info, Node: Build<28>, Next: IDLE<30>, Prev: Documentation<30>, Up: Python 3 7 0 alpha 2 +File: python.info, Node: Build<25>, Next: IDLE<34>, Prev: Documentation<34>, Up: Python 3 7 0 alpha 2 -1.19.37.4 Build +1.18.40.4 Build ............... - bpo-31696(1): Improve compiler version information in *note - sys.version: 6cc. when Python is built with Clang. + sys.version: 5c0. when Python is built with Clang. - bpo-31625(2): Stop using ranlib on static libraries. Instead, we assume ar supports the ‘s’ flag. @@ -78176,9 +71403,9 @@ File: python.info, Node: Build<28>, Next: IDLE<30>, Prev: Documentation<30>, (6) https://bugs.python.org/issue31536  -File: python.info, Node: IDLE<30>, Next: C API<24>, Prev: Build<28>, Up: Python 3 7 0 alpha 2 +File: python.info, Node: IDLE<34>, Next: C API<21>, Prev: Build<25>, Up: Python 3 7 0 alpha 2 -1.19.37.5 IDLE +1.18.40.5 IDLE .............. - bpo-31460(1): Simplify the API of IDLE’s Module Browser. Passing a @@ -78222,14 +71449,14 @@ File: python.info, Node: IDLE<30>, Next: C API<24>, Prev: Build<28>, Up: Pyt (6) https://bugs.python.org/issue1612262  -File: python.info, Node: C API<24>, Prev: IDLE<30>, Up: Python 3 7 0 alpha 2 +File: python.info, Node: C API<21>, Prev: IDLE<34>, Up: Python 3 7 0 alpha 2 -1.19.37.6 C API +1.18.40.6 C API ............... - bpo-28280(1): Make ‘PyMapping_Keys()’, ‘PyMapping_Values()’ and - ‘PyMapping_Items()’ always return a *note list: 1f8. (rather than a - *note list: 1f8. or a *note tuple: 1a2.). Patch by Oren Milman. + ‘PyMapping_Items()’ always return a *note list: 24e. (rather than a + *note list: 24e. or a *note tuple: 46f.). Patch by Oren Milman. - bpo-31532(2): Fix memory corruption due to allocator mix in getpath.c between Py_GetPath() and Py_SetPath() @@ -78253,28 +71480,28 @@ File: python.info, Node: C API<24>, Prev: IDLE<30>, Up: Python 3 7 0 alpha 2  File: python.info, Node: Python 3 7 0 alpha 1, Next: Python 3 6 6 final, Prev: Python 3 7 0 alpha 2, Up: Changelog -1.19.38 Python 3.7.0 alpha 1 +1.18.41 Python 3.7.0 alpha 1 ---------------------------- `Release date: 2017-09-19' * Menu: -* Security: Security<20>. -* Core and Builtins: Core and Builtins<34>. -* Library: Library<37>. -* Documentation: Documentation<31>. -* Tests: Tests<29>. -* Build: Build<29>. -* Windows: Windows<28>. -* IDLE: IDLE<31>. -* Tools/Demos: Tools/Demos<16>. -* C API: C API<25>. +* Security: Security<24>. +* Core and Builtins: Core and Builtins<39>. +* Library: Library<40>. +* Documentation: Documentation<35>. +* Tests: Tests<28>. +* Build: Build<26>. +* Windows: Windows<30>. +* IDLE: IDLE<35>. +* Tools/Demos: Tools/Demos<18>. +* C API: C API<22>.  -File: python.info, Node: Security<20>, Next: Core and Builtins<34>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Security<24>, Next: Core and Builtins<39>, Up: Python 3 7 0 alpha 1 -1.19.38.1 Security +1.18.41.1 Security .................. - bpo-29781(1): SSLObject.version() now correctly returns None when @@ -78326,18 +71553,18 @@ File: python.info, Node: Security<20>, Next: Core and Builtins<34>, Up: Pytho (7) https://bugs.python.org/issue29591  -File: python.info, Node: Core and Builtins<34>, Next: Library<37>, Prev: Security<20>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Core and Builtins<39>, Next: Library<40>, Prev: Security<24>, Up: Python 3 7 0 alpha 1 -1.19.38.2 Core and Builtins +1.18.41.2 Core and Builtins ........................... - - bpo-31490(1): Fix an assertion failure in *note ctypes: 2a. class + - bpo-31490(1): Fix an assertion failure in *note ctypes: 2b. class definition, in case the class has an attribute whose name is specified in ‘_anonymous_’ but not in ‘_fields_’. Patch by Oren Milman. - bpo-31471(2): Fix an assertion failure in *note subprocess.Popen(): - 3de. on Windows, in case the env argument has a bad keys() method. + 2a4. on Windows, in case the env argument has a bad keys() method. Patch by Oren Milman. - bpo-31418(3): Fix an assertion failure in ‘PyErr_WriteUnraisable()’ @@ -78387,16 +71614,16 @@ File: python.info, Node: Core and Builtins<34>, Next: Library<37>, Prev: Secu sys/types.h. - bpo-31291(14): Fix an assertion failure in *note - zipimport.zipimporter.get_data: 11b2. on Windows, when the return + zipimport.zipimporter.get_data: 1095. on Windows, when the return value of ‘pathname.replace('/','\\')’ isn’t a string. Patch by Oren Milman. - bpo-31271(15): Fix an assertion failure in the write() method of - *note io.TextIOWrapper: 6ec, when the encoder doesn’t return a + *note io.TextIOWrapper: 5e0, when the encoder doesn’t return a bytes object. Patch by Oren Milman. - bpo-31243(16): Fix a crash in some methods of *note - io.TextIOWrapper: 6ec, when the decoder’s state is invalid. Patch + io.TextIOWrapper: 5e0, when the decoder’s state is invalid. Patch by Oren Milman. - bpo-30721(17): ‘print’ now shows correct usage hint for using @@ -78564,7 +71791,7 @@ File: python.info, Node: Core and Builtins<34>, Next: Library<37>, Prev: Secu awaitables returned from __aiter__ and __anext__. - bpo-28876(64): ‘bool(range)’ works even if ‘len(range)’ raises - *note OverflowError: a43. + *note OverflowError: 941. - bpo-29683(65): Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian Coleman. @@ -78675,8 +71902,8 @@ File: python.info, Node: Core and Builtins<34>, Next: Library<37>, Prev: Secu - bpo-28799(99): Remove the ‘PyEval_GetCallStats()’ function and deprecate the untested and undocumented ‘sys.callstats()’ function. Remove the ‘CALL_PROFILE’ special build: use the *note - sys.setprofile(): f01. function, *note cProfile: 27. or *note - profile: d3. to profile function calls. + sys.setprofile(): e13. function, *note cProfile: 28. or *note + profile: d4. to profile function calls. - bpo-12844(100): More than 255 arguments can now be passed to a function. @@ -79130,9 +72357,9 @@ File: python.info, Node: Core and Builtins<34>, Next: Library<37>, Prev: Secu (148) https://bugs.python.org/issue26110  -File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and Builtins<34>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Library<40>, Next: Documentation<35>, Prev: Core and Builtins<39>, Up: Python 3 7 0 alpha 1 -1.19.38.3 Library +1.18.41.3 Library ................. - bpo-31499(1): xml.etree: Fix a crash when a parser is part of a @@ -79259,7 +72486,7 @@ File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and then explicitly sets its docserver attribute to None to break a reference cycle. - - bpo-5001(34): Many asserts in *note multiprocessing: b7. are now + - bpo-5001(34): Many asserts in *note multiprocessing: b8. are now more informative, and some error types have been changed to more specific ones. @@ -79274,12 +72501,12 @@ File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and - bpo-18966(37): Non-daemonic threads created by a multiprocessing.Process are now joined on child exit. - - bpo-31183(38): *note dis: 37. now works with asynchronous generator + - bpo-31183(38): *note dis: 38. now works with asynchronous generator and coroutine objects. Patch by George Collins based on diagnosis by Luciano Ramalho. - bpo-5001(39): There are a number of uninformative asserts in the - *note multiprocessing: b7. module, as noted in issue 5001. This + *note multiprocessing: b8. module, as noted in issue 5001. This change fixes two of the most potentially problematic ones, since they are in error-reporting code, in the ‘multiprocessing.managers.convert_to_error’ function. (It also @@ -79314,7 +72541,7 @@ File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and calculation for classes whose name begins with an underscore. Patch by Shane Harvey. - - bpo-31080(46): Allow *note logging.config.fileConfig: 4b2. to + - bpo-31080(46): Allow *note logging.config.fileConfig: 39a. to accept kwargs and/or args. - bpo-30897(47): ‘pathlib.Path’ objects now include an ‘is_mount()’ @@ -79421,8 +72648,8 @@ File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and - bpo-30664(77): The description of a unittest subtest now preserves the order of keyword arguments of TestCase.subTest(). - - bpo-21071(78): struct.Struct.format type is now *note str: 205. - instead of *note bytes: 172. + - bpo-21071(78): struct.Struct.format type is now *note str: 321. + instead of *note bytes: 322. - bpo-29212(79): Fix concurrent.futures.thread.ThreadPoolExecutor threads to have a non repr() based thread name by default when no @@ -79693,7 +72920,7 @@ File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and - bpo-29204(157): Element.getiterator() and the html parameter of XMLParser() were deprecated only in the documentation (since Python - 3.2 and 3.4 correspondingly). Now using them emits a deprecation + 3.2 and 3.4 correspondintly). Now using them emits a deprecation warning. - bpo-27863(158): Fixed multiple crashes in ElementTree caused by @@ -80923,9 +74150,9 @@ File: python.info, Node: Library<37>, Next: Documentation<31>, Prev: Core and (326) https://bugs.python.org/issue30177  -File: python.info, Node: Documentation<31>, Next: Tests<29>, Prev: Library<37>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Documentation<35>, Next: Tests<28>, Prev: Library<40>, Up: Python 3 7 0 alpha 1 -1.19.38.4 Documentation +1.18.41.4 Documentation ....................... - bpo-31294(1): Fix incomplete code snippet in the @@ -80944,10 +74171,10 @@ File: python.info, Node: Documentation<31>, Next: Tests<29>, Prev: Library<37 - bpo-30176(5): Add missing attribute related constants in curses documentation. - - bpo-30052(6): the link targets for *note bytes(): 172. and *note - bytearray(): 173. are now their respective type definitions, rather + - bpo-30052(6): the link targets for *note bytes(): 322. and *note + bytearray(): 323. are now their respective type definitions, rather than the corresponding builtin function entries. Use *note bytes: - 11b5. and *note bytearray: 11b6. to reference the latter. In order + 1098. and *note bytearray: 1099. to reference the latter. In order to ensure this and future cross-reference updates are applied automatically, the daily documentation builds now disable the default output caching features in Sphinx. @@ -81016,9 +74243,9 @@ File: python.info, Node: Documentation<31>, Next: Tests<29>, Prev: Library<37 (17) https://bugs.python.org/issue28513  -File: python.info, Node: Tests<29>, Next: Build<29>, Prev: Documentation<31>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Tests<28>, Next: Build<26>, Prev: Documentation<35>, Up: Python 3 7 0 alpha 1 -1.19.38.5 Tests +1.18.41.5 Tests ............... - bpo-29639(1): test.support.HOST is now “localhost”, a new HOSTv4 @@ -81126,9 +74353,9 @@ File: python.info, Node: Tests<29>, Next: Build<29>, Prev: Documentation<31>, (19) https://bugs.python.org/issue26939  -File: python.info, Node: Build<29>, Next: Windows<28>, Prev: Tests<29>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Build<26>, Next: Windows<30>, Prev: Tests<28>, Up: Python 3 7 0 alpha 1 -1.19.38.6 Build +1.18.41.6 Build ............... - bpo-31354(1): Allow –with-lto to be used on all builds, not just @@ -81326,9 +74553,9 @@ File: python.info, Node: Build<29>, Next: Windows<28>, Prev: Tests<29>, Up: (37) https://bugs.python.org/issue28676  -File: python.info, Node: Windows<28>, Next: IDLE<31>, Prev: Build<29>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Windows<30>, Next: IDLE<35>, Prev: Build<26>, Up: Python 3 7 0 alpha 1 -1.19.38.7 Windows +1.18.41.7 Windows ................. - bpo-31392(1): Update Windows build to use OpenSSL 1.1.0f @@ -81454,9 +74681,9 @@ File: python.info, Node: Windows<28>, Next: IDLE<31>, Prev: Build<29>, Up: P (25) https://bugs.python.org/issue28138  -File: python.info, Node: IDLE<31>, Next: Tools/Demos<16>, Prev: Windows<28>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: IDLE<35>, Next: Tools/Demos<18>, Prev: Windows<30>, Up: Python 3 7 0 alpha 1 -1.19.38.8 IDLE +1.18.41.8 IDLE .............. - bpo-31493(1): IDLE code context – fix code update and font update @@ -81527,8 +74754,8 @@ File: python.info, Node: IDLE<31>, Next: Tools/Demos<16>, Prev: Windows<28>, - bpo-31002(15): Add tests for configdialog keys tab. Patch by Cheryl Sabella. - - bpo-19903(16): IDLE: Calltips use *note inspect.signature: 657. - instead of *note inspect.getfullargspec: 659. This improves + - bpo-19903(16): IDLE: Calltips use *note inspect.signature: 548. + instead of *note inspect.getfullargspec: 54a. This improves calltips for builtins converted to use Argument Clinic. Patch by Louie Lu. @@ -81778,9 +75005,9 @@ File: python.info, Node: IDLE<31>, Next: Tools/Demos<16>, Prev: Windows<28>, (51) https://bugs.python.org/issue28572  -File: python.info, Node: Tools/Demos<16>, Next: C API<25>, Prev: IDLE<31>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: Tools/Demos<18>, Next: C API<22>, Prev: IDLE<35>, Up: Python 3 7 0 alpha 1 -1.19.38.9 Tools/Demos +1.18.41.9 Tools/Demos ..................... - bpo-30983(1): gdb integration commands (py-bt, etc.) work on @@ -81795,9 +75022,9 @@ File: python.info, Node: Tools/Demos<16>, Next: C API<25>, Prev: IDLE<31>, U - bpo-29748(3): Added the slice index converter in Argument Clinic. - bpo-24037(4): Argument Clinic now uses the converter - ‘bool(accept={int})’ rather than *note int: 204. for semantical + ‘bool(accept={int})’ rather than *note int: 171. for semantical booleans. This avoids repeating the default value for Python and C - and will help in converting to *note bool: 2c0. in future. + and will help in converting to *note bool: 170. in future. - bpo-29367(5): python-gdb.py now supports also ‘method-wrapper’ (‘wrapperobject’) objects. @@ -81833,9 +75060,9 @@ File: python.info, Node: Tools/Demos<16>, Next: C API<25>, Prev: IDLE<31>, U (8) https://bugs.python.org/issue28102  -File: python.info, Node: C API<25>, Prev: Tools/Demos<16>, Up: Python 3 7 0 alpha 1 +File: python.info, Node: C API<22>, Prev: Tools/Demos<18>, Up: Python 3 7 0 alpha 1 -1.19.38.10 C API +1.18.41.10 C API ................ - bpo-31338(1): Added the ‘Py_UNREACHABLE()’ macro for code paths @@ -81937,7 +75164,7 @@ File: python.info, Node: C API<25>, Prev: Tools/Demos<16>, Up: Python 3 7 0 a  File: python.info, Node: Python 3 6 6 final, Next: Python 3 6 6 release candidate 1, Prev: Python 3 7 0 alpha 1, Up: Changelog -1.19.39 Python 3.6.6 final +1.18.42 Python 3.6.6 final -------------------------- `Release date: 2018-06-27' @@ -81947,28 +75174,28 @@ There were no new changes in version 3.6.6.  File: python.info, Node: Python 3 6 6 release candidate 1, Next: Python 3 6 5 final, Prev: Python 3 6 6 final, Up: Changelog -1.19.40 Python 3.6.6 release candidate 1 +1.18.43 Python 3.6.6 release candidate 1 ---------------------------------------- `Release date: 2018-06-11' * Menu: -* Core and Builtins: Core and Builtins<35>. -* Library: Library<38>. -* Documentation: Documentation<32>. -* Tests: Tests<30>. -* Build: Build<30>. -* Windows: Windows<29>. -* macOS: macOS<24>. -* IDLE: IDLE<32>. -* Tools/Demos: Tools/Demos<17>. -* C API: C API<26>. +* Core and Builtins: Core and Builtins<40>. +* Library: Library<41>. +* Documentation: Documentation<36>. +* Tests: Tests<29>. +* Build: Build<27>. +* Windows: Windows<31>. +* macOS: macOS<23>. +* IDLE: IDLE<36>. +* Tools/Demos: Tools/Demos<19>. +* C API: C API<23>.  -File: python.info, Node: Core and Builtins<35>, Next: Library<38>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Core and Builtins<40>, Next: Library<41>, Up: Python 3 6 6 release candidate 1 -1.19.40.1 Core and Builtins +1.18.43.1 Core and Builtins ........................... - bpo-33786(1): Fix asynchronous generators to handle GeneratorExit @@ -81980,7 +75207,7 @@ File: python.info, Node: Core and Builtins<35>, Next: Library<38>, Up: Python - bpo-33622(3): Fixed a leak when the garbage collector fails to add an object with the ‘__del__’ method or referenced by it into the - *note gc.garbage: c14. list. ‘PyGC_Collect()’ can now be called + *note gc.garbage: b20. list. ‘PyGC_Collect()’ can now be called when an exception is set and preserves it. - bpo-31849(4): Fix signed/unsigned comparison warning in pyhash.c. @@ -82004,9 +75231,9 @@ File: python.info, Node: Core and Builtins<35>, Next: Library<38>, Up: Python - bpo-32282(11): Fix an unnecessary ifdef in the include of VersionHelpers.h in socketmodule on Windows. - - bpo-21983(12): Fix a crash in *note ctypes.cast(): 110d. in case - the type argument is a ctypes structured data type. Patch by Eryk - Sun and Oren Milman. + - bpo-21983(12): Fix a crash in *note ctypes.cast(): fee. in case the + type argument is a ctypes structured data type. Patch by Eryk Sun + and Oren Milman. ---------- Footnotes ---------- @@ -82035,9 +75262,9 @@ File: python.info, Node: Core and Builtins<35>, Next: Library<38>, Up: Python (12) https://bugs.python.org/issue21983  -File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and Builtins<35>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Library<41>, Next: Documentation<36>, Prev: Core and Builtins<40>, Up: Python 3 6 6 release candidate 1 -1.19.40.2 Library +1.18.43.2 Library ................. - bpo-30167(1): Prevent site.main() exception if PYTHONSTARTUP is @@ -82050,8 +75277,8 @@ File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and - bpo-30805(3): Avoid race condition with debug logging - bpo-33767(4): The concatenation (‘+’) and repetition (‘*’) sequence - operations now raise *note TypeError: 1fe. instead of *note - SystemError: 6f4. when performed on *note mmap.mmap: 31f. objects. + operations now raise *note TypeError: 17f. instead of *note + SystemError: 5e8. when performed on *note mmap.mmap: 1d8. objects. Patch by Zackery Spytz. - bpo-32684(5): Fix gather to propagate cancellation of itself even @@ -82105,17 +75332,17 @@ File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and inspect.Parameters Patch by Dong-hee Na. - bpo-33383(19): Fixed crash in the get() method of the *note - dbm.ndbm: 34. database object when it is called with a single + dbm.ndbm: 35. database object when it is called with a single argument. - bpo-33329(20): Fix multiprocessing regression on newer glibcs - bpo-991266(21): Fix quoting of the ‘Comment’ attribute of *note - http.cookies.SimpleCookie: 1131. + http.cookies.SimpleCookie: 1013. - bpo-33131(22): Upgrade bundled version of pip to 10.0.1. - - bpo-33308(23): Fixed a crash in the *note parser: c7. module when + - bpo-33308(23): Fixed a crash in the *note parser: c8. module when converting an ST object to a tree of tuples or lists with ‘line_info=False’ and ‘col_info=True’. @@ -82133,7 +75360,7 @@ File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and uncaught StopIteration in a generator into a return-statement. - bpo-33209(29): End framing at the end of C implementation of *note - pickle.Pickler.dump(): 1135. + pickle.Pickler.dump(): 1017. - bpo-32861(30): The urllib.robotparser’s ‘__str__’ representation now includes wildcard entries and the “Crawl-delay” and @@ -82149,7 +75376,7 @@ File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and of all threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch by Nir Soffer. - - bpo-27683(34): Fix a regression in *note ipaddress: a2. that result + - bpo-27683(34): Fix a regression in *note ipaddress: a3. that result of ‘hosts()’ is empty when the network is constructed by a tuple containing an integer mask and only 1 bit left for addresses. @@ -82163,7 +75390,7 @@ File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and - bpo-31457(37): If nested log adapters are used, the inner ‘process()’ methods are no longer omitted. - - bpo-16865(38): Support arrays >=2GiB in *note ctypes: 2a. Patch by + - bpo-16865(38): Support arrays >=2GiB in *note ctypes: 2b. Patch by Segev Finer. - bpo-31238(39): pydoc: the stop() method of the private ServerThread @@ -82252,9 +75479,9 @@ File: python.info, Node: Library<38>, Next: Documentation<32>, Prev: Core and (39) https://bugs.python.org/issue31238  -File: python.info, Node: Documentation<32>, Next: Tests<30>, Prev: Library<38>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Documentation<36>, Next: Tests<29>, Prev: Library<41>, Up: Python 3 6 6 release candidate 1 -1.19.40.3 Documentation +1.18.43.3 Documentation ....................... - bpo-33503(1): Fix broken pypi link @@ -82280,7 +75507,7 @@ File: python.info, Node: Documentation<32>, Next: Tests<30>, Prev: Library<38 - bpo-27212(8): Modify documentation for the ‘islice()’ recipe to consume initial values up to the start index. - - bpo-28247(9): Update *note zipapp: 14a. documentation to describe + - bpo-28247(9): Update *note zipapp: 142. documentation to describe how to make standalone applications. - bpo-18802(10): Documentation changes for ipaddress. Patch by Jon @@ -82325,9 +75552,9 @@ File: python.info, Node: Documentation<32>, Next: Tests<30>, Prev: Library<38 (13) https://bugs.python.org/issue31432  -File: python.info, Node: Tests<30>, Next: Build<30>, Prev: Documentation<32>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Tests<29>, Next: Build<27>, Prev: Documentation<36>, Up: Python 3 6 6 release candidate 1 -1.19.40.4 Tests +1.18.43.4 Tests ............... - bpo-33655(1): Ignore test_posix_fallocate failures on BSD platforms @@ -82342,9 +75569,9 @@ File: python.info, Node: Tests<30>, Next: Build<30>, Prev: Documentation<32>, (2) https://bugs.python.org/issue19417  -File: python.info, Node: Build<30>, Next: Windows<29>, Prev: Tests<30>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Build<27>, Next: Windows<31>, Prev: Tests<29>, Up: Python 3 6 6 release candidate 1 -1.19.40.5 Build +1.18.43.5 Build ............... - bpo-5755(1): Move ‘-Wstrict-prototypes’ option to ‘CFLAGS_NODIST’ @@ -82377,9 +75604,9 @@ File: python.info, Node: Build<30>, Next: Windows<29>, Prev: Tests<30>, Up: (5) https://bugs.python.org/issue33394  -File: python.info, Node: Windows<29>, Next: macOS<24>, Prev: Build<30>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Windows<31>, Next: macOS<23>, Prev: Build<27>, Up: Python 3 6 6 release candidate 1 -1.19.40.6 Windows +1.18.43.6 Windows ................. - bpo-33184(1): Update Windows installer to OpenSSL 1.0.2o. @@ -82389,9 +75616,9 @@ File: python.info, Node: Windows<29>, Next: macOS<24>, Prev: Build<30>, Up: (1) https://bugs.python.org/issue33184  -File: python.info, Node: macOS<24>, Next: IDLE<32>, Prev: Windows<29>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: macOS<23>, Next: IDLE<36>, Prev: Windows<31>, Up: Python 3 6 6 release candidate 1 -1.19.40.7 macOS +1.18.43.7 macOS ............... - bpo-33184(1): Update macOS installer build to use OpenSSL 1.0.2o. @@ -82401,9 +75628,9 @@ File: python.info, Node: macOS<24>, Next: IDLE<32>, Prev: Windows<29>, Up: P (1) https://bugs.python.org/issue33184  -File: python.info, Node: IDLE<32>, Next: Tools/Demos<17>, Prev: macOS<24>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: IDLE<36>, Next: Tools/Demos<19>, Prev: macOS<23>, Up: Python 3 6 6 release candidate 1 -1.19.40.8 IDLE +1.18.43.8 IDLE .............. - bpo-33656(1): On Windows, add API call saying that tk scales for @@ -82478,9 +75705,9 @@ File: python.info, Node: IDLE<32>, Next: Tools/Demos<17>, Prev: macOS<24>, U (12) https://bugs.python.org/issue32831  -File: python.info, Node: Tools/Demos<17>, Next: C API<26>, Prev: IDLE<32>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: Tools/Demos<19>, Next: C API<23>, Prev: IDLE<36>, Up: Python 3 6 6 release candidate 1 -1.19.40.9 Tools/Demos +1.18.43.9 Tools/Demos ..................... - bpo-33189(1): ‘pygettext.py’ now recognizes only literal strings as @@ -82512,9 +75739,9 @@ File: python.info, Node: Tools/Demos<17>, Next: C API<26>, Prev: IDLE<32>, U (5) https://bugs.python.org/issue31583  -File: python.info, Node: C API<26>, Prev: Tools/Demos<17>, Up: Python 3 6 6 release candidate 1 +File: python.info, Node: C API<23>, Prev: Tools/Demos<19>, Up: Python 3 6 6 release candidate 1 -1.19.40.10 C API +1.18.43.10 C API ................ - bpo-32374(1): Document that m_traverse for multi-phase initialized @@ -82527,20 +75754,20 @@ File: python.info, Node: C API<26>, Prev: Tools/Demos<17>, Up: Python 3 6 6 r  File: python.info, Node: Python 3 6 5 final, Next: Python 3 6 5 release candidate 1, Prev: Python 3 6 6 release candidate 1, Up: Changelog -1.19.41 Python 3.6.5 final +1.18.44 Python 3.6.5 final -------------------------- `Release date: 2018-03-28' * Menu: -* Tests: Tests<31>. -* Build: Build<31>. +* Tests: Tests<30>. +* Build: Build<28>.  -File: python.info, Node: Tests<31>, Next: Build<31>, Up: Python 3 6 5 final +File: python.info, Node: Tests<30>, Next: Build<28>, Up: Python 3 6 5 final -1.19.41.1 Tests +1.18.44.1 Tests ............... - bpo-32872(1): Avoid regrtest compatibility issue with namespace @@ -82551,9 +75778,9 @@ File: python.info, Node: Tests<31>, Next: Build<31>, Up: Python 3 6 5 final (1) https://bugs.python.org/issue32872  -File: python.info, Node: Build<31>, Prev: Tests<31>, Up: Python 3 6 5 final +File: python.info, Node: Build<28>, Prev: Tests<30>, Up: Python 3 6 5 final -1.19.41.2 Build +1.18.44.2 Build ............... - bpo-33163(1): Upgrade pip to 9.0.3 and setuptools to v39.0.1. @@ -82565,29 +75792,29 @@ File: python.info, Node: Build<31>, Prev: Tests<31>, Up: Python 3 6 5 final  File: python.info, Node: Python 3 6 5 release candidate 1, Next: Python 3 6 4 final, Prev: Python 3 6 5 final, Up: Changelog -1.19.42 Python 3.6.5 release candidate 1 +1.18.45 Python 3.6.5 release candidate 1 ---------------------------------------- `Release date: 2018-03-13' * Menu: -* Security: Security<21>. -* Core and Builtins: Core and Builtins<36>. -* Library: Library<39>. -* Documentation: Documentation<33>. -* Tests: Tests<32>. -* Build: Build<32>. -* Windows: Windows<30>. -* macOS: macOS<25>. -* IDLE: IDLE<33>. -* Tools/Demos: Tools/Demos<18>. -* C API: C API<27>. +* Security: Security<25>. +* Core and Builtins: Core and Builtins<41>. +* Library: Library<42>. +* Documentation: Documentation<37>. +* Tests: Tests<31>. +* Build: Build<29>. +* Windows: Windows<32>. +* macOS: macOS<24>. +* IDLE: IDLE<37>. +* Tools/Demos: Tools/Demos<20>. +* C API: C API<24>.  -File: python.info, Node: Security<21>, Next: Core and Builtins<36>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Security<25>, Next: Core and Builtins<41>, Up: Python 3 6 5 release candidate 1 -1.19.42.1 Security +1.18.45.1 Security .................. - bpo-33001(1): Minimal fix to prevent buffer overrun in os.symlink @@ -82605,9 +75832,9 @@ File: python.info, Node: Security<21>, Next: Core and Builtins<36>, Up: Pytho (2) https://bugs.python.org/issue32981  -File: python.info, Node: Core and Builtins<36>, Next: Library<39>, Prev: Security<21>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Core and Builtins<41>, Next: Library<42>, Prev: Security<25>, Up: Python 3 6 5 release candidate 1 -1.19.42.2 Core and Builtins +1.18.45.2 Core and Builtins ........................... - bpo-33026(1): Fixed jumping out of “with” block by setting @@ -82689,9 +75916,9 @@ File: python.info, Node: Core and Builtins<36>, Next: Library<39>, Prev: Secu (14) https://bugs.python.org/issue32137  -File: python.info, Node: Library<39>, Next: Documentation<33>, Prev: Core and Builtins<36>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Library<42>, Next: Documentation<37>, Prev: Core and Builtins<41>, Up: Python 3 6 5 release candidate 1 -1.19.42.3 Library +1.18.45.3 Library ................. - bpo-33064(1): lib2to3 now properly supports trailing commas after @@ -82728,14 +75955,14 @@ File: python.info, Node: Library<39>, Next: Documentation<33>, Prev: Core and “No dist file created in earlier command” to the more helpful “Must create and upload files in one command”. - - bpo-32857(12): In *note tkinter: 10e, ‘after_cancel(None)’ now - raises a *note ValueError: 16d. instead of canceling the first + - bpo-32857(12): In *note tkinter: 10d, ‘after_cancel(None)’ now + raises a *note ValueError: 1e7. instead of canceling the first scheduled function. Patch by Cheryl Sabella. - bpo-32852(13): Make sure sys.argv remains as a list when running trace. - - bpo-32841(14): Fixed *note asyncio.Condition: 3b3. issue which + - bpo-32841(14): Fixed *note asyncio.Condition: 278. issue which silently ignored cancellation after notifying and cancelling a conditional lock. Patch by Bar Harel. @@ -82799,7 +76026,7 @@ File: python.info, Node: Library<39>, Next: Documentation<33>, Prev: Core and - bpo-32185(32): The SSL module no longer sends IP addresses in SNI TLS extension on platforms with OpenSSL 1.0.2+ or inet_pton. - - bpo-32323(33): *note urllib.parse.urlsplit(): 6f2. does not convert + - bpo-32323(33): *note urllib.parse.urlsplit(): 5e6. does not convert zone-id (scope) to lower case for scoped IPv6 addresses in hostnames now. @@ -82821,14 +76048,14 @@ File: python.info, Node: Library<39>, Next: Documentation<33>, Prev: Core and - bpo-27456(38): Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner. - - bpo-31900(39): The *note locale.localeconv(): 587. function now + - bpo-31900(39): The *note locale.localeconv(): 47b. function now sets temporarily the ‘LC_CTYPE’ locale to the ‘LC_NUMERIC’ locale to decode ‘decimal_point’ and ‘thousands_sep’ byte strings if they are non-ASCII or longer than 1 byte, and the ‘LC_NUMERIC’ locale is different than the ‘LC_CTYPE’ locale. This temporary change affects other threads. Same change for the *note str.format(): - 5d7. method when formatting a number (*note int: 204, *note float: - 1fd, *note float: 1fd. and subclasses) with the ‘n’ type (ex: + 4cb. method when formatting a number (*note int: 171, *note float: + 174, *note float: 174. and subclasses) with the ‘n’ type (ex: ‘'{:n}'.format(1234)’). - bpo-31802(40): Importing native path module (‘posixpath’, ‘ntpath’) @@ -82917,23 +76144,23 @@ File: python.info, Node: Library<39>, Next: Documentation<33>, Prev: Core and (40) https://bugs.python.org/issue31802  -File: python.info, Node: Documentation<33>, Next: Tests<32>, Prev: Library<39>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Documentation<37>, Next: Tests<31>, Prev: Library<42>, Up: Python 3 6 5 release candidate 1 -1.19.42.4 Documentation +1.18.45.4 Documentation ....................... - bpo-17232(1): Clarify docs for -O and -OO. Patch by Terry Reedy. - bpo-32800(2): Update link to w3c doc for xml default namespaces. - - bpo-8722(3): Document *note __getattr__(): 42c. behavior when - property ‘get()’ method raises *note AttributeError: 4a4. + - bpo-8722(3): Document ‘__getattr__()’ behavior when property + ‘get()’ method raises *note AttributeError: 38c. - bpo-32614(4): Modify RE examples in documentation to use raw - strings to prevent *note DeprecationWarning: 15a. and add text to + strings to prevent *note DeprecationWarning: 264. and add text to REGEX HOWTO to highlight the deprecation. - - bpo-31972(5): Improve docstrings for *note pathlib.PurePath: 235. + - bpo-31972(5): Improve docstrings for *note pathlib.PurePath: 101c. subclasses. - bpo-17799(6): Explain real behaviour of sys.settrace and @@ -82956,9 +76183,9 @@ File: python.info, Node: Documentation<33>, Next: Tests<32>, Prev: Library<39 (6) https://bugs.python.org/issue17799  -File: python.info, Node: Tests<32>, Next: Build<32>, Prev: Documentation<33>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Tests<31>, Next: Build<29>, Prev: Documentation<37>, Up: Python 3 6 5 release candidate 1 -1.19.42.5 Tests +1.18.45.5 Tests ............... - bpo-32517(1): Fix failing ‘test_asyncio’ on macOS 10.12.2+ due to @@ -82986,9 +76213,9 @@ File: python.info, Node: Tests<32>, Next: Build<32>, Prev: Documentation<33>, (4) https://bugs.python.org/issue31518  -File: python.info, Node: Build<32>, Next: Windows<30>, Prev: Tests<32>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Build<29>, Next: Windows<32>, Prev: Tests<31>, Up: Python 3 6 5 release candidate 1 -1.19.42.6 Build +1.18.45.6 Build ............... - bpo-32635(1): Fix segfault of the crypt module when libxcrypt is @@ -82999,9 +76226,9 @@ File: python.info, Node: Build<32>, Next: Windows<30>, Prev: Tests<32>, Up: (1) https://bugs.python.org/issue32635  -File: python.info, Node: Windows<30>, Next: macOS<25>, Prev: Build<32>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Windows<32>, Next: macOS<24>, Prev: Build<29>, Up: Python 3 6 5 release candidate 1 -1.19.42.7 Windows +1.18.45.7 Windows ................. - bpo-33016(1): Fix potential use of uninitialized memory in @@ -83021,7 +76248,7 @@ File: python.info, Node: Windows<30>, Next: macOS<25>, Prev: Build<32>, Up: - bpo-32370(6): Use the correct encoding for ipconfig output in the uuid module. Patch by Segev Finer. - - bpo-29248(7): Fix *note os.readlink(): 1d1. on Windows, which was + - bpo-29248(7): Fix *note os.readlink(): 1df. on Windows, which was mistakenly treating the ‘PrintNameOffset’ field of the reparse data buffer as a number of characters instead of bytes. Patch by Craig Holmquist and SSE4. @@ -83047,9 +76274,9 @@ File: python.info, Node: Windows<30>, Next: macOS<25>, Prev: Build<32>, Up: (8) https://bugs.python.org/issue32588  -File: python.info, Node: macOS<25>, Next: IDLE<33>, Prev: Windows<30>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: macOS<24>, Next: IDLE<37>, Prev: Windows<32>, Up: Python 3 6 5 release candidate 1 -1.19.42.8 macOS +1.18.45.8 macOS ............... - bpo-32726(1): Provide an additional, more modern macOS installer @@ -83063,16 +76290,16 @@ File: python.info, Node: macOS<25>, Next: IDLE<33>, Prev: Windows<30>, Up: P (1) https://bugs.python.org/issue32726  -File: python.info, Node: IDLE<33>, Next: Tools/Demos<18>, Prev: macOS<25>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: IDLE<37>, Next: Tools/Demos<20>, Prev: macOS<24>, Up: Python 3 6 5 release candidate 1 -1.19.42.9 IDLE +1.18.45.9 IDLE .............. - bpo-32984(1): Set ‘__file__’ while running a startup file. Like Python, IDLE optionally runs one startup file in the Shell window before presenting the first interactive input prompt. For IDLE, ‘-s’ runs a file named in environmental variable ‘IDLESTARTUP’ or - *note PYTHONSTARTUP: 9cd.; ‘-r file’ runs ‘file’. Python sets + *note PYTHONSTARTUP: 8c8.; ‘-r file’ runs ‘file’. Python sets ‘__file__’ to the startup file name before running the file and unsets it before the first prompt. IDLE now does the same when run normally, without the ‘-n’ option. @@ -83118,9 +76345,9 @@ File: python.info, Node: IDLE<33>, Next: Tools/Demos<18>, Prev: macOS<25>, U (8) https://bugs.python.org/issue32765  -File: python.info, Node: Tools/Demos<18>, Next: C API<27>, Prev: IDLE<33>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: Tools/Demos<20>, Next: C API<24>, Prev: IDLE<37>, Up: Python 3 6 5 release candidate 1 -1.19.42.10 Tools/Demos +1.18.45.10 Tools/Demos ...................... - bpo-24960(1): 2to3 and lib2to3 can now read pickled grammar files @@ -83137,9 +76364,9 @@ File: python.info, Node: Tools/Demos<18>, Next: C API<27>, Prev: IDLE<33>, U (2) https://bugs.python.org/issue32222  -File: python.info, Node: C API<27>, Prev: Tools/Demos<18>, Up: Python 3 6 5 release candidate 1 +File: python.info, Node: C API<24>, Prev: Tools/Demos<20>, Up: Python 3 6 5 release candidate 1 -1.19.42.11 C API +1.18.45.11 C API ................ - bpo-29084(1): Undocumented C API for OrderedDict has been excluded @@ -83153,7 +76380,7 @@ File: python.info, Node: C API<27>, Prev: Tools/Demos<18>, Up: Python 3 6 5 r  File: python.info, Node: Python 3 6 4 final, Next: Python 3 6 4 release candidate 1, Prev: Python 3 6 5 release candidate 1, Up: Changelog -1.19.43 Python 3.6.4 final +1.18.46 Python 3.6.4 final -------------------------- `Release date: 2017-12-18' @@ -83163,28 +76390,28 @@ There were no new code changes in version 3.6.4 since v3.6.4rc1.  File: python.info, Node: Python 3 6 4 release candidate 1, Next: Python 3 6 3 final, Prev: Python 3 6 4 final, Up: Changelog -1.19.44 Python 3.6.4 release candidate 1 +1.18.47 Python 3.6.4 release candidate 1 ---------------------------------------- `Release date: 2017-12-05' * Menu: -* Core and Builtins: Core and Builtins<37>. -* Library: Library<40>. -* Documentation: Documentation<34>. -* Tests: Tests<33>. -* Build: Build<33>. -* Windows: Windows<31>. -* macOS: macOS<26>. -* IDLE: IDLE<34>. -* Tools/Demos: Tools/Demos<19>. -* C API: C API<28>. +* Core and Builtins: Core and Builtins<42>. +* Library: Library<43>. +* Documentation: Documentation<38>. +* Tests: Tests<32>. +* Build: Build<30>. +* Windows: Windows<33>. +* macOS: macOS<25>. +* IDLE: IDLE<38>. +* Tools/Demos: Tools/Demos<21>. +* C API: C API<25>.  -File: python.info, Node: Core and Builtins<37>, Next: Library<40>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Core and Builtins<42>, Next: Library<43>, Up: Python 3 6 4 release candidate 1 -1.19.44.1 Core and Builtins +1.18.47.1 Core and Builtins ........................... - bpo-32176(1): co_flags.CO_NOFREE is now always set correctly by the @@ -83239,17 +76466,17 @@ File: python.info, Node: Core and Builtins<37>, Next: Library<40>, Up: Python number of underscores to integer with binary base. - bpo-31592(13): Fixed an assertion failure in Python parser in case - of a bad *note unicodedata.normalize(): 11a7. Patch by Oren + of a bad *note unicodedata.normalize(): 108a. Patch by Oren Milman. - - bpo-31588(14): Raise a *note TypeError: 1fe. with a helpful error + - bpo-31588(14): Raise a *note TypeError: 17f. with a helpful error message when class creation fails due to a metaclass with a bad ‘__prepare__()’ method. Patch by Oren Milman. - bpo-31566(15): Fix an assertion failure in ‘_warnings.warn()’ in case of a bad ‘__name__’ global. Patch by Oren Milman. - - bpo-31505(16): Fix an assertion failure in *note json: a4, in case + - bpo-31505(16): Fix an assertion failure in *note json: a5, in case ‘_json.make_encoder()’ received a bad ‘encoder()’ argument. Patch by Oren Milman. @@ -83258,7 +76485,7 @@ File: python.info, Node: Core and Builtins<37>, Next: Library<40>, Up: Python failing to access an attribute of such a module. Patch by Oren Milman. - - bpo-31490(18): Fix an assertion failure in *note ctypes: 2a. class + - bpo-31490(18): Fix an assertion failure in *note ctypes: 2b. class definition, in case the class has an attribute whose name is specified in ‘_anonymous_’ but not in ‘_fields_’. Patch by Oren Milman. @@ -83271,7 +76498,7 @@ File: python.info, Node: Core and Builtins<37>, Next: Library<40>, Up: Python when spec.name is not a string. Patch by Oren Milman. - bpo-31311(21): Fix a crash in the ‘__setstate__()’ method of *note - ctypes._CData: 11a8, in case of a bad ‘__dict__’. Patch by Oren + ctypes._CData: 108b, in case of a bad ‘__dict__’. Patch by Oren Milman. - bpo-31293(22): Fix crashes in true division and multiplication of a @@ -83279,7 +76506,7 @@ File: python.info, Node: Core and Builtins<37>, Next: Library<40>, Up: Python Patch by Oren Milman. - bpo-31285(23): Fix an assertion failure in *note - warnings.warn_explicit: 6a9, when the return value of the received + warnings.warn_explicit: 59d, when the return value of the received loader’s get_source() has a bad splitlines() method. Patch by Oren Milman. @@ -83338,9 +76565,9 @@ File: python.info, Node: Core and Builtins<37>, Next: Library<40>, Up: Python (24) https://bugs.python.org/issue30817  -File: python.info, Node: Library<40>, Next: Documentation<34>, Prev: Core and Builtins<37>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Library<43>, Next: Documentation<38>, Prev: Core and Builtins<42>, Up: Python 3 6 4 release candidate 1 -1.19.44.2 Library +1.18.47.2 Library ................. - bpo-28556(1): Two minor fixes for ‘typing’ module: allow shallow @@ -83358,14 +76585,14 @@ File: python.info, Node: Library<40>, Next: Documentation<34>, Prev: Core and inaccessible NFS server. Patch by Nir Soffer. - bpo-12239(7): Make *note msilib.SummaryInformation.GetProperty(): - 10c0. return ‘None’ when the value of property is ‘VT_EMPTY’. + f9e. return ‘None’ when the value of property is ‘VT_EMPTY’. Initial patch by Mark Mc Mahon. - bpo-31325(8): Fix wrong usage of *note collections.namedtuple(): - 1a1. in the *note RobotFileParser.parse(): 1199. method. Initial + 1a3. in the *note RobotFileParser.parse(): 107c. method. Initial patch by Robin Wellner. - - bpo-12382(9): *note msilib.OpenDatabase(): fe1. now raises a better + - bpo-12382(9): *note msilib.OpenDatabase(): eea. now raises a better exception message when it couldn’t open or create an MSI file. Initial patch by William Tisäter. @@ -83621,9 +76848,9 @@ File: python.info, Node: Library<40>, Next: Documentation<34>, Prev: Core and (52) https://bugs.python.org/issue31308  -File: python.info, Node: Documentation<34>, Next: Tests<33>, Prev: Library<40>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Documentation<38>, Next: Tests<32>, Prev: Library<43>, Up: Python 3 6 4 release candidate 1 -1.19.44.3 Documentation +1.18.47.3 Documentation ....................... - bpo-32105(1): Added asyncio.BaseEventLoop.connect_accepted_socket @@ -83645,9 +76872,9 @@ File: python.info, Node: Documentation<34>, Next: Tests<33>, Prev: Library<40 (3) https://bugs.python.org/issue30085  -File: python.info, Node: Tests<33>, Next: Build<33>, Prev: Documentation<34>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Tests<32>, Next: Build<30>, Prev: Documentation<38>, Up: Python 3 6 4 release candidate 1 -1.19.44.4 Tests +1.18.47.4 Tests ............... - bpo-31380(1): Skip test_httpservers test_undecodable_file on macOS: @@ -83675,9 +76902,9 @@ File: python.info, Node: Tests<33>, Next: Build<33>, Prev: Documentation<34>, (4) https://bugs.python.org/issue30695  -File: python.info, Node: Build<33>, Next: Windows<31>, Prev: Tests<33>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Build<30>, Next: Windows<33>, Prev: Tests<32>, Up: Python 3 6 4 release candidate 1 -1.19.44.5 Build +1.18.47.5 Build ............... - bpo-32059(1): ‘detect_modules()’ in ‘setup.py’ now also searches @@ -83726,9 +76953,9 @@ File: python.info, Node: Build<33>, Next: Windows<31>, Prev: Tests<33>, Up: (9) https://bugs.python.org/issue31536  -File: python.info, Node: Windows<31>, Next: macOS<26>, Prev: Build<33>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Windows<33>, Next: macOS<25>, Prev: Build<30>, Up: Python 3 6 4 release candidate 1 -1.19.44.6 Windows +1.18.47.6 Windows ................. - bpo-1102(1): Return ‘None’ when ‘View.Fetch()’ returns @@ -83744,9 +76971,9 @@ File: python.info, Node: Windows<31>, Next: macOS<26>, Prev: Build<33>, Up: (2) https://bugs.python.org/issue31944  -File: python.info, Node: macOS<26>, Next: IDLE<34>, Prev: Windows<31>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: macOS<25>, Next: IDLE<38>, Prev: Windows<33>, Up: Python 3 6 4 release candidate 1 -1.19.44.7 macOS +1.18.47.7 macOS ............... - bpo-31392(1): Update macOS installer to use OpenSSL 1.0.2m @@ -83756,9 +76983,9 @@ File: python.info, Node: macOS<26>, Next: IDLE<34>, Prev: Windows<31>, Up: P (1) https://bugs.python.org/issue31392  -File: python.info, Node: IDLE<34>, Next: Tools/Demos<19>, Prev: macOS<26>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: IDLE<38>, Next: Tools/Demos<21>, Prev: macOS<25>, Up: Python 3 6 4 release candidate 1 -1.19.44.8 IDLE +1.18.47.8 IDLE .............. - bpo-32207(1): Improve tk event exception tracebacks in IDLE. When @@ -83858,9 +77085,9 @@ File: python.info, Node: IDLE<34>, Next: Tools/Demos<19>, Prev: macOS<26>, U (14) https://bugs.python.org/issue1612262  -File: python.info, Node: Tools/Demos<19>, Next: C API<28>, Prev: IDLE<34>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: Tools/Demos<21>, Next: C API<25>, Prev: IDLE<38>, Up: Python 3 6 4 release candidate 1 -1.19.44.9 Tools/Demos +1.18.47.9 Tools/Demos ..................... - bpo-30722(1): Make redemo work with Python 3.6 and newer versions. @@ -83872,9 +77099,9 @@ File: python.info, Node: Tools/Demos<19>, Next: C API<28>, Prev: IDLE<34>, U (1) https://bugs.python.org/issue30722  -File: python.info, Node: C API<28>, Prev: Tools/Demos<19>, Up: Python 3 6 4 release candidate 1 +File: python.info, Node: C API<25>, Prev: Tools/Demos<21>, Up: Python 3 6 4 release candidate 1 -1.19.44.10 C API +1.18.47.10 C API ................ - bpo-20891(1): Fix PyGILState_Ensure(). When PyGILState_Ensure() is @@ -83904,24 +77131,24 @@ File: python.info, Node: C API<28>, Prev: Tools/Demos<19>, Up: Python 3 6 4 r  File: python.info, Node: Python 3 6 3 final, Next: Python 3 6 3 release candidate 1, Prev: Python 3 6 4 release candidate 1, Up: Changelog -1.19.45 Python 3.6.3 final +1.18.48 Python 3.6.3 final -------------------------- `Release date: 2017-10-03' * Menu: -* Library: Library<41>. -* Build: Build<34>. +* Library: Library<44>. +* Build: Build<31>.  -File: python.info, Node: Library<41>, Next: Build<34>, Up: Python 3 6 3 final +File: python.info, Node: Library<44>, Next: Build<31>, Up: Python 3 6 3 final -1.19.45.1 Library +1.18.48.1 Library ................. - bpo-31641(1): Re-allow arbitrary iterables in *note - concurrent.futures.as_completed(): 11e6. Fixes regression in + concurrent.futures.as_completed(): 10c9. Fixes regression in 3.6.3rc1. ---------- Footnotes ---------- @@ -83929,9 +77156,9 @@ File: python.info, Node: Library<41>, Next: Build<34>, Up: Python 3 6 3 final (1) https://bugs.python.org/issue31641  -File: python.info, Node: Build<34>, Prev: Library<41>, Up: Python 3 6 3 final +File: python.info, Node: Build<31>, Prev: Library<44>, Up: Python 3 6 3 final -1.19.45.2 Build +1.18.48.2 Build ............... - bpo-31662(1): Fix typos in Windows ‘uploadrelease.bat’ script. Fix @@ -83949,27 +77176,27 @@ File: python.info, Node: Build<34>, Prev: Library<41>, Up: Python 3 6 3 final  File: python.info, Node: Python 3 6 3 release candidate 1, Next: Python 3 6 2 final, Prev: Python 3 6 3 final, Up: Changelog -1.19.46 Python 3.6.3 release candidate 1 +1.18.49 Python 3.6.3 release candidate 1 ---------------------------------------- `Release date: 2017-09-18' * Menu: -* Security: Security<22>. -* Core and Builtins: Core and Builtins<38>. -* Library: Library<42>. -* Documentation: Documentation<35>. -* Tests: Tests<34>. -* Build: Build<35>. -* Windows: Windows<32>. -* IDLE: IDLE<35>. -* Tools/Demos: Tools/Demos<20>. +* Security: Security<26>. +* Core and Builtins: Core and Builtins<43>. +* Library: Library<45>. +* Documentation: Documentation<39>. +* Tests: Tests<33>. +* Build: Build<32>. +* Windows: Windows<34>. +* IDLE: IDLE<39>. +* Tools/Demos: Tools/Demos<22>.  -File: python.info, Node: Security<22>, Next: Core and Builtins<38>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Security<26>, Next: Core and Builtins<43>, Up: Python 3 6 3 release candidate 1 -1.19.46.1 Security +1.18.49.1 Security .................. - bpo-29781(1): SSLObject.version() now correctly returns None when @@ -83985,13 +77212,13 @@ File: python.info, Node: Security<22>, Next: Core and Builtins<38>, Up: Pytho (2) https://bugs.python.org/issue30947  -File: python.info, Node: Core and Builtins<38>, Next: Library<42>, Prev: Security<22>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Core and Builtins<43>, Next: Library<45>, Prev: Security<26>, Up: Python 3 6 3 release candidate 1 -1.19.46.2 Core and Builtins +1.18.49.2 Core and Builtins ........................... - bpo-31471(1): Fix an assertion failure in *note subprocess.Popen(): - 3de. on Windows, in case the env argument has a bad keys() method. + 2a4. on Windows, in case the env argument has a bad keys() method. Patch by Oren Milman. - bpo-31418(2): Fix an assertion failure in ‘PyErr_WriteUnraisable()’ @@ -84017,16 +77244,16 @@ File: python.info, Node: Core and Builtins<38>, Next: Library<42>, Prev: Secu sys/types.h. - bpo-31291(8): Fix an assertion failure in *note - zipimport.zipimporter.get_data: 11b2. on Windows, when the return + zipimport.zipimporter.get_data: 1095. on Windows, when the return value of ‘pathname.replace('/','\\')’ isn’t a string. Patch by Oren Milman. - bpo-31271(9): Fix an assertion failure in the write() method of - *note io.TextIOWrapper: 6ec, when the encoder doesn’t return a + *note io.TextIOWrapper: 5e0, when the encoder doesn’t return a bytes object. Patch by Oren Milman. - bpo-31243(10): Fix a crash in some methods of *note - io.TextIOWrapper: 6ec, when the decoder’s state is invalid. Patch + io.TextIOWrapper: 5e0, when the decoder’s state is invalid. Patch by Oren Milman. - bpo-30721(11): ‘print’ now shows correct usage hint for using @@ -84120,9 +77347,9 @@ File: python.info, Node: Core and Builtins<38>, Next: Library<42>, Prev: Secu (22) https://bugs.python.org/issue30597  -File: python.info, Node: Library<42>, Next: Documentation<35>, Prev: Core and Builtins<38>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Library<45>, Next: Documentation<39>, Prev: Core and Builtins<43>, Up: Python 3 6 3 release candidate 1 -1.19.46.3 Library +1.18.49.3 Library ................. - bpo-31499(1): xml.etree: Fix a crash when a parser is part of a @@ -84355,9 +77582,9 @@ File: python.info, Node: Library<42>, Next: Documentation<35>, Prev: Core and (42) https://bugs.python.org/issue29755  -File: python.info, Node: Documentation<35>, Next: Tests<34>, Prev: Library<42>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Documentation<39>, Next: Tests<33>, Prev: Library<45>, Up: Python 3 6 3 release candidate 1 -1.19.46.4 Documentation +1.18.49.4 Documentation ....................... - bpo-31294(1): Fix incomplete code snippet in the @@ -84379,9 +77606,9 @@ File: python.info, Node: Documentation<35>, Next: Tests<34>, Prev: Library<42 (3) https://bugs.python.org/issue30803  -File: python.info, Node: Tests<34>, Next: Build<35>, Prev: Documentation<35>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Tests<33>, Next: Build<32>, Prev: Documentation<39>, Up: Python 3 6 3 release candidate 1 -1.19.46.5 Tests +1.18.49.5 Tests ............... - bpo-31320(1): Silence traceback in test_ssl @@ -84410,9 +77637,9 @@ File: python.info, Node: Tests<34>, Next: Build<35>, Prev: Documentation<35>, (4) https://bugs.python.org/issue30822  -File: python.info, Node: Build<35>, Next: Windows<32>, Prev: Tests<34>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Build<32>, Next: Windows<34>, Prev: Tests<33>, Up: Python 3 6 3 release candidate 1 -1.19.46.6 Build +1.18.49.6 Build ............... - bpo-30854(1): Fix compile error when compiling –without-threads. @@ -84423,9 +77650,9 @@ File: python.info, Node: Build<35>, Next: Windows<32>, Prev: Tests<34>, Up: (1) https://bugs.python.org/issue30854  -File: python.info, Node: Windows<32>, Next: IDLE<35>, Prev: Build<35>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Windows<34>, Next: IDLE<39>, Prev: Build<32>, Up: Python 3 6 3 release candidate 1 -1.19.46.7 Windows +1.18.49.7 Windows ................. - bpo-30389(1): Adds detection of Visual Studio 2017 to distutils on @@ -84452,9 +77679,9 @@ File: python.info, Node: Windows<32>, Next: IDLE<35>, Prev: Build<35>, Up: P (4) https://bugs.python.org/issue30731  -File: python.info, Node: IDLE<35>, Next: Tools/Demos<20>, Prev: Windows<32>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: IDLE<39>, Next: Tools/Demos<22>, Prev: Windows<34>, Up: Python 3 6 3 release candidate 1 -1.19.46.8 IDLE +1.18.49.8 IDLE .............. - bpo-31493(1): IDLE code context – fix code update and font update @@ -84525,8 +77752,8 @@ File: python.info, Node: IDLE<35>, Next: Tools/Demos<20>, Prev: Windows<32>, - bpo-31002(15): Add tests for configdialog keys tab. Patch by Cheryl Sabella. - - bpo-19903(16): IDLE: Calltips use *note inspect.signature: 657. - instead of *note inspect.getfullargspec: 659. This improves + - bpo-19903(16): IDLE: Calltips use *note inspect.signature: 548. + instead of *note inspect.getfullargspec: 54a. This improves calltips for builtins converted to use Argument Clinic. Patch by Louie Lu. @@ -84732,9 +77959,9 @@ File: python.info, Node: IDLE<35>, Next: Tools/Demos<20>, Prev: Windows<32>, (43) https://bugs.python.org/issue6739  -File: python.info, Node: Tools/Demos<20>, Prev: IDLE<35>, Up: Python 3 6 3 release candidate 1 +File: python.info, Node: Tools/Demos<22>, Prev: IDLE<39>, Up: Python 3 6 3 release candidate 1 -1.19.46.9 Tools/Demos +1.18.49.9 Tools/Demos ..................... - bpo-30983(1): gdb integration commands (py-bt, etc.) work on @@ -84755,7 +77982,7 @@ File: python.info, Node: Tools/Demos<20>, Prev: IDLE<35>, Up: Python 3 6 3 re  File: python.info, Node: Python 3 6 2 final, Next: Python 3 6 2 release candidate 2, Prev: Python 3 6 3 release candidate 1, Up: Changelog -1.19.47 Python 3.6.2 final +1.18.50 Python 3.6.2 final -------------------------- `Release date: 2017-07-17' @@ -84765,19 +77992,19 @@ No changes since release candidate 2  File: python.info, Node: Python 3 6 2 release candidate 2, Next: Python 3 6 2 release candidate 1, Prev: Python 3 6 2 final, Up: Changelog -1.19.48 Python 3.6.2 release candidate 2 +1.18.51 Python 3.6.2 release candidate 2 ---------------------------------------- `Release date: 2017-07-07' * Menu: -* Security: Security<23>. +* Security: Security<27>.  -File: python.info, Node: Security<23>, Up: Python 3 6 2 release candidate 2 +File: python.info, Node: Security<27>, Up: Python 3 6 2 release candidate 2 -1.19.48.1 Security +1.18.51.1 Security .................. - bpo-30730(1): Prevent environment variables injection in subprocess @@ -84810,29 +78037,29 @@ File: python.info, Node: Security<23>, Up: Python 3 6 2 release candidate 2  File: python.info, Node: Python 3 6 2 release candidate 1, Next: Python 3 6 1 final, Prev: Python 3 6 2 release candidate 2, Up: Changelog -1.19.49 Python 3.6.2 release candidate 1 +1.18.52 Python 3.6.2 release candidate 1 ---------------------------------------- `Release date: 2017-06-17' * Menu: -* Core and Builtins: Core and Builtins<39>. -* Library: Library<43>. -* Security: Security<24>. -* Library: Library<44>. -* IDLE: IDLE<36>. -* C API: C API<29>. -* Build: Build<36>. -* Documentation: Documentation<36>. -* Tools/Demos: Tools/Demos<21>. -* Tests: Tests<35>. -* Windows: Windows<33>. +* Core and Builtins: Core and Builtins<44>. +* Library: Library<46>. +* Security: Security<28>. +* Library: Library<47>. +* IDLE: IDLE<40>. +* C API: C API<26>. +* Build: Build<33>. +* Documentation: Documentation<40>. +* Tools/Demos: Tools/Demos<23>. +* Tests: Tests<34>. +* Windows: Windows<35>.  -File: python.info, Node: Core and Builtins<39>, Next: Library<43>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Core and Builtins<44>, Next: Library<46>, Up: Python 3 6 2 release candidate 1 -1.19.49.1 Core and Builtins +1.18.52.1 Core and Builtins ........................... - bpo-30682(1): Removed a too-strict assertion that failed for @@ -84868,7 +78095,7 @@ File: python.info, Node: Core and Builtins<39>, Next: Library<43>, Up: Python pthread_* calls in thread_pthread.h fails. - bpo-28876(11): ‘bool(range)’ works even if ‘len(range)’ raises - *note OverflowError: a43. + *note OverflowError: 941. - bpo-29600(12): Fix wrapping coroutine return values in StopIteration. @@ -84915,9 +78142,9 @@ File: python.info, Node: Core and Builtins<39>, Next: Library<43>, Up: Python (15) https://bugs.python.org/issue29478  -File: python.info, Node: Library<43>, Next: Security<24>, Prev: Core and Builtins<39>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Library<46>, Next: Security<28>, Prev: Core and Builtins<44>, Up: Python 3 6 2 release candidate 1 -1.19.49.2 Library +1.18.52.2 Library ................. - bpo-30616(1): Functional API of enum allows to create empty enums. @@ -84966,9 +78193,9 @@ File: python.info, Node: Library<43>, Next: Security<24>, Prev: Core and Buil (8) https://bugs.python.org/issue30605  -File: python.info, Node: Security<24>, Next: Library<44>, Prev: Library<43>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Security<28>, Next: Library<47>, Prev: Library<46>, Up: Python 3 6 2 release candidate 1 -1.19.49.3 Security +1.18.52.3 Security .................. - bpo-29591(1): Update expat copy from 2.1.1 to 2.2.0 to get fixes of @@ -84980,9 +78207,9 @@ File: python.info, Node: Security<24>, Next: Library<44>, Prev: Library<43>, (1) https://bugs.python.org/issue29591  -File: python.info, Node: Library<44>, Next: IDLE<36>, Prev: Security<24>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Library<47>, Next: IDLE<40>, Prev: Security<28>, Up: Python 3 6 2 release candidate 1 -1.19.49.4 Library +1.18.52.4 Library ................. - bpo-24484(1): Avoid race condition in multiprocessing cleanup @@ -85272,9 +78499,9 @@ File: python.info, Node: Library<44>, Next: IDLE<36>, Prev: Security<24>, Up (52) https://bugs.python.org/issue30177  -File: python.info, Node: IDLE<36>, Next: C API<29>, Prev: Library<44>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: IDLE<40>, Next: C API<26>, Prev: Library<47>, Up: Python 3 6 2 release candidate 1 -1.19.49.5 IDLE +1.18.52.5 IDLE .............. - bpo-15786(1): Fix several problems with IDLE’s autocompletion box. @@ -85314,9 +78541,9 @@ File: python.info, Node: IDLE<36>, Next: C API<29>, Prev: Library<44>, Up: P (6) https://bugs.python.org/issue30303  -File: python.info, Node: C API<29>, Next: Build<36>, Prev: IDLE<36>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: C API<26>, Next: Build<33>, Prev: IDLE<40>, Up: Python 3 6 2 release candidate 1 -1.19.49.6 C API +1.18.52.6 C API ............... - bpo-27867(1): Function PySlice_GetIndicesEx() no longer replaced @@ -85327,9 +78554,9 @@ File: python.info, Node: C API<29>, Next: Build<36>, Prev: IDLE<36>, Up: Pyt (1) https://bugs.python.org/issue27867  -File: python.info, Node: Build<36>, Next: Documentation<36>, Prev: C API<29>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Build<33>, Next: Documentation<40>, Prev: C API<26>, Up: Python 3 6 2 release candidate 1 -1.19.49.7 Build +1.18.52.7 Build ............... - bpo-29941(1): Add ‘--with-assertions’ configure flag to explicitly @@ -85362,18 +78589,18 @@ File: python.info, Node: Build<36>, Next: Documentation<36>, Prev: C API<29>, (5) https://bugs.python.org/issue29643  -File: python.info, Node: Documentation<36>, Next: Tools/Demos<21>, Prev: Build<36>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Documentation<40>, Next: Tools/Demos<23>, Prev: Build<33>, Up: Python 3 6 2 release candidate 1 -1.19.49.8 Documentation +1.18.52.8 Documentation ....................... - bpo-30176(1): Add missing attribute related constants in curses documentation. - - bpo-30052(2): the link targets for *note bytes(): 172. and *note - bytearray(): 173. are now their respective type definitions, rather + - bpo-30052(2): the link targets for *note bytes(): 322. and *note + bytearray(): 323. are now their respective type definitions, rather than the corresponding builtin function entries. Use *note bytes: - 11b5. and *note bytearray: 11b6. to reference the latter. In order + 1098. and *note bytearray: 1099. to reference the latter. In order to ensure this and future cross-reference updates are applied automatically, the daily documentation builds now disable the default output caching features in Sphinx. @@ -85390,9 +78617,9 @@ File: python.info, Node: Documentation<36>, Next: Tools/Demos<21>, Prev: Buil (3) https://bugs.python.org/issue26985  -File: python.info, Node: Tools/Demos<21>, Next: Tests<35>, Prev: Documentation<36>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Tools/Demos<23>, Next: Tests<34>, Prev: Documentation<40>, Up: Python 3 6 2 release candidate 1 -1.19.49.9 Tools/Demos +1.18.52.9 Tools/Demos ..................... - bpo-29367(1): python-gdb.py now supports also ‘method-wrapper’ @@ -85403,9 +78630,9 @@ File: python.info, Node: Tools/Demos<21>, Next: Tests<35>, Prev: Documentatio (1) https://bugs.python.org/issue29367  -File: python.info, Node: Tests<35>, Next: Windows<33>, Prev: Tools/Demos<21>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Tests<34>, Next: Windows<35>, Prev: Tools/Demos<23>, Up: Python 3 6 2 release candidate 1 -1.19.49.10 Tests +1.18.52.10 Tests ................ - bpo-30357(1): test_thread: setUp() now uses @@ -85426,9 +78653,9 @@ File: python.info, Node: Tests<35>, Next: Windows<33>, Prev: Tools/Demos<21>, (2) https://bugs.python.org/issue30197  -File: python.info, Node: Windows<33>, Prev: Tests<35>, Up: Python 3 6 2 release candidate 1 +File: python.info, Node: Windows<35>, Prev: Tests<34>, Up: Python 3 6 2 release candidate 1 -1.19.49.11 Windows +1.18.52.11 Windows .................. - bpo-30687(1): Locate msbuild.exe on Windows when building rather @@ -85448,20 +78675,20 @@ File: python.info, Node: Windows<33>, Prev: Tests<35>, Up: Python 3 6 2 relea  File: python.info, Node: Python 3 6 1 final, Next: Python 3 6 1 release candidate 1, Prev: Python 3 6 2 release candidate 1, Up: Changelog -1.19.50 Python 3.6.1 final +1.18.53 Python 3.6.1 final -------------------------- `Release date: 2017-03-21' * Menu: -* Core and Builtins: Core and Builtins<40>. -* Build: Build<37>. +* Core and Builtins: Core and Builtins<45>. +* Build: Build<34>.  -File: python.info, Node: Core and Builtins<40>, Next: Build<37>, Up: Python 3 6 1 final +File: python.info, Node: Core and Builtins<45>, Next: Build<34>, Up: Python 3 6 1 final -1.19.50.1 Core and Builtins +1.18.53.1 Core and Builtins ........................... - bpo-29723(1): The ‘sys.path[0]’ initialization change for @@ -85480,9 +78707,9 @@ File: python.info, Node: Core and Builtins<40>, Next: Build<37>, Up: Python 3 (2) https://bugs.python.org/issue29139  -File: python.info, Node: Build<37>, Prev: Core and Builtins<40>, Up: Python 3 6 1 final +File: python.info, Node: Build<34>, Prev: Core and Builtins<45>, Up: Python 3 6 1 final -1.19.50.2 Build +1.18.53.2 Build ............... - bpo-27593(1): fix format of git information used in sys.version @@ -85496,26 +78723,26 @@ File: python.info, Node: Build<37>, Prev: Core and Builtins<40>, Up: Python 3  File: python.info, Node: Python 3 6 1 release candidate 1, Next: Python 3 6 0 final, Prev: Python 3 6 1 final, Up: Changelog -1.19.51 Python 3.6.1 release candidate 1 +1.18.54 Python 3.6.1 release candidate 1 ---------------------------------------- `Release date: 2017-03-04' * Menu: -* Core and Builtins: Core and Builtins<41>. -* Library: Library<45>. -* IDLE: IDLE<37>. -* Windows: Windows<34>. -* C API: C API<30>. -* Documentation: Documentation<37>. -* Tests: Tests<36>. -* Build: Build<38>. +* Core and Builtins: Core and Builtins<46>. +* Library: Library<48>. +* IDLE: IDLE<41>. +* Windows: Windows<36>. +* C API: C API<27>. +* Documentation: Documentation<41>. +* Tests: Tests<35>. +* Build: Build<35>.  -File: python.info, Node: Core and Builtins<41>, Next: Library<45>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: Core and Builtins<46>, Next: Library<48>, Up: Python 3 6 1 release candidate 1 -1.19.51.1 Core and Builtins +1.18.54.1 Core and Builtins ........................... - bpo-28893(1): Set correct __cause__ for errors about invalid @@ -85635,9 +78862,9 @@ File: python.info, Node: Core and Builtins<41>, Next: Library<45>, Up: Python (22) https://bugs.python.org/issue28731  -File: python.info, Node: Library<45>, Next: IDLE<37>, Prev: Core and Builtins<41>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: Library<48>, Next: IDLE<41>, Prev: Core and Builtins<46>, Up: Python 3 6 1 release candidate 1 -1.19.51.2 Library +1.18.54.2 Library ................. - bpo-29169(1): Update zlib to 1.2.11. @@ -85871,9 +79098,9 @@ File: python.info, Node: Library<45>, Next: IDLE<37>, Prev: Core and Builtins (44) https://bugs.python.org/issue26937  -File: python.info, Node: IDLE<37>, Next: Windows<34>, Prev: Library<45>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: IDLE<41>, Next: Windows<36>, Prev: Library<48>, Up: Python 3 6 1 release candidate 1 -1.19.51.3 IDLE +1.18.54.3 IDLE .............. - bpo-29071(1): IDLE colors f-string prefixes (but not invalid ur @@ -85889,9 +79116,9 @@ File: python.info, Node: IDLE<37>, Next: Windows<34>, Prev: Library<45>, Up: (2) https://bugs.python.org/issue28572  -File: python.info, Node: Windows<34>, Next: C API<30>, Prev: IDLE<37>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: Windows<36>, Next: C API<27>, Prev: IDLE<41>, Up: Python 3 6 1 release candidate 1 -1.19.51.4 Windows +1.18.54.4 Windows ................. - bpo-29579(1): Removes readme.txt from the installer @@ -85933,9 +79160,9 @@ File: python.info, Node: Windows<34>, Next: C API<30>, Prev: IDLE<37>, Up: P (8) https://bugs.python.org/issue28896  -File: python.info, Node: C API<30>, Next: Documentation<37>, Prev: Windows<34>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: C API<27>, Next: Documentation<41>, Prev: Windows<36>, Up: Python 3 6 1 release candidate 1 -1.19.51.5 C API +1.18.54.5 C API ............... - bpo-27867(1): Function PySlice_GetIndicesEx() is replaced with a @@ -85961,9 +79188,9 @@ File: python.info, Node: C API<30>, Next: Documentation<37>, Prev: Windows<34 (3) https://bugs.python.org/issue29058  -File: python.info, Node: Documentation<37>, Next: Tests<36>, Prev: C API<30>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: Documentation<41>, Next: Tests<35>, Prev: C API<27>, Up: Python 3 6 1 release candidate 1 -1.19.51.6 Documentation +1.18.54.6 Documentation ....................... - bpo-28929(1): Link the documentation to its source file on GitHub. @@ -85989,9 +79216,9 @@ File: python.info, Node: Documentation<37>, Next: Tests<36>, Prev: C API<30>, (4) https://bugs.python.org/issue29349  -File: python.info, Node: Tests<36>, Next: Build<38>, Prev: Documentation<37>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: Tests<35>, Next: Build<35>, Prev: Documentation<41>, Up: Python 3 6 1 release candidate 1 -1.19.51.7 Tests +1.18.54.7 Tests ............... - bpo-28087(1): Skip test_asyncore and test_eintr poll failures on @@ -86027,9 +79254,9 @@ File: python.info, Node: Tests<36>, Next: Build<38>, Prev: Documentation<37>, (5) https://bugs.python.org/issue26939  -File: python.info, Node: Build<38>, Prev: Tests<36>, Up: Python 3 6 1 release candidate 1 +File: python.info, Node: Build<35>, Prev: Tests<35>, Up: Python 3 6 1 release candidate 1 -1.19.51.8 Build +1.18.54.8 Build ............... - bpo-27593(1): sys.version and the platform module python_build(), @@ -86089,7 +79316,7 @@ File: python.info, Node: Build<38>, Prev: Tests<36>, Up: Python 3 6 1 release  File: python.info, Node: Python 3 6 0 final, Next: Python 3 6 0 release candidate 2, Prev: Python 3 6 1 release candidate 1, Up: Changelog -1.19.52 Python 3.6.0 final +1.18.55 Python 3.6.0 final -------------------------- `Release date: 2016-12-23' @@ -86099,22 +79326,22 @@ No changes since release candidate 2  File: python.info, Node: Python 3 6 0 release candidate 2, Next: Python 3 6 0 release candidate 1, Prev: Python 3 6 0 final, Up: Changelog -1.19.53 Python 3.6.0 release candidate 2 +1.18.56 Python 3.6.0 release candidate 2 ---------------------------------------- `Release date: 2016-12-16' * Menu: -* Core and Builtins: Core and Builtins<42>. -* Tools/Demos: Tools/Demos<22>. -* Windows: Windows<35>. -* Build: Build<39>. +* Core and Builtins: Core and Builtins<47>. +* Tools/Demos: Tools/Demos<24>. +* Windows: Windows<37>. +* Build: Build<36>.  -File: python.info, Node: Core and Builtins<42>, Next: Tools/Demos<22>, Up: Python 3 6 0 release candidate 2 +File: python.info, Node: Core and Builtins<47>, Next: Tools/Demos<24>, Up: Python 3 6 0 release candidate 2 -1.19.53.1 Core and Builtins +1.18.56.1 Core and Builtins ........................... - bpo-28147(1): Fix a memory leak in split-table dictionaries: @@ -86131,9 +79358,9 @@ File: python.info, Node: Core and Builtins<42>, Next: Tools/Demos<22>, Up: Py (2) https://bugs.python.org/issue28990  -File: python.info, Node: Tools/Demos<22>, Next: Windows<35>, Prev: Core and Builtins<42>, Up: Python 3 6 0 release candidate 2 +File: python.info, Node: Tools/Demos<24>, Next: Windows<37>, Prev: Core and Builtins<47>, Up: Python 3 6 0 release candidate 2 -1.19.53.2 Tools/Demos +1.18.56.2 Tools/Demos ..................... - bpo-28770(1): Fix python-gdb.py for fastcalls. @@ -86143,9 +79370,9 @@ File: python.info, Node: Tools/Demos<22>, Next: Windows<35>, Prev: Core and B (1) https://bugs.python.org/issue28770  -File: python.info, Node: Windows<35>, Next: Build<39>, Prev: Tools/Demos<22>, Up: Python 3 6 0 release candidate 2 +File: python.info, Node: Windows<37>, Next: Build<36>, Prev: Tools/Demos<24>, Up: Python 3 6 0 release candidate 2 -1.19.53.3 Windows +1.18.56.3 Windows ................. - bpo-28896(1): Deprecate WindowsRegistryFinder. @@ -86155,9 +79382,9 @@ File: python.info, Node: Windows<35>, Next: Build<39>, Prev: Tools/Demos<22>, (1) https://bugs.python.org/issue28896  -File: python.info, Node: Build<39>, Prev: Windows<35>, Up: Python 3 6 0 release candidate 2 +File: python.info, Node: Build<36>, Prev: Windows<37>, Up: Python 3 6 0 release candidate 2 -1.19.53.4 Build +1.18.56.4 Build ............... - bpo-28898(1): Prevent gdb build errors due to HAVE_LONG_LONG @@ -86170,23 +79397,23 @@ File: python.info, Node: Build<39>, Prev: Windows<35>, Up: Python 3 6 0 relea  File: python.info, Node: Python 3 6 0 release candidate 1, Next: Python 3 6 0 beta 4, Prev: Python 3 6 0 release candidate 2, Up: Changelog -1.19.54 Python 3.6.0 release candidate 1 +1.18.57 Python 3.6.0 release candidate 1 ---------------------------------------- `Release date: 2016-12-06' * Menu: -* Core and Builtins: Core and Builtins<43>. -* Library: Library<46>. -* C API: C API<31>. -* Documentation: Documentation<38>. -* Tools/Demos: Tools/Demos<23>. +* Core and Builtins: Core and Builtins<48>. +* Library: Library<49>. +* C API: C API<28>. +* Documentation: Documentation<42>. +* Tools/Demos: Tools/Demos<25>.  -File: python.info, Node: Core and Builtins<43>, Next: Library<46>, Up: Python 3 6 0 release candidate 1 +File: python.info, Node: Core and Builtins<48>, Next: Library<49>, Up: Python 3 6 0 release candidate 1 -1.19.54.1 Core and Builtins +1.18.57.1 Core and Builtins ........................... - bpo-23722(1): Rather than silently producing a class that doesn’t @@ -86214,9 +79441,9 @@ File: python.info, Node: Core and Builtins<43>, Next: Library<46>, Up: Python (4) https://bugs.python.org/issue26647  -File: python.info, Node: Library<46>, Next: C API<31>, Prev: Core and Builtins<43>, Up: Python 3 6 0 release candidate 1 +File: python.info, Node: Library<49>, Next: C API<28>, Prev: Core and Builtins<48>, Up: Python 3 6 0 release candidate 1 -1.19.54.2 Library +1.18.57.2 Library ................. - bpo-27030(1): Unknown escapes in re.sub() replacement template are @@ -86257,9 +79484,9 @@ File: python.info, Node: Library<46>, Next: C API<31>, Prev: Core and Builtin (6) https://bugs.python.org/issue28843  -File: python.info, Node: C API<31>, Next: Documentation<38>, Prev: Library<46>, Up: Python 3 6 0 release candidate 1 +File: python.info, Node: C API<28>, Next: Documentation<42>, Prev: Library<49>, Up: Python 3 6 0 release candidate 1 -1.19.54.3 C API +1.18.57.3 C API ............... - bpo-28808(1): PyUnicode_CompareWithASCIIString() now never raises @@ -86270,9 +79497,9 @@ File: python.info, Node: C API<31>, Next: Documentation<38>, Prev: Library<46 (1) https://bugs.python.org/issue28808  -File: python.info, Node: Documentation<38>, Next: Tools/Demos<23>, Prev: C API<31>, Up: Python 3 6 0 release candidate 1 +File: python.info, Node: Documentation<42>, Next: Tools/Demos<25>, Prev: C API<28>, Up: Python 3 6 0 release candidate 1 -1.19.54.4 Documentation +1.18.57.4 Documentation ....................... - bpo-23722(1): The data model reference and the porting section in @@ -86287,9 +79514,9 @@ File: python.info, Node: Documentation<38>, Next: Tools/Demos<23>, Prev: C AP (2) https://www.python.org/dev/peps/pep-0487  -File: python.info, Node: Tools/Demos<23>, Prev: Documentation<38>, Up: Python 3 6 0 release candidate 1 +File: python.info, Node: Tools/Demos<25>, Prev: Documentation<42>, Up: Python 3 6 0 release candidate 1 -1.19.54.5 Tools/Demos +1.18.57.5 Tools/Demos ..................... - bpo-28023(1): Fix python-gdb.py didn’t support new dict @@ -86302,23 +79529,23 @@ File: python.info, Node: Tools/Demos<23>, Prev: Documentation<38>, Up: Python  File: python.info, Node: Python 3 6 0 beta 4, Next: Python 3 6 0 beta 3, Prev: Python 3 6 0 release candidate 1, Up: Changelog -1.19.55 Python 3.6.0 beta 4 +1.18.58 Python 3.6.0 beta 4 --------------------------- `Release date: 2016-11-21' * Menu: -* Core and Builtins: Core and Builtins<44>. -* Library: Library<47>. -* Documentation: Documentation<39>. -* Tests: Tests<37>. -* Build: Build<40>. +* Core and Builtins: Core and Builtins<49>. +* Library: Library<50>. +* Documentation: Documentation<43>. +* Tests: Tests<36>. +* Build: Build<37>.  -File: python.info, Node: Core and Builtins<44>, Next: Library<47>, Up: Python 3 6 0 beta 4 +File: python.info, Node: Core and Builtins<49>, Next: Library<50>, Up: Python 3 6 0 beta 4 -1.19.55.1 Core and Builtins +1.18.58.1 Core and Builtins ........................... - bpo-28532(1): Show sys.version when -V option is supplied twice. @@ -86381,9 +79608,9 @@ File: python.info, Node: Core and Builtins<44>, Next: Library<47>, Up: Python (11) https://bugs.python.org/issue28721  -File: python.info, Node: Library<47>, Next: Documentation<39>, Prev: Core and Builtins<44>, Up: Python 3 6 0 beta 4 +File: python.info, Node: Library<50>, Next: Documentation<43>, Prev: Core and Builtins<49>, Up: Python 3 6 0 beta 4 -1.19.55.2 Library +1.18.58.2 Library ................. - bpo-28752(1): Restored the __reduce__() methods of datetime @@ -86477,9 +79704,9 @@ File: python.info, Node: Library<47>, Next: Documentation<39>, Prev: Core and (18) https://bugs.python.org/issue28720  -File: python.info, Node: Documentation<39>, Next: Tests<37>, Prev: Library<47>, Up: Python 3 6 0 beta 4 +File: python.info, Node: Documentation<43>, Next: Tests<36>, Prev: Library<50>, Up: Python 3 6 0 beta 4 -1.19.55.3 Documentation +1.18.58.3 Documentation ....................... - bpo-28513(1): Documented command-line interface of zipfile. @@ -86489,9 +79716,9 @@ File: python.info, Node: Documentation<39>, Next: Tests<37>, Prev: Library<47 (1) https://bugs.python.org/issue28513  -File: python.info, Node: Tests<37>, Next: Build<40>, Prev: Documentation<39>, Up: Python 3 6 0 beta 4 +File: python.info, Node: Tests<36>, Next: Build<37>, Prev: Documentation<43>, Up: Python 3 6 0 beta 4 -1.19.55.4 Tests +1.18.58.4 Tests ............... - bpo-28666(1): Now test.support.rmtree is able to remove unwritable @@ -86507,9 +79734,9 @@ File: python.info, Node: Tests<37>, Next: Build<40>, Prev: Documentation<39>, (2) https://bugs.python.org/issue23839  -File: python.info, Node: Build<40>, Prev: Tests<37>, Up: Python 3 6 0 beta 4 +File: python.info, Node: Build<37>, Prev: Tests<36>, Up: Python 3 6 0 beta 4 -1.19.55.5 Build +1.18.58.5 Build ............... - bpo-10656(1): Fix out-of-tree building on AIX. Patch by Tristan @@ -86531,23 +79758,23 @@ File: python.info, Node: Build<40>, Prev: Tests<37>, Up: Python 3 6 0 beta 4  File: python.info, Node: Python 3 6 0 beta 3, Next: Python 3 6 0 beta 2, Prev: Python 3 6 0 beta 4, Up: Changelog -1.19.56 Python 3.6.0 beta 3 +1.18.59 Python 3.6.0 beta 3 --------------------------- `Release date: 2016-10-31' * Menu: -* Core and Builtins: Core and Builtins<45>. -* Library: Library<48>. -* Windows: Windows<36>. -* Build: Build<41>. -* Tests: Tests<38>. +* Core and Builtins: Core and Builtins<50>. +* Library: Library<51>. +* Windows: Windows<38>. +* Build: Build<38>. +* Tests: Tests<37>.  -File: python.info, Node: Core and Builtins<45>, Next: Library<48>, Up: Python 3 6 0 beta 3 +File: python.info, Node: Core and Builtins<50>, Next: Library<51>, Up: Python 3 6 0 beta 3 -1.19.56.1 Core and Builtins +1.18.59.1 Core and Builtins ........................... - bpo-28128(1): Deprecation warning for invalid str and byte escape @@ -86589,9 +79816,9 @@ File: python.info, Node: Core and Builtins<45>, Next: Library<48>, Up: Python (7) https://bugs.python.org/issue28471  -File: python.info, Node: Library<48>, Next: Windows<36>, Prev: Core and Builtins<45>, Up: Python 3 6 0 beta 3 +File: python.info, Node: Library<51>, Next: Windows<38>, Prev: Core and Builtins<50>, Up: Python 3 6 0 beta 3 -1.19.56.2 Library +1.18.59.2 Library ................. - bpo-27517(1): LZMA compressor and decompressor no longer raise @@ -86721,9 +79948,9 @@ File: python.info, Node: Library<48>, Next: Windows<36>, Prev: Core and Built (24) https://bugs.python.org/issue28544  -File: python.info, Node: Windows<36>, Next: Build<41>, Prev: Library<48>, Up: Python 3 6 0 beta 3 +File: python.info, Node: Windows<38>, Next: Build<38>, Prev: Library<51>, Up: Python 3 6 0 beta 3 -1.19.56.3 Windows +1.18.59.3 Windows ................. - bpo-28522(1): Fixes mishandled buffer reallocation in getpathp.c @@ -86733,9 +79960,9 @@ File: python.info, Node: Windows<36>, Next: Build<41>, Prev: Library<48>, Up (1) https://bugs.python.org/issue28522  -File: python.info, Node: Build<41>, Next: Tests<38>, Prev: Windows<36>, Up: Python 3 6 0 beta 3 +File: python.info, Node: Build<38>, Next: Tests<37>, Prev: Windows<38>, Up: Python 3 6 0 beta 3 -1.19.56.4 Build +1.18.59.4 Build ............... - bpo-28444(1): Fix missing extensions modules when cross compiling. @@ -86755,9 +79982,9 @@ File: python.info, Node: Build<41>, Next: Tests<38>, Prev: Windows<36>, Up: (3) https://bugs.python.org/issue28248  -File: python.info, Node: Tests<38>, Prev: Build<41>, Up: Python 3 6 0 beta 3 +File: python.info, Node: Tests<37>, Prev: Build<38>, Up: Python 3 6 0 beta 3 -1.19.56.5 Tests +1.18.59.5 Tests ............... - bpo-26944(1): Fix test_posix for Android where ‘id -G’ is entirely @@ -86774,24 +80001,24 @@ File: python.info, Node: Tests<38>, Prev: Build<41>, Up: Python 3 6 0 beta 3  File: python.info, Node: Python 3 6 0 beta 2, Next: Python 3 6 0 beta 1, Prev: Python 3 6 0 beta 3, Up: Changelog -1.19.57 Python 3.6.0 beta 2 +1.18.60 Python 3.6.0 beta 2 --------------------------- `Release date: 2016-10-10' * Menu: -* Core and Builtins: Core and Builtins<46>. -* Library: Library<49>. -* Windows: Windows<37>. -* C API: C API<32>. -* Build: Build<42>. -* Tests: Tests<39>. +* Core and Builtins: Core and Builtins<51>. +* Library: Library<52>. +* Windows: Windows<39>. +* C API: C API<29>. +* Build: Build<39>. +* Tests: Tests<38>.  -File: python.info, Node: Core and Builtins<46>, Next: Library<49>, Up: Python 3 6 0 beta 2 +File: python.info, Node: Core and Builtins<51>, Next: Library<52>, Up: Python 3 6 0 beta 2 -1.19.57.1 Core and Builtins +1.18.60.1 Core and Builtins ........................... - bpo-28183(1): Optimize and cleanup dict iteration. @@ -86915,9 +80142,9 @@ File: python.info, Node: Core and Builtins<46>, Next: Library<49>, Up: Python (23) https://bugs.python.org/issue26182  -File: python.info, Node: Library<49>, Next: Windows<37>, Prev: Core and Builtins<46>, Up: Python 3 6 0 beta 2 +File: python.info, Node: Library<52>, Next: Windows<39>, Prev: Core and Builtins<51>, Up: Python 3 6 0 beta 2 -1.19.57.2 Library +1.18.60.2 Library ................. - bpo-27998(1): Fixed bytes path support in os.scandir() on Windows. @@ -87170,9 +80397,9 @@ File: python.info, Node: Library<49>, Next: Windows<37>, Prev: Core and Built (48) https://bugs.python.org/issue27972  -File: python.info, Node: Windows<37>, Next: C API<32>, Prev: Library<49>, Up: Python 3 6 0 beta 2 +File: python.info, Node: Windows<39>, Next: C API<29>, Prev: Library<52>, Up: Python 3 6 0 beta 2 -1.19.57.3 Windows +1.18.60.3 Windows ................. - bpo-28402(1): Adds signed catalog files for stdlib on Windows. @@ -87222,9 +80449,9 @@ File: python.info, Node: Windows<37>, Next: C API<32>, Prev: Library<49>, Up (10) https://bugs.python.org/issue28138  -File: python.info, Node: C API<32>, Next: Build<42>, Prev: Windows<37>, Up: Python 3 6 0 beta 2 +File: python.info, Node: C API<29>, Next: Build<39>, Prev: Windows<39>, Up: Python 3 6 0 beta 2 -1.19.57.4 C API +1.18.60.4 C API ............... - bpo-28426(1): Deprecated undocumented functions @@ -87236,9 +80463,9 @@ File: python.info, Node: C API<32>, Next: Build<42>, Prev: Windows<37>, Up: (1) https://bugs.python.org/issue28426  -File: python.info, Node: Build<42>, Next: Tests<39>, Prev: C API<32>, Up: Python 3 6 0 beta 2 +File: python.info, Node: Build<39>, Next: Tests<38>, Prev: C API<29>, Up: Python 3 6 0 beta 2 -1.19.57.5 Build +1.18.60.5 Build ............... - bpo-28258(1): Fixed build with Estonian locale (python-config and @@ -87260,9 +80487,9 @@ File: python.info, Node: Build<42>, Next: Tests<39>, Prev: C API<32>, Up: Py (3) https://bugs.python.org/issue15819  -File: python.info, Node: Tests<39>, Prev: Build<42>, Up: Python 3 6 0 beta 2 +File: python.info, Node: Tests<38>, Prev: Build<39>, Up: Python 3 6 0 beta 2 -1.19.57.6 Tests +1.18.60.6 Tests ............... - bpo-28217(1): Adds _testconsole module to test console input. @@ -87274,26 +80501,26 @@ File: python.info, Node: Tests<39>, Prev: Build<42>, Up: Python 3 6 0 beta 2  File: python.info, Node: Python 3 6 0 beta 1, Next: Python 3 6 0 alpha 4, Prev: Python 3 6 0 beta 2, Up: Changelog -1.19.58 Python 3.6.0 beta 1 +1.18.61 Python 3.6.0 beta 1 --------------------------- `Release date: 2016-09-12' * Menu: -* Core and Builtins: Core and Builtins<47>. -* Library: Library<50>. -* IDLE: IDLE<38>. -* C API: C API<33>. -* Tests: Tests<40>. -* Build: Build<43>. -* Tools/Demos: Tools/Demos<24>. -* Windows: Windows<38>. +* Core and Builtins: Core and Builtins<52>. +* Library: Library<53>. +* IDLE: IDLE<42>. +* C API: C API<30>. +* Tests: Tests<39>. +* Build: Build<40>. +* Tools/Demos: Tools/Demos<26>. +* Windows: Windows<40>.  -File: python.info, Node: Core and Builtins<47>, Next: Library<50>, Up: Python 3 6 0 beta 1 +File: python.info, Node: Core and Builtins<52>, Next: Library<53>, Up: Python 3 6 0 beta 1 -1.19.58.1 Core and Builtins +1.18.61.1 Core and Builtins ........................... - bpo-23722(1): The __class__ cell used by zero-argument super() is @@ -87352,7 +80579,7 @@ File: python.info, Node: Core and Builtins<47>, Next: Library<50>, Up: Python escape sequence now generates a DeprecationWarning. Patch by Emanuel Barry. - - bpo-27350(21): *note dict: 164. implementation is changed like + - bpo-27350(21): *note dict: 1a4. implementation is changed like PyPy. It is more compact and preserves insertion order. (Concept developed by Raymond Hettinger and patch by Inada Naoki.) @@ -87536,9 +80763,9 @@ File: python.info, Node: Core and Builtins<47>, Next: Library<50>, Up: Python (47) https://bugs.python.org/issue27942  -File: python.info, Node: Library<50>, Next: IDLE<38>, Prev: Core and Builtins<47>, Up: Python 3 6 0 beta 1 +File: python.info, Node: Library<53>, Next: IDLE<42>, Prev: Core and Builtins<52>, Up: Python 3 6 0 beta 1 -1.19.58.2 Library +1.18.61.2 Library ................. - bpo-28732(1): Fix crash in os.spawnv() with no elements in args @@ -87683,13 +80910,13 @@ File: python.info, Node: Library<50>, Next: IDLE<38>, Prev: Core and Builtins - Eliminate a tautological-pointer-compare warning in _scproxy.c. - - bpo-27776(41): The *note os.urandom(): 5ce. function does now block + - bpo-27776(41): The *note os.urandom(): 4c2. function does now block on Linux 3.17 and newer until the system urandom entropy pool is initialized to increase the security. This change is part of the PEP 524(42). - bpo-27778(43): Expose the Linux ‘getrandom()’ syscall as a new - *note os.getrandom(): 664. function. This change is part of the + *note os.getrandom(): 556. function. This change is part of the PEP 524(44). - bpo-27691(45): Fix ssl module’s parsing of GEN_RID subject @@ -87980,9 +81207,9 @@ File: python.info, Node: Library<50>, Next: IDLE<38>, Prev: Core and Builtins (81) https://bugs.python.org/issue27456  -File: python.info, Node: IDLE<38>, Next: C API<33>, Prev: Library<50>, Up: Python 3 6 0 beta 1 +File: python.info, Node: IDLE<42>, Next: C API<30>, Prev: Library<53>, Up: Python 3 6 0 beta 1 -1.19.58.3 IDLE +1.18.61.3 IDLE .............. - bpo-15308(1): Add ‘interrupt execution’ (^C) to Shell menu. Patch @@ -88020,9 +81247,9 @@ File: python.info, Node: IDLE<38>, Next: C API<33>, Prev: Library<50>, Up: P (6) https://bugs.python.org/issue27821  -File: python.info, Node: C API<33>, Next: Tests<40>, Prev: IDLE<38>, Up: Python 3 6 0 beta 1 +File: python.info, Node: C API<30>, Next: Tests<39>, Prev: IDLE<42>, Up: Python 3 6 0 beta 1 -1.19.58.4 C API +1.18.61.4 C API ............... - bpo-26900(1): Excluded underscored names and other private API from @@ -88038,9 +81265,9 @@ File: python.info, Node: C API<33>, Next: Tests<40>, Prev: IDLE<38>, Up: Pyt (2) https://bugs.python.org/issue26027  -File: python.info, Node: Tests<40>, Next: Build<43>, Prev: C API<33>, Up: Python 3 6 0 beta 1 +File: python.info, Node: Tests<39>, Next: Build<40>, Prev: C API<30>, Up: Python 3 6 0 beta 1 -1.19.58.5 Tests +1.18.61.5 Tests ............... - bpo-27427(1): Additional tests for the math module. Patch by @@ -88066,9 +81293,9 @@ File: python.info, Node: Tests<40>, Next: Build<43>, Prev: C API<33>, Up: Py (4) https://bugs.python.org/issue27787  -File: python.info, Node: Build<43>, Next: Tools/Demos<24>, Prev: Tests<40>, Up: Python 3 6 0 beta 1 +File: python.info, Node: Build<40>, Next: Tools/Demos<26>, Prev: Tests<39>, Up: Python 3 6 0 beta 1 -1.19.58.6 Build +1.18.61.6 Build ............... - bpo-27566(1): Fix clean target in freeze makefile (patch by Lisa @@ -88131,9 +81358,9 @@ File: python.info, Node: Build<43>, Next: Tools/Demos<24>, Prev: Tests<40>, (11) https://bugs.python.org/issue17128  -File: python.info, Node: Tools/Demos<24>, Next: Windows<38>, Prev: Build<43>, Up: Python 3 6 0 beta 1 +File: python.info, Node: Tools/Demos<26>, Next: Windows<40>, Prev: Build<40>, Up: Python 3 6 0 beta 1 -1.19.58.7 Tools/Demos +1.18.61.7 Tools/Demos ..................... - bpo-27952(1): Get Tools/scripts/fixcid.py working with Python 3 and @@ -88145,9 +81372,9 @@ File: python.info, Node: Tools/Demos<24>, Next: Windows<38>, Prev: Build<43>, (1) https://bugs.python.org/issue27952  -File: python.info, Node: Windows<38>, Prev: Tools/Demos<24>, Up: Python 3 6 0 beta 1 +File: python.info, Node: Windows<40>, Prev: Tools/Demos<26>, Up: Python 3 6 0 beta 1 -1.19.58.8 Windows +1.18.61.8 Windows ................. - bpo-28065(1): Update xz dependency to 5.2.2 and build it from @@ -88207,24 +81434,24 @@ File: python.info, Node: Windows<38>, Prev: Tools/Demos<24>, Up: Python 3 6 0  File: python.info, Node: Python 3 6 0 alpha 4, Next: Python 3 6 0 alpha 3, Prev: Python 3 6 0 beta 1, Up: Changelog -1.19.59 Python 3.6.0 alpha 4 +1.18.62 Python 3.6.0 alpha 4 ---------------------------- `Release date: 2016-08-15' * Menu: -* Core and Builtins: Core and Builtins<48>. -* Library: Library<51>. -* IDLE: IDLE<39>. -* Tests: Tests<41>. -* Windows: Windows<39>. -* Build: Build<44>. +* Core and Builtins: Core and Builtins<53>. +* Library: Library<54>. +* IDLE: IDLE<43>. +* Tests: Tests<40>. +* Windows: Windows<41>. +* Build: Build<41>.  -File: python.info, Node: Core and Builtins<48>, Next: Library<51>, Up: Python 3 6 0 alpha 4 +File: python.info, Node: Core and Builtins<53>, Next: Library<54>, Up: Python 3 6 0 alpha 4 -1.19.59.1 Core and Builtins +1.18.62.1 Core and Builtins ........................... - bpo-27704(1): Optimized creating bytes and bytearray from byte-like @@ -88303,9 +81530,9 @@ File: python.info, Node: Core and Builtins<48>, Next: Library<51>, Up: Python (14) https://www.python.org/dev/peps/pep-0487  -File: python.info, Node: Library<51>, Next: IDLE<39>, Prev: Core and Builtins<48>, Up: Python 3 6 0 alpha 4 +File: python.info, Node: Library<54>, Next: IDLE<43>, Prev: Core and Builtins<53>, Up: Python 3 6 0 alpha 4 -1.19.59.2 Library +1.18.62.2 Library ................. - bpo-26027(1): Add PEP 519(2)/__fspath__() support to the os and @@ -88500,9 +81727,9 @@ File: python.info, Node: Library<51>, Next: IDLE<39>, Prev: Core and Builtins (38) https://bugs.python.org/issue27512  -File: python.info, Node: IDLE<39>, Next: Tests<41>, Prev: Library<51>, Up: Python 3 6 0 alpha 4 +File: python.info, Node: IDLE<43>, Next: Tests<40>, Prev: Library<54>, Up: Python 3 6 0 alpha 4 -1.19.59.3 IDLE +1.18.62.3 IDLE .............. - bpo-27714(1): text_textview and test_autocomplete now pass when @@ -88555,9 +81782,9 @@ File: python.info, Node: IDLE<39>, Next: Tests<41>, Prev: Library<51>, Up: P (8) https://bugs.python.org/issue27452  -File: python.info, Node: Tests<41>, Next: Windows<39>, Prev: IDLE<39>, Up: Python 3 6 0 alpha 4 +File: python.info, Node: Tests<40>, Next: Windows<41>, Prev: IDLE<43>, Up: Python 3 6 0 alpha 4 -1.19.59.4 Tests +1.18.62.4 Tests ............... - bpo-25805(1): Skip a test in test_pkgutil as needed that doesn’t @@ -88584,9 +81811,9 @@ File: python.info, Node: Tests<41>, Next: Windows<39>, Prev: IDLE<39>, Up: P (4) https://bugs.python.org/issue27594  -File: python.info, Node: Windows<39>, Next: Build<44>, Prev: Tests<41>, Up: Python 3 6 0 alpha 4 +File: python.info, Node: Windows<41>, Next: Build<41>, Prev: Tests<40>, Up: Python 3 6 0 alpha 4 -1.19.59.5 Windows +1.18.62.5 Windows ................. - bpo-27647(1): Update bundled Tcl/Tk to 8.6.6. @@ -88612,9 +81839,9 @@ File: python.info, Node: Windows<39>, Next: Build<44>, Prev: Tests<41>, Up: (5) https://bugs.python.org/issue27309  -File: python.info, Node: Build<44>, Prev: Windows<39>, Up: Python 3 6 0 alpha 4 +File: python.info, Node: Build<41>, Prev: Windows<41>, Up: Python 3 6 0 alpha 4 -1.19.59.6 Build +1.18.62.6 Build ............... - bpo-27713(1): Suppress spurious build warnings when updating @@ -88655,30 +81882,30 @@ File: python.info, Node: Build<44>, Prev: Windows<39>, Up: Python 3 6 0 alpha  File: python.info, Node: Python 3 6 0 alpha 3, Next: Python 3 6 0 alpha 2, Prev: Python 3 6 0 alpha 4, Up: Changelog -1.19.60 Python 3.6.0 alpha 3 +1.18.63 Python 3.6.0 alpha 3 ---------------------------- `Release date: 2016-07-11' * Menu: -* Core and Builtins: Core and Builtins<49>. -* Library: Library<52>. -* Security: Security<25>. -* Library: Library<53>. -* Security: Security<26>. -* Library: Library<54>. -* IDLE: IDLE<40>. -* C API: C API<34>. -* Build: Build<45>. -* Tools/Demos: Tools/Demos<25>. -* Documentation: Documentation<40>. -* Tests: Tests<42>. +* Core and Builtins: Core and Builtins<54>. +* Library: Library<55>. +* Security: Security<29>. +* Library: Library<56>. +* Security: Security<30>. +* Library: Library<57>. +* IDLE: IDLE<44>. +* C API: C API<31>. +* Build: Build<42>. +* Tools/Demos: Tools/Demos<27>. +* Documentation: Documentation<44>. +* Tests: Tests<41>.  -File: python.info, Node: Core and Builtins<49>, Next: Library<52>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Core and Builtins<54>, Next: Library<55>, Up: Python 3 6 0 alpha 3 -1.19.60.1 Core and Builtins +1.18.63.1 Core and Builtins ........................... - bpo-27473(1): Fixed possible integer overflow in bytes and @@ -88706,9 +81933,9 @@ File: python.info, Node: Core and Builtins<49>, Next: Library<52>, Up: Python (4) https://bugs.python.org/issue27007  -File: python.info, Node: Library<52>, Next: Security<25>, Prev: Core and Builtins<49>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Library<55>, Next: Security<29>, Prev: Core and Builtins<54>, Up: Python 3 6 0 alpha 3 -1.19.60.2 Library +1.18.63.2 Library ................. - bpo-26844(1): Fix error message for imp.find_module() to refer to @@ -88832,9 +82059,9 @@ File: python.info, Node: Library<52>, Next: Security<25>, Prev: Core and Buil (21) https://www.python.org/dev/peps/pep-0479  -File: python.info, Node: Security<25>, Next: Library<53>, Prev: Library<52>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Security<29>, Next: Library<56>, Prev: Library<55>, Up: Python 3 6 0 alpha 3 -1.19.60.3 Security +1.18.63.3 Security .................. - bpo-27278(1): Fix os.urandom() implementation using getrandom() on @@ -88846,9 +82073,9 @@ File: python.info, Node: Security<25>, Next: Library<53>, Prev: Library<52>, (1) https://bugs.python.org/issue27278  -File: python.info, Node: Library<53>, Next: Security<26>, Prev: Security<25>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Library<56>, Next: Security<30>, Prev: Security<29>, Up: Python 3 6 0 alpha 3 -1.19.60.4 Library +1.18.63.4 Library ................. - bpo-16864(1): sqlite3.Cursor.lastrowid now supports REPLACE @@ -88869,9 +82096,9 @@ File: python.info, Node: Library<53>, Next: Security<26>, Prev: Security<25>, (3) https://bugs.python.org/issue8637  -File: python.info, Node: Security<26>, Next: Library<54>, Prev: Library<53>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Security<30>, Next: Library<57>, Prev: Library<56>, Up: Python 3 6 0 alpha 3 -1.19.60.5 Security +1.18.63.5 Security .................. - bpo-22636(1): Avoid shell injection problems with @@ -88882,9 +82109,9 @@ File: python.info, Node: Security<26>, Next: Library<54>, Prev: Library<53>, (1) https://bugs.python.org/issue22636  -File: python.info, Node: Library<54>, Next: IDLE<40>, Prev: Security<26>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Library<57>, Next: IDLE<44>, Prev: Security<30>, Up: Python 3 6 0 alpha 3 -1.19.60.6 Library +1.18.63.6 Library ................. - bpo-16182(1): Fix various functions in the “readline” module to use @@ -88901,9 +82128,9 @@ File: python.info, Node: Library<54>, Next: IDLE<40>, Prev: Security<26>, Up (2) https://bugs.python.org/issue27392  -File: python.info, Node: IDLE<40>, Next: C API<34>, Prev: Library<54>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: IDLE<44>, Next: C API<31>, Prev: Library<57>, Up: Python 3 6 0 alpha 3 -1.19.60.7 IDLE +1.18.63.7 IDLE .............. - bpo-27477(1): IDLE search dialogs now use ttk widgets. @@ -88966,9 +82193,9 @@ File: python.info, Node: IDLE<40>, Next: C API<34>, Prev: Library<54>, Up: P (10) https://bugs.python.org/issue27310  -File: python.info, Node: C API<34>, Next: Build<45>, Prev: IDLE<40>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: C API<31>, Next: Build<42>, Prev: IDLE<44>, Up: Python 3 6 0 alpha 3 -1.19.60.8 C API +1.18.63.8 C API ............... - bpo-26754(1): PyUnicode_FSDecoder() accepted a filename argument @@ -88980,9 +82207,9 @@ File: python.info, Node: C API<34>, Next: Build<45>, Prev: IDLE<40>, Up: Pyt (1) https://bugs.python.org/issue26754  -File: python.info, Node: Build<45>, Next: Tools/Demos<25>, Prev: C API<34>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Build<42>, Next: Tools/Demos<27>, Prev: C API<31>, Up: Python 3 6 0 alpha 3 -1.19.60.9 Build +1.18.63.9 Build ............... - bpo-28066(1): Fix the logic that searches build directories for @@ -89018,9 +82245,9 @@ File: python.info, Node: Build<45>, Next: Tools/Demos<25>, Prev: C API<34>, (5) https://bugs.python.org/issue23968  -File: python.info, Node: Tools/Demos<25>, Next: Documentation<40>, Prev: Build<45>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Tools/Demos<27>, Next: Documentation<44>, Prev: Build<42>, Up: Python 3 6 0 alpha 3 -1.19.60.10 Tools/Demos +1.18.63.10 Tools/Demos ...................... - bpo-27332(1): Fixed the type of the first argument of module-level @@ -89035,9 +82262,9 @@ File: python.info, Node: Tools/Demos<25>, Next: Documentation<40>, Prev: Buil (2) https://bugs.python.org/issue27418  -File: python.info, Node: Documentation<40>, Next: Tests<42>, Prev: Tools/Demos<25>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Documentation<44>, Next: Tests<41>, Prev: Tools/Demos<27>, Up: Python 3 6 0 alpha 3 -1.19.60.11 Documentation +1.18.63.11 Documentation ........................ - bpo-19489(1): Moved the search box from the sidebar to the header @@ -89054,9 +82281,9 @@ File: python.info, Node: Documentation<40>, Next: Tests<42>, Prev: Tools/Demo (2) https://bugs.python.org/issue27285  -File: python.info, Node: Tests<42>, Prev: Documentation<40>, Up: Python 3 6 0 alpha 3 +File: python.info, Node: Tests<41>, Prev: Documentation<44>, Up: Python 3 6 0 alpha 3 -1.19.60.12 Tests +1.18.63.12 Tests ................ - bpo-27027(1): Added test.support.is_android that is True when this @@ -89069,32 +82296,32 @@ File: python.info, Node: Tests<42>, Prev: Documentation<40>, Up: Python 3 6 0  File: python.info, Node: Python 3 6 0 alpha 2, Next: Python 3 6 0 alpha 1, Prev: Python 3 6 0 alpha 3, Up: Changelog -1.19.61 Python 3.6.0 alpha 2 +1.18.64 Python 3.6.0 alpha 2 ---------------------------- `Release date: 2016-06-13' * Menu: -* Core and Builtins: Core and Builtins<50>. -* Library: Library<55>. -* Security: Security<27>. -* Library: Library<56>. -* Security: Security<28>. -* Library: Library<57>. -* IDLE: IDLE<41>. -* Documentation: Documentation<41>. -* Tests: Tests<43>. -* Windows: Windows<40>. -* Build: Build<46>. -* Windows: Windows<41>. -* C API: C API<35>. -* Tools/Demos: Tools/Demos<26>. +* Core and Builtins: Core and Builtins<55>. +* Library: Library<58>. +* Security: Security<31>. +* Library: Library<59>. +* Security: Security<32>. +* Library: Library<60>. +* IDLE: IDLE<45>. +* Documentation: Documentation<45>. +* Tests: Tests<42>. +* Windows: Windows<42>. +* Build: Build<43>. +* Windows: Windows<43>. +* C API: C API<32>. +* Tools/Demos: Tools/Demos<28>.  -File: python.info, Node: Core and Builtins<50>, Next: Library<55>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Core and Builtins<55>, Next: Library<58>, Up: Python 3 6 0 alpha 2 -1.19.61.1 Core and Builtins +1.18.64.1 Core and Builtins ........................... - bpo-27095(1): Simplified MAKE_FUNCTION and removed MAKE_CLOSURE @@ -89161,9 +82388,9 @@ File: python.info, Node: Core and Builtins<50>, Next: Library<55>, Up: Python (12) https://bugs.python.org/issue27243  -File: python.info, Node: Library<55>, Next: Security<27>, Prev: Core and Builtins<50>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Library<58>, Next: Security<31>, Prev: Core and Builtins<55>, Up: Python 3 6 0 alpha 2 -1.19.61.2 Library +1.18.64.2 Library ................. - Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) @@ -89192,9 +82419,9 @@ File: python.info, Node: Library<55>, Next: Security<27>, Prev: Core and Buil (4) https://bugs.python.org/issue20508  -File: python.info, Node: Security<27>, Next: Library<56>, Prev: Library<55>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Security<31>, Next: Library<59>, Prev: Library<58>, Up: Python 3 6 0 alpha 2 -1.19.61.3 Security +1.18.64.3 Security .................. - bpo-26556(1): Update expat to 2.1.1, fixes CVE-2015-1283. @@ -89207,9 +82434,9 @@ File: python.info, Node: Security<27>, Next: Library<56>, Prev: Library<55>, (1) https://bugs.python.org/issue26556  -File: python.info, Node: Library<56>, Next: Security<28>, Prev: Security<27>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Library<59>, Next: Security<32>, Prev: Security<31>, Up: Python 3 6 0 alpha 2 -1.19.61.4 Library +1.18.64.4 Library ................. - bpo-21386(1): Implement missing IPv4Address.is_global property. It @@ -89285,12 +82512,12 @@ File: python.info, Node: Library<56>, Next: Security<28>, Prev: Security<27>, (14) https://bugs.python.org/issue21313  -File: python.info, Node: Security<28>, Next: Library<57>, Prev: Library<56>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Security<32>, Next: Library<60>, Prev: Library<59>, Up: Python 3 6 0 alpha 2 -1.19.61.5 Security +1.18.64.5 Security .................. - - bpo-26839(1): On Linux, *note os.urandom(): 5ce. now calls + - bpo-26839(1): On Linux, *note os.urandom(): 4c2. now calls ‘getrandom()’ with ‘GRND_NONBLOCK’ to fall back on reading ‘/dev/urandom’ if the urandom entropy pool is not initialized yet. Patch written by Colm Buckley. @@ -89300,9 +82527,9 @@ File: python.info, Node: Security<28>, Next: Library<57>, Prev: Library<56>, (1) https://bugs.python.org/issue26839  -File: python.info, Node: Library<57>, Next: IDLE<41>, Prev: Security<28>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Library<60>, Next: IDLE<45>, Prev: Security<32>, Up: Python 3 6 0 alpha 2 -1.19.61.6 Library +1.18.64.6 Library ................. - bpo-23883(1): Added missing APIs to __all__ to match the documented @@ -89321,12 +82548,12 @@ File: python.info, Node: Library<57>, Next: IDLE<41>, Prev: Security<28>, Up - bpo-21272(4): Use _sysconfigdata.py to initialize distutils.sysconfig. - - bpo-19611(5): *note inspect: a0. now reports the implicit ‘.0’ + - bpo-19611(5): *note inspect: a1. now reports the implicit ‘.0’ parameters generated by the compiler for comprehension and generator expression scopes as if they were positional-only parameters called ‘implicit0’. Patch by Jelle Zijlstra. - - bpo-26809(6): Add ‘__all__’ to *note string: f6. Patch by Emanuel + - bpo-26809(6): Add ‘__all__’ to *note string: f7. Patch by Emanuel Barry. - bpo-26373(7): subprocess.Popen.communicate now correctly ignores @@ -89405,9 +82632,9 @@ File: python.info, Node: Library<57>, Next: IDLE<41>, Prev: Security<28>, Up (17) https://bugs.python.org/issue21271  -File: python.info, Node: IDLE<41>, Next: Documentation<41>, Prev: Library<57>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: IDLE<45>, Next: Documentation<45>, Prev: Library<60>, Up: Python 3 6 0 alpha 2 -1.19.61.7 IDLE +1.18.64.7 IDLE .............. - bpo-5124(1): Paste with text selected now replaces the selection on @@ -89516,9 +82743,9 @@ File: python.info, Node: IDLE<41>, Next: Documentation<41>, Prev: Library<57> (19) https://bugs.python.org/issue23977  -File: python.info, Node: Documentation<41>, Next: Tests<43>, Prev: IDLE<41>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Documentation<45>, Next: Tests<42>, Prev: IDLE<45>, Up: Python 3 6 0 alpha 2 -1.19.61.8 Documentation +1.18.64.8 Documentation ....................... - bpo-16484(1): Change the default PYTHONDOCS URL to “https:”, and @@ -89541,9 +82768,9 @@ File: python.info, Node: Documentation<41>, Next: Tests<43>, Prev: IDLE<41>, (4) https://bugs.python.org/issue22558  -File: python.info, Node: Tests<43>, Next: Windows<40>, Prev: Documentation<41>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Tests<42>, Next: Windows<42>, Prev: Documentation<45>, Up: Python 3 6 0 alpha 2 -1.19.61.9 Tests +1.18.64.9 Tests ............... - bpo-25285(1): regrtest now uses subprocesses when the -j1 command @@ -89560,9 +82787,9 @@ File: python.info, Node: Tests<43>, Next: Windows<40>, Prev: Documentation<41 (2) https://bugs.python.org/issue25285  -File: python.info, Node: Windows<40>, Next: Build<46>, Prev: Tests<43>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Windows<42>, Next: Build<43>, Prev: Tests<42>, Up: Python 3 6 0 alpha 2 -1.19.61.10 Windows +1.18.64.10 Windows .................. - bpo-27064(1): The py.exe launcher now defaults to Python 3. The @@ -89574,9 +82801,9 @@ File: python.info, Node: Windows<40>, Next: Build<46>, Prev: Tests<43>, Up: (1) https://bugs.python.org/issue27064  -File: python.info, Node: Build<46>, Next: Windows<41>, Prev: Windows<40>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Build<43>, Next: Windows<43>, Prev: Windows<42>, Up: Python 3 6 0 alpha 2 -1.19.61.11 Build +1.18.64.11 Build ................ - bpo-27229(1): Fix the cross-compiling pgen rule for in-tree builds. @@ -89592,9 +82819,9 @@ File: python.info, Node: Build<46>, Next: Windows<41>, Prev: Windows<40>, Up (2) https://bugs.python.org/issue26930  -File: python.info, Node: Windows<41>, Next: C API<35>, Prev: Build<46>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Windows<43>, Next: C API<32>, Prev: Build<43>, Up: Python 3 6 0 alpha 2 -1.19.61.12 Windows +1.18.64.12 Windows .................. - bpo-17500(1): Remove unused and outdated icons. (See also: @@ -89605,9 +82832,9 @@ File: python.info, Node: Windows<41>, Next: C API<35>, Prev: Build<46>, Up: (1) https://bugs.python.org/issue17500  -File: python.info, Node: C API<35>, Next: Tools/Demos<26>, Prev: Windows<41>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: C API<32>, Next: Tools/Demos<28>, Prev: Windows<43>, Up: Python 3 6 0 alpha 2 -1.19.61.13 C API +1.18.64.13 C API ................ - bpo-27186(1): Add the PyOS_FSPath() function (part of PEP 519(2)). @@ -89624,9 +82851,9 @@ File: python.info, Node: C API<35>, Next: Tools/Demos<26>, Prev: Windows<41>, (3) https://bugs.python.org/issue26282  -File: python.info, Node: Tools/Demos<26>, Prev: C API<35>, Up: Python 3 6 0 alpha 2 +File: python.info, Node: Tools/Demos<28>, Prev: C API<32>, Up: Python 3 6 0 alpha 2 -1.19.61.14 Tools/Demos +1.18.64.14 Tools/Demos ...................... - bpo-26282(1): Argument Clinic now supports positional-only and @@ -89639,33 +82866,33 @@ File: python.info, Node: Tools/Demos<26>, Prev: C API<35>, Up: Python 3 6 0 a  File: python.info, Node: Python 3 6 0 alpha 1, Next: Python 3 5 5 final, Prev: Python 3 6 0 alpha 2, Up: Changelog -1.19.62 Python 3.6.0 alpha 1 +1.18.65 Python 3.6.0 alpha 1 ---------------------------- `Release date: 2016-05-16' * Menu: -* Core and Builtins: Core and Builtins<51>. -* Library: Library<58>. -* Security: Security<29>. -* Library: Library<59>. -* Security: Security<30>. -* Library: Library<60>. -* Security: Security<31>. +* Core and Builtins: Core and Builtins<56>. * Library: Library<61>. -* IDLE: IDLE<42>. -* Documentation: Documentation<42>. -* Tests: Tests<44>. -* Build: Build<47>. -* Windows: Windows<42>. -* Tools/Demos: Tools/Demos<27>. -* C API: C API<36>. +* Security: Security<33>. +* Library: Library<62>. +* Security: Security<34>. +* Library: Library<63>. +* Security: Security<35>. +* Library: Library<64>. +* IDLE: IDLE<46>. +* Documentation: Documentation<46>. +* Tests: Tests<43>. +* Build: Build<44>. +* Windows: Windows<44>. +* Tools/Demos: Tools/Demos<29>. +* C API: C API<33>.  -File: python.info, Node: Core and Builtins<51>, Next: Library<58>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Core and Builtins<56>, Next: Library<61>, Up: Python 3 6 0 alpha 1 -1.19.62.1 Core and Builtins +1.18.65.1 Core and Builtins ........................... - bpo-20041(1): Fixed TypeError when frame.f_trace is set to None. @@ -89698,12 +82925,12 @@ File: python.info, Node: Core and Builtins<51>, Next: Library<58>, Up: Python 3. Behavior no longer does any interpolation in .pypirc files, matching behavior in Python 2.7 and Setuptools 19.0. - - bpo-26249(10): Memory functions of the *note PyMem_Malloc(): 601. - domain (*note PYMEM_DOMAIN_MEM: 605.) now use the *note pymalloc - allocator: 6ba. rather than system ‘malloc()’. Applications - calling *note PyMem_Malloc(): 601. without holding the GIL can now - crash: use ‘PYTHONMALLOC=debug’ environment variable to validate - the usage of memory allocators in your application. + - bpo-26249(10): Memory functions of the *note PyMem_Malloc(): 4f6. + domain (‘PYMEM_DOMAIN_MEM’) now use the *note pymalloc allocator: + 5ae. rather than system ‘malloc()’. Applications calling *note + PyMem_Malloc(): 4f6. without holding the GIL can now crash: use + ‘PYTHONMALLOC=debug’ environment variable to validate the usage of + memory allocators in your application. - bpo-26802(11): Optimize function calls only using unpacking like ‘func(*tuple)’ (no other positional argument, no keyword): avoid @@ -89741,24 +82968,24 @@ File: python.info, Node: Core and Builtins<51>, Next: Library<58>, Up: Python API. - bpo-26563(24): Debug hooks on Python memory allocators now raise a - fatal error if functions of the *note PyMem_Malloc(): 601. family + fatal error if functions of the *note PyMem_Malloc(): 4f6. family are called without holding the GIL. - bpo-26564(25): On error, the debug hooks on Python memory - allocators now use the *note tracemalloc: 11d. module to get the + allocators now use the *note tracemalloc: 115. module to get the traceback where a memory block was allocated. - bpo-26558(26): The debug hooks on Python memory allocator *note - PyObject_Malloc(): 604. now detect when functions are called + PyObject_Malloc(): 4f8. now detect when functions are called without holding the GIL. - - bpo-26516(27): Add *note PYTHONMALLOC: 5ff. environment variable to + - bpo-26516(27): Add *note PYTHONMALLOC: 4f4. environment variable to set the Python memory allocators and/or install debug hooks. - - bpo-26516(28): The *note PyMem_SetupDebugHooks(): 606. function can + - bpo-26516(28): The *note PyMem_SetupDebugHooks(): 4f9. function can now also be used on Python compiled in release mode. - - bpo-26516(29): The *note PYTHONMALLOCSTATS: 125a. environment + - bpo-26516(29): The *note PYTHONMALLOCSTATS: 113d. environment variable can now also be used on Python compiled in release mode. It now has no effect if set to an empty string. @@ -90144,9 +83371,9 @@ File: python.info, Node: Core and Builtins<51>, Next: Library<58>, Up: Python (87) https://bugs.python.org/issue25887  -File: python.info, Node: Library<58>, Next: Security<29>, Prev: Core and Builtins<51>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Library<61>, Next: Security<33>, Prev: Core and Builtins<56>, Up: Python 3 6 0 alpha 1 -1.19.62.2 Library +1.18.65.2 Library ................. - bpo-27057(1): Fix os.set_inheritable() on Android, ioctl() is @@ -90264,8 +83491,8 @@ File: python.info, Node: Library<58>, Next: Security<29>, Prev: Core and Buil static methods. Patch by Xiang Zhang. - bpo-26801(35): Fix error handling in *note - shutil.get_terminal_size(): b27, catch *note AttributeError: 4a4. - instead of *note NameError: e42. Patch written by Emanuel Barry. + shutil.get_terminal_size(): a2b, catch *note AttributeError: 38c. + instead of *note NameError: d55. Patch written by Emanuel Barry. - bpo-24838(36): tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character @@ -90346,9 +83573,9 @@ File: python.info, Node: Library<58>, Next: Security<29>, Prev: Core and Buil (36) https://bugs.python.org/issue24838  -File: python.info, Node: Security<29>, Next: Library<59>, Prev: Library<58>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Security<33>, Next: Library<62>, Prev: Library<61>, Up: Python 3 6 0 alpha 1 -1.19.62.3 Security +1.18.65.3 Security .................. - bpo-26657(1): Fix directory traversal vulnerability with @@ -90361,9 +83588,9 @@ File: python.info, Node: Security<29>, Next: Library<59>, Prev: Library<58>, (1) https://bugs.python.org/issue26657  -File: python.info, Node: Library<59>, Next: Security<30>, Prev: Security<29>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Library<62>, Next: Security<34>, Prev: Security<33>, Up: Python 3 6 0 alpha 1 -1.19.62.4 Library +1.18.65.4 Library ................. - bpo-26717(1): Stop encoding Latin-1-ized WSGI paths with UTF-8. @@ -90374,7 +83601,7 @@ File: python.info, Node: Library<59>, Next: Security<30>, Prev: Security<29>, - bpo-26404(3): Add context manager to socketserver. Patch by Aviv Palivoda. - - bpo-26735(4): Fix *note os.urandom(): 5ce. on Solaris 11.3 and + - bpo-26735(4): Fix *note os.urandom(): 4c2. on Solaris 11.3 and newer when reading more than 1,024 bytes: call ‘getrandom()’ multiple times with a limit of 1024 bytes per call. @@ -90434,15 +83661,15 @@ File: python.info, Node: Library<59>, Next: Security<30>, Prev: Security<29>, - bpo-26616(22): Fixed a bug in datetime.astimezone() method. - - bpo-26637(23): The *note importlib: 9a. module now emits an *note - ImportError: 16c. rather than a *note TypeError: 1fe. if *note - __import__(): 16b. is tried during the Python shutdown process but - *note sys.path: 260. is already cleared (set to ‘None’). + - bpo-26637(23): The *note importlib: 9b. module now emits an *note + ImportError: 325. rather than a *note TypeError: 17f. if *note + __import__(): 5fd. is tried during the Python shutdown process but + *note sys.path: 479. is already cleared (set to ‘None’). - - bpo-21925(24): *note warnings.formatwarning(): 10ef. now catches - exceptions when calling *note linecache.getline(): 7fc. and *note - tracemalloc.get_object_traceback(): 125e. to be able to log *note - ResourceWarning: 5cd. emitted late during the Python shutdown + - bpo-21925(24): *note warnings.formatwarning(): fcd. now catches + exceptions when calling *note linecache.getline(): 6f0. and *note + tracemalloc.get_object_traceback(): 1141. to be able to log *note + ResourceWarning: 4c1. emitted late during the Python shutdown process. - bpo-23848(25): On Windows, faulthandler.enable() now also installs @@ -90452,7 +83679,7 @@ File: python.info, Node: Library<59>, Next: Security<30>, Prev: Security<29>, - bpo-26530(26): Add C functions ‘_PyTraceMalloc_Track()’ and ‘_PyTraceMalloc_Untrack()’ to track memory blocks using the *note - tracemalloc: 11d. module. Add ‘_PyTraceMalloc_GetTraceback()’ to + tracemalloc: 115. module. Add ‘_PyTraceMalloc_GetTraceback()’ to get the traceback of an object. - bpo-26588(27): The _tracemalloc now supports tracing memory @@ -90471,7 +83698,7 @@ File: python.info, Node: Library<59>, Next: Security<30>, Prev: Security<29>, BaseHandler.start_response. Initial patch by Peter Inglesby. - bpo-26567(32): Add a new function *note PyErr_ResourceWarning(): - 6c5. function to pass the destroyed object. Add a `source' + 5b9. function to pass the destroyed object. Add a `source' attribute to ‘warnings.WarningMessage’. Add warnings._showwarnmsg() which uses tracemalloc to get the traceback where source object was allocated. @@ -90543,9 +83770,9 @@ File: python.info, Node: Library<59>, Next: Security<30>, Prev: Security<29>, (32) https://bugs.python.org/issue26567  -File: python.info, Node: Security<30>, Next: Library<60>, Prev: Library<59>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Security<34>, Next: Library<63>, Prev: Library<62>, Up: Python 3 6 0 alpha 1 -1.19.62.5 Security +1.18.65.5 Security .................. - bpo-26313(1): ssl.py _load_windows_store_certs fails if windows @@ -90556,13 +83783,13 @@ File: python.info, Node: Security<30>, Next: Library<60>, Prev: Library<59>, (1) https://bugs.python.org/issue26313  -File: python.info, Node: Library<60>, Next: Security<31>, Prev: Security<30>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Library<63>, Next: Security<35>, Prev: Security<34>, Up: Python 3 6 0 alpha 1 -1.19.62.6 Library +1.18.65.6 Library ................. - - bpo-26569(1): Fix *note pyclbr.readmodule(): 1261. and *note - pyclbr.readmodule_ex(): 1262. to support importing packages. + - bpo-26569(1): Fix *note pyclbr.readmodule(): 1144. and *note + pyclbr.readmodule_ex(): 1145. to support importing packages. - bpo-26499(2): Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent @@ -90698,9 +83925,9 @@ File: python.info, Node: Library<60>, Next: Security<31>, Prev: Security<30>, (25) https://bugs.python.org/issue23430  -File: python.info, Node: Security<31>, Next: Library<61>, Prev: Library<60>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Security<35>, Next: Library<64>, Prev: Library<63>, Up: Python 3 6 0 alpha 1 -1.19.62.7 Security +1.18.65.7 Security .................. - bpo-25939(1): On Windows open the cert store readonly in @@ -90711,9 +83938,9 @@ File: python.info, Node: Security<31>, Next: Library<61>, Prev: Library<60>, (1) https://bugs.python.org/issue25939  -File: python.info, Node: Library<61>, Next: IDLE<42>, Prev: Security<31>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Library<64>, Next: IDLE<46>, Prev: Security<35>, Up: Python 3 6 0 alpha 1 -1.19.62.8 Library +1.18.65.8 Library ................. - bpo-25995(1): os.walk() no longer uses FDs proportional to the tree @@ -91427,9 +84654,9 @@ File: python.info, Node: Library<61>, Next: IDLE<42>, Prev: Security<31>, Up (131) https://bugs.python.org/issue27041  -File: python.info, Node: IDLE<42>, Next: Documentation<42>, Prev: Library<61>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: IDLE<46>, Next: Documentation<46>, Prev: Library<64>, Up: Python 3 6 0 alpha 1 -1.19.62.9 IDLE +1.18.65.9 IDLE .............. - bpo-20640(1): Add tests for idlelib.configHelpSourceEdit. Patch by @@ -91612,9 +84839,9 @@ File: python.info, Node: IDLE<42>, Next: Documentation<42>, Prev: Library<61> (28) https://bugs.python.org/issue24790  -File: python.info, Node: Documentation<42>, Next: Tests<44>, Prev: IDLE<42>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Documentation<46>, Next: Tests<43>, Prev: IDLE<46>, Up: Python 3 6 0 alpha 1 -1.19.62.10 Documentation +1.18.65.10 Documentation ........................ - bpo-26736(1): Used HTTPS for external links in the documentation if @@ -91647,9 +84874,9 @@ File: python.info, Node: Documentation<42>, Next: Tests<44>, Prev: IDLE<42>, (5) https://bugs.python.org/issue26014  -File: python.info, Node: Tests<44>, Next: Build<47>, Prev: Documentation<42>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Tests<43>, Next: Build<44>, Prev: Documentation<46>, Up: Python 3 6 0 alpha 1 -1.19.62.11 Tests +1.18.65.11 Tests ................ - bpo-21916(1): Added tests for the turtle module. Patch by ingrid, @@ -91724,9 +84951,9 @@ File: python.info, Node: Tests<44>, Next: Build<47>, Prev: Documentation<42>, (13) https://bugs.python.org/issue26583  -File: python.info, Node: Build<47>, Next: Windows<42>, Prev: Tests<44>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Build<44>, Next: Windows<44>, Prev: Tests<43>, Up: Python 3 6 0 alpha 1 -1.19.62.12 Build +1.18.65.12 Build ................ - bpo-21277(1): Don’t try to link _ctypes with a ffi_convenience @@ -91834,9 +85061,9 @@ File: python.info, Node: Build<47>, Next: Windows<42>, Prev: Tests<44>, Up: (19) https://bugs.python.org/issue24324  -File: python.info, Node: Windows<42>, Next: Tools/Demos<27>, Prev: Build<47>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Windows<44>, Next: Tools/Demos<29>, Prev: Build<44>, Up: Python 3 6 0 alpha 1 -1.19.62.13 Windows +1.18.65.13 Windows .................. - bpo-27053(1): Updates make_zip.py to correctly generate library ZIP @@ -91871,9 +85098,9 @@ File: python.info, Node: Windows<42>, Next: Tools/Demos<27>, Prev: Build<47>, (6) https://bugs.python.org/issue25022  -File: python.info, Node: Tools/Demos<27>, Next: C API<36>, Prev: Windows<42>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: Tools/Demos<29>, Next: C API<33>, Prev: Windows<44>, Up: Python 3 6 0 alpha 1 -1.19.62.14 Tools/Demos +1.18.65.14 Tools/Demos ...................... - bpo-26799(1): Fix python-gdb.py: don’t get C types once when the @@ -91909,9 +85136,9 @@ File: python.info, Node: Tools/Demos<27>, Next: C API<36>, Prev: Windows<42>, (6) https://bugs.python.org/issue25154  -File: python.info, Node: C API<36>, Prev: Tools/Demos<27>, Up: Python 3 6 0 alpha 1 +File: python.info, Node: C API<33>, Prev: Tools/Demos<29>, Up: Python 3 6 0 alpha 1 -1.19.62.15 C API +1.18.65.15 C API ................ - bpo-26312(1): SystemError is now raised in all programming bugs @@ -91932,7 +85159,7 @@ File: python.info, Node: C API<36>, Prev: Tools/Demos<27>, Up: Python 3 6 0 a  File: python.info, Node: Python 3 5 5 final, Next: Python 3 5 5 release candidate 1, Prev: Python 3 6 0 alpha 1, Up: Changelog -1.19.63 Python 3.5.5 final +1.18.66 Python 3.5.5 final -------------------------- `Release date: 2018-02-04' @@ -91942,21 +85169,21 @@ There were no new changes in version 3.5.5.  File: python.info, Node: Python 3 5 5 release candidate 1, Next: Python 3 5 4 final, Prev: Python 3 5 5 final, Up: Changelog -1.19.64 Python 3.5.5 release candidate 1 +1.18.67 Python 3.5.5 release candidate 1 ---------------------------------------- `Release date: 2018-01-23' * Menu: -* Security: Security<32>. -* Core and Builtins: Core and Builtins<52>. -* Library: Library<62>. +* Security: Security<36>. +* Core and Builtins: Core and Builtins<57>. +* Library: Library<65>.  -File: python.info, Node: Security<32>, Next: Core and Builtins<52>, Up: Python 3 5 5 release candidate 1 +File: python.info, Node: Security<36>, Next: Core and Builtins<57>, Up: Python 3 5 5 release candidate 1 -1.19.64.1 Security +1.18.67.1 Security .................. - bpo-32551(1): The ‘sys.path[0]’ initialization change for @@ -91993,9 +85220,9 @@ File: python.info, Node: Security<32>, Next: Core and Builtins<52>, Up: Pytho (5) https://bugs.python.org/issue30947  -File: python.info, Node: Core and Builtins<52>, Next: Library<62>, Prev: Security<32>, Up: Python 3 5 5 release candidate 1 +File: python.info, Node: Core and Builtins<57>, Next: Library<65>, Prev: Security<36>, Up: Python 3 5 5 release candidate 1 -1.19.64.2 Core and Builtins +1.18.67.2 Core and Builtins ........................... - bpo-31095(1): Fix potential crash during GC caused by ‘tp_dealloc’ @@ -92006,9 +85233,9 @@ File: python.info, Node: Core and Builtins<52>, Next: Library<62>, Prev: Secu (1) https://bugs.python.org/issue31095  -File: python.info, Node: Library<62>, Prev: Core and Builtins<52>, Up: Python 3 5 5 release candidate 1 +File: python.info, Node: Library<65>, Prev: Core and Builtins<57>, Up: Python 3 5 5 release candidate 1 -1.19.64.3 Library +1.18.67.3 Library ................. - bpo-32072(1): Fixed issues with binary plists: Fixed saving @@ -92029,19 +85256,19 @@ File: python.info, Node: Library<62>, Prev: Core and Builtins<52>, Up: Python  File: python.info, Node: Python 3 5 4 final, Next: Python 3 5 4 release candidate 1, Prev: Python 3 5 5 release candidate 1, Up: Changelog -1.19.65 Python 3.5.4 final +1.18.68 Python 3.5.4 final -------------------------- `Release date: 2017-08-07' * Menu: -* Library: Library<63>. +* Library: Library<66>.  -File: python.info, Node: Library<63>, Up: Python 3 5 4 final +File: python.info, Node: Library<66>, Up: Python 3 5 4 final -1.19.65.1 Library +1.18.68.1 Library ................. - bpo-30119(1): ftplib.FTP.putline() now throws ValueError on @@ -92054,26 +85281,26 @@ File: python.info, Node: Library<63>, Up: Python 3 5 4 final  File: python.info, Node: Python 3 5 4 release candidate 1, Next: Python 3 5 3 final, Prev: Python 3 5 4 final, Up: Changelog -1.19.66 Python 3.5.4 release candidate 1 +1.18.69 Python 3.5.4 release candidate 1 ---------------------------------------- `Release date: 2017-07-23' * Menu: -* Security: Security<33>. -* Core and Builtins: Core and Builtins<53>. -* Library: Library<64>. -* Documentation: Documentation<43>. -* Tests: Tests<45>. -* Build: Build<48>. -* Windows: Windows<43>. -* C API: C API<37>. +* Security: Security<37>. +* Core and Builtins: Core and Builtins<58>. +* Library: Library<67>. +* Documentation: Documentation<47>. +* Tests: Tests<44>. +* Build: Build<45>. +* Windows: Windows<45>. +* C API: C API<34>.  -File: python.info, Node: Security<33>, Next: Core and Builtins<53>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Security<37>, Next: Core and Builtins<58>, Up: Python 3 5 4 release candidate 1 -1.19.66.1 Security +1.18.69.1 Security .................. - bpo-30730(1): Prevent environment variables injection in subprocess @@ -92110,9 +85337,9 @@ File: python.info, Node: Security<33>, Next: Core and Builtins<53>, Up: Pytho (4) https://bugs.python.org/issue29591  -File: python.info, Node: Core and Builtins<53>, Next: Library<64>, Prev: Security<33>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Core and Builtins<58>, Next: Library<67>, Prev: Security<37>, Up: Python 3 5 4 release candidate 1 -1.19.66.2 Core and Builtins +1.18.69.2 Core and Builtins ........................... - bpo-30876(1): Relative import from unloaded package now reimports @@ -92134,7 +85361,7 @@ File: python.info, Node: Core and Builtins<53>, Next: Library<64>, Prev: Secu list and deque when pass indices of wrong type. - bpo-28876(6): ‘bool(range)’ works even if ‘len(range)’ raises *note - OverflowError: a43. + OverflowError: 941. - bpo-29600(7): Fix wrapping coroutine return values in StopIteration. @@ -92198,9 +85425,9 @@ File: python.info, Node: Core and Builtins<53>, Next: Library<64>, Prev: Secu (15) https://bugs.python.org/issue29478  -File: python.info, Node: Library<64>, Next: Documentation<43>, Prev: Core and Builtins<53>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Library<67>, Next: Documentation<47>, Prev: Core and Builtins<58>, Up: Python 3 5 4 release candidate 1 -1.19.66.3 Library +1.18.69.3 Library ................. - bpo-29403(1): Fix ‘unittest.mock’’s autospec to not fail on @@ -92605,9 +85832,9 @@ File: python.info, Node: Library<64>, Next: Documentation<43>, Prev: Core and (74) https://bugs.python.org/issue29142  -File: python.info, Node: Documentation<43>, Next: Tests<45>, Prev: Library<64>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Documentation<47>, Next: Tests<44>, Prev: Library<67>, Up: Python 3 5 4 release candidate 1 -1.19.66.4 Documentation +1.18.69.4 Documentation ....................... - bpo-30176(1): Add missing attribute related constants in curses @@ -92643,9 +85870,9 @@ File: python.info, Node: Documentation<43>, Next: Tests<45>, Prev: Library<64 (6) https://bugs.python.org/issue29349  -File: python.info, Node: Tests<45>, Next: Build<48>, Prev: Documentation<43>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Tests<44>, Next: Build<45>, Prev: Documentation<47>, Up: Python 3 5 4 release candidate 1 -1.19.66.5 Tests +1.18.69.5 Tests ............... - bpo-30822(1): Fix regrtest command line parser to allow passing -u @@ -92706,9 +85933,9 @@ File: python.info, Node: Tests<45>, Next: Build<48>, Prev: Documentation<43>, (9) https://bugs.python.org/issue29571  -File: python.info, Node: Build<48>, Next: Windows<43>, Prev: Tests<45>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Build<45>, Next: Windows<45>, Prev: Tests<44>, Up: Python 3 5 4 release candidate 1 -1.19.66.6 Build +1.18.69.6 Build ............... - bpo-29243(1): Prevent unnecessary rebuilding of Python during ‘make @@ -92730,9 +85957,9 @@ File: python.info, Node: Build<48>, Next: Windows<43>, Prev: Tests<45>, Up: (3) https://bugs.python.org/issue29643  -File: python.info, Node: Windows<43>, Next: C API<37>, Prev: Build<48>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: Windows<45>, Next: C API<34>, Prev: Build<45>, Up: Python 3 5 4 release candidate 1 -1.19.66.7 Windows +1.18.69.7 Windows ................. - bpo-30687(1): Locate msbuild.exe on Windows when building rather @@ -92748,9 +85975,9 @@ File: python.info, Node: Windows<43>, Next: C API<37>, Prev: Build<48>, Up: (2) https://bugs.python.org/issue29392  -File: python.info, Node: C API<37>, Prev: Windows<43>, Up: Python 3 5 4 release candidate 1 +File: python.info, Node: C API<34>, Prev: Windows<45>, Up: Python 3 5 4 release candidate 1 -1.19.66.8 C API +1.18.69.8 C API ............... - bpo-27867(1): Function PySlice_GetIndicesEx() is replaced with a @@ -92772,7 +85999,7 @@ File: python.info, Node: C API<37>, Prev: Windows<43>, Up: Python 3 5 4 relea  File: python.info, Node: Python 3 5 3 final, Next: Python 3 5 3 release candidate 1, Prev: Python 3 5 4 release candidate 1, Up: Changelog -1.19.67 Python 3.5.3 final +1.18.70 Python 3.5.3 final -------------------------- `Release date: 2017-01-17' @@ -92782,31 +86009,31 @@ There were no code changes between 3.5.3rc1 and 3.5.3 final.  File: python.info, Node: Python 3 5 3 release candidate 1, Next: Python 3 5 2 final, Prev: Python 3 5 3 final, Up: Changelog -1.19.68 Python 3.5.3 release candidate 1 +1.18.71 Python 3.5.3 release candidate 1 ---------------------------------------- `Release date: 2017-01-02' * Menu: -* Core and Builtins: Core and Builtins<54>. -* Library: Library<65>. -* Security: Security<34>. -* Library: Library<66>. -* Security: Security<35>. -* Library: Library<67>. -* IDLE: IDLE<43>. -* C API: C API<38>. -* Documentation: Documentation<44>. -* Tests: Tests<46>. -* Tools/Demos: Tools/Demos<28>. -* Windows: Windows<44>. -* Build: Build<49>. +* Core and Builtins: Core and Builtins<59>. +* Library: Library<68>. +* Security: Security<38>. +* Library: Library<69>. +* Security: Security<39>. +* Library: Library<70>. +* IDLE: IDLE<47>. +* C API: C API<35>. +* Documentation: Documentation<48>. +* Tests: Tests<45>. +* Tools/Demos: Tools/Demos<30>. +* Windows: Windows<46>. +* Build: Build<46>.  -File: python.info, Node: Core and Builtins<54>, Next: Library<65>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Core and Builtins<59>, Next: Library<68>, Up: Python 3 5 3 release candidate 1 -1.19.68.1 Core and Builtins +1.18.71.1 Core and Builtins ........................... - bpo-29073(1): bytearray formatting no longer truncates on first @@ -93033,9 +86260,9 @@ File: python.info, Node: Core and Builtins<54>, Next: Library<65>, Up: Python (43) https://bugs.python.org/issue27942  -File: python.info, Node: Library<65>, Next: Security<34>, Prev: Core and Builtins<54>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Library<68>, Next: Security<38>, Prev: Core and Builtins<59>, Up: Python 3 5 3 release candidate 1 -1.19.68.2 Library +1.18.71.2 Library ................. - bpo-15812(1): inspect.getframeinfo() now correctly shows the first @@ -93553,9 +86780,9 @@ File: python.info, Node: Library<65>, Next: Security<34>, Prev: Core and Buil (95) https://www.python.org/dev/peps/pep-0479  -File: python.info, Node: Security<34>, Next: Library<66>, Prev: Library<65>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Security<38>, Next: Library<69>, Prev: Library<68>, Up: Python 3 5 3 release candidate 1 -1.19.68.3 Security +1.18.71.3 Security .................. - bpo-27278(1): Fix os.urandom() implementation using getrandom() on @@ -93567,9 +86794,9 @@ File: python.info, Node: Security<34>, Next: Library<66>, Prev: Library<65>, (1) https://bugs.python.org/issue27278  -File: python.info, Node: Library<66>, Next: Security<35>, Prev: Security<34>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Library<69>, Next: Security<39>, Prev: Security<38>, Up: Python 3 5 3 release candidate 1 -1.19.68.4 Library +1.18.71.4 Library ................. - bpo-26386(1): Fixed ttk.TreeView selection operations with item @@ -93580,9 +86807,9 @@ File: python.info, Node: Library<66>, Next: Security<35>, Prev: Security<34>, (1) https://bugs.python.org/issue26386  -File: python.info, Node: Security<35>, Next: Library<67>, Prev: Library<66>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Security<39>, Next: Library<70>, Prev: Library<69>, Up: Python 3 5 3 release candidate 1 -1.19.68.5 Security +1.18.71.5 Security .................. - bpo-22636(1): Avoid shell injection problems with @@ -93593,9 +86820,9 @@ File: python.info, Node: Security<35>, Next: Library<67>, Prev: Library<66>, (1) https://bugs.python.org/issue22636  -File: python.info, Node: Library<67>, Next: IDLE<43>, Prev: Security<35>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Library<70>, Next: IDLE<47>, Prev: Security<39>, Up: Python 3 5 3 release candidate 1 -1.19.68.6 Library +1.18.71.6 Library ................. - bpo-16182(1): Fix various functions in the “readline” module to use @@ -93738,9 +86965,9 @@ File: python.info, Node: Library<67>, Next: IDLE<43>, Prev: Security<35>, Up (28) https://bugs.python.org/issue28990  -File: python.info, Node: IDLE<43>, Next: C API<38>, Prev: Library<67>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: IDLE<47>, Next: C API<35>, Prev: Library<70>, Up: Python 3 5 3 release candidate 1 -1.19.68.7 IDLE +1.18.71.7 IDLE .............. - bpo-15308(1): Add ‘interrupt execution’ (^C) to Shell menu. Patch @@ -93793,9 +87020,9 @@ File: python.info, Node: IDLE<43>, Next: C API<38>, Prev: Library<67>, Up: P (8) https://bugs.python.org/issue27245  -File: python.info, Node: C API<38>, Next: Documentation<44>, Prev: IDLE<43>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: C API<35>, Next: Documentation<48>, Prev: IDLE<47>, Up: Python 3 5 3 release candidate 1 -1.19.68.8 C API +1.18.71.8 C API ............... - bpo-28808(1): PyUnicode_CompareWithASCIIString() now never raises @@ -93812,9 +87039,9 @@ File: python.info, Node: C API<38>, Next: Documentation<44>, Prev: IDLE<43>, (2) https://bugs.python.org/issue26754  -File: python.info, Node: Documentation<44>, Next: Tests<46>, Prev: C API<38>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Documentation<48>, Next: Tests<45>, Prev: C API<35>, Up: Python 3 5 3 release candidate 1 -1.19.68.9 Documentation +1.18.71.9 Documentation ....................... - bpo-28513(1): Documented command-line interface of zipfile. @@ -93824,9 +87051,9 @@ File: python.info, Node: Documentation<44>, Next: Tests<46>, Prev: C API<38>, (1) https://bugs.python.org/issue28513  -File: python.info, Node: Tests<46>, Next: Tools/Demos<28>, Prev: Documentation<44>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Tests<45>, Next: Tools/Demos<30>, Prev: Documentation<48>, Up: Python 3 5 3 release candidate 1 -1.19.68.10 Tests +1.18.71.10 Tests ................ - bpo-28950(1): Disallow -j0 to be combined with -T/-l/-M in regrtest @@ -93861,9 +87088,9 @@ File: python.info, Node: Tests<46>, Next: Tools/Demos<28>, Prev: Documentatio (6) https://bugs.python.org/issue27369  -File: python.info, Node: Tools/Demos<28>, Next: Windows<44>, Prev: Tests<46>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Tools/Demos<30>, Next: Windows<46>, Prev: Tests<45>, Up: Python 3 5 3 release candidate 1 -1.19.68.11 Tools/Demos +1.18.71.11 Tools/Demos ...................... - bpo-27952(1): Get Tools/scripts/fixcid.py working with Python 3 and @@ -93884,9 +87111,9 @@ File: python.info, Node: Tools/Demos<28>, Next: Windows<44>, Prev: Tests<46>, (3) https://bugs.python.org/issue27418  -File: python.info, Node: Windows<44>, Next: Build<49>, Prev: Tools/Demos<28>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Windows<46>, Next: Build<46>, Prev: Tools/Demos<30>, Up: Python 3 5 3 release candidate 1 -1.19.68.12 Windows +1.18.71.12 Windows .................. - bpo-28251(1): Improvements to help manuals on Windows. @@ -93916,9 +87143,9 @@ File: python.info, Node: Windows<44>, Next: Build<49>, Prev: Tools/Demos<28>, (5) https://bugs.python.org/issue27309  -File: python.info, Node: Build<49>, Prev: Windows<44>, Up: Python 3 5 3 release candidate 1 +File: python.info, Node: Build<46>, Prev: Windows<46>, Up: Python 3 5 3 release candidate 1 -1.19.68.13 Build +1.18.71.13 Build ................ - bpo-29080(1): Removes hard dependency on hg.exe from @@ -94038,21 +87265,21 @@ File: python.info, Node: Build<49>, Prev: Windows<44>, Up: Python 3 5 3 relea  File: python.info, Node: Python 3 5 2 final, Next: Python 3 5 2 release candidate 1, Prev: Python 3 5 3 release candidate 1, Up: Changelog -1.19.69 Python 3.5.2 final +1.18.72 Python 3.5.2 final -------------------------- `Release date: 2016-06-26' * Menu: -* Core and Builtins: Core and Builtins<55>. -* Tests: Tests<47>. -* IDLE: IDLE<44>. +* Core and Builtins: Core and Builtins<60>. +* Tests: Tests<46>. +* IDLE: IDLE<48>.  -File: python.info, Node: Core and Builtins<55>, Next: Tests<47>, Up: Python 3 5 2 final +File: python.info, Node: Core and Builtins<60>, Next: Tests<46>, Up: Python 3 5 2 final -1.19.69.1 Core and Builtins +1.18.72.1 Core and Builtins ........................... - bpo-26930(1): Update Windows builds to use OpenSSL 1.0.2h. @@ -94062,9 +87289,9 @@ File: python.info, Node: Core and Builtins<55>, Next: Tests<47>, Up: Python 3 (1) https://bugs.python.org/issue26930  -File: python.info, Node: Tests<47>, Next: IDLE<44>, Prev: Core and Builtins<55>, Up: Python 3 5 2 final +File: python.info, Node: Tests<46>, Next: IDLE<48>, Prev: Core and Builtins<60>, Up: Python 3 5 2 final -1.19.69.2 Tests +1.18.72.2 Tests ............... - bpo-26867(1): Ubuntu’s openssl OP_NO_SSLv3 is forced on by default; @@ -94075,9 +87302,9 @@ File: python.info, Node: Tests<47>, Next: IDLE<44>, Prev: Core and Builtins<5 (1) https://bugs.python.org/issue26867  -File: python.info, Node: IDLE<44>, Prev: Tests<47>, Up: Python 3 5 2 final +File: python.info, Node: IDLE<48>, Prev: Tests<46>, Up: Python 3 5 2 final -1.19.69.3 IDLE +1.18.72.3 IDLE .............. - bpo-27365(1): Allow non-ascii in idlelib/NEWS.txt - minimal part @@ -94090,36 +87317,36 @@ File: python.info, Node: IDLE<44>, Prev: Tests<47>, Up: Python 3 5 2 final  File: python.info, Node: Python 3 5 2 release candidate 1, Next: Python 3 5 1 final, Prev: Python 3 5 2 final, Up: Changelog -1.19.70 Python 3.5.2 release candidate 1 +1.18.73 Python 3.5.2 release candidate 1 ---------------------------------------- `Release date: 2016-06-12' * Menu: -* Core and Builtins: Core and Builtins<56>. -* Security: Security<36>. -* Library: Library<68>. -* Security: Security<37>. -* Library: Library<69>. -* Security: Security<38>. -* Library: Library<70>. -* Security: Security<39>. -* Library: Library<71>. +* Core and Builtins: Core and Builtins<61>. * Security: Security<40>. +* Library: Library<71>. +* Security: Security<41>. * Library: Library<72>. -* IDLE: IDLE<45>. -* Documentation: Documentation<45>. -* Tests: Tests<48>. -* Build: Build<50>. -* Windows: Windows<45>. -* Tools/Demos: Tools/Demos<29>. -* Windows: Windows<46>. +* Security: Security<42>. +* Library: Library<73>. +* Security: Security<43>. +* Library: Library<74>. +* Security: Security<44>. +* Library: Library<75>. +* IDLE: IDLE<49>. +* Documentation: Documentation<49>. +* Tests: Tests<47>. +* Build: Build<47>. +* Windows: Windows<47>. +* Tools/Demos: Tools/Demos<31>. +* Windows: Windows<48>.  -File: python.info, Node: Core and Builtins<56>, Next: Security<36>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Core and Builtins<61>, Next: Security<40>, Up: Python 3 5 2 release candidate 1 -1.19.70.1 Core and Builtins +1.18.73.1 Core and Builtins ........................... - bpo-27066(1): Fixed SystemError if a custom opener (for open()) @@ -94335,9 +87562,9 @@ File: python.info, Node: Core and Builtins<56>, Next: Security<36>, Up: Pytho (38) https://bugs.python.org/issue27243  -File: python.info, Node: Security<36>, Next: Library<68>, Prev: Core and Builtins<56>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Security<40>, Next: Library<71>, Prev: Core and Builtins<61>, Up: Python 3 5 2 release candidate 1 -1.19.70.2 Security +1.18.73.2 Security .................. - bpo-26556(1): Update expat to 2.1.1, fixes CVE-2015-1283. @@ -94350,9 +87577,9 @@ File: python.info, Node: Security<36>, Next: Library<68>, Prev: Core and Buil (1) https://bugs.python.org/issue26556  -File: python.info, Node: Library<68>, Next: Security<37>, Prev: Security<36>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Library<71>, Next: Security<41>, Prev: Security<40>, Up: Python 3 5 2 release candidate 1 -1.19.70.3 Library +1.18.73.3 Library ................. - bpo-21386(1): Implement missing IPv4Address.is_global property. It @@ -94390,12 +87617,12 @@ File: python.info, Node: Library<68>, Next: Security<37>, Prev: Security<36>, (5) https://bugs.python.org/issue21313  -File: python.info, Node: Security<37>, Next: Library<69>, Prev: Library<68>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Security<41>, Next: Library<72>, Prev: Library<71>, Up: Python 3 5 2 release candidate 1 -1.19.70.4 Security +1.18.73.4 Security .................. - - bpo-26839(1): On Linux, *note os.urandom(): 5ce. now calls + - bpo-26839(1): On Linux, *note os.urandom(): 4c2. now calls ‘getrandom()’ with ‘GRND_NONBLOCK’ to fall back on reading ‘/dev/urandom’ if the urandom entropy pool is not initialized yet. Patch written by Colm Buckley. @@ -94405,9 +87632,9 @@ File: python.info, Node: Security<37>, Next: Library<69>, Prev: Library<68>, (1) https://bugs.python.org/issue26839  -File: python.info, Node: Library<69>, Next: Security<38>, Prev: Security<37>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Library<72>, Next: Security<42>, Prev: Security<41>, Up: Python 3 5 2 release candidate 1 -1.19.70.5 Library +1.18.73.5 Library ................. - bpo-27164(1): In the zlib module, allow decompressing raw Deflate @@ -94419,7 +87646,7 @@ File: python.info, Node: Library<69>, Next: Security<38>, Prev: Security<37>, wsgiref.handler.ServerHandler can now handle stdout doing partial writes, but this is deprecated. - - bpo-26809(3): Add ‘__all__’ to *note string: f6. Patch by Emanuel + - bpo-26809(3): Add ‘__all__’ to *note string: f7. Patch by Emanuel Barry. - bpo-26373(4): subprocess.Popen.communicate now correctly ignores @@ -94514,8 +87741,8 @@ File: python.info, Node: Library<69>, Next: Security<38>, Prev: Security<37>, static methods. Patch by Xiang Zhang. - bpo-26801(30): Fix error handling in *note - shutil.get_terminal_size(): b27, catch *note AttributeError: 4a4. - instead of *note NameError: e42. Patch written by Emanuel Barry. + shutil.get_terminal_size(): a2b, catch *note AttributeError: 38c. + instead of *note NameError: d55. Patch written by Emanuel Barry. - bpo-24838(31): tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character @@ -94586,9 +87813,9 @@ File: python.info, Node: Library<69>, Next: Security<38>, Prev: Security<37>, (31) https://bugs.python.org/issue24838  -File: python.info, Node: Security<38>, Next: Library<70>, Prev: Library<69>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Security<42>, Next: Library<73>, Prev: Library<72>, Up: Python 3 5 2 release candidate 1 -1.19.70.6 Security +1.18.73.6 Security .................. - bpo-26657(1): Fix directory traversal vulnerability with @@ -94601,15 +87828,15 @@ File: python.info, Node: Security<38>, Next: Library<70>, Prev: Library<69>, (1) https://bugs.python.org/issue26657  -File: python.info, Node: Library<70>, Next: Security<39>, Prev: Security<38>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Library<73>, Next: Security<43>, Prev: Security<42>, Up: Python 3 5 2 release candidate 1 -1.19.70.7 Library +1.18.73.7 Library ................. - bpo-26717(1): Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile. - - bpo-26735(2): Fix *note os.urandom(): 5ce. on Solaris 11.3 and + - bpo-26735(2): Fix *note os.urandom(): 4c2. on Solaris 11.3 and newer when reading more than 1,024 bytes: call ‘getrandom()’ multiple times with a limit of 1024 bytes per call. @@ -94644,9 +87871,9 @@ File: python.info, Node: Library<70>, Next: Security<39>, Prev: Security<38>, - bpo-26616(12): Fixed a bug in datetime.astimezone() method. - - bpo-21925(13): *note warnings.formatwarning(): 10ef. now catches + - bpo-21925(13): *note warnings.formatwarning(): fcd. now catches exceptions on ‘linecache.getline(...)’ to be able to log *note - ResourceWarning: 5cd. emitted late during the Python shutdown + ResourceWarning: 4c1. emitted late during the Python shutdown process. - bpo-24266(14): Ctrl+C during Readline history search now cancels @@ -94688,9 +87915,9 @@ File: python.info, Node: Library<70>, Next: Security<39>, Prev: Security<38>, (15) https://bugs.python.org/issue26560  -File: python.info, Node: Security<39>, Next: Library<71>, Prev: Library<70>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Security<43>, Next: Library<74>, Prev: Library<73>, Up: Python 3 5 2 release candidate 1 -1.19.70.8 Security +1.18.73.8 Security .................. - bpo-26313(1): ssl.py _load_windows_store_certs fails if windows @@ -94701,13 +87928,13 @@ File: python.info, Node: Security<39>, Next: Library<71>, Prev: Library<70>, (1) https://bugs.python.org/issue26313  -File: python.info, Node: Library<71>, Next: Security<40>, Prev: Security<39>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Library<74>, Next: Security<44>, Prev: Security<43>, Up: Python 3 5 2 release candidate 1 -1.19.70.9 Library +1.18.73.9 Library ................. - - bpo-26569(1): Fix *note pyclbr.readmodule(): 1261. and *note - pyclbr.readmodule_ex(): 1262. to support importing packages. + - bpo-26569(1): Fix *note pyclbr.readmodule(): 1144. and *note + pyclbr.readmodule_ex(): 1145. to support importing packages. - bpo-26499(2): Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent @@ -94809,9 +88036,9 @@ File: python.info, Node: Library<71>, Next: Security<40>, Prev: Security<39>, (19) https://bugs.python.org/issue26309  -File: python.info, Node: Security<40>, Next: Library<72>, Prev: Library<71>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Security<44>, Next: Library<75>, Prev: Library<74>, Up: Python 3 5 2 release candidate 1 -1.19.70.10 Security +1.18.73.10 Security ................... - bpo-25939(1): On Windows open the cert store readonly in @@ -94822,9 +88049,9 @@ File: python.info, Node: Security<40>, Next: Library<72>, Prev: Library<71>, (1) https://bugs.python.org/issue25939  -File: python.info, Node: Library<72>, Next: IDLE<45>, Prev: Security<40>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Library<75>, Next: IDLE<49>, Prev: Security<44>, Up: Python 3 5 2 release candidate 1 -1.19.70.11 Library +1.18.73.11 Library .................. - bpo-25995(1): os.walk() no longer uses FDs proportional to the tree @@ -95096,9 +88323,9 @@ File: python.info, Node: Library<72>, Next: IDLE<45>, Prev: Security<40>, Up (50) https://bugs.python.org/issue22970  -File: python.info, Node: IDLE<45>, Next: Documentation<45>, Prev: Library<72>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: IDLE<49>, Next: Documentation<49>, Prev: Library<75>, Up: Python 3 5 2 release candidate 1 -1.19.70.12 IDLE +1.18.73.12 IDLE ............... - bpo-5124(1): Paste with text selected now replaces the selection on @@ -95190,9 +88417,9 @@ File: python.info, Node: IDLE<45>, Next: Documentation<45>, Prev: Library<72> (15) https://bugs.python.org/issue25905  -File: python.info, Node: Documentation<45>, Next: Tests<48>, Prev: IDLE<45>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Documentation<49>, Next: Tests<47>, Prev: IDLE<49>, Up: Python 3 5 2 release candidate 1 -1.19.70.13 Documentation +1.18.73.13 Documentation ........................ - bpo-19489(1): Moved the search box from the sidebar to the header @@ -95236,9 +88463,9 @@ File: python.info, Node: Documentation<45>, Next: Tests<48>, Prev: IDLE<45>, (8) https://bugs.python.org/issue26014  -File: python.info, Node: Tests<48>, Next: Build<50>, Prev: Documentation<45>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Tests<47>, Next: Build<47>, Prev: Documentation<49>, Up: Python 3 5 2 release candidate 1 -1.19.70.14 Tests +1.18.73.14 Tests ................ - bpo-21916(1): Added tests for the turtle module. Patch by ingrid, @@ -95280,9 +88507,9 @@ File: python.info, Node: Tests<48>, Next: Build<50>, Prev: Documentation<45>, (7) https://bugs.python.org/issue26583  -File: python.info, Node: Build<50>, Next: Windows<45>, Prev: Tests<48>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Build<47>, Next: Windows<47>, Prev: Tests<47>, Up: Python 3 5 2 release candidate 1 -1.19.70.15 Build +1.18.73.15 Build ................ - bpo-26884(1): Fix linking extension modules for cross builds. @@ -95380,9 +88607,9 @@ File: python.info, Node: Build<50>, Next: Windows<45>, Prev: Tests<48>, Up: (17) https://bugs.python.org/issue24324  -File: python.info, Node: Windows<45>, Next: Tools/Demos<29>, Prev: Build<50>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Windows<47>, Next: Tools/Demos<31>, Prev: Build<47>, Up: Python 3 5 2 release candidate 1 -1.19.70.16 Windows +1.18.73.16 Windows .................. - bpo-27053(1): Updates make_zip.py to correctly generate library ZIP @@ -95413,9 +88640,9 @@ File: python.info, Node: Windows<45>, Next: Tools/Demos<29>, Prev: Build<50>, (5) https://bugs.python.org/issue26065  -File: python.info, Node: Tools/Demos<29>, Next: Windows<46>, Prev: Windows<45>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Tools/Demos<31>, Next: Windows<48>, Prev: Windows<47>, Up: Python 3 5 2 release candidate 1 -1.19.70.17 Tools/Demos +1.18.73.17 Tools/Demos ...................... - bpo-26799(1): Fix python-gdb.py: don’t get C types once when the @@ -95442,9 +88669,9 @@ File: python.info, Node: Tools/Demos<29>, Next: Windows<46>, Prev: Windows<45 (4) https://bugs.python.org/issue26316  -File: python.info, Node: Windows<46>, Prev: Tools/Demos<29>, Up: Python 3 5 2 release candidate 1 +File: python.info, Node: Windows<48>, Prev: Tools/Demos<31>, Up: Python 3 5 2 release candidate 1 -1.19.70.18 Windows +1.18.73.18 Windows .................. - bpo-17500(1): Remove unused and outdated icons. (See also: @@ -95457,20 +88684,20 @@ File: python.info, Node: Windows<46>, Prev: Tools/Demos<29>, Up: Python 3 5 2  File: python.info, Node: Python 3 5 1 final, Next: Python 3 5 1 release candidate 1, Prev: Python 3 5 2 release candidate 1, Up: Changelog -1.19.71 Python 3.5.1 final +1.18.74 Python 3.5.1 final -------------------------- `Release date: 2015-12-06' * Menu: -* Core and Builtins: Core and Builtins<57>. -* Windows: Windows<47>. +* Core and Builtins: Core and Builtins<62>. +* Windows: Windows<49>.  -File: python.info, Node: Core and Builtins<57>, Next: Windows<47>, Up: Python 3 5 1 final +File: python.info, Node: Core and Builtins<62>, Next: Windows<49>, Up: Python 3 5 1 final -1.19.71.1 Core and Builtins +1.18.74.1 Core and Builtins ........................... - bpo-25709(1): Fixed problem with in-place string concatenation and @@ -95481,9 +88708,9 @@ File: python.info, Node: Core and Builtins<57>, Next: Windows<47>, Up: Python (1) https://bugs.python.org/issue25709  -File: python.info, Node: Windows<47>, Prev: Core and Builtins<57>, Up: Python 3 5 1 final +File: python.info, Node: Windows<49>, Prev: Core and Builtins<62>, Up: Python 3 5 1 final -1.19.71.2 Windows +1.18.74.2 Windows ................. - bpo-25715(1): Python 3.5.1 installer shows wrong upgrade path and @@ -95496,26 +88723,26 @@ File: python.info, Node: Windows<47>, Prev: Core and Builtins<57>, Up: Python  File: python.info, Node: Python 3 5 1 release candidate 1, Next: Python 3 5 0 final, Prev: Python 3 5 1 final, Up: Changelog -1.19.72 Python 3.5.1 release candidate 1 +1.18.75 Python 3.5.1 release candidate 1 ---------------------------------------- `Release date: 2015-11-22' * Menu: -* Core and Builtins: Core and Builtins<58>. -* Library: Library<73>. -* IDLE: IDLE<46>. -* Documentation: Documentation<46>. -* Tests: Tests<49>. -* Build: Build<51>. -* Windows: Windows<48>. -* Tools/Demos: Tools/Demos<30>. +* Core and Builtins: Core and Builtins<63>. +* Library: Library<76>. +* IDLE: IDLE<50>. +* Documentation: Documentation<50>. +* Tests: Tests<48>. +* Build: Build<48>. +* Windows: Windows<50>. +* Tools/Demos: Tools/Demos<32>.  -File: python.info, Node: Core and Builtins<58>, Next: Library<73>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Core and Builtins<63>, Next: Library<76>, Up: Python 3 5 1 release candidate 1 -1.19.72.1 Core and Builtins +1.18.75.1 Core and Builtins ........................... - bpo-25630(1): Fix a possible segfault during argument parsing in @@ -95629,9 +88856,9 @@ File: python.info, Node: Core and Builtins<58>, Next: Library<73>, Up: Python (19) https://bugs.python.org/issue25150  -File: python.info, Node: Library<73>, Next: IDLE<46>, Prev: Core and Builtins<58>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Library<76>, Next: IDLE<50>, Prev: Core and Builtins<63>, Up: Python 3 5 1 release candidate 1 -1.19.72.2 Library +1.18.75.2 Library ................. - bpo-25626(1): Change three zlib functions to accept sizes that fit @@ -96029,9 +89256,9 @@ File: python.info, Node: Library<73>, Next: IDLE<46>, Prev: Core and Builtins (70) https://bugs.python.org/issue23572  -File: python.info, Node: IDLE<46>, Next: Documentation<46>, Prev: Library<73>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: IDLE<50>, Next: Documentation<50>, Prev: Library<76>, Up: Python 3 5 1 release candidate 1 -1.19.72.3 IDLE +1.18.75.3 IDLE .............. - bpo-15348(1): Stop the debugger engine (normally in a user process) @@ -96194,9 +89421,9 @@ File: python.info, Node: IDLE<46>, Next: Documentation<46>, Prev: Library<73> (25) https://bugs.python.org/issue24790  -File: python.info, Node: Documentation<46>, Next: Tests<49>, Prev: IDLE<46>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Documentation<50>, Next: Tests<48>, Prev: IDLE<50>, Up: Python 3 5 1 release candidate 1 -1.19.72.4 Documentation +1.18.75.4 Documentation ....................... - bpo-22558(1): Add remaining doc links to source code for @@ -96237,9 +89464,9 @@ File: python.info, Node: Documentation<46>, Next: Tests<49>, Prev: IDLE<46>, (6) https://bugs.python.org/issue22812  -File: python.info, Node: Tests<49>, Next: Build<51>, Prev: Documentation<46>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Tests<48>, Next: Build<48>, Prev: Documentation<50>, Up: Python 3 5 1 release candidate 1 -1.19.72.5 Tests +1.18.75.5 Tests ............... - bpo-25449(1): Added tests for OrderedDict subclasses. @@ -96262,9 +89489,9 @@ File: python.info, Node: Tests<49>, Next: Build<51>, Prev: Documentation<46>, (3) https://bugs.python.org/issue23919  -File: python.info, Node: Build<51>, Next: Windows<48>, Prev: Tests<49>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Build<48>, Next: Windows<50>, Prev: Tests<48>, Up: Python 3 5 1 release candidate 1 -1.19.72.6 Build +1.18.75.6 Build ............... - bpo-24915(1): Add LLVM support for PGO builds and use the test @@ -96285,9 +89512,9 @@ File: python.info, Node: Build<51>, Next: Windows<48>, Prev: Tests<49>, Up: (3) https://bugs.python.org/issue24986  -File: python.info, Node: Windows<48>, Next: Tools/Demos<30>, Prev: Build<51>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Windows<50>, Next: Tools/Demos<32>, Prev: Build<48>, Up: Python 3 5 1 release candidate 1 -1.19.72.7 Windows +1.18.75.7 Windows ................. - bpo-25450(1): Updates shortcuts to start Python in installation @@ -96359,9 +89586,9 @@ File: python.info, Node: Windows<48>, Next: Tools/Demos<30>, Prev: Build<51>, (14) https://bugs.python.org/issue25022  -File: python.info, Node: Tools/Demos<30>, Prev: Windows<48>, Up: Python 3 5 1 release candidate 1 +File: python.info, Node: Tools/Demos<32>, Prev: Windows<50>, Up: Python 3 5 1 release candidate 1 -1.19.72.8 Tools/Demos +1.18.75.8 Tools/Demos ..................... - bpo-25440(1): Fix output of python-config –extension-suffix. @@ -96373,19 +89600,19 @@ File: python.info, Node: Tools/Demos<30>, Prev: Windows<48>, Up: Python 3 5 1  File: python.info, Node: Python 3 5 0 final, Next: Python 3 5 0 release candidate 4, Prev: Python 3 5 1 release candidate 1, Up: Changelog -1.19.73 Python 3.5.0 final +1.18.76 Python 3.5.0 final -------------------------- `Release date: 2015-09-13' * Menu: -* Build: Build<52>. +* Build: Build<49>.  -File: python.info, Node: Build<52>, Up: Python 3 5 0 final +File: python.info, Node: Build<49>, Up: Python 3 5 0 final -1.19.73.1 Build +1.18.76.1 Build ............... - bpo-25071(1): Windows installer should not require TargetDir @@ -96398,20 +89625,20 @@ File: python.info, Node: Build<52>, Up: Python 3 5 0 final  File: python.info, Node: Python 3 5 0 release candidate 4, Next: Python 3 5 0 release candidate 3, Prev: Python 3 5 0 final, Up: Changelog -1.19.74 Python 3.5.0 release candidate 4 +1.18.77 Python 3.5.0 release candidate 4 ---------------------------------------- `Release date: 2015-09-09' * Menu: -* Library: Library<74>. -* Build: Build<53>. +* Library: Library<77>. +* Build: Build<50>.  -File: python.info, Node: Library<74>, Next: Build<53>, Up: Python 3 5 0 release candidate 4 +File: python.info, Node: Library<77>, Next: Build<50>, Up: Python 3 5 0 release candidate 4 -1.19.74.1 Library +1.18.77.1 Library ................. - bpo-25029(1): Fixes MemoryError in test_strptime. @@ -96421,9 +89648,9 @@ File: python.info, Node: Library<74>, Next: Build<53>, Up: Python 3 5 0 relea (1) https://bugs.python.org/issue25029  -File: python.info, Node: Build<53>, Prev: Library<74>, Up: Python 3 5 0 release candidate 4 +File: python.info, Node: Build<50>, Prev: Library<77>, Up: Python 3 5 0 release candidate 4 -1.19.74.2 Build +1.18.77.2 Build ............... - bpo-25027(1): Reverts partial-static build options and adds @@ -96436,20 +89663,20 @@ File: python.info, Node: Build<53>, Prev: Library<74>, Up: Python 3 5 0 relea  File: python.info, Node: Python 3 5 0 release candidate 3, Next: Python 3 5 0 release candidate 2, Prev: Python 3 5 0 release candidate 4, Up: Changelog -1.19.75 Python 3.5.0 release candidate 3 +1.18.78 Python 3.5.0 release candidate 3 ---------------------------------------- `Release date: 2015-09-07' * Menu: -* Core and Builtins: Core and Builtins<59>. -* Library: Library<75>. +* Core and Builtins: Core and Builtins<64>. +* Library: Library<78>.  -File: python.info, Node: Core and Builtins<59>, Next: Library<75>, Up: Python 3 5 0 release candidate 3 +File: python.info, Node: Core and Builtins<64>, Next: Library<78>, Up: Python 3 5 0 release candidate 3 -1.19.75.1 Core and Builtins +1.18.78.1 Core and Builtins ........................... - bpo-24305(1): Prevent import subsystem stack frames from being @@ -96471,9 +89698,9 @@ File: python.info, Node: Core and Builtins<59>, Next: Library<75>, Up: Python (4) https://www.python.org/dev/peps/pep-0448  -File: python.info, Node: Library<75>, Prev: Core and Builtins<59>, Up: Python 3 5 0 release candidate 3 +File: python.info, Node: Library<78>, Prev: Core and Builtins<64>, Up: Python 3 5 0 release candidate 3 -1.19.75.2 Library +1.18.78.2 Library ................. - bpo-24917(1): time_strftime() buffer over-read. @@ -96508,20 +89735,20 @@ File: python.info, Node: Library<75>, Prev: Core and Builtins<59>, Up: Python  File: python.info, Node: Python 3 5 0 release candidate 2, Next: Python 3 5 0 release candidate 1, Prev: Python 3 5 0 release candidate 3, Up: Changelog -1.19.76 Python 3.5.0 release candidate 2 +1.18.79 Python 3.5.0 release candidate 2 ---------------------------------------- `Release date: 2015-08-25' * Menu: -* Core and Builtins: Core and Builtins<60>. -* Library: Library<76>. +* Core and Builtins: Core and Builtins<65>. +* Library: Library<79>.  -File: python.info, Node: Core and Builtins<60>, Next: Library<76>, Up: Python 3 5 0 release candidate 2 +File: python.info, Node: Core and Builtins<65>, Next: Library<79>, Up: Python 3 5 0 release candidate 2 -1.19.76.1 Core and Builtins +1.18.79.1 Core and Builtins ........................... - bpo-24769(1): Interpreter now starts properly when dynamic loading @@ -96543,9 +89770,9 @@ File: python.info, Node: Core and Builtins<60>, Next: Library<76>, Up: Python (3) https://bugs.python.org/issue24492  -File: python.info, Node: Library<76>, Prev: Core and Builtins<60>, Up: Python 3 5 0 release candidate 2 +File: python.info, Node: Library<79>, Prev: Core and Builtins<65>, Up: Python 3 5 0 release candidate 2 -1.19.76.2 Library +1.18.79.2 Library ................. - bpo-24847(1): Removes vcruntime140.dll dependency from Tcl/Tk. @@ -96565,23 +89792,23 @@ File: python.info, Node: Library<76>, Prev: Core and Builtins<60>, Up: Python  File: python.info, Node: Python 3 5 0 release candidate 1, Next: Python 3 5 0 beta 4, Prev: Python 3 5 0 release candidate 2, Up: Changelog -1.19.77 Python 3.5.0 release candidate 1 +1.18.80 Python 3.5.0 release candidate 1 ---------------------------------------- `Release date: 2015-08-09' * Menu: -* Core and Builtins: Core and Builtins<61>. -* Library: Library<77>. -* IDLE: IDLE<47>. -* Documentation: Documentation<47>. -* Tests: Tests<50>. +* Core and Builtins: Core and Builtins<66>. +* Library: Library<80>. +* IDLE: IDLE<51>. +* Documentation: Documentation<51>. +* Tests: Tests<49>.  -File: python.info, Node: Core and Builtins<61>, Next: Library<77>, Up: Python 3 5 0 release candidate 1 +File: python.info, Node: Core and Builtins<66>, Next: Library<80>, Up: Python 3 5 0 release candidate 1 -1.19.77.1 Core and Builtins +1.18.80.1 Core and Builtins ........................... - bpo-24667(1): Resize odict in all cases that the underlying dict @@ -96592,9 +89819,9 @@ File: python.info, Node: Core and Builtins<61>, Next: Library<77>, Up: Python (1) https://bugs.python.org/issue24667  -File: python.info, Node: Library<77>, Next: IDLE<47>, Prev: Core and Builtins<61>, Up: Python 3 5 0 release candidate 1 +File: python.info, Node: Library<80>, Next: IDLE<51>, Prev: Core and Builtins<66>, Up: Python 3 5 0 release candidate 1 -1.19.77.2 Library +1.18.80.2 Library ................. - bpo-24824(1): Signatures of codecs.encode() and codecs.decode() now @@ -96673,9 +89900,9 @@ File: python.info, Node: Library<77>, Next: IDLE<47>, Prev: Core and Builtins (15) https://bugs.python.org/issue24791  -File: python.info, Node: IDLE<47>, Next: Documentation<47>, Prev: Library<77>, Up: Python 3 5 0 release candidate 1 +File: python.info, Node: IDLE<51>, Next: Documentation<51>, Prev: Library<80>, Up: Python 3 5 0 release candidate 1 -1.19.77.3 IDLE +1.18.80.3 IDLE .............. - bpo-23672(1): Allow Idle to edit and run files with astral chars in @@ -96705,9 +89932,9 @@ File: python.info, Node: IDLE<47>, Next: Documentation<47>, Prev: Library<77> (4) https://bugs.python.org/issue13884  -File: python.info, Node: Documentation<47>, Next: Tests<50>, Prev: IDLE<47>, Up: Python 3 5 0 release candidate 1 +File: python.info, Node: Documentation<51>, Next: Tests<49>, Prev: IDLE<51>, Up: Python 3 5 0 release candidate 1 -1.19.77.4 Documentation +1.18.80.4 Documentation ....................... - bpo-24129(1): Clarify the reference documentation for name @@ -96735,9 +89962,9 @@ File: python.info, Node: Documentation<47>, Next: Tests<50>, Prev: IDLE<47>, (4) https://bugs.python.org/issue24729  -File: python.info, Node: Tests<50>, Prev: Documentation<47>, Up: Python 3 5 0 release candidate 1 +File: python.info, Node: Tests<49>, Prev: Documentation<51>, Up: Python 3 5 0 release candidate 1 -1.19.77.5 Tests +1.18.80.5 Tests ............... - bpo-24751(1): When running regrtest with the ‘-w’ command line @@ -96751,21 +89978,21 @@ File: python.info, Node: Tests<50>, Prev: Documentation<47>, Up: Python 3 5 0  File: python.info, Node: Python 3 5 0 beta 4, Next: Python 3 5 0 beta 3, Prev: Python 3 5 0 release candidate 1, Up: Changelog -1.19.78 Python 3.5.0 beta 4 +1.18.81 Python 3.5.0 beta 4 --------------------------- `Release date: 2015-07-26' * Menu: -* Core and Builtins: Core and Builtins<62>. -* Library: Library<78>. -* Build: Build<54>. +* Core and Builtins: Core and Builtins<67>. +* Library: Library<81>. +* Build: Build<51>.  -File: python.info, Node: Core and Builtins<62>, Next: Library<78>, Up: Python 3 5 0 beta 4 +File: python.info, Node: Core and Builtins<67>, Next: Library<81>, Up: Python 3 5 0 beta 4 -1.19.78.1 Core and Builtins +1.18.81.1 Core and Builtins ........................... - bpo-23573(1): Restored optimization of bytes.rfind() and @@ -96807,9 +90034,9 @@ File: python.info, Node: Core and Builtins<62>, Next: Library<78>, Up: Python (8) https://bugs.python.org/issue15944  -File: python.info, Node: Library<78>, Next: Build<54>, Prev: Core and Builtins<62>, Up: Python 3 5 0 beta 4 +File: python.info, Node: Library<81>, Next: Build<51>, Prev: Core and Builtins<67>, Up: Python 3 5 0 beta 4 -1.19.78.2 Library +1.18.81.2 Library ................. - bpo-23441(1): rcompleter now prints a tab character instead of @@ -96834,7 +90061,7 @@ File: python.info, Node: Library<78>, Next: Build<54>, Prev: Core and Builtin last element. - bpo-22485(7): Fixed an issue that caused *note inspect.getsource: - f9d. to return incorrect results on nested functions. + eb0. to return incorrect results on nested functions. - bpo-22153(8): Improve unittest docs. Patch from Martin Panter and evilzero. @@ -96912,9 +90139,9 @@ File: python.info, Node: Library<78>, Next: Build<54>, Prev: Core and Builtin (19) https://bugs.python.org/issue24688  -File: python.info, Node: Build<54>, Prev: Library<78>, Up: Python 3 5 0 beta 4 +File: python.info, Node: Build<51>, Prev: Library<81>, Up: Python 3 5 0 beta 4 -1.19.78.3 Build +1.18.81.3 Build ............... - bpo-24603(1): Update Windows builds and OS X 10.5 installer to use @@ -96927,23 +90154,23 @@ File: python.info, Node: Build<54>, Prev: Library<78>, Up: Python 3 5 0 beta  File: python.info, Node: Python 3 5 0 beta 3, Next: Python 3 5 0 beta 2, Prev: Python 3 5 0 beta 4, Up: Changelog -1.19.79 Python 3.5.0 beta 3 +1.18.82 Python 3.5.0 beta 3 --------------------------- `Release date: 2015-07-05' * Menu: -* Core and Builtins: Core and Builtins<63>. -* Library: Library<79>. -* Tests: Tests<51>. -* Documentation: Documentation<48>. -* Build: Build<55>. +* Core and Builtins: Core and Builtins<68>. +* Library: Library<82>. +* Tests: Tests<50>. +* Documentation: Documentation<52>. +* Build: Build<52>.  -File: python.info, Node: Core and Builtins<63>, Next: Library<79>, Up: Python 3 5 0 beta 3 +File: python.info, Node: Core and Builtins<68>, Next: Library<82>, Up: Python 3 5 0 beta 3 -1.19.79.1 Core and Builtins +1.18.82.1 Core and Builtins ........................... - bpo-24467(1): Fixed possible buffer over-read in bytearray. The @@ -96987,9 +90214,9 @@ File: python.info, Node: Core and Builtins<63>, Next: Library<79>, Up: Python (6) https://bugs.python.org/issue19235  -File: python.info, Node: Library<79>, Next: Tests<51>, Prev: Core and Builtins<63>, Up: Python 3 5 0 beta 3 +File: python.info, Node: Library<82>, Next: Tests<50>, Prev: Core and Builtins<68>, Up: Python 3 5 0 beta 3 -1.19.79.2 Library +1.18.82.2 Library ................. - bpo-21750(1): mock_open.read_data can now be read from each @@ -97083,9 +90310,9 @@ File: python.info, Node: Library<79>, Next: Tests<51>, Prev: Core and Builtin (18) https://bugs.python.org/issue24369  -File: python.info, Node: Tests<51>, Next: Documentation<48>, Prev: Library<79>, Up: Python 3 5 0 beta 3 +File: python.info, Node: Tests<50>, Next: Documentation<52>, Prev: Library<82>, Up: Python 3 5 0 beta 3 -1.19.79.3 Tests +1.18.82.3 Tests ............... - bpo-24373(1): _testmultiphase and xxlimited now use tp_traverse and @@ -97099,9 +90326,9 @@ File: python.info, Node: Tests<51>, Next: Documentation<48>, Prev: Library<79 (2) https://bugs.python.org/issue16690  -File: python.info, Node: Documentation<48>, Next: Build<55>, Prev: Tests<51>, Up: Python 3 5 0 beta 3 +File: python.info, Node: Documentation<52>, Next: Build<52>, Prev: Tests<50>, Up: Python 3 5 0 beta 3 -1.19.79.4 Documentation +1.18.82.4 Documentation ....................... - bpo-24458(1): Update documentation to cover multi-phase @@ -97118,9 +90345,9 @@ File: python.info, Node: Documentation<48>, Next: Build<55>, Prev: Tests<51>, (2) https://bugs.python.org/issue24351  -File: python.info, Node: Build<55>, Prev: Documentation<48>, Up: Python 3 5 0 beta 3 +File: python.info, Node: Build<52>, Prev: Documentation<52>, Up: Python 3 5 0 beta 3 -1.19.79.5 Build +1.18.82.5 Build ............... - bpo-24432(1): Update Windows builds and OS X 10.5 installer to use @@ -97133,20 +90360,20 @@ File: python.info, Node: Build<55>, Prev: Documentation<48>, Up: Python 3 5 0  File: python.info, Node: Python 3 5 0 beta 2, Next: Python 3 5 0 beta 1, Prev: Python 3 5 0 beta 3, Up: Changelog -1.19.80 Python 3.5.0 beta 2 +1.18.83 Python 3.5.0 beta 2 --------------------------- `Release date: 2015-05-31' * Menu: -* Core and Builtins: Core and Builtins<64>. -* Library: Library<80>. +* Core and Builtins: Core and Builtins<69>. +* Library: Library<83>.  -File: python.info, Node: Core and Builtins<64>, Next: Library<80>, Up: Python 3 5 0 beta 2 +File: python.info, Node: Core and Builtins<69>, Next: Library<83>, Up: Python 3 5 0 beta 2 -1.19.80.1 Core and Builtins +1.18.83.1 Core and Builtins ........................... - bpo-24284(1): The startswith and endswith methods of the str class @@ -97178,9 +90405,9 @@ File: python.info, Node: Core and Builtins<64>, Next: Library<80>, Up: Python (5) https://bugs.python.org/issue24285  -File: python.info, Node: Library<80>, Prev: Core and Builtins<64>, Up: Python 3 5 0 beta 2 +File: python.info, Node: Library<83>, Prev: Core and Builtins<69>, Up: Python 3 5 0 beta 2 -1.19.80.2 Library +1.18.83.2 Library ................. - bpo-23247(1): Fix a crash in the StreamWriter.reset() of CJK @@ -97220,24 +90447,24 @@ File: python.info, Node: Library<80>, Prev: Core and Builtins<64>, Up: Python  File: python.info, Node: Python 3 5 0 beta 1, Next: Python 3 5 0 alpha 4, Prev: Python 3 5 0 beta 2, Up: Changelog -1.19.81 Python 3.5.0 beta 1 +1.18.84 Python 3.5.0 beta 1 --------------------------- `Release date: 2015-05-24' * Menu: -* Core and Builtins: Core and Builtins<65>. -* Library: Library<81>. -* IDLE: IDLE<48>. -* Tests: Tests<52>. -* Documentation: Documentation<49>. -* Tools/Demos: Tools/Demos<31>. +* Core and Builtins: Core and Builtins<70>. +* Library: Library<84>. +* IDLE: IDLE<52>. +* Tests: Tests<51>. +* Documentation: Documentation<53>. +* Tools/Demos: Tools/Demos<33>.  -File: python.info, Node: Core and Builtins<65>, Next: Library<81>, Up: Python 3 5 0 beta 1 +File: python.info, Node: Core and Builtins<70>, Next: Library<84>, Up: Python 3 5 0 beta 1 -1.19.81.1 Core and Builtins +1.18.84.1 Core and Builtins ........................... - bpo-24276(1): Fixed optimization of property descriptor getter. @@ -97334,9 +90561,9 @@ File: python.info, Node: Core and Builtins<65>, Next: Library<81>, Up: Python (19) https://bugs.python.org/issue24017  -File: python.info, Node: Library<81>, Next: IDLE<48>, Prev: Core and Builtins<65>, Up: Python 3 5 0 beta 1 +File: python.info, Node: Library<84>, Next: IDLE<52>, Prev: Core and Builtins<70>, Up: Python 3 5 0 beta 1 -1.19.81.2 Library +1.18.84.2 Library ................. - bpo-14373(1): Added C implementation of functools.lru_cache(). @@ -97647,9 +90874,9 @@ File: python.info, Node: Library<81>, Next: IDLE<48>, Prev: Core and Builtins (56) https://bugs.python.org/issue24298  -File: python.info, Node: IDLE<48>, Next: Tests<52>, Prev: Library<81>, Up: Python 3 5 0 beta 1 +File: python.info, Node: IDLE<52>, Next: Tests<51>, Prev: Library<84>, Up: Python 3 5 0 beta 1 -1.19.81.3 IDLE +1.18.84.3 IDLE .............. - bpo-23184(1): remove unused names and imports in idlelib. Initial @@ -97660,9 +90887,9 @@ File: python.info, Node: IDLE<48>, Next: Tests<52>, Prev: Library<81>, Up: P (1) https://bugs.python.org/issue23184  -File: python.info, Node: Tests<52>, Next: Documentation<49>, Prev: IDLE<48>, Up: Python 3 5 0 beta 1 +File: python.info, Node: Tests<51>, Next: Documentation<53>, Prev: IDLE<52>, Up: Python 3 5 0 beta 1 -1.19.81.4 Tests +1.18.84.4 Tests ............... - bpo-21520(1): test_zipfile no longer fails if the word ‘bad’ @@ -97678,9 +90905,9 @@ File: python.info, Node: Tests<52>, Next: Documentation<49>, Prev: IDLE<48>, (2) https://bugs.python.org/issue9517  -File: python.info, Node: Documentation<49>, Next: Tools/Demos<31>, Prev: Tests<52>, Up: Python 3 5 0 beta 1 +File: python.info, Node: Documentation<53>, Next: Tools/Demos<33>, Prev: Tests<51>, Up: Python 3 5 0 beta 1 -1.19.81.5 Documentation +1.18.84.5 Documentation ....................... - bpo-22155(1): Add File Handlers subsection with createfilehandler @@ -97702,9 +90929,9 @@ File: python.info, Node: Documentation<49>, Next: Tools/Demos<31>, Prev: Test (3) https://bugs.python.org/issue24077  -File: python.info, Node: Tools/Demos<31>, Prev: Documentation<49>, Up: Python 3 5 0 beta 1 +File: python.info, Node: Tools/Demos<33>, Prev: Documentation<53>, Up: Python 3 5 0 beta 1 -1.19.81.6 Tools/Demos +1.18.84.6 Tools/Demos ..................... - bpo-24000(1): Improved Argument Clinic’s mapping of converters to @@ -97731,24 +90958,24 @@ File: python.info, Node: Tools/Demos<31>, Prev: Documentation<49>, Up: Python  File: python.info, Node: Python 3 5 0 alpha 4, Next: Python 3 5 0 alpha 3, Prev: Python 3 5 0 beta 1, Up: Changelog -1.19.82 Python 3.5.0 alpha 4 +1.18.85 Python 3.5.0 alpha 4 ---------------------------- `Release date: 2015-04-19' * Menu: -* Core and Builtins: Core and Builtins<66>. -* Library: Library<82>. -* Build: Build<56>. -* Tests: Tests<53>. -* Tools/Demos: Tools/Demos<32>. -* C API: C API<39>. +* Core and Builtins: Core and Builtins<71>. +* Library: Library<85>. +* Build: Build<53>. +* Tests: Tests<52>. +* Tools/Demos: Tools/Demos<34>. +* C API: C API<36>.  -File: python.info, Node: Core and Builtins<66>, Next: Library<82>, Up: Python 3 5 0 alpha 4 +File: python.info, Node: Core and Builtins<71>, Next: Library<85>, Up: Python 3 5 0 alpha 4 -1.19.82.1 Core and Builtins +1.18.85.1 Core and Builtins ........................... - bpo-22980(1): Under Linux, GNU/KFreeBSD and the Hurd, C extensions @@ -97807,9 +91034,9 @@ File: python.info, Node: Core and Builtins<66>, Next: Library<82>, Up: Python (11) https://bugs.python.org/issue21354  -File: python.info, Node: Library<82>, Next: Build<56>, Prev: Core and Builtins<66>, Up: Python 3 5 0 alpha 4 +File: python.info, Node: Library<85>, Next: Build<53>, Prev: Core and Builtins<71>, Up: Python 3 5 0 alpha 4 -1.19.82.2 Library +1.18.85.2 Library ................. - bpo-23840(1): tokenize.open() now closes the temporary binary file @@ -97846,7 +91073,7 @@ File: python.info, Node: Library<82>, Next: Build<56>, Prev: Core and Builtin - bpo-24521(11): Fix possible integer overflows in the pickle module. - - bpo-22931(12): Allow ‘[’ and ‘]’ in cookie values. + - bpo-22931(12): Allow ‘[‘ and ‘]’ in cookie values. - The keywords attribute of functools.partial is now always a dictionary. @@ -97889,7 +91116,7 @@ File: python.info, Node: Library<82>, Next: Build<56>, Prev: Core and Builtin - bpo-23881(23): urllib.request.ftpwrapper constructor now closes the socket if the FTP connection failed to fix a ResourceWarning. - - bpo-23853(24): *note socket.socket.sendall(): 770. does no more + - bpo-23853(24): *note socket.socket.sendall(): 664. does no more reset the socket timeout each time data is sent successfully. The socket timeout is now the maximum total duration to send all data. @@ -97918,12 +91145,12 @@ File: python.info, Node: Library<82>, Next: Build<56>, Prev: Core and Builtin - bpo-23834(32): Fix socket.sendto(), use the C Py_ssize_t type to store the result of sendto() instead of the C int type. - - bpo-23618(33): *note socket.socket.connect(): 76b. now waits until + - bpo-23618(33): *note socket.socket.connect(): 65f. now waits until the connection completes instead of raising *note InterruptedError: - 74e. if the connection is interrupted by signals, signal handlers + 642. if the connection is interrupted by signals, signal handlers don’t raise an exception and the socket is blocking or has a - timeout. *note socket.socket.connect(): 76b. still raise *note - InterruptedError: 74e. for non-blocking sockets. + timeout. *note socket.socket.connect(): 65f. still raise *note + InterruptedError: 642. for non-blocking sockets. - bpo-21526(34): Tkinter now supports new boolean type in Tcl 8.5. @@ -98071,9 +91298,9 @@ File: python.info, Node: Library<82>, Next: Build<56>, Prev: Core and Builtin (48) https://bugs.python.org/issue23310  -File: python.info, Node: Build<56>, Next: Tests<53>, Prev: Library<82>, Up: Python 3 5 0 alpha 4 +File: python.info, Node: Build<53>, Next: Tests<52>, Prev: Library<85>, Up: Python 3 5 0 alpha 4 -1.19.82.3 Build +1.18.85.3 Build ............... - bpo-23817(1): FreeBSD now uses “1.0” in the SOVERSION as other @@ -98089,9 +91316,9 @@ File: python.info, Node: Build<56>, Next: Tests<53>, Prev: Library<82>, Up: (2) https://bugs.python.org/issue23501  -File: python.info, Node: Tests<53>, Next: Tools/Demos<32>, Prev: Build<56>, Up: Python 3 5 0 alpha 4 +File: python.info, Node: Tests<52>, Next: Tools/Demos<34>, Prev: Build<53>, Up: Python 3 5 0 alpha 4 -1.19.82.4 Tests +1.18.85.4 Tests ............... - bpo-23799(1): Added test.support.start_threads() for running and @@ -98107,9 +91334,9 @@ File: python.info, Node: Tests<53>, Next: Tools/Demos<32>, Prev: Build<56>, (2) https://bugs.python.org/issue22390  -File: python.info, Node: Tools/Demos<32>, Next: C API<39>, Prev: Tests<53>, Up: Python 3 5 0 alpha 4 +File: python.info, Node: Tools/Demos<34>, Next: C API<36>, Prev: Tests<52>, Up: Python 3 5 0 alpha 4 -1.19.82.5 Tools/Demos +1.18.85.5 Tools/Demos ..................... - bpo-18128(1): pygettext now uses standard +NNNN format in the @@ -98149,9 +91376,9 @@ File: python.info, Node: Tools/Demos<32>, Next: C API<39>, Prev: Tests<53>, (6) https://bugs.python.org/issue23500  -File: python.info, Node: C API<39>, Prev: Tools/Demos<32>, Up: Python 3 5 0 alpha 4 +File: python.info, Node: C API<36>, Prev: Tools/Demos<34>, Up: Python 3 5 0 alpha 4 -1.19.82.6 C API +1.18.85.6 C API ............... - bpo-23998(1): PyImport_ReInitLock() now checks for lock allocation @@ -98164,23 +91391,23 @@ File: python.info, Node: C API<39>, Prev: Tools/Demos<32>, Up: Python 3 5 0 a  File: python.info, Node: Python 3 5 0 alpha 3, Next: Python 3 5 0 alpha 2, Prev: Python 3 5 0 alpha 4, Up: Changelog -1.19.83 Python 3.5.0 alpha 3 +1.18.86 Python 3.5.0 alpha 3 ---------------------------- `Release date: 2015-03-28' * Menu: -* Core and Builtins: Core and Builtins<67>. -* Library: Library<83>. -* Build: Build<57>. -* Tests: Tests<54>. -* Tools/Demos: Tools/Demos<33>. +* Core and Builtins: Core and Builtins<72>. +* Library: Library<86>. +* Build: Build<54>. +* Tests: Tests<53>. +* Tools/Demos: Tools/Demos<35>.  -File: python.info, Node: Core and Builtins<67>, Next: Library<83>, Up: Python 3 5 0 alpha 3 +File: python.info, Node: Core and Builtins<72>, Next: Library<86>, Up: Python 3 5 0 alpha 3 -1.19.83.1 Core and Builtins +1.18.86.1 Core and Builtins ........................... - bpo-23573(1): Increased performance of string search operations @@ -98217,9 +91444,9 @@ File: python.info, Node: Core and Builtins<67>, Next: Library<83>, Up: Python (6) https://bugs.python.org/issue23629  -File: python.info, Node: Library<83>, Next: Build<57>, Prev: Core and Builtins<67>, Up: Python 3 5 0 alpha 3 +File: python.info, Node: Library<86>, Next: Build<54>, Prev: Core and Builtins<72>, Up: Python 3 5 0 alpha 3 -1.19.83.2 Library +1.18.86.2 Library ................. - bpo-14260(1): The groupindex attribute of regular expression @@ -98297,8 +91524,8 @@ File: python.info, Node: Library<83>, Next: Build<57>, Prev: Core and Builtin as a MutableSequence and it improves their substitutability for lists. - - bpo-23715(23): *note signal.sigwaitinfo(): 774. and *note - signal.sigtimedwait(): 773. are now retried when interrupted by a + - bpo-23715(23): *note signal.sigwaitinfo(): 668. and *note + signal.sigtimedwait(): 667. 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. @@ -98458,9 +91685,9 @@ File: python.info, Node: Library<83>, Next: Build<57>, Prev: Core and Builtin (42) https://bugs.python.org/issue23605  -File: python.info, Node: Build<57>, Next: Tests<54>, Prev: Library<83>, Up: Python 3 5 0 alpha 3 +File: python.info, Node: Build<54>, Next: Tests<53>, Prev: Library<86>, Up: Python 3 5 0 alpha 3 -1.19.83.3 Build +1.18.86.3 Build ............... - bpo-23585(1): make patchcheck will ensure the interpreter is built. @@ -98470,9 +91697,9 @@ File: python.info, Node: Build<57>, Next: Tests<54>, Prev: Library<83>, Up: (1) https://bugs.python.org/issue23585  -File: python.info, Node: Tests<54>, Next: Tools/Demos<33>, Prev: Build<57>, Up: Python 3 5 0 alpha 3 +File: python.info, Node: Tests<53>, Next: Tools/Demos<35>, Prev: Build<54>, Up: Python 3 5 0 alpha 3 -1.19.83.4 Tests +1.18.86.4 Tests ............... - bpo-23583(1): Added tests for standard IO streams in IDLE. @@ -98487,9 +91714,9 @@ File: python.info, Node: Tests<54>, Next: Tools/Demos<33>, Prev: Build<57>, (2) https://bugs.python.org/issue22289  -File: python.info, Node: Tools/Demos<33>, Prev: Tests<54>, Up: Python 3 5 0 alpha 3 +File: python.info, Node: Tools/Demos<35>, Prev: Tests<53>, Up: Python 3 5 0 alpha 3 -1.19.83.5 Tools/Demos +1.18.86.5 Tools/Demos ..................... - bpo-22826(1): The result of open() in Tools/freeze/bkfile.py is now @@ -98503,23 +91730,23 @@ File: python.info, Node: Tools/Demos<33>, Prev: Tests<54>, Up: Python 3 5 0 a  File: python.info, Node: Python 3 5 0 alpha 2, Next: Python 3 5 0 alpha 1, Prev: Python 3 5 0 alpha 3, Up: Changelog -1.19.84 Python 3.5.0 alpha 2 +1.18.87 Python 3.5.0 alpha 2 ---------------------------- `Release date: 2015-03-09' * Menu: -* Core and Builtins: Core and Builtins<68>. -* Library: Library<84>. -* Build: Build<58>. -* C API: C API<40>. -* Windows: Windows<49>. +* Core and Builtins: Core and Builtins<73>. +* Library: Library<87>. +* Build: Build<55>. +* C API: C API<37>. +* Windows: Windows<51>.  -File: python.info, Node: Core and Builtins<68>, Next: Library<84>, Up: Python 3 5 0 alpha 2 +File: python.info, Node: Core and Builtins<73>, Next: Library<87>, Up: Python 3 5 0 alpha 2 -1.19.84.1 Core and Builtins +1.18.87.1 Core and Builtins ........................... - bpo-23571(1): PyObject_Call() and PyCFunction_Call() now raise a @@ -98531,9 +91758,9 @@ File: python.info, Node: Core and Builtins<68>, Next: Library<84>, Up: Python (1) https://bugs.python.org/issue23571  -File: python.info, Node: Library<84>, Next: Build<58>, Prev: Core and Builtins<68>, Up: Python 3 5 0 alpha 2 +File: python.info, Node: Library<87>, Next: Build<55>, Prev: Core and Builtins<73>, Up: Python 3 5 0 alpha 2 -1.19.84.2 Library +1.18.87.2 Library ................. - bpo-22524(1): New os.scandir() function, part of the PEP 471(2): @@ -98722,9 +91949,9 @@ File: python.info, Node: Library<84>, Next: Build<58>, Prev: Core and Builtin (37) https://bugs.python.org/issue23801  -File: python.info, Node: Build<58>, Next: C API<40>, Prev: Library<84>, Up: Python 3 5 0 alpha 2 +File: python.info, Node: Build<55>, Next: C API<37>, Prev: Library<87>, Up: Python 3 5 0 alpha 2 -1.19.84.3 Build +1.18.87.3 Build ............... - bpo-23445(1): pydebug builds now use “gcc -Og” where possible, to @@ -98740,9 +91967,9 @@ File: python.info, Node: Build<58>, Next: C API<40>, Prev: Library<84>, Up: (2) https://bugs.python.org/issue23686  -File: python.info, Node: C API<40>, Next: Windows<49>, Prev: Build<58>, Up: Python 3 5 0 alpha 2 +File: python.info, Node: C API<37>, Next: Windows<51>, Prev: Build<55>, Up: Python 3 5 0 alpha 2 -1.19.84.4 C API +1.18.87.4 C API ............... - bpo-20204(1): Deprecation warning is now raised for builtin types @@ -98753,9 +91980,9 @@ File: python.info, Node: C API<40>, Next: Windows<49>, Prev: Build<58>, Up: (1) https://bugs.python.org/issue20204  -File: python.info, Node: Windows<49>, Prev: C API<40>, Up: Python 3 5 0 alpha 2 +File: python.info, Node: Windows<51>, Prev: C API<37>, Up: Python 3 5 0 alpha 2 -1.19.84.5 Windows +1.18.87.5 Windows ................. - bpo-23465(1): Implement PEP 486(2) - Make the Python Launcher aware @@ -98775,27 +92002,27 @@ File: python.info, Node: Windows<49>, Prev: C API<40>, Up: Python 3 5 0 alpha  File: python.info, Node: Python 3 5 0 alpha 1, Prev: Python 3 5 0 alpha 2, Up: Changelog -1.19.85 Python 3.5.0 alpha 1 +1.18.88 Python 3.5.0 alpha 1 ---------------------------- `Release date: 2015-02-08' * Menu: -* Core and Builtins: Core and Builtins<69>. -* Library: Library<85>. -* IDLE: IDLE<49>. -* Build: Build<59>. -* C API: C API<41>. -* Documentation: Documentation<50>. -* Tests: Tests<55>. -* Tools/Demos: Tools/Demos<34>. -* Windows: Windows<50>. +* Core and Builtins: Core and Builtins<74>. +* Library: Library<88>. +* IDLE: IDLE<53>. +* Build: Build<56>. +* C API: C API<38>. +* Documentation: Documentation<54>. +* Tests: Tests<54>. +* Tools/Demos: Tools/Demos<36>. +* Windows: Windows<52>.  -File: python.info, Node: Core and Builtins<69>, Next: Library<85>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Core and Builtins<74>, Next: Library<88>, Up: Python 3 5 0 alpha 1 -1.19.85.1 Core and Builtins +1.18.88.1 Core and Builtins ........................... - bpo-23285(1): PEP 475 - EINTR handling. @@ -98880,7 +92107,7 @@ File: python.info, Node: Core and Builtins<69>, Next: Library<85>, Up: Python - bpo-22540(27): speed up ‘PyObject_IsInstance’ and ‘PyObject_IsSubclass’ in the common case that the second argument - has metaclass *note type: 701. + has metaclass *note type: 5f5. - bpo-18711(28): Add a new ‘PyErr_FormatV’ function, similar to ‘PyErr_Format’ but accepting a ‘va_list’ argument. @@ -99186,9 +92413,9 @@ File: python.info, Node: Core and Builtins<69>, Next: Library<85>, Up: Python (73) https://bugs.python.org/issue23165  -File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins<69>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Library<88>, Next: IDLE<53>, Prev: Core and Builtins<74>, Up: Python 3 5 0 alpha 1 -1.19.85.2 Library +1.18.88.2 Library ................. - bpo-23399(1): pyvenv creates relative symlinks where possible. @@ -99374,7 +92601,7 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins prefer the context’s check_hostname attribute over the `check_hostname' parameter. - - bpo-22696(59): Add function *note sys.is_finalizing(): 853. to know + - bpo-22696(59): Add function *note sys.is_finalizing(): 749. to know about interpreter shutdown. - bpo-16043(60): Add a default limit for the amount of data @@ -99748,7 +92975,7 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins main(), which is called each time a demo is run, but not on import. - bpo-21933(174): Turtledemo users can change the code font size with - a menu selection or control(command) ‘-’ or ‘+’ or + a menu selection or control(command) ‘-‘ or ‘+’ or control-mousewheel. Original patch by Lita Cho. - bpo-21597(175): The separator between the turtledemo text pane and @@ -99862,7 +93089,7 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins - bpo-20170(205): Convert posixmodule to use Argument Clinic. - bpo-21539(206): Add an `exists_ok' argument to ‘Pathlib.mkdir()’ to - mimic ‘mkdir -p’ and *note os.makedirs(): 4c6. functionality. When + mimic ‘mkdir -p’ and *note os.makedirs(): 3ae. functionality. When true, ignore FileExistsErrors. Patch by Berker Peksag. - bpo-22127(207): Bypass IDNA for pure-ASCII host names in the socket @@ -99963,7 +93190,7 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins bad category. Initial patch by Phil Elson. - bpo-21932(234): os.read() now uses a ‘Py_ssize_t()’ type instead of - ‘int’ for the size to support reading more than 2 GB at once. On + int for the size to support reading more than 2 GB at once. On Windows, the size is truncated to INT_MAX. As any call to os.read(), the OS may read less bytes than the number of requested bytes. @@ -100270,7 +93497,7 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins AssertionError if the mock has been called. - bpo-21238(326): New keyword argument ‘unsafe’ to Mock. It raises - *note AttributeError: 4a4. incase of an attribute startswith assert + *note AttributeError: 38c. incase of an attribute startswith assert or assret. - bpo-20896(327): ssl.get_server_certificate() now uses @@ -100342,8 +93569,8 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins interpreter shutdown. Thanks to Devin Jeanpierre for the patch. - bpo-21058(348): Fix a leak of file descriptor in *note - tempfile.NamedTemporaryFile(): e10, close the file descriptor if - *note io.open(): 74f. fails + tempfile.NamedTemporaryFile(): d1f, close the file descriptor if + *note io.open(): 643. fails - bpo-21200(349): Return None from pkgutil.get_loader() when __spec__ is missing. @@ -100391,7 +93618,7 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins Patch by Giampaolo Rodola’. - bpo-19977(365): When the ‘LC_TYPE’ locale is the POSIX locale (‘C’ - locale), *note sys.stdin: 420. and *note sys.stdout: 421. are now + locale), *note sys.stdin: 301. and *note sys.stdout: 302. are now using the ‘surrogateescape’ error handler, instead of the ‘strict’ error handler. @@ -101296,9 +94523,9 @@ File: python.info, Node: Library<85>, Next: IDLE<49>, Prev: Core and Builtins (396) https://bugs.python.org/issue23302  -File: python.info, Node: IDLE<49>, Next: Build<59>, Prev: Library<85>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: IDLE<53>, Next: Build<56>, Prev: Library<88>, Up: Python 3 5 0 alpha 1 -1.19.85.3 IDLE +1.18.88.3 IDLE .............. - bpo-20577(1): Configuration of the max line length for the @@ -101443,9 +94670,9 @@ File: python.info, Node: IDLE<49>, Next: Build<59>, Prev: Library<85>, Up: P (26) https://bugs.python.org/issue23180  -File: python.info, Node: Build<59>, Next: C API<41>, Prev: IDLE<49>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Build<56>, Next: C API<38>, Prev: IDLE<53>, Up: Python 3 5 0 alpha 1 -1.19.85.4 Build +1.18.88.4 Build ............... - bpo-15506(1): Use standard PKG_PROG_PKG_CONFIG autoconf macro in @@ -101496,9 +94723,9 @@ File: python.info, Node: Build<59>, Next: C API<41>, Prev: IDLE<49>, Up: Pyt - bpo-21285(13): Refactor and fix curses configure check to always search in a ncursesw directory. - - bpo-15234(14): For BerkeleyDB and Sqlite, only add the found - library and include directories if they aren’t already being - searched. This avoids an explicit runtime library dependency. + - bpo-15234(14): For BerkelyDB and Sqlite, only add the found library + and include directories if they aren’t already being searched. + This avoids an explicit runtime library dependency. - bpo-17861(15): Tools/scripts/generate_opcode_h.py automatically regenerates Include/opcode.h from Lib/opcode.py if the latter gets @@ -101589,9 +94816,9 @@ File: python.info, Node: Build<59>, Next: C API<41>, Prev: IDLE<49>, Up: Pyt (26) https://bugs.python.org/issue17128  -File: python.info, Node: C API<41>, Next: Documentation<50>, Prev: Build<59>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: C API<38>, Next: Documentation<54>, Prev: Build<56>, Up: Python 3 5 0 alpha 1 -1.19.85.5 C API +1.18.88.5 C API ............... - bpo-14203(1): Remove obsolete support for view==NULL in @@ -101610,7 +94837,7 @@ File: python.info, Node: C API<41>, Next: Documentation<50>, Prev: Build<59>, - bpo-22453(4): Removed non-documented macro PyObject_REPR(). - bpo-18395(5): Rename ‘_Py_char2wchar()’ to *note Py_DecodeLocale(): - 541, rename ‘_Py_wchar2char()’ to *note Py_EncodeLocale(): 542, and + 42c, rename ‘_Py_wchar2char()’ to *note Py_EncodeLocale(): 42d, and document these functions. - bpo-21233(6): Add new C functions: PyMem_RawCalloc(), @@ -101640,9 +94867,9 @@ File: python.info, Node: C API<41>, Next: Documentation<50>, Prev: Build<59>, (7) https://bugs.python.org/issue20942  -File: python.info, Node: Documentation<50>, Next: Tests<55>, Prev: C API<41>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Documentation<54>, Next: Tests<54>, Prev: C API<38>, Up: Python 3 5 0 alpha 1 -1.19.85.6 Documentation +1.18.88.6 Documentation ....................... - bpo-19548(1): Update the codecs module documentation to better @@ -101709,9 +94936,9 @@ File: python.info, Node: Documentation<50>, Next: Tests<55>, Prev: C API<41>, (11) https://bugs.python.org/issue19697  -File: python.info, Node: Tests<55>, Next: Tools/Demos<34>, Prev: Documentation<50>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Tests<54>, Next: Tools/Demos<36>, Prev: Documentation<54>, Up: Python 3 5 0 alpha 1 -1.19.85.7 Tests +1.18.88.7 Tests ............... - bpo-18982(1): Add tests for CLI of the calendar module. @@ -101903,9 +95130,9 @@ File: python.info, Node: Tests<55>, Next: Tools/Demos<34>, Prev: Documentatio (37) https://bugs.python.org/issue23345  -File: python.info, Node: Tools/Demos<34>, Next: Windows<50>, Prev: Tests<55>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Tools/Demos<36>, Next: Windows<52>, Prev: Tests<54>, Up: Python 3 5 0 alpha 1 -1.19.85.8 Tools/Demos +1.18.88.8 Tools/Demos ..................... - bpo-22314(1): pydoc now works when the LINES environment variable @@ -101981,9 +95208,9 @@ File: python.info, Node: Tools/Demos<34>, Next: Windows<50>, Prev: Tests<55>, (13) https://bugs.python.org/issue20535  -File: python.info, Node: Windows<50>, Prev: Tools/Demos<34>, Up: Python 3 5 0 alpha 1 +File: python.info, Node: Windows<52>, Prev: Tools/Demos<36>, Up: Python 3 5 0 alpha 1 -1.19.85.9 Windows +1.18.88.9 Windows ................. - bpo-23260(1): Update Windows installer @@ -102063,10 +95290,10 @@ interpreter handy for hands-on experience, but all examples are self-contained, so the tutorial can be read off-line as well. For a description of standard objects and modules, see *note The Python -Standard Library: 12f3. *note The Python Language Reference: 12f4. +Standard Library: 11d6. *note The Python Language Reference: 11d7. gives a more formal definition of the language. To write extensions in C or C++, read *note Extending and Embedding the Python Interpreter: -12f5. and *note Python/C API Reference Manual: 12f6. There are also +11d8. and *note Python/C API Reference Manual: 11d9. There are also several books covering Python in depth. This tutorial does not attempt to be comprehensive and cover every @@ -102075,9 +95302,9 @@ introduces many of Python’s most noteworthy features, and will give you a good idea of the language’s flavor and style. After reading it, you will be able to read and write Python modules and programs, and you will be ready to learn more about the various Python library modules -described in *note The Python Standard Library: 12f3. +described in *note The Python Standard Library: 11d6. -The *note Glossary: 12f7. is also worth going through. +The *note Glossary: 11da. is also worth going through. * Menu: @@ -102210,11 +95437,11 @@ File: python.info, Node: Invoking the Interpreter, Next: The Interpreter and I ------------------------------ The Python interpreter is usually installed as -‘/usr/local/bin/python3.9’ on those machines where it is available; +‘/usr/local/bin/python3.8’ on those machines where it is available; putting ‘/usr/local/bin’ in your Unix shell’s search path makes it possible to start it by typing the command: - python3.9 + python3.8 to the shell. (1) Since the choice of the directory where the interpreter lives is an installation option, other places are possible; @@ -102222,9 +95449,9 @@ check with your local Python guru or system administrator. (E.g., ‘/usr/local/python’ is a popular alternative location.) On Windows machines where you have installed Python from the *note -Microsoft Store: 1300, the ‘python3.9’ command will be available. If -you have the *note py.exe launcher: a72. installed, you can use the ‘py’ -command. See *note Excursus; Setting environment variables: 1301. for +Microsoft Store: 11e3, the ‘python3.8’ command will be available. If +you have the *note py.exe launcher: 970. installed, you can use the ‘py’ +command. See *note Excursus; Setting environment variables: 11e4. for other ways to launch Python. Typing an end-of-file character (‘Control-D’ on Unix, ‘Control-Z’ on @@ -102237,7 +95464,7 @@ history substitution and code completion on systems that support the GNU Readline(2) library. Perhaps the quickest check to see whether command line editing is supported is typing ‘Control-P’ to the first Python prompt you get. If it beeps, you have command line editing; see -Appendix *note Interactive Input Editing and History Substitution: 1302. +Appendix *note Interactive Input Editing and History Substitution: 11e5. for an introduction to the keys. If nothing appears to happen, or if ‘^P’ is echoed, command line editing isn’t available; you’ll only be able to use backspace to remove characters from the current line. @@ -102249,7 +95476,7 @@ standard input, it reads and executes a `script' from that file. A second way of starting the interpreter is ‘python -c command [arg] ...’, which executes the statement(s) in `command', analogous to the -shell’s *note -c: 1303. option. Since Python statements often contain +shell’s *note -c: 11e6. option. Since Python statements often contain spaces or other characters that are special to the shell, it is usually advised to quote `command' in its entirety with single quotes. @@ -102259,10 +95486,10 @@ using ‘python -m module [arg] ...’, which executes the source file for When a script file is used, it is sometimes useful to be able to run the script and enter interactive mode afterwards. This can be done by -passing *note -i: ee3. before the script. +passing *note -i: df8. before the script. All command line options are described in *note Command line and -environment: 107f. +environment: f85. * Menu: @@ -102289,10 +95516,10 @@ variable in the ‘sys’ module. You can access this list by executing ‘import sys’. The length of the list is at least one; when no script and no arguments are given, ‘sys.argv[0]’ is an empty string. When the script name is given as ‘'-'’ (meaning standard input), ‘sys.argv[0]’ is -set to ‘'-'’. When *note -c: 1303. `command' is used, ‘sys.argv[0]’ is -set to ‘'-c'’. When *note -m: 445. `module' is used, ‘sys.argv[0]’ is +set to ‘'-'’. When *note -c: 11e6. `command' is used, ‘sys.argv[0]’ is +set to ‘'-c'’. When *note -m: 328. `module' is used, ‘sys.argv[0]’ is set to the full name of the located module. Options found after *note --c: 1303. `command' or *note -m: 445. `module' are not consumed by the +-c: 11e6. `command' or *note -m: 328. `module' are not consumed by the Python interpreter’s option processing but left in ‘sys.argv’ for the command or module to handle. @@ -102310,14 +95537,14 @@ three dots (‘...’). The interpreter prints a welcome message stating its version number and a copyright notice before printing the first prompt: - $ python3.9 - Python 3.9 (default, June 4 2019, 09:25:04) + $ python3.8 + Python 3.8 (default, Sep 16 2015, 09:25:04) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> Continuation lines are needed when entering a multi-line construct. As -an example, take a look at this *note if: ead. statement: +an example, take a look at this *note if: dc1. statement: >>> the_world_is_flat = True >>> if the_world_is_flat: @@ -102325,7 +95552,7 @@ an example, take a look at this *note if: ead. statement: ... Be careful not to fall off! -For more on interactive mode, see *note Interactive Mode: 1307. +For more on interactive mode, see *note Interactive Mode: 11ea.  File: python.info, Node: The Interpreter and Its Environment, Prev: Invoking the Interpreter, Up: Using the Python Interpreter @@ -102357,7 +95584,7 @@ follows: # -*- coding: encoding -*- -where `encoding' is one of the valid *note codecs: 1b. supported by +where `encoding' is one of the valid *note codecs: 1c. supported by Python. For example, to declare that Windows-1252 encoding is to be used, the @@ -102366,7 +95593,7 @@ first line of your source code file should be: # -*- coding: cp1252 -*- One exception to the `first line' rule is when the source code starts -with a *note UNIX “shebang” line: 130c. In this case, the encoding +with a *note UNIX “shebang” line: 11ef. In this case, the encoding declaration should be added as the second line of the file. For example: @@ -102380,7 +95607,7 @@ File: python.info, Node: An Informal Introduction to Python, Next: More Contro ====================================== In the following examples, input and output are distinguished by the -presence or absence of prompts (*note >>>: 1310. and *note …: 1311.): to +presence or absence of prompts (*note >>>: 11f3. and *note …: 11f4.): to repeat the example, you must type everything after the prompt, when the prompt appears; lines that do not begin with a prompt are output from the interpreter. Note that a secondary prompt on a line by itself in an @@ -102444,13 +95671,13 @@ be used for grouping. For example: >>> 8 / 5 # division always returns a floating point number 1.6 -The integer numbers (e.g. ‘2’, ‘4’, ‘20’) have type *note int: 204, the +The integer numbers (e.g. ‘2’, ‘4’, ‘20’) have type *note int: 171, the ones with a fractional part (e.g. ‘5.0’, ‘1.6’) have type *note float: -1fd. We will see more about numeric types later in the tutorial. +174. We will see more about numeric types later in the tutorial. -Division (‘/’) always returns a float. To do *note floor division: 1f9. -and get an integer result (discarding any fractional result) you can use -the ‘//’ operator; to calculate the remainder you can use ‘%’: +Division (‘/’) always returns a float. To do *note floor division: +11f9. and get an integer result (discarding any fractional result) you +can use the ‘//’ operator; to calculate the remainder you can use ‘%’: >>> 17 / 3 # classic division returns a float 5.666666666666667 @@ -102459,7 +95686,7 @@ the ‘//’ operator; to calculate the remainder you can use ‘%’: 5 >>> 17 % 3 # the % operator returns the remainder of the division 2 - >>> 5 * 3 + 2 # floored quotient * divisor + remainder + >>> 5 * 3 + 2 # result * divisor + remainder 17 With Python, it is possible to use the ‘**’ operator to calculate powers @@ -102510,9 +95737,9 @@ explicitly assign a value to it — you would create an independent local variable with the same name masking the built-in variable with its magic behavior. -In addition to *note int: 204. and *note float: 1fd, Python supports -other types of numbers, such as *note Decimal: 2c3. and *note Fraction: -2c1. Python also has built-in support for *note complex numbers: 1316, +In addition to *note int: 171. and *note float: 174, Python supports +other types of numbers, such as *note Decimal: 175. and *note Fraction: +172. Python also has built-in support for *note complex numbers: 11fa, and uses the ‘j’ or ‘J’ suffix to indicate the imaginary part (e.g. ‘3+5j’). @@ -102552,7 +95779,7 @@ sometimes look different from the input (the enclosing quotes could change), the two strings are equivalent. The string is enclosed in double quotes if the string contains a single quote and no double quotes, otherwise it is enclosed in single quotes. The *note print(): -973. function produces a more readable output, by omitting the enclosing +86b. function produces a more readable output, by omitting the enclosing quotes and by printing escaped and special characters: >>> '"Isn\'t," they said.' @@ -102719,7 +95946,7 @@ slicing: >>> word[42:] '' -Python strings cannot be changed — they are *note immutable: 1319. +Python strings cannot be changed — they are *note immutable: 11fd. Therefore, assigning to an indexed position in the string results in an error: @@ -102739,7 +95966,7 @@ If you need a different string, you should create a new one: >>> word[:2] + 'py' 'Pypy' -The built-in function *note len(): 28e. returns the length of a string: +The built-in function *note len(): 151. returns the length of a string: >>> s = 'supercalifragilisticexpialidocious' >>> len(s) @@ -102748,25 +95975,25 @@ The built-in function *note len(): 28e. returns the length of a string: See also ........ -*note Text Sequence Type — str: 131a. +*note Text Sequence Type — str: 11fe. Strings are examples of `sequence types', and support the common operations supported by such types. -*note String Methods: 131b. +*note String Methods: 11ff. Strings support a large number of methods for basic transformations and searching. -*note Formatted string literals: 299. +*note Formatted string literals: 15d. String literals that have embedded expressions. -*note Format String Syntax: de2. +*note Format String Syntax: cf1. - Information about string formatting with *note str.format(): 5d7. + Information about string formatting with *note str.format(): 4cb. -*note printf-style String Formatting: 131c. +*note printf-style String Formatting: 1200. The old formatting operations invoked when strings are the left operand of the ‘%’ operator are described in more detail here. @@ -102794,7 +96021,7 @@ the same type. >>> squares [1, 4, 9, 16, 25] -Like strings (and all other built-in *note sequence: 131f. types), lists +Like strings (and all other built-in *note sequence: 1203. types), lists can be indexed and sliced: >>> squares[0] # indexing returns the item @@ -102806,7 +96033,7 @@ can be indexed and sliced: All slice operations return a new list containing the requested elements. This means that the following slice returns a *note shallow -copy: 1320. of the list: +copy: 1204. of the list: >>> squares[:] [1, 4, 9, 16, 25] @@ -102816,8 +96043,8 @@ Lists also support operations like concatenation: >>> squares + [36, 49, 64, 81, 100] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] -Unlike strings, which are *note immutable: 1319, lists are a *note -mutable: 1321. type, i.e. it is possible to change their content: +Unlike strings, which are *note immutable: 11fd, lists are a *note +mutable: 1205. type, i.e. it is possible to change their content: >>> cubes = [1, 8, 27, 65, 125] # something's wrong here >>> 4 ** 3 # the cube of 4 is 64, not 65! @@ -102853,7 +96080,7 @@ of the list or clear it entirely: >>> letters [] -The built-in function *note len(): 28e. also applies to lists: +The built-in function *note len(): 151. also applies to lists: >>> letters = ['a', 'b', 'c', 'd'] >>> len(letters) @@ -102906,7 +96133,7 @@ This example introduces several new features. assignments take place. The right-hand side expressions are evaluated from the left to the right. - * The *note while: 1324. loop executes as long as the condition + * The *note while: 1208. loop executes as long as the condition (here: ‘a < 10’) remains true. In Python, like in C, any non-zero integer value is true; zero is false. The condition may also be a string or list value, in fact any sequence; anything with a @@ -102926,7 +96153,7 @@ This example introduces several new features. when you have typed the last line). Note that each line within a basic block must be indented by the same amount. - * The *note print(): 973. function writes the value of the + * The *note print(): 86b. function writes the value of the argument(s) it is given. It differs from just writing the expression you want to write (as we did earlier in the calculator examples) in the way it handles multiple arguments, floating point @@ -102958,7 +96185,7 @@ File: python.info, Node: More Control Flow Tools, Next: Data Structures, Prev 2.4 More Control Flow Tools =========================== -Besides the *note while: 1324. statement just introduced, Python uses +Besides the *note while: 1208. statement just introduced, Python uses the usual flow control statements known from other languages, with some twists. @@ -102979,7 +96206,7 @@ File: python.info, Node: if Statements, Next: for Statements, Up: More Contro 2.4.1 ‘if’ Statements --------------------- -Perhaps the most well-known statement type is the *note if: ead. +Perhaps the most well-known statement type is the *note if: dc1. statement. For example: >>> x = int(input("Please enter an integer: ")) @@ -102996,8 +96223,8 @@ statement. For example: ... More -There can be zero or more *note elif: 132a. parts, and the *note else: -132b. part is optional. The keyword ‘‘elif’’ is short for ‘else if’, +There can be zero or more *note elif: 120e. parts, and the *note else: +120f. part is optional. The keyword ‘‘elif’’ is short for ‘else if’, and is useful to avoid excessive indentation. An ‘if’ … ‘elif’ … ‘elif’ … sequence is a substitute for the ‘switch’ or ‘case’ statements found in other languages. @@ -103008,7 +96235,7 @@ File: python.info, Node: for Statements, Next: The range Function, Prev: if S 2.4.2 ‘for’ Statements ---------------------- -The *note for: cfc. statement in Python differs a bit from what you may +The *note for: c10. statement in Python differs a bit from what you may be used to in C or Pascal. Rather than always iterating over an arithmetic progression of numbers (like in Pascal), or giving the user the ability to define both the iteration step and halting condition (as @@ -103048,7 +96275,7 @@ File: python.info, Node: The range Function, Next: break and continue Statemen ---------------------------- If you do need to iterate over a sequence of numbers, the built-in -function *note range(): 1f5. comes in handy. It generates arithmetic +function *note range(): 99f. comes in handy. It generates arithmetic progressions: >>> for i in range(5): @@ -103066,17 +96293,17 @@ generates 10 values, the legal indices for items of a sequence of length specify a different increment (even negative; sometimes this is called the ‘step’): - >>> list(range(5, 10)) - [5, 6, 7, 8, 9] + range(5, 10) + 5, 6, 7, 8, 9 - >>> list(range(0, 10, 3)) - [0, 3, 6, 9] + range(0, 10, 3) + 0, 3, 6, 9 - >>> list(range(-10, -100, -30)) - [-10, -40, -70] + range(-10, -100, -30) + -10, -40, -70 To iterate over the indices of a sequence, you can combine *note -range(): 1f5. and *note len(): 28e. as follows: +range(): 99f. and *note len(): 151. as follows: >>> a = ['Mary', 'had', 'a', 'little', 'lamb'] >>> for i in range(len(a)): @@ -103089,30 +96316,36 @@ range(): 1f5. and *note len(): 28e. as follows: 4 lamb In most such cases, however, it is convenient to use the *note -enumerate(): ea9. function, see *note Looping Techniques: 1330. +enumerate(): dbd. function, see *note Looping Techniques: 1214. A strange thing happens if you just print a range: - >>> range(10) + >>> print(range(10)) range(0, 10) -In many ways the object returned by *note range(): 1f5. behaves as if it +In many ways the object returned by *note range(): 99f. behaves as if it is a list, but in fact it isn’t. It is an object which returns the successive items of the desired sequence when you iterate over it, but it doesn’t really make the list, thus saving space. -We say such an object is *note iterable: c7e, that is, suitable as a +We say such an object is *note iterable: b8c, that is, suitable as a target for functions and constructs that expect something from which they can obtain successive items until the supply is exhausted. We have -seen that the *note for: cfc. statement is such a construct, while an -example of a function that takes an iterable is *note sum(): 319.: +seen that the *note for: c10. statement is such a construct, while an +example of a function that takes an iterable is *note sum(): 1d1.: >>> sum(range(4)) # 0 + 1 + 2 + 3 6 Later we will see more functions that return iterables and take -iterables as arguments. In chapter *note Data Structures: 1331, we will -discuss in more detail about *note list(): 1f8. +iterables as arguments. Lastly, maybe you are curious about how to get +a list from a range. Here is the solution: + + >>> list(range(4)) + [0, 1, 2, 3] + +In chapter *note Data Structures: 1215, we will discuss in more detail +about *note list(): 24e.  File: python.info, Node: break and continue Statements and else Clauses on Loops, Next: pass Statements, Prev: The range Function, Up: More Control Flow Tools @@ -103120,13 +96353,13 @@ File: python.info, Node: break and continue Statements and else Clauses on Loop 2.4.4 ‘break’ and ‘continue’ Statements, and ‘else’ Clauses on Loops -------------------------------------------------------------------- -The *note break: 3fd. statement, like in C, breaks out of the innermost -enclosing *note for: cfc. or *note while: 1324. loop. +The *note break: 2c7. statement, like in C, breaks out of the innermost +enclosing *note for: c10. or *note while: 1208. loop. Loop statements may have an ‘else’ clause; it is executed when the loop -terminates through exhaustion of the iterable (with *note for: cfc.) or -when the condition becomes false (with *note while: 1324.), but not when -the loop is terminated by a *note break: 3fd. statement. This is +terminates through exhaustion of the iterable (with *note for: c10.) or +when the condition becomes false (with *note while: 1208.), but not when +the loop is terminated by a *note break: 2c7. statement. This is exemplified by the following loop, which searches for prime numbers: >>> for n in range(2, 10): @@ -103148,16 +96381,16 @@ exemplified by the following loop, which searches for prime numbers: 9 equals 3 * 3 (Yes, this is the correct code. Look closely: the ‘else’ clause belongs -to the *note for: cfc. loop, `not' the *note if: ead. statement.) +to the *note for: c10. loop, `not' the *note if: dc1. statement.) When used with a loop, the ‘else’ clause has more in common with the -‘else’ clause of a *note try: e39. statement than it does with that of -*note if: ead. statements: a *note try: e39. statement’s ‘else’ clause +‘else’ clause of a *note try: d4c. statement than it does with that of +*note if: dc1. statements: a *note try: d4c. statement’s ‘else’ clause runs when no exception occurs, and a loop’s ‘else’ clause runs when no ‘break’ occurs. For more on the ‘try’ statement and exceptions, see -*note Handling Exceptions: 1334. +*note Handling Exceptions: 1218. -The *note continue: 2be. statement, also borrowed from C, continues with +The *note continue: 16e. statement, also borrowed from C, continues with the next iteration of the loop: >>> for num in range(2, 10): @@ -103165,7 +96398,6 @@ the next iteration of the loop: ... print("Found an even number", num) ... continue ... print("Found an odd number", num) - ... Found an even number 2 Found an odd number 3 Found an even number 4 @@ -103181,7 +96413,7 @@ File: python.info, Node: pass Statements, Next: Defining Functions, Prev: bre 2.4.5 ‘pass’ Statements ----------------------- -The *note pass: 1337. statement does nothing. It can be used when a +The *note pass: 121b. statement does nothing. It can be used when a statement is required syntactically but the program requires no action. For example: @@ -103195,7 +96427,7 @@ This is commonly used for creating minimal classes: ... pass ... -Another place *note pass: 1337. can be used is as a place-holder for a +Another place *note pass: 121b. can be used is as a place-holder for a function or conditional body when you are working on new code, allowing you to keep thinking at a more abstract level. The ‘pass’ is silently ignored: @@ -103225,7 +96457,7 @@ arbitrary boundary: ... fib(2000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 -The keyword *note def: e85. introduces a function `definition'. It must +The keyword *note def: d98. introduces a function `definition'. It must be followed by the function name and the parenthesized list of formal parameters. The statements that form the body of the function start at the next line, and must be indented. @@ -103233,7 +96465,7 @@ the next line, and must be indented. The first statement of the function body can optionally be a string literal; this string literal is the function’s documentation string, or `docstring'. (More about docstrings can be found in the section *note -Documentation Strings: 133a.) There are tools which use docstrings to +Documentation Strings: 121e.) There are tools which use docstrings to automatically produce online or printed documentation, or to let the user interactively browse through code; it’s good practice to include docstrings in code that you write, so make a habit of it. @@ -103246,8 +96478,8 @@ in the local symbol tables of enclosing functions, then in the global symbol table, and finally in the table of built-in names. Thus, global variables and variables of enclosing functions cannot be directly assigned a value within a function (unless, for global variables, named -in a *note global: 133b. statement, or, for variables of enclosing -functions, named in a *note nonlocal: d09. statement), although they may +in a *note global: 121f. statement, or, for variables of enclosing +functions, named in a *note nonlocal: c1e. statement), although they may be referenced. The actual parameters (arguments) to a function call are introduced in @@ -103271,11 +96503,11 @@ access the function: Coming from other languages, you might object that ‘fib’ is not a function but a procedure since it doesn’t return a value. In fact, even -functions without a *note return: 2cb. statement do return a value, +functions without a *note return: 17d. statement do return a value, albeit a rather boring one. This value is called ‘None’ (it’s a built-in name). Writing the value ‘None’ is normally suppressed by the interpreter if it would be the only value written. You can see it if -you really want to using *note print(): 973.: +you really want to using *note print(): 86b.: >>> fib(0) >>> print(fib(0)) @@ -103299,7 +96531,7 @@ the Fibonacci series, instead of printing it: This example, as usual, demonstrates some new Python features: - * The *note return: 2cb. statement returns with a value from a + * The *note return: 17d. statement returns with a value from a function. ‘return’ without an expression argument returns ‘None’. Falling off the end of a function also returns ‘None’. @@ -103311,7 +96543,7 @@ This example, as usual, demonstrates some new Python features: define different methods. Methods of different types may have the same name without causing ambiguity. (It is possible to define your own object types and methods, using `classes', see *note - Classes: 133c.) The method ‘append()’ shown in the example is + Classes: 1220.) The method ‘append()’ shown in the example is defined for list objects; it adds a new element at the end of the list. In this example it is equivalent to ‘result = result + [a]’, but more efficient. @@ -103375,7 +96607,7 @@ This function can be called in several ways: * or even giving all arguments: ‘ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')’ -This example also introduces the *note in: 179. keyword. This tests +This example also introduces the *note in: 788. keyword. This tests whether or not a sequence contains a certain value. The default values are evaluated at the point of function definition in @@ -103425,7 +96657,7 @@ File: python.info, Node: Keyword Arguments, Next: Special parameters, Prev: D 2.4.7.2 Keyword Arguments ......................... -Functions can also be called using *note keyword arguments: 6bd. of the +Functions can also be called using *note keyword arguments: 5b1. of the form ‘kwarg=value’. For instance, the following function: def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'): @@ -103469,11 +96701,11 @@ example that fails due to this restriction: TypeError: function() got multiple values for keyword argument 'a' When a final formal parameter of the form ‘**name’ is present, it -receives a dictionary (see *note Mapping Types — dict: 410.) containing +receives a dictionary (see *note Mapping Types — dict: 2f0.) containing all keyword arguments except for those corresponding to a formal parameter. This may be combined with a formal parameter of the form ‘*name’ (described in the next subsection) which receives a *note tuple: -1343. containing the positional arguments beyond the formal parameter +1227. containing the positional arguments beyond the formal parameter list. (‘*name’ must occur before ‘**name’.) For example, if we define a function like this: @@ -103714,7 +96946,7 @@ File: python.info, Node: Arbitrary Argument Lists, Next: Unpacking Argument Li Finally, the least frequently used option is to specify that a function can be called with an arbitrary number of arguments. These arguments -will be wrapped up in a tuple (see *note Tuples and Sequences: 1343.). +will be wrapped up in a tuple (see *note Tuples and Sequences: 1227.). Before the variable number of arguments, zero or more normal arguments may occur. @@ -103743,7 +96975,7 @@ File: python.info, Node: Unpacking Argument Lists, Next: Lambda Expressions, The reverse situation occurs when the arguments are already in a list or tuple but need to be unpacked for a function call requiring separate -positional arguments. For instance, the built-in *note range(): 1f5. +positional arguments. For instance, the built-in *note range(): 99f. function expects separate `start' and `stop' arguments. If they are not available separately, write the function call with the ‘*’-operator to unpack the arguments out of a list or tuple: @@ -103772,7 +97004,7 @@ File: python.info, Node: Lambda Expressions, Next: Documentation Strings, Pre 2.4.7.11 Lambda Expressions ........................... -Small anonymous functions can be created with the *note lambda: cfb. +Small anonymous functions can be created with the *note lambda: c0f. keyword. This function returns the sum of its two arguments: ‘lambda a, b: a+b’. Lambda functions can be used wherever function objects are required. They are syntactically restricted to a single expression. @@ -103850,17 +97082,17 @@ File: python.info, Node: Function Annotations, Prev: Documentation Strings, U 2.4.7.13 Function Annotations ............................. -*note Function annotations: 1353. are completely optional metadata +*note Function annotations: 1237. are completely optional metadata information about the types used by user-defined functions (see PEP 3107(1) and PEP 484(2) for more information). -*note Annotations: 1354. are stored in the ‘__annotations__’ attribute +*note Annotations: 1238. are stored in the ‘__annotations__’ attribute of the function as a dictionary and have no effect on any other part of the function. Parameter annotations are defined by a colon after the parameter name, followed by an expression evaluating to the value of the annotation. Return annotations are defined by a literal ‘->’, followed by an expression, between the parameter list and the colon denoting the -end of the *note def: e85. statement. The following example has a +end of the *note def: d98. statement. The following example has a required argument, an optional argument, and the return value annotated: >>> def f(ham: str, eggs: str = 'eggs') -> str: @@ -103921,7 +97153,7 @@ important points extracted for you: * Name your classes and functions consistently; the convention is to use ‘UpperCamelCase’ for classes and ‘lowercase_with_underscores’ for functions and methods. Always use ‘self’ as the name for the - first method argument (see *note A First Look at Classes: 1357. for + first method argument (see *note A First Look at Classes: 123b. for more on classes and methods). * Don’t use fancy encodings if your code is meant to be used in @@ -103985,7 +97217,7 @@ of list objects: -- Method: list.remove (x) Remove the first item from the list whose value is equal to `x'. - It raises a *note ValueError: 16d. if there is no such item. + It raises a *note ValueError: 1e7. if there is no such item. -- Method: list.pop ([i]) @@ -104003,7 +97235,7 @@ of list objects: -- Method: list.index (x[, start[, end]]) Return zero-based index in the list of the first item whose value - is equal to `x'. Raises a *note ValueError: 16d. if there is no + is equal to `x'. Raises a *note ValueError: 1e7. if there is no such item. The optional arguments `start' and `end' are interpreted as in the @@ -104019,7 +97251,7 @@ of list objects: -- Method: list.sort (*, key=None, reverse=False) Sort the items of the list in place (the arguments can be used for - sort customization, see *note sorted(): 549. for their + sort customization, see *note sorted(): 434. for their explanation). -- Method: list.reverse () @@ -104117,7 +97349,7 @@ the end of list are fast, doing inserts or pops from the beginning of a list is slow (because all of the other elements have to be shifted by one). -To implement a queue, use *note collections.deque: 62d. which was +To implement a queue, use *note collections.deque: 51e. which was designed to have fast appends and pops from both ends. For example: >>> from collections import deque @@ -104185,7 +97417,7 @@ and it’s equivalent to: >>> combs [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] -Note how the order of the *note for: cfc. and *note if: ead. statements +Note how the order of the *note for: c10. and *note if: dc1. statements is the same in both these snippets. If the expression is a tuple (e.g. the ‘(x, y)’ in the previous @@ -104250,7 +97482,7 @@ The following list comprehension will transpose rows and columns: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] As we saw in the previous section, the nested listcomp is evaluated in -the context of the *note for: cfc. that follows it, so this example is +the context of the *note for: c10. that follows it, so this example is equivalent to: >>> transposed = [] @@ -104274,13 +97506,13 @@ which, in turn, is the same as: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] In the real world, you should prefer built-in functions to complex flow -statements. The *note zip(): cfe. function would do a great job for +statements. The *note zip(): c12. function would do a great job for this use case: >>> list(zip(*matrix)) [(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)] -See *note Unpacking Argument Lists: 134c. for details on the asterisk in +See *note Unpacking Argument Lists: 1230. for details on the asterisk in this line.  @@ -104290,7 +97522,7 @@ File: python.info, Node: The del statement, Next: Tuples and Sequences, Prev: ------------------------- There is a way to remove an item from a list given its index instead of -its value: the *note del: 1365. statement. This differs from the +its value: the *note del: 1249. statement. This differs from the ‘pop()’ method which returns a value. The ‘del’ statement can also be used to remove slices from a list or clear the entire list (which we did earlier by assignment of an empty list to the slice). For example: @@ -104306,12 +97538,12 @@ earlier by assignment of an empty list to the slice). For example: >>> a [] -*note del: 1365. can also be used to delete entire variables: +*note del: 1249. can also be used to delete entire variables: >>> del a Referencing the name ‘a’ hereafter is an error (at least until another -value is assigned to it). We’ll find other uses for *note del: 1365. +value is assigned to it). We’ll find other uses for *note del: 1249. later.  @@ -104322,7 +97554,7 @@ File: python.info, Node: Tuples and Sequences, Next: Sets, Prev: The del stat We saw that lists and strings have many common properties, such as indexing and slicing operations. They are two examples of `sequence' -data types (see *note Sequence Types — list, tuple, range: 1367.). +data types (see *note Sequence Types — list, tuple, range: 124b.). Since Python is an evolving language, other sequence data types may be added. There is also another standard sequence data type: the `tuple'. @@ -104357,10 +97589,10 @@ possible to create tuples which contain mutable objects, such as lists. Though tuples may seem similar to lists, they are often used in different situations and for different purposes. Tuples are *note -immutable: 1319, and usually contain a heterogeneous sequence of +immutable: 11fd, and usually contain a heterogeneous sequence of elements that are accessed via unpacking (see later in this section) or -indexing (or even by attribute in the case of *note namedtuples: 1a1.). -Lists are *note mutable: 1321, and their elements are usually +indexing (or even by attribute in the case of *note namedtuples: 1a3.). +Lists are *note mutable: 1205, and their elements are usually homogeneous and are accessed by iterating over the list. A special problem is the construction of tuples containing 0 or 1 items: @@ -104403,7 +97635,7 @@ testing and eliminating duplicate entries. Set objects also support mathematical operations like union, intersection, difference, and symmetric difference. -Curly braces or the *note set(): 1f6. function can be used to create +Curly braces or the *note set(): b4f. function can be used to create sets. Note: to create an empty set you have to use ‘set()’, not ‘{}’; the latter creates an empty dictionary, a data structure that we discuss in the next section. @@ -104433,7 +97665,7 @@ Here is a brief demonstration: >>> a ^ b # letters in a or b but not both {'r', 'd', 'b', 'm', 'z', 'l'} -Similarly to *note list comprehensions: 1361, set comprehensions are +Similarly to *note list comprehensions: 1245, set comprehensions are also supported: >>> a = {x for x in 'abracadabra' if x not in 'abc'} @@ -104447,7 +97679,7 @@ File: python.info, Node: Dictionaries, Next: Looping Techniques, Prev: Sets, ------------------ Another useful data type built into Python is the `dictionary' (see -*note Mapping Types — dict: 410.). Dictionaries are sometimes found in +*note Mapping Types — dict: 2f0.). Dictionaries are sometimes found in other languages as “associative memories” or “associative arrays”. Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by `keys', which can be any immutable type; strings and @@ -104474,7 +97706,7 @@ error to extract a value using a non-existent key. Performing ‘list(d)’ on a dictionary returns a list of all the keys used in the dictionary, in insertion order (if you want it sorted, just use ‘sorted(d)’ instead). To check whether a single key is in the -dictionary, use the *note in: 179. keyword. +dictionary, use the *note in: 788. keyword. Here is a small example using a dictionary: @@ -104497,7 +97729,7 @@ Here is a small example using a dictionary: >>> 'jack' not in tel False -The *note dict(): 164. constructor builds dictionaries directly from +The *note dict(): 1a4. constructor builds dictionaries directly from sequences of key-value pairs: >>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) @@ -104533,7 +97765,7 @@ be retrieved at the same time using the ‘items()’ method. When looping through a sequence, the position index and corresponding value can be retrieved at the same time using the *note enumerate(): -ea9. function. +dbd. function. >>> for i, v in enumerate(['tic', 'tac', 'toe']): ... print(i, v) @@ -104543,7 +97775,7 @@ ea9. function. 2 toe To loop over two or more sequences at the same time, the entries can be -paired with the *note zip(): cfe. function. +paired with the *note zip(): c12. function. >>> questions = ['name', 'quest', 'favorite color'] >>> answers = ['lancelot', 'the holy grail', 'blue'] @@ -104555,7 +97787,7 @@ paired with the *note zip(): cfe. function. What is your favorite color? It is blue. To loop over a sequence in reverse, first specify the sequence in a -forward direction and then call the *note reversed(): 2c9. function. +forward direction and then call the *note reversed(): 17b. function. >>> for i in reversed(range(1, 10, 2)): ... print(i) @@ -104566,26 +97798,10 @@ forward direction and then call the *note reversed(): 2c9. function. 3 1 -To loop over a sequence in sorted order, use the *note sorted(): 549. +To loop over a sequence in sorted order, use the *note sorted(): 434. function which returns a new sorted list while leaving the source unaltered. - >>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] - >>> for i in sorted(basket): - ... print(i) - ... - apple - apple - banana - orange - orange - pear - -Using *note set(): 1f6. on a sequence eliminates duplicate elements. -The use of *note sorted(): 549. in combination with *note set(): 1f6. -over a sequence is an idiomatic way to loop over unique elements of the -sequence in sorted order. - >>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana'] >>> for f in sorted(set(basket)): ... print(f) @@ -104619,9 +97835,9 @@ operators, not just comparisons. The comparison operators ‘in’ and ‘not in’ check whether a value occurs (does not occur) in a sequence. The operators ‘is’ and ‘is not’ compare -whether two objects are really the same object. All comparison -operators have the same priority, which is lower than that of all -numerical operators. +whether two objects are really the same object; this only matters for +mutable objects like lists. All comparison operators have the same +priority, which is lower than that of all numerical operators. Comparisons can be chained. For example, ‘a < b == c’ tests whether ‘a’ is less than ‘b’ and moreover ‘b’ equals ‘c’. @@ -104651,7 +97867,7 @@ expression to a variable. For example, 'Trondheim' Note that in Python, unlike C, assignment inside expressions must be -done explicitly with the *note walrus operator: 136f. ‘:=’. This avoids +done explicitly with the *note walrus operator: 1253. ‘:=’. This avoids a common class of problems encountered in C programs: typing ‘=’ in an expression when ‘==’ was intended. @@ -104687,7 +97903,7 @@ Note that comparing objects of different types with ‘<’ or ‘>’ is legal provided that the objects have appropriate comparison methods. For example, mixed numeric types are compared according to their numeric value, so 0 equals 0.0, etc. Otherwise, rather than providing an -arbitrary ordering, the interpreter will raise a *note TypeError: 1fe. +arbitrary ordering, the interpreter will raise a *note TypeError: 17f. exception.  @@ -104787,11 +98003,11 @@ global variables with the same notation used to refer to its functions, ‘modname.itemname’. Modules can import other modules. It is customary but not required to -place all *note import: ce9. statements at the beginning of a module (or +place all *note import: bfd. statements at the beginning of a module (or script, for that matter). The imported module names are placed in the importing module’s global symbol table. -There is a variant of the *note import: ce9. statement that imports +There is a variant of the *note import: bfd. statement that imports names from a module directly into the importing module’s symbol table. For example: @@ -104827,7 +98043,7 @@ bound directly to the imported module. This is effectively importing the module in the same way that ‘import fibo’ will do, with the only difference of it being available as ‘fib’. -It can also be used when utilising *note from: d0f. with similar +It can also be used when utilising *note from: c24. with similar effects: >>> from fibo import fib as fibonacci @@ -104837,7 +98053,7 @@ effects: Note: For efficiency reasons, each module is only imported once per interpreter session. Therefore, if you change your modules, you must restart the interpreter – or, if it’s just one module you want - to test interactively, use *note importlib.reload(): 4a2, e.g. + to test interactively, use *note importlib.reload(): 38a, e.g. ‘import importlib; importlib.reload(modulename)’. * Menu: @@ -104895,13 +98111,13 @@ File: python.info, Node: The Module Search Path, Next: “Compiled” Python f When a module named ‘spam’ is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named ‘spam.py’ in a list of directories given by the -variable *note sys.path: 260. *note sys.path: 260. is initialized from +variable *note sys.path: 479. *note sys.path: 479. is initialized from these locations: * The directory containing the input script (or the current directory when no file is specified). - * *note PYTHONPATH: a36. (a list of directory names, with the same + * *note PYTHONPATH: 934. (a list of directory names, with the same syntax as the shell variable ‘PATH’). * The installation-dependent default. @@ -104911,12 +98127,12 @@ these locations: followed. In other words the directory containing the symlink is `not' added to the module search path. -After initialization, Python programs can modify *note sys.path: 260. +After initialization, Python programs can modify *note sys.path: 479. The directory containing the script being run is placed at the beginning of the search path, ahead of the standard library path. This means that scripts in that directory will be loaded instead of modules of the same name in the library directory. This is an error unless the replacement -is intended. See section *note Standard Modules: 137b. for more +is intended. See section *note Standard Modules: 125f. for more information.  @@ -104949,7 +98165,7 @@ there must not be a source module. Some tips for experts: - * You can use the *note -O: 780. or *note -OO: 781. switches on the + * You can use the *note -O: 674. or *note -OO: 675. switches on the Python command to reduce the size of a compiled module. The ‘-O’ switch removes assert statements, the ‘-OO’ switch removes both assert statements and __doc__ strings. Since some programs may @@ -104962,7 +98178,7 @@ Some tips for experts: than when it is read from a ‘.py’ file; the only thing that’s faster about ‘.pyc’ files is the speed with which they are loaded. - * The module *note compileall: 20. can create .pyc files for all + * The module *note compileall: 21. can create .pyc files for all modules in a directory. * There is more detail on this process, including a flow chart of the @@ -104985,9 +98201,9 @@ operations that are not part of the core of the language but are nevertheless built in, either for efficiency or to provide access to operating system primitives such as system calls. The set of such modules is a configuration option which also depends on the underlying -platform. For example, the *note winreg: 133. module is only provided +platform. For example, the *note winreg: 12b. module is only provided on Windows systems. One particular module deserves some attention: -*note sys: fd, which is built into every Python interpreter. The +*note sys: fe, which is built into every Python interpreter. The variables ‘sys.ps1’ and ‘sys.ps2’ define the strings used as primary and secondary prompts: @@ -105006,8 +98222,8 @@ interactive mode. The variable ‘sys.path’ is a list of strings that determines the interpreter’s search path for modules. It is initialized to a default -path taken from the environment variable *note PYTHONPATH: a36, or from -a built-in default if *note PYTHONPATH: a36. is not set. You can modify +path taken from the environment variable *note PYTHONPATH: 934, or from +a built-in default if *note PYTHONPATH: 934. is not set. You can modify it using standard list operations: >>> import sys @@ -105019,36 +98235,32 @@ File: python.info, Node: The dir Function, Next: Packages, Prev: Standard Mod 2.6.3 The ‘dir()’ Function -------------------------- -The built-in function *note dir(): dfb. is used to find out which names +The built-in function *note dir(): d09. is used to find out which names a module defines. It returns a sorted list of strings: >>> import fibo, sys >>> dir(fibo) ['__name__', 'fib', 'fib2'] >>> dir(sys) - ['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', - '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', - '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', - '_clear_type_cache', '_current_frames', '_debugmallocstats', '_framework', - '_getframe', '_git', '_home', '_xoptions', 'abiflags', 'addaudithook', - 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', - 'breakpointhook', 'builtin_module_names', 'byteorder', 'call_tracing', - 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_info', - 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', - 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_tracking_depth', - 'getallocatedblocks', 'getdefaultencoding', 'getdlopenflags', - 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', - 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', + ['__displayhook__', '__doc__', '__excepthook__', '__loader__', '__name__', + '__package__', '__stderr__', '__stdin__', '__stdout__', + '_clear_type_cache', '_current_frames', '_debugmallocstats', '_getframe', + '_home', '_mercurial', '_xoptions', 'abiflags', 'api_version', 'argv', + 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', + 'call_tracing', 'callstats', 'copyright', 'displayhook', + 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', + 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', + 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', + 'getfilesystemencoding', 'getobjects', 'getprofile', 'getrecursionlimit', + 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettotalrefcount', 'gettrace', 'hash_info', 'hexversion', 'implementation', 'int_info', - 'intern', 'is_finalizing', 'last_traceback', 'last_type', 'last_value', - 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', - 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'pycache_prefix', - 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 'setdlopenflags', - 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', - 'stdin', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', - 'warnoptions'] + 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', + 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', + 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', + 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', + 'thread_info', 'version', 'version_info', 'warnoptions'] -Without arguments, *note dir(): dfb. lists the names you have defined +Without arguments, *note dir(): d09. lists the names you have defined currently: >>> a = [1, 2, 3, 4, 5] @@ -105060,9 +98272,9 @@ currently: Note that it lists all types of names: variables, modules, functions, etc. -*note dir(): dfb. does not list the names of built-in functions and +*note dir(): d09. does not list the names of built-in functions and variables. If you want a list of those, they are defined in the -standard module *note builtins: 12.: +standard module *note builtins: 13.: >>> import builtins >>> dir(builtins) @@ -105191,7 +98403,7 @@ a submodule (or subpackage) of the package, or some other name defined in the package, like a function, class or variable. The ‘import’ statement first tests whether the item is defined in the package; if not, it assumes it is a module and attempts to load it. If it fails to -find it, an *note ImportError: 16c. exception is raised. +find it, an *note ImportError: 325. exception is raised. Contrarily, when using syntax like ‘import item.subitem.subsubitem’, each item except for the last must be a package; the last item can be a @@ -105218,7 +98430,7 @@ unwanted side-effects that should only happen when the sub-module is explicitly imported. The only solution is for the package author to provide an explicit index -of the package. The *note import: ce9. statement uses the following +of the package. The *note import: bfd. statement uses the following convention: if a package’s ‘__init__.py’ code defines a list named ‘__all__’, it is taken to be the list of module names that should be imported when ‘from package import *’ is encountered. It is up to the @@ -105240,7 +98452,7 @@ has been imported (possibly running any initialization code in ‘__init__.py’) and then imports whatever names are defined in the package. This includes any names defined (and submodules explicitly loaded) by ‘__init__.py’. It also includes any submodules of the -package that were explicitly loaded by previous *note import: ce9. +package that were explicitly loaded by previous *note import: bfd. statements. Consider this code: import sound.effects.echo @@ -105293,7 +98505,7 @@ File: python.info, Node: Packages in Multiple Directories, Prev: Intra-package 2.6.4.3 Packages in Multiple Directories ........................................ -Packages support one more special attribute, *note __path__: 1386. This +Packages support one more special attribute, *note __path__: 126a. This is initialized to be a list containing the name of the directory holding the package’s ‘__init__.py’ before the code in that file is executed. This variable can be modified; doing so affects future searches for @@ -105324,7 +98536,7 @@ File: python.info, Node: Fancier Output Formatting, Next: Reading and Writing ------------------------------- So far we’ve encountered two ways of writing values: `expression -statements' and the *note print(): 973. function. (A third way is using +statements' and the *note print(): 86b. function. (A third way is using the ‘write()’ method of file objects; the standard output file can be referenced as ‘sys.stdout’. See the Library Reference for more information on this.) @@ -105333,7 +98545,7 @@ Often you’ll want more control over the formatting of your output than simply printing space-separated values. There are several ways to format output. - * To use *note formatted string literals: 138c, begin a string with + * To use *note formatted string literals: 1270, begin a string with ‘f’ or ‘F’ before the opening quotation mark or triple quotation mark. Inside this string, you can write a Python expression between ‘{’ and ‘}’ characters that can refer to variables or @@ -105344,7 +98556,7 @@ format output. >>> f'Results of the {year} {event}' 'Results of the 2016 Referendum' - * The *note str.format(): 5d7. method of strings requires more manual + * The *note str.format(): 4cb. method of strings requires more manual effort. You’ll still use ‘{’ and ‘}’ to mark where a variable will be substituted and can provide detailed formatting directives, but you’ll also need to provide the information to be formatted. @@ -105362,15 +98574,15 @@ format output. When you don’t need fancy output but just want a quick display of some variables for debugging purposes, you can convert any value to a string -with the *note repr(): 8bb. or *note str(): 205. functions. +with the *note repr(): 7b1. or *note str(): 321. functions. -The *note str(): 205. function is meant to return representations of -values which are fairly human-readable, while *note repr(): 8bb. is +The *note str(): 321. function is meant to return representations of +values which are fairly human-readable, while *note repr(): 7b1. is meant to generate representations which can be read by the interpreter -(or will force a *note SyntaxError: 55c. if there is no equivalent +(or will force a *note SyntaxError: 449. if there is no equivalent syntax). For objects which don’t have a particular representation for -human consumption, *note str(): 205. will return the same value as *note -repr(): 8bb. Many values, such as numbers or structures like lists and +human consumption, *note str(): 321. will return the same value as *note +repr(): 7b1. Many values, such as numbers or structures like lists and dictionaries, have the same representation using either function. Strings, in particular, have two distinct representations. @@ -105397,7 +98609,7 @@ Some examples: ... repr((x, y, ('spam', 'eggs'))) "(32.5, 40000, ('spam', 'eggs'))" -The *note string: f6. module contains a *note Template: 4f3. class that +The *note string: f7. module contains a *note Template: 3dc. class that offers yet another way to substitute values into strings, using placeholders like ‘$x’ and replacing them with values from a dictionary, but offers much less control of the formatting. @@ -105415,7 +98627,7 @@ File: python.info, Node: Formatted String Literals, Next: The String format Me 2.7.1.1 Formatted String Literals ................................. -*note Formatted string literals: 299. (also called f-strings for short) +*note Formatted string literals: 15d. (also called f-strings for short) let you include the value of Python expressions inside a string by prefixing the string with ‘f’ or ‘F’ and writing expressions as ‘{expression}’. @@ -105440,8 +98652,8 @@ number of characters wide. This is useful for making columns line up. Dcab ==> 7678 Other modifiers can be used to convert the value before it is formatted. -‘'!a'’ applies *note ascii(): e13, ‘'!s'’ applies *note str(): 205, and -‘'!r'’ applies *note repr(): 8bb.: +‘'!a'’ applies *note ascii(): d22, ‘'!s'’ applies *note str(): 321, and +‘'!r'’ applies *note repr(): 7b1.: >>> animals = 'eels' >>> print(f'My hovercraft is full of {animals}.') @@ -105450,7 +98662,7 @@ Other modifiers can be used to convert the value before it is formatted. My hovercraft is full of 'eels'. For a reference on these format specifications, see the reference guide -for the *note Format Specification Mini-Language: 5db. +for the *note Format Specification Mini-Language: 4cf.  File: python.info, Node: The String format Method, Next: Manual String Formatting, Prev: Formatted String Literals, Up: Fancier Output Formatting @@ -105458,22 +98670,22 @@ File: python.info, Node: The String format Method, Next: Manual String Formatt 2.7.1.2 The String format() Method .................................. -Basic usage of the *note str.format(): 5d7. method looks like this: +Basic usage of the *note str.format(): 4cb. method looks like this: >>> print('We are the {} who say "{}!"'.format('knights', 'Ni')) We are the knights who say "Ni!" The brackets and characters within them (called format fields) are -replaced with the objects passed into the *note str.format(): 5d7. +replaced with the objects passed into the *note str.format(): 4cb. method. A number in the brackets can be used to refer to the position -of the object passed into the *note str.format(): 5d7. method. +of the object passed into the *note str.format(): 4cb. method. >>> print('{0} and {1}'.format('spam', 'eggs')) spam and eggs >>> print('{1} and {0}'.format('spam', 'eggs')) eggs and spam -If keyword arguments are used in the *note str.format(): 5d7. method, +If keyword arguments are used in the *note str.format(): 4cb. method, their values are referred to by using the name of the argument. >>> print('This {food} is {adjective}.'.format( @@ -105504,7 +98716,7 @@ the ‘**’ notation. Jack: 4098; Sjoerd: 4127; Dcab: 8637678 This is particularly useful in combination with the built-in function -*note vars(): 1130, which returns a dictionary containing all local +*note vars(): 1012, which returns a dictionary containing all local variables. As an example, the following lines produce a tidily-aligned set of @@ -105525,7 +98737,7 @@ columns giving integers and their squares and cubes: 10 100 1000 For a complete overview of string formatting with *note str.format(): -5d7, see *note Format String Syntax: de2. +4cb, see *note Format String Syntax: cf1.  File: python.info, Node: Manual String Formatting, Next: Old string formatting, Prev: The String format Method, Up: Fancier Output Formatting @@ -105552,19 +98764,19 @@ Here’s the same table of squares and cubes, formatted manually: 10 100 1000 (Note that the one space between each column was added by the way *note -print(): 973. works: it always adds spaces between its arguments.) +print(): 86b. works: it always adds spaces between its arguments.) -The *note str.rjust(): 1391. method of string objects right-justifies a +The *note str.rjust(): 1275. method of string objects right-justifies a string in a field of a given width by padding it with spaces on the -left. There are similar methods *note str.ljust(): 1392. and *note -str.center(): 1393. These methods do not write anything, they just +left. There are similar methods *note str.ljust(): 1276. and *note +str.center(): 1277. These methods do not write anything, they just return a new string. If the input string is too long, they don’t truncate it, but return it unchanged; this will mess up your column lay-out but that’s usually better than the alternative, which would be lying about a value. (If you really want truncation you can always add a slice operation, as in ‘x.ljust(n)[:n]’.) -There is another method, *note str.zfill(): 1394, which pads a numeric +There is another method, *note str.zfill(): 1278, which pads a numeric string on the left with zeros. It understands about plus and minus signs: @@ -105591,7 +98803,7 @@ string interpolation. For example: The value of pi is approximately 3.142. More information can be found in the *note printf-style String -Formatting: 131c. section. +Formatting: 1200. section.  File: python.info, Node: Reading and Writing Files, Prev: Fancier Output Formatting, Up: Input and Output @@ -105599,7 +98811,7 @@ File: python.info, Node: Reading and Writing Files, Prev: Fancier Output Forma 2.7.2 Reading and Writing Files ------------------------------- -*note open(): 16f. returns a *note file object: c16, and is most +*note open(): 4e1. returns a *note file object: b22, and is most commonly used with two arguments: ‘open(filename, mode)’. >>> f = open('workfile', 'w') @@ -105616,7 +98828,7 @@ optional; ‘'r'’ will be assumed if it’s omitted. Normally, files are opened in `text mode', that means, you read and write strings from and to the file, which are encoded in a specific encoding. If encoding is not specified, the default is platform -dependent (see *note open(): 16f.). ‘'b'’ appended to the mode opens +dependent (see *note open(): 4e1.). ‘'b'’ appended to the mode opens the file in `binary mode': now the data is read and written in the form of bytes objects. This mode should be used for all files that don’t contain text. @@ -105629,11 +98841,11 @@ to file data is fine for text files, but will corrupt binary data like that in ‘JPEG’ or ‘EXE’ files. Be very careful to use binary mode when reading and writing such files. -It is good practice to use the *note with: 7dc. keyword when dealing +It is good practice to use the *note with: 6d0. keyword when dealing with file objects. The advantage is that the file is properly closed after its suite finishes, even if an exception is raised at some point. Using ‘with’ is also much shorter than writing equivalent *note try: -e39.-*note finally: 2bf. blocks: +d4c.-*note finally: 16f. blocks: >>> with open('workfile') as f: ... read_data = f.read() @@ -105642,7 +98854,7 @@ e39.-*note finally: 2bf. blocks: >>> f.closed True -If you’re not using the *note with: 7dc. keyword, then you should call +If you’re not using the *note with: 6d0. keyword, then you should call ‘f.close()’ to close the file and immediately free up any system resources used by it. @@ -105651,7 +98863,7 @@ resources used by it. not being completely written to the disk, even if the program exits successfully. -After a file object is closed, either by a *note with: 7dc. statement or +After a file object is closed, either by a *note with: 6d0. statement or by calling ‘f.close()’, attempts to use the file object will automatically fail. @@ -105772,7 +98984,7 @@ File: python.info, Node: Saving structured data with json, Prev: Methods of Fi Strings can easily be written to and read from a file. Numbers take a bit more effort, since the ‘read()’ method only returns strings, which -will have to be passed to a function like *note int(): 204, which takes +will have to be passed to a function like *note int(): 171, which takes a string like ‘'123'’ and returns its numeric value 123. When you want to save more complex data types like nested lists and dictionaries, parsing and serializing by hand becomes complicated. @@ -105780,7 +98992,7 @@ parsing and serializing by hand becomes complicated. Rather than having users constantly writing and debugging code to save complicated data types to files, Python allows you to use the popular data interchange format called JSON (JavaScript Object Notation)(1). -The standard module called *note json: a4. can take Python data +The standard module called *note json: a5. can take Python data hierarchies, and convert them to string representations; this process is called `serializing'. Reconstructing the data from the string representation is called `deserializing'. Between serializing and @@ -105796,33 +99008,32 @@ If you have an object ‘x’, you can view its JSON string representation with a simple line of code: >>> import json - >>> x = [1, 'simple', 'list'] - >>> json.dumps(x) + >>> json.dumps([1, 'simple', 'list']) '[1, "simple", "list"]' -Another variant of the *note dumps(): 6fe. function, called *note -dump(): 6fd, simply serializes the object to a *note text file: 139c. -So if ‘f’ is a *note text file: 139c. object opened for writing, we can +Another variant of the *note dumps(): 5f2. function, called *note +dump(): 5f1, simply serializes the object to a *note text file: 1280. +So if ‘f’ is a *note text file: 1280. object opened for writing, we can do this: json.dump(x, f) -To decode the object again, if ‘f’ is a *note text file: 139c. object +To decode the object again, if ‘f’ is a *note text file: 1280. object which has been opened for reading: x = json.load(f) This simple serialization technique can handle lists and dictionaries, but serializing arbitrary class instances in JSON requires a bit of -extra effort. The reference for the *note json: a4. module contains an +extra effort. The reference for the *note json: a5. module contains an explanation of this. See also ........ -*note pickle: ca. - the pickle module +*note pickle: cb. - the pickle module -Contrary to *note JSON: 139b, `pickle' is a protocol which allows the +Contrary to *note JSON: 127f, `pickle' is a protocol which allows the serialization of arbitrarily complex Python objects. As such, it is specific to Python and cannot be used to communicate with applications written in other languages. It is also insecure by default: @@ -105850,7 +99061,6 @@ least) two distinguishable kinds of errors: `syntax errors' and * Exceptions:: * Handling Exceptions:: * Raising Exceptions:: -* Exception Chaining:: * User-defined Exceptions:: * Defining Clean-up Actions:: * Predefined Clean-up Actions:: @@ -105874,7 +99084,7 @@ The parser repeats the offending line and displays a little ‘arrow’ pointing at the earliest point in the line where the error was detected. The error is caused by (or at least detected at) the token `preceding' the arrow: in the example, the error is detected at the function *note -print(): 973, since a colon (‘':'’) is missing before it. File name and +print(): 86b, since a colon (‘':'’) is missing before it. File name and line number are printed so you know where to look in case the input came from a script. @@ -105906,8 +99116,8 @@ shown here: The last line of the error message indicates what happened. Exceptions come in different types, and the type is printed as part of the message: -the types in the example are *note ZeroDivisionError: 1fa, *note -NameError: e42. and *note TypeError: 1fe. The string printed as the +the types in the example are *note ZeroDivisionError: 1288, *note +NameError: d55. and *note TypeError: 17f. The string printed as the exception type is the name of the built-in exception that occurred. This is true for all built-in exceptions, but need not be true for user-defined exceptions (although it is a useful convention). Standard @@ -105917,11 +99127,11 @@ The rest of the line provides detail based on the type of exception and what caused it. The preceding part of the error message shows the context where the -exception occurred, in the form of a stack traceback. In general it +exception happened, in the form of a stack traceback. In general it contains a stack traceback listing source lines; however, it will not display lines read from standard input. -*note Built-in Exceptions: 13a4. lists the built-in exceptions and their +*note Built-in Exceptions: 1289. lists the built-in exceptions and their meanings.  @@ -105935,7 +99145,7 @@ at the following example, which asks the user for input until a valid integer has been entered, but allows the user to interrupt the program (using ‘Control-C’ or whatever the operating system supports); note that a user-generated interruption is signalled by raising the *note -KeyboardInterrupt: 2cf. exception. +KeyboardInterrupt: 184. exception. >>> while True: ... try: @@ -105945,26 +99155,26 @@ KeyboardInterrupt: 2cf. exception. ... print("Oops! That was no valid number. Try again...") ... -The *note try: e39. statement works as follows. +The *note try: d4c. statement works as follows. * First, the `try clause' (the statement(s) between the *note try: - e39. and *note except: c12. keywords) is executed. + d4c. and *note except: b1e. keywords) is executed. * If no exception occurs, the `except clause' is skipped and - execution of the *note try: e39. statement is finished. + execution of the *note try: d4c. statement is finished. * If an exception occurs during execution of the try clause, the rest of the clause is skipped. Then if its type matches the exception - named after the *note except: c12. keyword, the except clause is - executed, and then execution continues after the *note try: e39. + named after the *note except: b1e. keyword, the except clause is + executed, and then execution continues after the *note try: d4c. statement. * If an exception occurs which does not match the exception named in - the except clause, it is passed on to outer *note try: e39. + the except clause, it is passed on to outer *note try: d4c. statements; if no handler is found, it is an `unhandled exception' and execution stops with a message as shown above. -A *note try: e39. statement may have more than one except clause, to +A *note try: d4c. statement may have more than one except clause, to specify handlers for different exceptions. At most one handler will be executed. Handlers only handle exceptions that occur in the corresponding try clause, not in other handlers of the same ‘try’ @@ -105974,7 +99184,7 @@ parenthesized tuple, for example: ... except (RuntimeError, TypeError, NameError): ... pass -A class in an *note except: c12. clause is compatible with an exception +A class in an *note except: b1e. clause is compatible with an exception if it is the same class or a base class thereof (but not the other way around — an except clause listing a derived class is not compatible with a base class). For example, the following code will print B, C, D in @@ -106023,7 +99233,7 @@ handle the exception as well): print("Unexpected error:", sys.exc_info()[0]) raise -The *note try: e39. … *note except: c12. statement has an optional `else +The *note try: d4c. … *note except: b1e. statement has an optional `else clause', which, when present, must follow all except clauses. It is useful for code that must be executed if the try clause does not raise an exception. For example: @@ -106038,7 +99248,7 @@ an exception. For example: f.close() The use of the ‘else’ clause is better than adding additional code to -the *note try: e39. clause because it avoids accidentally catching an +the *note try: d4c. clause because it avoids accidentally catching an exception that wasn’t raised by the code being protected by the ‘try’ … ‘except’ statement. @@ -106048,10 +99258,10 @@ depend on the exception type. The except clause may specify a variable after the exception name. The variable is bound to an exception instance with the arguments stored in -‘instance.args’. For convenience, the exception instance defines *note -__str__(): efb. so the arguments can be printed directly without having -to reference ‘.args’. One may also instantiate an exception first -before raising it and add any attributes to it as desired. +‘instance.args’. For convenience, the exception instance defines +‘__str__()’ so the arguments can be printed directly without having to +reference ‘.args’. One may also instantiate an exception first before +raising it and add any attributes to it as desired. >>> try: ... raise Exception('spam', 'eggs') @@ -106088,12 +99298,12 @@ that are called (even indirectly) in the try clause. For example: Handling run-time error: division by zero  -File: python.info, Node: Raising Exceptions, Next: Exception Chaining, Prev: Handling Exceptions, Up: Errors and Exceptions +File: python.info, Node: Raising Exceptions, Next: User-defined Exceptions, Prev: Handling Exceptions, Up: Errors and Exceptions 2.8.4 Raising Exceptions ------------------------ -The *note raise: d0c. statement allows the programmer to force a +The *note raise: c21. statement allows the programmer to force a specified exception to occur. For example: >>> raise NameError('HiThere') @@ -106101,16 +99311,16 @@ specified exception to occur. For example: File "", line 1, in NameError: HiThere -The sole argument to *note raise: d0c. indicates the exception to be +The sole argument to *note raise: c21. indicates the exception to be raised. This must be either an exception instance or an exception class -(a class that derives from *note Exception: 2df.). If an exception +(a class that derives from *note Exception: 195.). If an exception class is passed, it will be implicitly instantiated by calling its constructor with no arguments: raise ValueError # shorthand for 'raise ValueError()' If you need to determine whether an exception was raised but don’t -intend to handle it, a simpler form of the *note raise: d0c. statement +intend to handle it, a simpler form of the *note raise: c21. statement allows you to re-raise the exception: >>> try: @@ -106125,63 +99335,14 @@ allows you to re-raise the exception: NameError: HiThere  -File: python.info, Node: Exception Chaining, Next: User-defined Exceptions, Prev: Raising Exceptions, Up: Errors and Exceptions +File: python.info, Node: User-defined Exceptions, Next: Defining Clean-up Actions, Prev: Raising Exceptions, Up: Errors and Exceptions -2.8.5 Exception Chaining ------------------------- - -The *note raise: d0c. statement allows an optional *note from: d0c. -which enables chaining exceptions. For example: - - # exc must be exception instance or None. - raise RuntimeError from exc - -This can be useful when you are transforming exceptions. For example: - - >>> def func(): - ... raise IOError - ... - >>> try: - ... func() - ... except IOError as exc: - ... raise RuntimeError('Failed to open database') from exc - ... - Traceback (most recent call last): - File "", line 2, in - File "", line 2, in func - OSError - - The above exception was the direct cause of the following exception: - - Traceback (most recent call last): - File "", line 4, in - RuntimeError: Failed to open database - -Exception chaining happens automatically when an exception is raised -inside an *note except: c12. or *note finally: 2bf. section. Exception -chaining can be disabled by using ‘from None’ idiom: - - >>> try: - ... open('database.sqlite') - ... except OSError: - ... raise RuntimeError from None - ... - Traceback (most recent call last): - File "", line 4, in - RuntimeError - -For more information about chaining mechanics, see *note Built-in -Exceptions: 13a4. - - -File: python.info, Node: User-defined Exceptions, Next: Defining Clean-up Actions, Prev: Exception Chaining, Up: Errors and Exceptions - -2.8.6 User-defined Exceptions +2.8.5 User-defined Exceptions ----------------------------- Programs may name their own exceptions by creating a new exception class -(see *note Classes: 133c. for more about Python classes). Exceptions -should typically be derived from the *note Exception: 2df. class, either +(see *note Classes: 1220. for more about Python classes). Exceptions +should typically be derived from the *note Exception: 195. class, either directly or indirectly. Exception classes can be defined which do anything any other class can @@ -106228,15 +99389,15 @@ the naming of the standard exceptions. Many standard modules define their own exceptions to report errors that may occur in functions they define. More information on classes is -presented in chapter *note Classes: 133c. +presented in chapter *note Classes: 1220.  File: python.info, Node: Defining Clean-up Actions, Next: Predefined Clean-up Actions, Prev: User-defined Exceptions, Up: Errors and Exceptions -2.8.7 Defining Clean-up Actions +2.8.6 Defining Clean-up Actions ------------------------------- -The *note try: e39. statement has another optional clause which is +The *note try: d4c. statement has another optional clause which is intended to define clean-up actions that must be executed under all circumstances. For example: @@ -106250,14 +99411,14 @@ circumstances. For example: File "", line 2, in KeyboardInterrupt -If a *note finally: 2bf. clause is present, the ‘finally’ clause will -execute as the last task before the *note try: e39. statement completes. +If a *note finally: 16f. clause is present, the ‘finally’ clause will +execute as the last task before the *note try: d4c. statement completes. The ‘finally’ clause runs whether or not the ‘try’ statement produces an exception. The following points discuss more complex cases when an exception occurs: * If an exception occurs during execution of the ‘try’ clause, the - exception may be handled by an *note except: c12. clause. If the + exception may be handled by an *note except: b1e. clause. If the exception is not handled by an ‘except’ clause, the exception is re-raised after the ‘finally’ clause has been executed. @@ -106265,12 +99426,8 @@ exception occurs: clause. Again, the exception is re-raised after the ‘finally’ clause has been executed. - * If the ‘finally’ clause executes a *note break: 3fd, *note - continue: 2be. or *note return: 2cb. statement, exceptions are not - re-raised. - - * If the ‘try’ statement reaches a *note break: 3fd, *note continue: - 2be. or *note return: 2cb. statement, the ‘finally’ clause will + * If the ‘try’ statement reaches a *note break: 2c7, *note continue: + 16e. or *note return: 17d. statement, the ‘finally’ clause will execute just prior to the ‘break’, ‘continue’ or ‘return’ statement’s execution. @@ -106315,19 +99472,19 @@ A more complicated example: File "", line 3, in divide TypeError: unsupported operand type(s) for /: 'str' and 'str' -As you can see, the *note finally: 2bf. clause is executed in any event. -The *note TypeError: 1fe. raised by dividing two strings is not handled -by the *note except: c12. clause and therefore re-raised after the +As you can see, the *note finally: 16f. clause is executed in any event. +The *note TypeError: 17f. raised by dividing two strings is not handled +by the *note except: b1e. clause and therefore re-raised after the ‘finally’ clause has been executed. -In real world applications, the *note finally: 2bf. clause is useful for +In real world applications, the *note finally: 16f. clause is useful for releasing external resources (such as files or network connections), regardless of whether the use of the resource was successful.  File: python.info, Node: Predefined Clean-up Actions, Prev: Defining Clean-up Actions, Up: Errors and Exceptions -2.8.8 Predefined Clean-up Actions +2.8.7 Predefined Clean-up Actions --------------------------------- Some objects define standard clean-up actions to be undertaken when the @@ -106341,7 +99498,7 @@ which tries to open a file and print its contents to the screen. The problem with this code is that it leaves the file open for an indeterminate amount of time after this part of the code has finished executing. This is not an issue in simple scripts, but can be a problem -for larger applications. The *note with: 7dc. statement allows objects +for larger applications. The *note with: 6d0. statement allows objects like files to be used in a way that ensures they are always cleaned up promptly and correctly. @@ -106378,7 +99535,7 @@ partake of the dynamic nature of Python: they are created at runtime, and can be modified further after creation. In C++ terminology, normally class members (including the data members) -are `public' (except see below *note Private Variables: 13b2.), and all +are `public' (except see below *note Private Variables: 1295.), and all member functions are `virtual'. As in Modula-3, there are no shorthands for referencing the object’s members from its methods: the method function is declared with an explicit first argument representing the @@ -106444,7 +99601,7 @@ A `namespace' is a mapping from names to objects. Most namespaces are currently implemented as Python dictionaries, but that’s normally not noticeable in any way (except for performance), and it may change in the future. Examples of namespaces are: the set of built-in names -(containing functions such as *note abs(): 13b7, and built-in exception +(containing functions such as *note abs(): 129a, and built-in exception names); the global names in a module; and the local names in a function invocation. In a sense the set of attributes of an object also form a namespace. The important thing to know about namespaces is that there @@ -106465,7 +99622,7 @@ same namespace! (1) Attributes may be read-only or writable. In the latter case, assignment to attributes is possible. Module attributes are writable: you can write ‘modname.the_answer = 42’. Writable attributes may also be -deleted with the *note del: 1365. statement. For example, ‘del +deleted with the *note del: 1249. statement. For example, ‘del modname.the_answer’ will remove the attribute ‘the_answer’ from the object named by ‘modname’. @@ -106478,7 +99635,7 @@ statements executed by the top-level invocation of the interpreter, either read from a script file or interactively, are considered part of a module called *note __main__: 1, so they have their own global namespace. (The built-in names actually also live in a module; this is -called *note builtins: 12.) +called *note builtins: 13.) The local namespace for a function is created when the function is called, and deleted when the function returns or raises an exception @@ -106510,7 +99667,7 @@ namespaces are directly accessible: If a name is declared global, then all references and assignments go directly to the middle scope containing the module’s global names. To rebind variables found outside of the innermost scope, the *note -nonlocal: d09. statement can be used; if not declared nonlocal, those +nonlocal: c1e. statement can be used; if not declared nonlocal, those variables are read-only (an attempt to write to such a variable will simply create a `new' local variable in the innermost scope, leaving the identically named outer variable unchanged). @@ -106529,18 +99686,18 @@ name resolution, at “compile” time, so don’t rely on dynamic name resolution! (In fact, local variables are already determined statically.) -A special quirk of Python is that – if no *note global: 133b. or *note -nonlocal: d09. statement is in effect – assignments to names always go +A special quirk of Python is that – if no *note global: 121f. or *note +nonlocal: c1e. statement is in effect – assignments to names always go into the innermost scope. Assignments do not copy data — they just bind names to objects. The same is true for deletions: the statement ‘del x’ removes the binding of ‘x’ from the namespace referenced by the local scope. In fact, all operations that introduce new names use the local -scope: in particular, *note import: ce9. statements and function +scope: in particular, *note import: bfd. statements and function definitions bind the module or function name in the local scope. -The *note global: 133b. statement can be used to indicate that +The *note global: 121f. statement can be used to indicate that particular variables live in the global scope and should be rebound -there; the *note nonlocal: d09. statement indicates that particular +there; the *note nonlocal: c1e. statement indicates that particular variables live in an enclosing scope and should be rebound there. * Menu: @@ -106550,8 +99707,8 @@ variables live in an enclosing scope and should be rebound there. ---------- Footnotes ---------- (1) (1) Except for one thing. Module objects have a secret read-only -attribute called *note __dict__: 5f8. which returns the dictionary used -to implement the module’s namespace; the name *note __dict__: 5f8. is an +attribute called *note __dict__: 4ed. which returns the dictionary used +to implement the module’s namespace; the name *note __dict__: 4ed. is an attribute but not a global name. Obviously, using this violates the abstraction of namespace implementation, and should be restricted to things like post-mortem debuggers. @@ -106563,7 +99720,7 @@ File: python.info, Node: Scopes and Namespaces Example, Up: Python Scopes and ..................................... This is an example demonstrating how to reference the different scopes -and namespaces, and how *note global: 133b. and *note nonlocal: d09. +and namespaces, and how *note global: 121f. and *note nonlocal: c1e. affect variable binding: def scope_test(): @@ -106597,12 +99754,12 @@ The output of the example code is: In global scope: global spam Note how the `local' assignment (which is default) didn’t change -`scope_test'’s binding of `spam'. The *note nonlocal: d09. assignment -changed `scope_test'’s binding of `spam', and the *note global: 133b. +`scope_test'’s binding of `spam'. The *note nonlocal: c1e. assignment +changed `scope_test'’s binding of `spam', and the *note global: 121f. assignment changed the module-level binding. You can also see that there was no previous binding for `spam' before -the *note global: 133b. assignment. +the *note global: 121f. assignment.  File: python.info, Node: A First Look at Classes, Next: Random Remarks, Prev: Python Scopes and Namespaces, Up: Classes @@ -106636,9 +99793,9 @@ The simplest form of class definition looks like this: . -Class definitions, like function definitions (*note def: e85. +Class definitions, like function definitions (*note def: d98. statements) must be executed before they have any effect. (You could -conceivably place a class definition in a branch of an *note if: ead. +conceivably place a class definition in a branch of an *note if: dc1. statement, or inside a function.) In practice, the statements inside a class definition will usually be @@ -106700,22 +99857,20 @@ local variable ‘x’. The instantiation operation (“calling” a class object) creates an empty object. Many classes like to create objects with instances customized to a specific initial state. Therefore a class may define a special -method named *note __init__(): e25, like this: +method named ‘__init__()’, like this: def __init__(self): self.data = [] -When a class defines an *note __init__(): e25. method, class -instantiation automatically invokes *note __init__(): e25. for the -newly-created class instance. So in this example, a new, initialized -instance can be obtained by: +When a class defines an ‘__init__()’ method, class instantiation +automatically invokes ‘__init__()’ for the newly-created class instance. +So in this example, a new, initialized instance can be obtained by: x = MyClass() -Of course, the *note __init__(): e25. method may have arguments for -greater flexibility. In that case, arguments given to the class -instantiation operator are passed on to *note __init__(): e25. For -example, +Of course, the ‘__init__()’ method may have arguments for greater +flexibility. In that case, arguments given to the class instantiation +operator are passed on to ‘__init__()’. For example, >>> class Complex: ... def __init__(self, realpart, imagpart): @@ -106839,8 +99994,8 @@ all instances of the class: >>> e.name # unique to e 'Buddy' -As discussed in *note A Word About Names and Objects: 13b4, shared data -can have possibly surprising effects with involving *note mutable: 1321. +As discussed in *note A Word About Names and Objects: 1297, shared data +can have possibly surprising effects with involving *note mutable: 1205. objects such as lists and dictionaries. For example, the `tricks' list in the following code should not be used as a class variable because just a single list would be shared by all `Dog' instances: @@ -107034,15 +100189,15 @@ is accessible as ‘BaseClassName’ in the global scope.) Python has two built-in functions that work with inheritance: - * Use *note isinstance(): 554. to check an instance’s type: + * Use *note isinstance(): 440. to check an instance’s type: ‘isinstance(obj, int)’ will be ‘True’ only if ‘obj.__class__’ is - *note int: 204. or some class derived from *note int: 204. + *note int: 171. or some class derived from *note int: 171. - * Use *note issubclass(): 555. to check class inheritance: - ‘issubclass(bool, int)’ is ‘True’ since *note bool: 2c0. is a - subclass of *note int: 204. However, ‘issubclass(float, int)’ is - ‘False’ since *note float: 1fd. is not a subclass of *note int: - 204. + * Use *note issubclass(): 441. to check class inheritance: + ‘issubclass(bool, int)’ is ‘True’ since *note bool: 170. is a + subclass of *note int: 171. However, ‘issubclass(float, int)’ is + ‘False’ since *note float: 174. is not a subclass of *note int: + 171. * Menu: @@ -107074,7 +100229,7 @@ searched for in ‘Base2’, and so on. In fact, it is slightly more complex than that; the method resolution order changes dynamically to support cooperative calls to *note super(): -5df. This approach is known in some other multiple-inheritance +4d3. This approach is known in some other multiple-inheritance languages as call-next-method and is more powerful than the super call found in single-inheritance languages. @@ -107082,8 +100237,8 @@ Dynamic ordering is necessary because all cases of multiple inheritance exhibit one or more diamond relationships (where at least one of the parent classes can be accessed through multiple paths from the bottommost class). For example, all classes inherit from *note object: -3d5, so any case of multiple inheritance provides more than one path to -reach *note object: 3d5. To keep the base classes from being accessed +29b, so any case of multiple inheritance provides more than one path to +reach *note object: 29b. To keep the base classes from being accessed more than once, the dynamic algorithm linearizes the search order in a way that preserves the left-to-right ordering specified in each class, that calls each parent only once, and that is monotonic (meaning that a @@ -107192,7 +100347,7 @@ File: python.info, Node: Iterators, Next: Generators, Prev: Odds and Ends, U --------------- By now you have probably noticed that most container objects can be -looped over using a *note for: cfc. statement: +looped over using a *note for: c10. statement: for element in [1, 2, 3]: print(element) @@ -107207,13 +100362,13 @@ looped over using a *note for: cfc. statement: This style of access is clear, concise, and convenient. The use of iterators pervades and unifies Python. Behind the scenes, the *note -for: cfc. statement calls *note iter(): def. on the container object. +for: c10. statement calls *note iter(): cfe. on the container object. The function returns an iterator object that defines the method *note -__next__(): d2e. which accesses elements in the container one at a time. -When there are no more elements, *note __next__(): d2e. raises a *note -StopIteration: 584. exception which tells the ‘for’ loop to terminate. -You can call the *note __next__(): d2e. method using the *note next(): -777. built-in function; this example shows how it all works: +__next__(): c41. which accesses elements in the container one at a time. +When there are no more elements, *note __next__(): c41. raises a *note +StopIteration: 477. exception which tells the ‘for’ loop to terminate. +You can call the *note __next__(): c41. method using the *note next(): +66b. built-in function; this example shows how it all works: >>> s = 'abc' >>> it = iter(s) @@ -107232,10 +100387,9 @@ You can call the *note __next__(): d2e. method using the *note next(): StopIteration Having seen the mechanics behind the iterator protocol, it is easy to -add iterator behavior to your classes. Define an *note __iter__(): 60b. -method which returns an object with a *note __next__(): d2e. method. If -the class defines ‘__next__()’, then *note __iter__(): 60b. can just -return ‘self’: +add iterator behavior to your classes. Define an ‘__iter__()’ method +which returns an object with a *note __next__(): c41. method. If the +class defines ‘__next__()’, then ‘__iter__()’ can just return ‘self’: class Reverse: """Iterator for looping over a sequence backwards.""" @@ -107269,10 +100423,10 @@ File: python.info, Node: Generators, Next: Generator Expressions, Prev: Itera 2.9.9 Generators ---------------- -*note Generators: a85. are a simple and powerful tool for creating +*note Generators: 983. are a simple and powerful tool for creating iterators. They are written like regular functions but use the *note -yield: 2ca. statement whenever they want to return data. Each time -*note next(): 777. is called on it, the generator resumes where it left +yield: 17c. statement whenever they want to return data. Each time +*note next(): 66b. is called on it, the generator resumes where it left off (it remembers all the data values and which statement was last executed). An example shows that generators can be trivially easy to create: @@ -107291,8 +100445,8 @@ create: Anything that can be done with generators can also be done with class-based iterators as described in the previous section. What makes -generators so compact is that the *note __iter__(): 60b. and *note -__next__(): 13d2. methods are created automatically. +generators so compact is that the ‘__iter__()’ and *note __next__(): +12b5. methods are created automatically. Another key feature is that the local variables and execution state are automatically saved between calls. This made the function easier to @@ -107300,7 +100454,7 @@ write and much more clear than an approach using instance variables like ‘self.index’ and ‘self.data’. In addition to automatic method creation and saving program state, when -generators terminate, they automatically raise *note StopIteration: 584. +generators terminate, they automatically raise *note StopIteration: 477. In combination, these features make it easy to create iterators with no more effort than writing a regular function. @@ -107363,23 +100517,23 @@ File: python.info, Node: Operating System Interface, Next: File Wildcards, Up 2.10.1 Operating System Interface --------------------------------- -The *note os: c4. module provides dozens of functions for interacting +The *note os: c5. module provides dozens of functions for interacting with the operating system: >>> import os >>> os.getcwd() # Return the current working directory - 'C:\\Python39' + 'C:\\Python38' >>> os.chdir('/server/accesslogs') # Change current working directory >>> os.system('mkdir today') # Run the command mkdir in the system shell 0 Be sure to use the ‘import os’ style instead of ‘from os import *’. -This will keep *note os.open(): 75a. from shadowing the built-in *note -open(): 16f. function which operates much differently. +This will keep *note os.open(): 64e. from shadowing the built-in *note +open(): 4e1. function which operates much differently. -The built-in *note dir(): dfb. and *note help(): 175. functions are +The built-in *note dir(): d09. and *note help(): 55f. functions are useful as interactive aids for working with large modules like *note os: -c4.: +c5.: >>> import os >>> dir(os) @@ -107387,7 +100541,7 @@ c4.: >>> help(os) -For daily file and directory management tasks, the *note shutil: e9. +For daily file and directory management tasks, the *note shutil: ea. module provides a higher level interface that is easier to use: >>> import shutil @@ -107402,7 +100556,7 @@ File: python.info, Node: File Wildcards, Next: Command Line Arguments, Prev: 2.10.2 File Wildcards --------------------- -The *note glob: 88. module provides a function for making file lists +The *note glob: 8a. module provides a function for making file lists from directory wildcard searches: >>> import glob @@ -107416,7 +100570,7 @@ File: python.info, Node: Command Line Arguments, Next: Error Output Redirectio ----------------------------- Common utility scripts often need to process command line arguments. -These arguments are stored in the *note sys: fd. module’s `argv' +These arguments are stored in the *note sys: fe. module’s `argv' attribute as a list. For instance the following output results from running ‘python demo.py one two three’ at the command line: @@ -107424,7 +100578,7 @@ running ‘python demo.py one two three’ at the command line: >>> print(sys.argv) ['demo.py', 'one', 'two', 'three'] -The *note argparse: 5. module provides a more sophisticated mechanism to +The *note argparse: 6. module provides a more sophisticated mechanism to process command line arguments. The following script extracts one or more filenames and an optional number of lines to be displayed: @@ -107447,7 +100601,7 @@ File: python.info, Node: Error Output Redirection and Program Termination, Nex 2.10.4 Error Output Redirection and Program Termination ------------------------------------------------------- -The *note sys: fd. module also has attributes for `stdin', `stdout', and +The *note sys: fe. module also has attributes for `stdin', `stdout', and `stderr'. The latter is useful for emitting warnings and error messages to make them visible even when `stdout' has been redirected: @@ -107462,7 +100616,7 @@ File: python.info, Node: String Pattern Matching, Next: Mathematics, Prev: Er 2.10.5 String Pattern Matching ------------------------------ -The *note re: dd. module provides regular expression tools for advanced +The *note re: de. module provides regular expression tools for advanced string processing. For complex matching and manipulation, regular expressions offer succinct, optimized solutions: @@ -107484,7 +100638,7 @@ File: python.info, Node: Mathematics, Next: Internet Access, Prev: String Pat 2.10.6 Mathematics ------------------ -The *note math: b1. module gives access to the underlying C library +The *note math: b2. module gives access to the underlying C library functions for floating point math: >>> import math @@ -107493,7 +100647,7 @@ functions for floating point math: >>> math.log(1024, 2) 10.0 -The *note random: dc. module provides tools for making random +The *note random: dd. module provides tools for making random selections: >>> import random @@ -107506,7 +100660,7 @@ selections: >>> random.randrange(6) # random integer chosen from range(6) 4 -The *note statistics: f5. module calculates basic statistical properties +The *note statistics: f6. module calculates basic statistical properties (the mean, median, variance, etc.) of numeric data: >>> import statistics @@ -107528,8 +100682,8 @@ File: python.info, Node: Internet Access, Next: Dates and Times, Prev: Mathem ---------------------- There are a number of modules for accessing the internet and processing -internet protocols. Two of the simplest are *note urllib.request: 129. -for retrieving data from URLs and *note smtplib: ed. for sending mail: +internet protocols. Two of the simplest are *note urllib.request: 121. +for retrieving data from URLs and *note smtplib: ee. for sending mail: >>> from urllib.request import urlopen >>> with urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl') as response: @@ -107558,7 +100712,7 @@ File: python.info, Node: Dates and Times, Next: Data Compression, Prev: Inter 2.10.8 Dates and Times ---------------------- -The *note datetime: 30. module supplies classes for manipulating dates +The *note datetime: 31. module supplies classes for manipulating dates and times in both simple and complex ways. While date and time arithmetic is supported, the focus of the implementation is on efficient member extraction for output formatting and manipulation. The module @@ -107585,8 +100739,8 @@ File: python.info, Node: Data Compression, Next: Performance Measurement, Pre ----------------------- Common data archiving and compression formats are directly supported by -modules including: *note zlib: 14d, *note gzip: 8b, *note bz2: 13, *note -lzma: ad, *note zipfile: 14b. and *note tarfile: 101. +modules including: *note zlib: 145, *note gzip: 8c, *note bz2: 14, *note +lzma: ae, *note zipfile: 143. and *note tarfile: 102. >>> import zlib >>> s = b'witch which has which witches wrist watch' @@ -107612,7 +100766,7 @@ provides a measurement tool that answers those questions immediately. For example, it may be tempting to use the tuple packing and unpacking feature instead of the traditional approach to swapping arguments. The -*note timeit: 10d. module quickly demonstrates a modest performance +*note timeit: 10c. module quickly demonstrates a modest performance advantage: >>> from timeit import Timer @@ -107621,8 +100775,8 @@ advantage: >>> Timer('a,b = b,a', 'a=1; b=2').timeit() 0.54962537085770791 -In contrast to *note timeit: 10d.’s fine level of granularity, the *note -profile: d3. and *note pstats: d4. modules provide tools for identifying +In contrast to *note timeit: 10c.’s fine level of granularity, the *note +profile: d4. and *note pstats: d5. modules provide tools for identifying time critical sections in larger blocks of code.  @@ -107635,7 +100789,7 @@ One approach for developing high quality software is to write tests for each function as it is developed and to run those tests frequently during the development process. -The *note doctest: 66. module provides a tool for scanning a module and +The *note doctest: 67. module provides a tool for scanning a module and validating tests embedded in a program’s docstrings. Test construction is as simple as cutting-and-pasting a typical call along with its results into the docstring. This improves the documentation by @@ -107653,8 +100807,8 @@ make sure the code remains true to the documentation: import doctest doctest.testmod() # automatically validate the embedded tests -The *note unittest: 124. module is not as effortless as the *note -doctest: 66. module, but it allows a more comprehensive set of tests to +The *note unittest: 11c. module is not as effortless as the *note +doctest: 67. module, but it allows a more comprehensive set of tests to be maintained in a separate file: import unittest @@ -107681,34 +100835,34 @@ Python has a “batteries included” philosophy. This is best seen through the sophisticated and robust capabilities of its larger packages. For example: - * The *note xmlrpc.client: 148. and *note xmlrpc.server: 149. modules + * The *note xmlrpc.client: 140. and *note xmlrpc.server: 141. modules make implementing remote procedure calls into an almost trivial task. Despite the modules names, no direct knowledge or handling of XML is needed. - * The *note email: 67. package is a library for managing email + * The *note email: 69. package is a library for managing email messages, including MIME and other RFC 2822(1)-based message - documents. Unlike *note smtplib: ed. and *note poplib: d0. which + documents. Unlike *note smtplib: ee. and *note poplib: d1. which actually send and receive messages, the email package has a complete toolset for building or decoding complex message structures (including attachments) and for implementing internet encoding and header protocols. - * The *note json: a4. package provides robust support for parsing - this popular data interchange format. The *note csv: 29. module + * The *note json: a5. package provides robust support for parsing + this popular data interchange format. The *note csv: 2a. module supports direct reading and writing of files in Comma-Separated Value format, commonly supported by databases and spreadsheets. XML processing is supported by the *note xml.etree.ElementTree: - 140, *note xml.dom: 13d. and *note xml.sax: 144. packages. + 138, *note xml.dom: 135. and *note xml.sax: 13c. packages. Together, these modules and packages greatly simplify data interchange between Python applications and other tools. - * The *note sqlite3: f2. module is a wrapper for the SQLite database + * The *note sqlite3: f3. module is a wrapper for the SQLite database library, providing a persistent database that can be updated and accessed using slightly nonstandard SQL syntax. * Internationalization is supported by a number of modules including - *note gettext: 87, *note locale: a9, and the *note codecs: 1b. + *note gettext: 89, *note locale: aa, and the *note codecs: 1c. package. ---------- Footnotes ---------- @@ -107741,7 +100895,7 @@ File: python.info, Node: Output Formatting, Next: Templating, Up: Brief Tour 2.11.1 Output Formatting ------------------------ -The *note reprlib: df. module provides a version of *note repr(): 8bb. +The *note reprlib: e0. module provides a version of *note repr(): 7b1. customized for abbreviated displays of large or deeply nested containers: @@ -107749,7 +100903,7 @@ containers: >>> reprlib.repr(set('supercalifragilisticexpialidocious')) "{'a', 'c', 'd', 'e', 'f', 'g', ...}" -The *note pprint: d2. module offers more sophisticated control over +The *note pprint: d3. module offers more sophisticated control over printing both built-in and user defined objects in a way that is readable by the interpreter. When the result is longer than one line, the “pretty printer” adds line breaks and indentation to more clearly @@ -107766,7 +100920,7 @@ reveal data structure: [['magenta', 'yellow'], 'blue']]] -The *note textwrap: 10a. module formats paragraphs of text to fit a +The *note textwrap: 109. module formats paragraphs of text to fit a given screen width: >>> import textwrap @@ -107780,7 +100934,7 @@ given screen width: instead of one big string with newlines to separate the wrapped lines. -The *note locale: a9. module accesses a database of culture specific +The *note locale: aa. module accesses a database of culture specific data formats. The grouping attribute of locale’s format function provides a direct way of formatting numbers with group separators: @@ -107801,7 +100955,7 @@ File: python.info, Node: Templating, Next: Working with Binary Data Record Lay 2.11.2 Templating ----------------- -The *note string: f6. module includes a versatile *note Template: 4f3. +The *note string: f7. module includes a versatile *note Template: 3dc. class with a simplified syntax suitable for editing by end-users. This allows users to customize their applications without having to alter the application. @@ -107817,10 +100971,10 @@ escaped ‘$’: >>> t.substitute(village='Nottingham', cause='the ditch fund') 'Nottinghamfolk send $10 to the ditch fund.' -The *note substitute(): 13f7. method raises a *note KeyError: 3ec. when +The *note substitute(): 12da. method raises a *note KeyError: 2b2. when a placeholder is not supplied in a dictionary or a keyword argument. For mail-merge style applications, user supplied data may be incomplete -and the *note safe_substitute(): 13f8. method may be more appropriate — +and the *note safe_substitute(): 12db. method may be more appropriate — it will leave placeholders unchanged if data is missing: >>> t = Template('Return the $item to $owner.') @@ -107866,10 +101020,10 @@ File: python.info, Node: Working with Binary Data Record Layouts, Next: Multi- 2.11.3 Working with Binary Data Record Layouts ---------------------------------------------- -The *note struct: f8. module provides *note pack(): cd8. and *note -unpack(): 13fb. functions for working with variable length binary record +The *note struct: f9. module provides *note pack(): beb. and *note +unpack(): 12de. functions for working with variable length binary record formats. The following example shows how to loop through header -information in a ZIP file without using the *note zipfile: 14b. module. +information in a ZIP file without using the *note zipfile: 143. module. Pack codes ‘"H"’ and ‘"I"’ represent two and four byte unsigned numbers respectively. The ‘"<"’ indicates that they are standard size and in little-endian byte order: @@ -107905,7 +101059,7 @@ applications that accept user input while other tasks run in the background. A related use case is running I/O in parallel with computations in another thread. -The following code shows how the high level *note threading: 10b. module +The following code shows how the high level *note threading: 10a. module can run tasks in background while the main program continues to run: import threading, zipfile @@ -107937,8 +101091,8 @@ events, condition variables, and semaphores. While those tools are powerful, minor design errors can result in problems that are difficult to reproduce. So, the preferred approach to task coordination is to concentrate all access to a resource in a single -thread and then use the *note queue: da. module to feed that thread with -requests from other threads. Applications using *note Queue: de0. +thread and then use the *note queue: db. module to feed that thread with +requests from other threads. Applications using *note Queue: cef. objects for inter-thread communication and coordination are easier to design, more readable, and more reliable. @@ -107948,7 +101102,7 @@ File: python.info, Node: Logging, Next: Weak References, Prev: Multi-threadin 2.11.5 Logging -------------- -The *note logging: aa. module offers a full featured and flexible +The *note logging: ab. module offers a full featured and flexible logging system. At its simplest, log messages are sent to a file or to ‘sys.stderr’: @@ -107982,14 +101136,14 @@ File: python.info, Node: Weak References, Next: Tools for Working with Lists, ---------------------- Python does automatic memory management (reference counting for most -objects and *note garbage collection: f8b. to eliminate cycles). The +objects and *note garbage collection: ea3. to eliminate cycles). The memory is freed shortly after the last reference to it has been eliminated. This approach works fine for most applications but occasionally there is a need to track objects only as long as they are being used by something else. Unfortunately, just tracking them creates a reference that makes -them permanent. The *note weakref: 131. module provides tools for +them permanent. The *note weakref: 129. module provides tools for tracking objects without creating a reference. When the object is no longer needed, it is automatically removed from a weakref table and a callback is triggered for weakref objects. Typical applications include @@ -108014,7 +101168,7 @@ caching objects that are expensive to create: Traceback (most recent call last): File "", line 1, in d['primary'] # entry was automatically removed - File "C:/python39/lib/weakref.py", line 46, in __getitem__ + File "C:/python38/lib/weakref.py", line 46, in __getitem__ o = self.data[key]() KeyError: 'primary' @@ -108028,7 +101182,7 @@ Many data structure needs can be met with the built-in list type. However, sometimes there is a need for alternative implementations with different performance trade-offs. -The *note array: 6. module provides an *note array(): 216. object that +The *note array: 7. module provides an *note array(): 442. object that is like a list that stores only homogeneous data and stores it more compactly. The following example shows an array of numbers stored as two byte unsigned binary numbers (typecode ‘"H"’) rather than the usual @@ -108041,7 +101195,7 @@ two byte unsigned binary numbers (typecode ‘"H"’) rather than the usual >>> a[1:3] array('H', [10, 700]) -The *note collections: 1d. module provides a *note deque(): 62d. object +The *note collections: 1e. module provides a *note deque(): 51e. object that is like a list with faster appends and pops from the left side but slower lookups in the middle. These objects are well suited for implementing queues and breadth first tree searches: @@ -108061,7 +101215,7 @@ implementing queues and breadth first tree searches: unsearched.append(m) In addition to alternative list implementations, the library also offers -other tools such as the *note bisect: 11. module with functions for +other tools such as the *note bisect: 12. module with functions for manipulating sorted lists: >>> import bisect @@ -108070,7 +101224,7 @@ manipulating sorted lists: >>> scores [(100, 'perl'), (200, 'tcl'), (300, 'ruby'), (400, 'lua'), (500, 'python')] -The *note heapq: 8d. module provides functions for implementing heaps +The *note heapq: 8e. module provides functions for implementing heaps based on regular lists. The lowest valued entry is always kept at position zero. This is useful for applications which repeatedly access the smallest element but do not want to run a full list sort: @@ -108088,9 +101242,9 @@ File: python.info, Node: Decimal Floating Point Arithmetic, Prev: Tools for Wo 2.11.8 Decimal Floating Point Arithmetic ---------------------------------------- -The *note decimal: 35. module offers a *note Decimal: 2c3. datatype for +The *note decimal: 36. module offers a *note Decimal: 175. datatype for decimal floating point arithmetic. Compared to the built-in *note -float: 1fd. implementation of binary floating point, the class is +float: 174. implementation of binary floating point, the class is especially helpful for * financial applications and other uses which require exact decimal @@ -108116,13 +101270,13 @@ nearest cent: >>> round(.70 * 1.05, 2) 0.73 -The *note Decimal: 2c3. result keeps a trailing zero, automatically +The *note Decimal: 175. result keeps a trailing zero, automatically inferring four place significance from multiplicands with two place significance. Decimal reproduces mathematics as done by hand and avoids issues that can arise when binary floating point cannot exactly represent decimal quantities. -Exact representation enables the *note Decimal: 2c3. class to perform +Exact representation enables the *note Decimal: 175. class to perform modulo calculations and equality tests that are unsuitable for binary floating point: @@ -108136,7 +101290,7 @@ floating point: >>> sum([0.1]*10) == 1.0 False -The *note decimal: 35. module provides arithmetic with as much precision +The *note decimal: 36. module provides arithmetic with as much precision as needed: >>> getcontext().prec = 36 @@ -108174,7 +101328,7 @@ requirements are in conflict and installing either version 1.0 or 2.0 will leave one application unable to run. The solution for this problem is to create a *note virtual environment: -140a, a self-contained directory tree that contains a Python +12ed, a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages. @@ -108192,13 +101346,13 @@ File: python.info, Node: Creating Virtual Environments, Next: Managing Package ------------------------------------ The module used to create and manage virtual environments is called -*note venv: 12e. *note venv: 12e. will usually install the most recent +*note venv: 126. *note venv: 126. will usually install the most recent version of Python that you have available. If you have multiple versions of Python on your system, you can select a specific Python version by running ‘python3’ or whichever version you want. To create a virtual environment, decide upon a directory where you want -to place it, and run the *note venv: 12e. module as a script with the +to place it, and run the *note venv: 126. module as a script with the directory path: python3 -m venv tutorial-env @@ -108254,13 +101408,13 @@ Index, <‘https://pypi.org’>. You can browse the Python Package Index by going to it in your web browser. ‘pip’ has a number of subcommands: “install”, “uninstall”, “freeze”, -etc. (Consult the *note Installing Python Modules: 8e4. guide for +etc. (Consult the *note Installing Python Modules: 7da. guide for complete documentation for ‘pip’.) You can install the latest version of a package by specifying a package’s name: - (tutorial-env) $ python -m pip install novas + (tutorial-env) $ pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas @@ -108270,7 +101424,7 @@ package’s name: You can also install a specific version of a package by giving the package name followed by ‘==’ and the version number: - (tutorial-env) $ python -m pip install requests==2.6.0 + (tutorial-env) $ pip install requests==2.6.0 Collecting requests==2.6.0 Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests @@ -108281,7 +101435,7 @@ is already installed and do nothing. You can supply a different version number to get that version, or you can run ‘pip install --upgrade’ to upgrade the package to the latest version: - (tutorial-env) $ python -m pip install --upgrade requests + (tutorial-env) $ pip install --upgrade requests Collecting requests Installing collected packages: requests Found existing installation: requests 2.6.0 @@ -108331,7 +101485,7 @@ The ‘requirements.txt’ can then be committed to version control and shipped as part of an application. Users can then install all the necessary packages with ‘install -r’: - (tutorial-env) $ python -m pip install -r requirements.txt + (tutorial-env) $ pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1)) ... Collecting numpy==1.9.2 (from -r requirements.txt (line 2)) @@ -108343,9 +101497,9 @@ necessary packages with ‘install -r’: Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0 ‘pip’ has many more options. Consult the *note Installing Python -Modules: 8e4. guide for complete documentation for ‘pip’. When you’ve +Modules: 7da. guide for complete documentation for ‘pip’. When you’ve written a package and want to make it available on the Python Package -Index, consult the *note Distributing Python Modules: 8e5. guide. +Index, consult the *note Distributing Python Modules: 7db. guide.  File: python.info, Node: What Now?, Next: Interactive Input Editing and History Substitution, Prev: Virtual Environments and Packages, Up: The Python Tutorial @@ -108360,7 +101514,7 @@ problems. Where should you go to learn more? This tutorial is part of Python’s documentation set. Some other documents in the set are: - * *note The Python Standard Library: 12f3.: + * *note The Python Standard Library: 11d6.: You should browse through this manual, which gives complete (though terse) reference material about types, functions, and the modules @@ -108371,10 +101525,10 @@ documents in the set are: many other tasks. Skimming through the Library Reference will give you an idea of what’s available. - * *note Installing Python Modules: 8e4. explains how to install + * *note Installing Python Modules: 7da. explains how to install additional modules written by other Python users. - * *note The Python Language Reference: 12f4.: A detailed explanation + * *note The Python Language Reference: 11d7.: A detailed explanation of Python’s syntax and semantics. It’s heavy reading, but is useful as a complete guide to the language itself. @@ -108417,7 +101571,7 @@ suggesting new features, and announcing new modules. Mailing list archives are available at ‘https://mail.python.org/pipermail/’. Before posting, be sure to check the list of *note Frequently Asked -Questions: 1410. (also called the FAQ). The FAQ answers many of the +Questions: 12f3. (also called the FAQ). The FAQ answers many of the questions that come up again and again, and may already contain the solution for your problem. @@ -108455,13 +101609,13 @@ File: python.info, Node: Tab Completion and History Editing, Next: Alternative ----------------------------------------- Completion of variable and module names is *note automatically enabled: -9ce. at interpreter startup so that the ‘Tab’ key invokes the completion +8c9. at interpreter startup so that the ‘Tab’ key invokes the completion function; it looks at Python statement names, the current local variables, and the available module names. For dotted expressions such as ‘string.a’, it will evaluate the expression up to the final ‘'.'’ and then suggest completions from the attributes of the resulting object. Note that this may execute application-defined code if an object with a -*note __getattr__(): 42c. method is part of the expression. The default +‘__getattr__()’ method is part of the expression. The default configuration also saves your history into a file named ‘.python_history’ in your user directory. The history will be available again during the next interactive interpreter session. @@ -108572,7 +101726,7 @@ approximated by ‘3602879701896397 / 2 ** 55’. Since all of these decimal values share the same approximation, any one of them could be displayed while still preserving the invariant ‘eval(repr(x)) == x’. -Historically, the Python prompt and built-in *note repr(): 8bb. function +Historically, the Python prompt and built-in *note repr(): 7b1. function would choose the one with 17 significant digits, ‘0.10000000000000001’. Starting with Python 3.1, Python (on most systems) is now able to choose the shortest of these and simply display ‘0.1’. @@ -108606,13 +101760,13 @@ One illusion may beget another. For example, since 0.1 is not exactly Also, since the 0.1 cannot get any closer to the exact value of 1/10 and 0.3 cannot get any closer to the exact value of 3/10, then pre-rounding -with *note round(): d37. function cannot help: +with *note round(): c49. function cannot help: >>> round(.1, 1) + round(.1, 1) + round(.1, 1) == round(.3, 1) False Though the numbers cannot be made closer to their intended exact values, -the *note round(): d37. function can be useful for post-rounding so that +the *note round(): c49. function can be useful for post-rounding so that results with inexact values become comparable to one another: >>> round(.1 + .1 + .1, 10) == round(.3, 10) @@ -108634,16 +101788,16 @@ rounding error. While pathological cases do exist, for most casual use of floating-point arithmetic you’ll see the result you expect in the end if you simply round the display of your final results to the number of decimal digits -you expect. *note str(): 205. usually suffices, and for finer control -see the *note str.format(): 5d7. method’s format specifiers in *note -Format String Syntax: de2. +you expect. *note str(): 321. usually suffices, and for finer control +see the *note str.format(): 4cb. method’s format specifiers in *note +Format String Syntax: cf1. For use cases which require exact decimal representation, try using the -*note decimal: 35. module which implements decimal arithmetic suitable +*note decimal: 36. module which implements decimal arithmetic suitable for accounting applications and high-precision applications. Another form of exact arithmetic is supported by the *note fractions: -81. module which implements arithmetic based on rational numbers (so the +83. module which implements arithmetic based on rational numbers (so the numbers like 1/3 can be represented exactly). If you are a heavy user of floating point operations you should take a @@ -108653,7 +101807,7 @@ See <‘https://scipy.org’>. Python provides tools that may help on those rare occasions when you really `do' want to know the exact value of a float. The *note -float.as_integer_ratio(): 141b. method expresses the value of a float as +float.as_integer_ratio(): 12fe. method expresses the value of a float as a fraction: >>> x = 3.14159 @@ -108666,7 +101820,7 @@ original value: >>> x == 3537115888337719 / 1125899906842624 True -The *note float.hex(): 141c. method expresses a float in hexadecimal +The *note float.hex(): 12ff. method expresses a float in hexadecimal (base 16), again giving the exact value stored by your computer: >>> x.hex() @@ -108683,7 +101837,7 @@ values across different versions of Python (platform independence) and exchanging data with other languages that support the same format (such as Java and C99). -Another helpful tool is the *note math.fsum(): e06. function which helps +Another helpful tool is the *note math.fsum(): d14. function which helps mitigate loss-of-precision during summation. It tracks “lost digits” as values are added onto a running total. That can make a difference in overall accuracy so that the errors do not accumulate to the point where @@ -108785,7 +101939,7 @@ older versions of Python), round the result to 17 significant digits: >>> format(0.1, '.17f') '0.10000000000000001' -The *note fractions: 81. and *note decimal: 35. modules make these +The *note fractions: 83. and *note decimal: 36. modules make these calculations easy: >>> from decimal import Decimal @@ -108836,7 +101990,7 @@ When an error occurs, the interpreter prints an error message and a stack trace. In interactive mode, it then returns to the primary prompt; when input came from a file, it exits with a nonzero exit status after printing the stack trace. (Exceptions handled by an *note except: -c12. clause in a *note try: e39. statement are not errors in this +b1e. clause in a *note try: d4c. statement are not errors in this context.) Some errors are unconditionally fatal and cause an exit with a nonzero exit; this applies to internal inconsistencies and some cases of running out of memory. All error messages are written to the @@ -108846,8 +102000,8 @@ to standard output. Typing the interrupt character (usually ‘Control-C’ or ‘Delete’) to the primary or secondary prompt cancels the input and returns to the primary prompt. (1) Typing an interrupt while a command is executing raises the -*note KeyboardInterrupt: 2cf. exception, which may be handled by a *note -try: e39. statement. +*note KeyboardInterrupt: 184. exception, which may be handled by a *note +try: d4c. statement. ---------- Footnotes ---------- @@ -108891,7 +102045,7 @@ File: python.info, Node: The Interactive Startup File, Next: The Customization When you use Python interactively, it is frequently handy to have some standard commands executed every time the interpreter is started. You can do this by setting an environment variable named *note -PYTHONSTARTUP: 9cd. to the name of a file containing your start-up +PYTHONSTARTUP: 8c8. to the name of a file containing your start-up commands. This is similar to the ‘.profile’ feature of the Unix shells. This file is only read in interactive sessions, not when Python reads @@ -108932,13 +102086,13 @@ this code: Now you can create a file named ‘usercustomize.py’ in that directory and put anything you want in it. It will affect every invocation of Python, -unless it is started with the *note -s: ddd. option to disable the +unless it is started with the *note -s: cec. option to disable the automatic import. ‘sitecustomize’ works in the same way, but is typically created by an administrator of the computer in the global site-packages directory, and is imported before ‘usercustomize’. See the documentation of the *note -site: eb. module for more details. +site: ec. module for more details.  File: python.info, Node: Python Setup and Usage, Next: The Python Language Reference, Prev: The Python Tutorial, Up: Top @@ -108968,7 +102122,7 @@ The CPython interpreter scans the command line and the environment for various settings. `CPython implementation detail:' Other implementations’ command line -schemes may differ. See *note Alternate Implementations: 142f. for +schemes may differ. See *note Alternate Implementations: 1312. for further resources. * Menu: @@ -109030,7 +102184,7 @@ executed. An interface option terminates the list of options consumed by the interpreter, all consecutive arguments will end up in *note sys.argv: -cc8. – note that the first element, subscript zero (‘sys.argv[0]’), is a +bdb. – note that the first element, subscript zero (‘sys.argv[0]’), is a string reflecting the program’s source. -- Program Option: -c @@ -109039,17 +102193,17 @@ string reflecting the program’s source. statements separated by newlines, with significant leading whitespace as in normal module code. - If this option is given, the first element of *note sys.argv: cc8. + If this option is given, the first element of *note sys.argv: bdb. will be ‘"-c"’ and the current directory will be added to the start - of *note sys.path: 260. (allowing modules in that directory to be + of *note sys.path: 479. (allowing modules in that directory to be imported as top level modules). - Raises an *note auditing event: f64. ‘cpython.run_command’ with + Raises an *note auditing event: e6c. ‘cpython.run_command’ with argument ‘command’. -- Program Option: -m - Search *note sys.path: 260. for the named module and execute its + Search *note sys.path: 479. for the named module and execute its contents as the *note __main__: 1. module. Since the argument is a `module' name, you must not give a file @@ -109069,31 +102223,31 @@ string reflecting the program’s source. module files. However, it can still be used for precompiled modules, even if the original source file is not available. - If this option is given, the first element of *note sys.argv: cc8. + If this option is given, the first element of *note sys.argv: bdb. will be the full path to the module file (while the module file is being located, the first element will be set to ‘"-m"’). As with - the *note -c: 1303. option, the current directory will be added to - the start of *note sys.path: 260. + the *note -c: 11e6. option, the current directory will be added to + the start of *note sys.path: 479. - *note -I: 232. option can be used to run the script in isolated - mode where *note sys.path: 260. contains neither the current + *note -I: fe3. option can be used to run the script in isolated + mode where *note sys.path: 479. contains neither the current directory nor the user’s site-packages directory. All ‘PYTHON*’ environment variables are ignored, too. Many standard library modules contain code that is invoked on their - execution as a script. An example is the *note timeit: 10d. + execution as a script. An example is the *note timeit: 10c. module: python -m timeit -s 'setup here' 'benchmarked code here' python -m timeit -h # for details - Raises an *note auditing event: f64. ‘cpython.run_module’ with + Raises an *note auditing event: e6c. ‘cpython.run_module’ with argument ‘module-name’. See also ........ - *note runpy.run_module(): 1433. + *note runpy.run_module(): 1316. Equivalent functionality directly available to Python code @@ -109106,14 +102260,14 @@ string reflecting the program’s source. -- Describe: - - Read commands from standard input (*note sys.stdin: 420.). If - standard input is a terminal, *note -i: ee3. is implied. + Read commands from standard input (*note sys.stdin: 301.). If + standard input is a terminal, *note -i: df8. is implied. - If this option is given, the first element of *note sys.argv: cc8. + If this option is given, the first element of *note sys.argv: bdb. will be ‘"-"’ and the current directory will be added to the start - of *note sys.path: 260. + of *note sys.path: 479. - Raises an *note auditing event: f64. ‘cpython.run_stdin’ with no + Raises an *note auditing event: e6c. ‘cpython.run_stdin’ with no arguments. -- Describe: