blob: 7d7747299d2c6860bfd4777eed76b63ef213274e [file] [log] [blame]
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001****************************
2 What's New In Python 3.3
3****************************
4
5:Author: Raymond Hettinger
6:Release: |release|
7:Date: |today|
8
Éric Araujob07b97f2011-10-05 01:03:34 +02009.. Rules for maintenance:
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000010
11 * Anyone can add text to this document. Do not spend very much time
12 on the wording of your changes, because your text will probably
13 get rewritten to some degree.
14
15 * The maintainer will go through Misc/NEWS periodically and add
16 changes; it's therefore more important to add your changes to
17 Misc/NEWS than to this file.
18
19 * This is not a complete list of every single change; completeness
20 is the purpose of Misc/NEWS. Some changes I consider too small
21 or esoteric to include. If such a change is added to the text,
22 I'll just remove it. (This is another reason you shouldn't spend
23 too much time on writing your addition.)
24
25 * If you want to draw your new text to the attention of the
26 maintainer, add 'XXX' to the beginning of the paragraph or
27 section.
28
29 * It's OK to just add a fragmentary note about a change. For
30 example: "XXX Describe the transmogrify() function added to the
31 socket module." The maintainer will research the change and
32 write the necessary text.
33
34 * You can comment out your additions if you like, but it's not
35 necessary (especially when a final release is some months away).
36
37 * Credit the author of a patch or bugfix. Just the name is
38 sufficient; the e-mail address isn't necessary.
39
40 * It's helpful to add the bug/patch number as a comment:
41
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000042 XXX Describe the transmogrify() function added to the socket
43 module.
Éric Araujob07b97f2011-10-05 01:03:34 +020044 (Contributed by P.Y. Developer in :issue:`12345`.)
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000045
Éric Araujob07b97f2011-10-05 01:03:34 +020046 This saves the maintainer the effort of going through the Mercurial log
Giampaolo Rodolà3108f982011-02-24 20:59:48 +000047 when researching a change.
48
49This article explains the new features in Python 3.3, compared to 3.2.
50
Georg Brandl988049a2012-06-24 18:12:24 +020051.. note:: Beta users should be aware that this document is currently in
Nick Coghlanb47b5392012-05-26 01:31:25 +100052 draft form. It will be updated substantially as Python 3.3 moves towards
53 release, so it's worth checking back even after reading earlier versions.
54
55
Antoine Pitrouc907de92012-08-21 00:53:06 +020056Summary -- Release highlights
57=============================
Victor Stinner636130e2012-08-05 16:37:12 +020058
Antoine Pitrouc907de92012-08-21 00:53:06 +020059.. This section singles out the most important changes in Python 3.3.
60 Brevity is key.
Victor Stinner636130e2012-08-05 16:37:12 +020061
Antoine Pitrouc907de92012-08-21 00:53:06 +020062New syntax features:
Victor Stinner636130e2012-08-05 16:37:12 +020063
Antoine Pitrouc907de92012-08-21 00:53:06 +020064* New ``yield from`` expression for :ref:`generator delegation <pep-380>`.
65* The ``u'unicode'`` syntax is accepted again for :class:`str` objects.
Victor Stinner636130e2012-08-05 16:37:12 +020066
Antoine Pitrouc907de92012-08-21 00:53:06 +020067New library modules:
68
69* :mod:`faulthandler` (helps debugging low-level crashes)
70* :mod:`ipaddress` (high-level objects representing IP addresses and masks)
71* :mod:`lzma` (compress data using the XZ / LZMA algorithm)
Victor Stinner1da769a2012-09-18 22:40:03 +020072* :mod:`unittest.mock` (replace parts of your system under test with mock objects)
Antoine Pitrouc907de92012-08-21 00:53:06 +020073* :mod:`venv` (Python :ref:`virtual environments <pep-405>`, as in the
74 popular ``virtualenv`` package)
75
76New built-in features:
77
78* Reworked :ref:`I/O exception hierarchy <pep-3151>`.
79
80Implementation improvements:
81
82* Rewritten :ref:`import machinery <importlib>` based on :mod:`importlib`.
83* More compact :ref:`unicode strings <pep-393>`.
84* More compact :ref:`attribute dictionaries <pep-412>`.
85
86Security improvements:
87
88* Hash randomization is switched on by default.
89
90Please read on for a comprehensive list of user-facing changes.
91
92
93.. _pep-405:
Victor Stinner636130e2012-08-05 16:37:12 +020094
Éric Araujo859aad62012-06-24 00:07:41 -040095PEP 405: Virtual Environments
96=============================
Nick Coghlanb47b5392012-05-26 01:31:25 +100097
Antoine Pitroua5e57972012-08-21 01:08:17 +020098:pep:`405` - Python Virtual Environments
99 PEP written by Carl Meyer, implemented by Carl Meyer and Vinay Sajip.
Nick Coghlanb47b5392012-05-26 01:31:25 +1000100
Antoine Pitroua5e57972012-08-21 01:08:17 +0200101Virtual environments help create separate Python setups while sharing a
102system-wide base install, for ease of maintenance. Virtual environments
103have their own set of private site packages (i.e. locally-installed
104libraries), and are optionally segregated from the system-wide site
105packages. Their concept and implementation are inspired by the popular
106``virtualenv`` third-party package, but benefit from tighter integration
107with the interpreter core.
Éric Araujo859aad62012-06-24 00:07:41 -0400108
Antoine Pitroua5e57972012-08-21 01:08:17 +0200109This PEP adds the :mod:`venv` module for programmatic access, and the
110:ref:`pyvenv <scripts-pyvenv>` script for command-line access and
111administration. The Python interpreter becomes aware of a ``pvenv.cfg``
112file whose existence signals the base of a virtual environment's directory
113tree.
Nick Coghlanb47b5392012-05-26 01:31:25 +1000114
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000115
Éric Araujo859aad62012-06-24 00:07:41 -0400116PEP 420: Namespace Packages
117===========================
118
119Native support for package directories that don't require ``__init__.py``
120marker files and can automatically span multiple path segments (inspired by
121various third party approaches to namespace packages, as described in
122:pep:`420`)
123
124
125.. _pep-3118-update:
Nick Coghlan98e20702012-03-06 21:50:13 +1000126
Stefan Krah9a2d99e2012-02-25 12:24:21 +0100127PEP 3118: New memoryview implementation and buffer protocol documentation
128=========================================================================
129
130:issue:`10181` - memoryview bug fixes and features.
131 Written by Stefan Krah.
132
133The new memoryview implementation comprehensively fixes all ownership and
134lifetime issues of dynamically allocated fields in the Py_buffer struct
135that led to multiple crash reports. Additionally, several functions that
136crashed or returned incorrect results for non-contiguous or multi-dimensional
137input have been fixed.
138
139The memoryview object now has a PEP-3118 compliant getbufferproc()
140that checks the consumer's request type. Many new features have been
141added, most of them work in full generality for non-contiguous arrays
142and arrays with suboffsets.
143
144The documentation has been updated, clearly spelling out responsibilities
145for both exporters and consumers. Buffer request flags are grouped into
146basic and compound flags. The memory layout of non-contiguous and
147multi-dimensional NumPy-style arrays is explained.
148
149Features
150--------
151
152* All native single character format specifiers in struct module syntax
153 (optionally prefixed with '@') are now supported.
154
155* With some restrictions, the cast() method allows changing of format and
156 shape of C-contiguous arrays.
157
158* Multi-dimensional list representations are supported for any array type.
159
160* Multi-dimensional comparisons are supported for any array type.
161
Stefan Krah37a01702012-09-08 15:35:01 +0200162* One-dimensional memoryviews of hashable (read-only) types with formats B,
163 b or c are now hashable. (Contributed by Antoine Pitrou in :issue:`13411`)
Nick Coghlan98e20702012-03-06 21:50:13 +1000164
Stefan Krah9a2d99e2012-02-25 12:24:21 +0100165* Arbitrary slicing of any 1-D arrays type is supported. For example, it
166 is now possible to reverse a memoryview in O(1) by using a negative step.
167
168API changes
169-----------
170
171* The maximum number of dimensions is officially limited to 64.
172
173* The representation of empty shape, strides and suboffsets is now
174 an empty tuple instead of None.
175
176* Accessing a memoryview element with format 'B' (unsigned bytes)
177 now returns an integer (in accordance with the struct module syntax).
178 For returning a bytes object the view must be cast to 'c' first.
179
Nick Coghlan06e1ab02012-08-25 17:59:50 +1000180* memoryview comparisons now use the logical structure of the operands
181 and compare all array elements by value. All format strings in struct
182 module syntax are supported. Views with unrecognised format strings
183 are still permitted, but will always compare as unequal, regardless
184 of view contents.
185
Stefan Krah54c32032012-02-29 17:47:21 +0100186* For further changes see `Build and C API Changes`_ and `Porting C code`_ .
Stefan Krah9a2d99e2012-02-25 12:24:21 +0100187
Antoine Pitrou037ffbf2011-10-24 00:25:41 +0200188.. _pep-393:
189
Ezio Melotti48a2f8f2011-09-29 00:18:19 +0300190PEP 393: Flexible String Representation
191=======================================
192
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200193The Unicode string type is changed to support multiple internal
194representations, depending on the character with the largest Unicode ordinal
195(1, 2, or 4 bytes) in the represented string. This allows a space-efficient
196representation in common cases, but gives access to full UCS-4 on all
197systems. For compatibility with existing APIs, several representations may
198exist in parallel; over time, this compatibility should be phased out.
Ezio Melotti397546a2011-09-29 08:34:36 +0300199
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200200On the Python side, there should be no downside to this change.
Ezio Melotti397546a2011-09-29 08:34:36 +0300201
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200202On the C API side, PEP 393 is fully backward compatible. The legacy API
203should remain available at least five years. Applications using the legacy
204API will not fully benefit of the memory reduction, or - worse - may use
205a bit more memory, because Python may have to maintain two versions of each
206string (in the legacy format and in the new efficient storage).
207
Antoine Pitrou0599b5b2011-11-29 22:45:07 +0100208Functionality
209-------------
210
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200211Changes introduced by :pep:`393` are the following:
Ezio Melotti48a2f8f2011-09-29 00:18:19 +0300212
Ezio Melotti397546a2011-09-29 08:34:36 +0300213* Python now always supports the full range of Unicode codepoints, including
214 non-BMP ones (i.e. from ``U+0000`` to ``U+10FFFF``). The distinction between
215 narrow and wide builds no longer exists and Python now behaves like a wide
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200216 build, even under Windows.
Ezio Melotti397546a2011-09-29 08:34:36 +0300217
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200218* With the death of narrow builds, the problems specific to narrow builds have
219 also been fixed, for example:
Ezio Melotti397546a2011-09-29 08:34:36 +0300220
221 * :func:`len` now always returns 1 for non-BMP characters,
222 so ``len('\U0010FFFF') == 1``;
223
224 * surrogate pairs are not recombined in string literals,
225 so ``'\uDBFF\uDFFF' != '\U0010FFFF'``;
226
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200227 * indexing or slicing non-BMP characters returns the expected value,
Ezio Melotti397546a2011-09-29 08:34:36 +0300228 so ``'\U0010FFFF'[0]`` now returns ``'\U0010FFFF'`` and not ``'\uDBFF'``;
229
Antoine Pitroud136aec2011-11-17 01:48:06 +0100230 * all other functions in the standard library now correctly handle
Antoine Pitroufd9b4162011-10-24 00:14:43 +0200231 non-BMP codepoints.
Ezio Melotti397546a2011-09-29 08:34:36 +0300232
Ezio Melotti48a2f8f2011-09-29 00:18:19 +0300233* The value of :data:`sys.maxunicode` is now always ``1114111`` (``0x10FFFF``
234 in hexadecimal). The :c:func:`PyUnicode_GetMax` function still returns
235 either ``0xFFFF`` or ``0x10FFFF`` for backward compatibility, and it should
236 not be used with the new Unicode API (see :issue:`13054`).
237
Ezio Melotti397546a2011-09-29 08:34:36 +0300238* The :file:`./configure` flag ``--with-wide-unicode`` has been removed.
Victor Stinner7d637ab2011-09-29 02:56:16 +0200239
Antoine Pitrou0599b5b2011-11-29 22:45:07 +0100240Performance and resource usage
241------------------------------
242
243The storage of Unicode strings now depends on the highest codepoint in the string:
244
245* pure ASCII and Latin1 strings (``U+0000-U+00FF``) use 1 byte per codepoint;
246
247* BMP strings (``U+0000-U+FFFF``) use 2 bytes per codepoint;
248
249* non-BMP strings (``U+10000-U+10FFFF``) use 4 bytes per codepoint.
250
Martin v. Löwisde157cc2012-03-06 08:42:17 +0100251The net effect is that for most applications, memory usage of string
252storage should decrease significantly - especially compared to former
253wide unicode builds - as, in many cases, strings will be pure ASCII
254even in international contexts (because many strings store non-human
255language data, such as XML fragments, HTTP headers, JSON-encoded data,
256etc.). We also hope that it will, for the same reasons, increase CPU
257cache efficiency on non-trivial applications. The memory usage of
258Python 3.3 is two to three times smaller than Python 3.2, and a little
259bit better than Python 2.7, on a Django benchmark (see the PEP for
260details).
Antoine Pitrou0599b5b2011-11-29 22:45:07 +0100261
Éric Araujob07b97f2011-10-05 01:03:34 +0200262
Antoine Pitrouc907de92012-08-21 00:53:06 +0200263.. _pep-3151:
264
Victor Stinnera1bf2982011-10-12 20:35:02 +0200265PEP 3151: Reworking the OS and IO exception hierarchy
266=====================================================
267
268:pep:`3151` - Reworking the OS and IO exception hierarchy
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200269 PEP written and implemented by Antoine Pitrou.
Victor Stinnera1bf2982011-10-12 20:35:02 +0200270
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200271The hierarchy of exceptions raised by operating system errors is now both
272simplified and finer-grained.
Victor Stinnera1bf2982011-10-12 20:35:02 +0200273
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200274You don't have to worry anymore about choosing the appropriate exception
275type between :exc:`OSError`, :exc:`IOError`, :exc:`EnvironmentError`,
276:exc:`WindowsError`, :exc:`mmap.error`, :exc:`socket.error` or
277:exc:`select.error`. All these exception types are now only one:
278:exc:`OSError`. The other names are kept as aliases for compatibility
279reasons.
Victor Stinnera1bf2982011-10-12 20:35:02 +0200280
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200281Also, it is now easier to catch a specific error condition. Instead of
282inspecting the ``errno`` attribute (or ``args[0]``) for a particular
283constant from the :mod:`errno` module, you can catch the adequate
284:exc:`OSError` subclass. The available subclasses are the following:
Victor Stinnera1bf2982011-10-12 20:35:02 +0200285
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200286* :exc:`BlockingIOError`
287* :exc:`ChildProcessError`
288* :exc:`ConnectionError`
289* :exc:`FileExistsError`
290* :exc:`FileNotFoundError`
291* :exc:`InterruptedError`
292* :exc:`IsADirectoryError`
293* :exc:`NotADirectoryError`
294* :exc:`PermissionError`
295* :exc:`ProcessLookupError`
296* :exc:`TimeoutError`
Victor Stinnera1bf2982011-10-12 20:35:02 +0200297
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200298And the :exc:`ConnectionError` itself has finer-grained subclasses:
Victor Stinnera1bf2982011-10-12 20:35:02 +0200299
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200300* :exc:`BrokenPipeError`
301* :exc:`ConnectionAbortedError`
302* :exc:`ConnectionRefusedError`
303* :exc:`ConnectionResetError`
Victor Stinnera1bf2982011-10-12 20:35:02 +0200304
305Thanks to the new exceptions, common usages of the :mod:`errno` can now be
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200306avoided. For example, the following code written for Python 3.2::
Victor Stinnera1bf2982011-10-12 20:35:02 +0200307
308 from errno import ENOENT, EACCES, EPERM
309
310 try:
311 with open("document.txt") as f:
312 content = f.read()
313 except IOError as err:
314 if err.errno == ENOENT:
315 print("document.txt file is missing")
316 elif err.errno in (EACCES, EPERM):
317 print("You are not allowed to read document.txt")
318 else:
319 raise
320
Antoine Pitrou01fd26c2011-10-24 00:07:02 +0200321can now be written without the :mod:`errno` import and without manual
322inspection of exception attributes::
Victor Stinnera1bf2982011-10-12 20:35:02 +0200323
324 try:
325 with open("document.txt") as f:
326 content = f.read()
327 except FileNotFoundError:
328 print("document.txt file is missing")
329 except PermissionError:
330 print("You are not allowed to read document.txt")
331
332
Antoine Pitrouc907de92012-08-21 00:53:06 +0200333.. _pep-380:
334
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000335PEP 380: Syntax for Delegating to a Subgenerator
336================================================
337
Nick Coghlanab7bf212012-02-26 17:49:52 +1000338:pep:`380` - Syntax for Delegating to a Subgenerator
339 PEP written by Greg Ewing.
340
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000341PEP 380 adds the ``yield from`` expression, allowing a generator to delegate
342part of its operations to another generator. This allows a section of code
343containing 'yield' to be factored out and placed in another generator.
344Additionally, the subgenerator is allowed to return with a value, and the
345value is made available to the delegating generator.
Nick Coghlanb9b281b2012-03-06 22:31:12 +1000346
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000347While designed primarily for use in delegating to a subgenerator, the ``yield
348from`` expression actually allows delegation to arbitrary subiterators.
349
Nick Coghlanb9b281b2012-03-06 22:31:12 +1000350For simple iterators, ``yield from iterable`` is essentially just a shortened
351form of ``for item in iterable: yield item``::
352
353 >>> def g(x):
354 ... yield from range(x, 0, -1)
355 ... yield from range(x)
356 ...
357 >>> list(g(5))
358 [5, 4, 3, 2, 1, 0, 1, 2, 3, 4]
359
360However, unlike an ordinary loop, ``yield from`` allows subgenerators to
361receive sent and thrown values directly from the calling scope, and
362return a final value to the outer generator::
363
364 >>> def accumulate(start=0):
365 ... tally = start
366 ... while 1:
367 ... next = yield
368 ... if next is None:
369 ... return tally
370 ... tally += next
371 ...
372 >>> def gather_tallies(tallies, start=0):
373 ... while 1:
374 ... tally = yield from accumulate()
375 ... tallies.append(tally)
376 ...
377 >>> tallies = []
378 >>> acc = gather_tallies(tallies)
379 >>> next(acc) # Ensure the accumulator is ready to accept values
380 >>> for i in range(10):
381 ... acc.send(i)
382 ...
383 >>> acc.send(None) # Finish the first tally
384 >>> for i in range(5):
385 ... acc.send(i)
386 ...
387 >>> acc.send(None) # Finish the second tally
388 >>> tallies
389 [45, 10]
390
391The main principle driving this change is to allow even generators that are
392designed to be used with the ``send`` and ``throw`` methods to be split into
393multiple subgenerators as easily as a single large function can be split into
394multiple subfunctions.
395
Nick Coghlan1f7ce622012-01-13 21:43:40 +1000396(Implementation by Greg Ewing, integrated into 3.3 by Renaud Blanch, Ryan
397Kelly and Nick Coghlan, documentation by Zbigniew Jędrzejewski-Szmek and
398Nick Coghlan)
399
400
Nick Coghlanab7bf212012-02-26 17:49:52 +1000401PEP 409: Suppressing exception context
402======================================
403
404:pep:`409` - Suppressing exception context
405 PEP written by Ethan Furman, implemented by Ethan Furman and Nick Coghlan.
406
407PEP 409 introduces new syntax that allows the display of the chained
408exception context to be disabled. This allows cleaner error messages in
409applications that convert between exception types::
410
411 >>> class D:
412 ... def __init__(self, extra):
413 ... self._extra_attributes = extra
414 ... def __getattr__(self, attr):
415 ... try:
416 ... return self._extra_attributes[attr]
417 ... except KeyError:
418 ... raise AttributeError(attr) from None
419 ...
420 >>> D({}).x
421 Traceback (most recent call last):
422 File "<stdin>", line 1, in <module>
423 File "<stdin>", line 8, in __getattr__
424 AttributeError: x
425
426Without the ``from None`` suffix to suppress the cause, the original
427exception would be displayed by default::
428
429 >>> class C:
430 ... def __init__(self, extra):
431 ... self._extra_attributes = extra
432 ... def __getattr__(self, attr):
433 ... try:
434 ... return self._extra_attributes[attr]
435 ... except KeyError:
436 ... raise AttributeError(attr)
437 ...
438 >>> C({}).x
439 Traceback (most recent call last):
440 File "<stdin>", line 6, in __getattr__
441 KeyError: 'x'
442
443 During handling of the above exception, another exception occurred:
444
445 Traceback (most recent call last):
446 File "<stdin>", line 1, in <module>
447 File "<stdin>", line 8, in __getattr__
448 AttributeError: x
449
450No debugging capability is lost, as the original exception context remains
451available if needed (for example, if an intervening library has incorrectly
452suppressed valuable underlying details)::
453
454 >>> try:
455 ... D({}).x
456 ... except AttributeError as exc:
457 ... print(repr(exc.__context__))
458 ...
459 KeyError('x',)
460
461
Nick Coghlan98e20702012-03-06 21:50:13 +1000462PEP 414: Explicit Unicode literals
463======================================
464
465:pep:`414` - Explicit Unicode literals
466 PEP written by Armin Ronacher.
467
468To ease the transition from Python 2 for Unicode aware Python applications
469that make heavy use of Unicode literals, Python 3.3 once again supports the
470"``u``" prefix for string literals. This prefix has no semantic significance
471in Python 3, it is provided solely to reduce the number of purely mechanical
472changes in migrating to Python 3, making it easier for developers to focus on
473the more significant semantic changes (such as the stricter default
474separation of binary and text data).
475
476
Antoine Pitrou6bbd76b2011-11-25 19:10:05 +0100477PEP 3155: Qualified name for classes and functions
478==================================================
479
480:pep:`3155` - Qualified name for classes and functions
481 PEP written and implemented by Antoine Pitrou.
482
483Functions and class objects have a new ``__qualname__`` attribute representing
484the "path" from the module top-level to their definition. For global functions
485and classes, this is the same as ``__name__``. For other functions and classes,
486it provides better information about where they were actually defined, and
487how they might be accessible from the global scope.
488
489Example with (non-bound) methods::
Nick Coghlan2dfe6b02012-01-14 14:19:49 +1000490
Antoine Pitrou6bbd76b2011-11-25 19:10:05 +0100491 >>> class C:
492 ... def meth(self):
493 ... pass
494 >>> C.meth.__name__
495 'meth'
496 >>> C.meth.__qualname__
497 'C.meth'
498
499Example with nested classes::
500
501 >>> class C:
502 ... class D:
503 ... def meth(self):
504 ... pass
505 ...
506 >>> C.D.__name__
507 'D'
508 >>> C.D.__qualname__
509 'C.D'
510 >>> C.D.meth.__name__
511 'meth'
512 >>> C.D.meth.__qualname__
513 'C.D.meth'
514
515Example with nested functions::
516
517 >>> def outer():
518 ... def inner():
519 ... pass
520 ... return inner
521 ...
522 >>> outer().__name__
523 'inner'
524 >>> outer().__qualname__
525 'outer.<locals>.inner'
526
Antoine Pitroue7ede062011-11-25 19:11:26 +0100527The string representation of those objects is also changed to include the
Antoine Pitrou6bbd76b2011-11-25 19:10:05 +0100528new, more precise information::
529
530 >>> str(C.D)
531 "<class '__main__.C.D'>"
532 >>> str(C.D.meth)
533 '<function C.D.meth at 0x7f46b9fe31e0>'
534
535
Antoine Pitrouc907de92012-08-21 00:53:06 +0200536.. _pep-412:
537
Antoine Pitroud94adb72012-07-07 17:33:42 +0200538PEP 412: Key-Sharing Dictionary
539===============================
540
541:pep:`412` - Key-Sharing Dictionary
542 PEP written and implemented by Mark Shannon.
543
544Dictionaries used for the storage of objects' attributes are now able to
545share part of their internal storage between each other (namely, the part
546which stores the keys and their respective hashes). This reduces the memory
547consumption of programs creating many instances of non-builtin types.
548
549
Andrew Svetlovac23c9e2012-08-13 21:27:56 +0300550PEP 362: Function Signature Object
551==================================
552
553:pep:`362`: - Function Signature Object
554 PEP written by Brett Cannon, Yury Selivanov, Larry Hastings, Jiwon Seo.
555 Implemented by Yury Selivanov.
556
557A new function :func:`inspect.signature` makes introspection of python
558callables easy and straightforward. A broad range of callables is supported:
559python functions, decorated or not, classes, and :func:`functools.partial`
560objects. New classes :class:`inspect.Signature`, :class:`inspect.Parameter`
561and :class:`inspect.BoundArguments` hold information about the call signatures,
562such as, annotations, default values, parameters kinds, and bound arguments,
563which considerably simplifies writing decorators and any code that validates
564or amends calling signatures or arguments.
565
566
Eric Snowb2a61e12012-09-05 22:19:38 -0700567PEP 421: Adding sys.implementation
568==================================
569
570:pep:`421` - Adding sys.implementation
571 PEP written and implemented by Eric Snow.
572
573A new attribute on the :mod:`sys` module exposes details specific to the
574implementation of the currently running interpreter. The initial set of
575attributes on :attr:`sys.implementation` are ``name``, ``version``,
576``hexversion``, and ``cache_tag``.
577
578The intention of ``sys.implementation`` is to consolidate into one namespace
579the implementation-specific data used by the standard library. This allows
580different Python implementations to share a single standard library code base
581much more easily. In its initial state, ``sys.implementation`` holds only a
582small portion of the implementation-specific data. Over time that ratio will
583shift in order to make the standard library more portable.
584
585One example of improved standard library portability is ``cache_tag``. As of
586Python 3.3, ``sys.implementation.cache_tag`` is used by :mod:`importlib` to
587support :pep:`3147` compliance. Any Python implementation that uses
588``importlib`` for its built-in import system may use ``cache_tag`` to control
589the caching behavior for modules.
590
591SimpleNamespace
592---------------
593
594The implementation of ``sys.implementation`` also introduces a new type to
595Python: :class:`types.SimpleNamespace`. In contrast to a mapping-based
596namespace, like :class:`dict`, ``SimpleNamespace`` is attribute-based, like
597:class:`object`. However, unlike ``object``, ``SimpleNamespace`` instances
598are writable. This means that you can add, remove, and modify the namespace
599through normal attribute access.
600
601
Antoine Pitrouc907de92012-08-21 00:53:06 +0200602.. _importlib:
603
Brett Cannonc2043482012-04-29 20:59:41 -0400604Using importlib as the Implementation of Import
605===============================================
606:issue:`2377` - Replace __import__ w/ importlib.__import__
607:issue:`13959` - Re-implement parts of :mod:`imp` in pure Python
608:issue:`14605` - Make import machinery explicit
609:issue:`14646` - Require loaders set __loader__ and __package__
610
611(Written by Brett Cannon)
612
613The :func:`__import__` function is now powered by :func:`importlib.__import__`.
614This work leads to the completion of "phase 2" of :pep:`302`. There are
615multiple benefits to this change. First, it has allowed for more of the
616machinery powering import to be exposed instead of being implicit and hidden
617within the C code. It also provides a single implementation for all Python VMs
618supporting Python 3.3 to use, helping to end any VM-specific deviations in
619import semantics. And finally it eases the maintenance of import, allowing for
620future growth to occur.
621
622For the common user, this change should result in no visible change in
623semantics. Any possible changes required in one's code to handle this change
624should read the `Porting Python code`_ section of this document to see what
625needs to be changed, but it will only affect those that currently manipulate
626import or try calling it programmatically.
627
628New APIs
629--------
630One of the large benefits of this work is the exposure of what goes into
631making the import statement work. That means the various importers that were
632once implicit are now fully exposed as part of the :mod:`importlib` package.
633
Brett Cannon077ef452012-08-02 17:50:06 -0400634The abstract base classes defined in :mod:`importlib.abc` have been expanded
635to properly delineate between :term:`meta path finders <meta path finder>`
636and :term:`path entry finders <path entry finder>` by introducing
637:class:`importlib.abc.MetaPathFinder` and
638:class:`importlib.abc.PathEntryFinder`, respectively. The old ABC of
639:class:`importlib.abc.Finder` is now only provided for backwards-compatibility
640and does not enforce any method requirements.
641
642In terms of finders, :class:`importlib.machinery.FileFinder` exposes the
Brett Cannonc2043482012-04-29 20:59:41 -0400643mechanism used to search for source and bytecode files of a module. Previously
644this class was an implicit member of :attr:`sys.path_hooks`.
645
646For loaders, the new abstract base class :class:`importlib.abc.FileLoader` helps
647write a loader that uses the file system as the storage mechanism for a module's
648code. The loader for source files
649(:class:`importlib.machinery.SourceFileLoader`), sourceless bytecode files
650(:class:`importlib.machinery.SourcelessFileLoader`), and extension modules
651(:class:`importlib.machinery.ExtensionFileLoader`) are now available for
652direct use.
653
654:exc:`ImportError` now has ``name`` and ``path`` attributes which are set when
655there is relevant data to provide. The message for failed imports will also
656provide the full name of the module now instead of just the tail end of the
657module's name.
658
659The :func:`importlib.invalidate_caches` function will now call the method with
660the same name on all finders cached in :attr:`sys.path_importer_cache` to help
661clean up any stored state as necessary.
662
663Visible Changes
664---------------
665[For potential required changes to code, see the `Porting Python code`_
666section]
667
668Beyond the expanse of what :mod:`importlib` now exposes, there are other
669visible changes to import. The biggest is that :attr:`sys.meta_path` and
Brett Cannon077ef452012-08-02 17:50:06 -0400670:attr:`sys.path_hooks` now store all of the meta path finders and path entry
671hooks used by import. Previously the finders were implicit and hidden within
672the C code of import instead of being directly exposed. This means that one can
673now easily remove or change the order of the various finders to fit one's needs.
Brett Cannonc2043482012-04-29 20:59:41 -0400674
675Another change is that all modules have a ``__loader__`` attribute, storing the
676loader used to create the module. :pep:`302` has been updated to make this
677attribute mandatory for loaders to implement, so in the future once 3rd-party
678loaders have been updated people will be able to rely on the existence of the
679attribute. Until such time, though, import is setting the module post-load.
680
681Loaders are also now expected to set the ``__package__`` attribute from
682:pep:`366`. Once again, import itself is already setting this on all loaders
683from :mod:`importlib` and import itself is setting the attribute post-load.
684
685``None`` is now inserted into :attr:`sys.path_importer_cache` when no finder
686can be found on :attr:`sys.path_hooks`. Since :class:`imp.NullImporter` is not
687directly exposed on :attr:`sys.path_hooks` it could no longer be relied upon to
688always be available to use as a value representing no finder found.
689
690All other changes relate to semantic changes which should be taken into
691consideration when updating code for Python 3.3, and thus should be read about
692in the `Porting Python code`_ section of this document.
693
694
R David Murray0fa2edd2012-05-25 17:59:56 -0400695New Email Package Features
696==========================
697
R David Murraycb448cf2012-05-25 22:25:56 -0400698Policy Framework
699----------------
700
R David Murray0fa2edd2012-05-25 17:59:56 -0400701The email package now has a :mod:`~email.policy` framework. A
702:class:`~email.policy.Policy` is an object with several methods and properties
703that control how the email package behaves. The primary policy for Python 3.3
704is the :class:`~email.policy.Compat32` policy, which provides backward
705compatibility with the email package in Python 3.2. A ``policy`` can be
706specified when an email message is parsed by a :mod:`~email.parser`, or when a
707:class:`~email.message.Message` object is created, or when an email is
708serialized using a :mod:`~email.generator`. Unless overridden, a policy passed
709to a ``parser`` is inherited by all the ``Message`` object and sub-objects
710created by the ``parser``. By default a ``generator`` will use the policy of
711the ``Message`` object it is serializing. The default policy is
712:data:`~email.policy.compat32`.
713
714The minimum set of controls implemented by all ``policy`` objects are:
715
716 =============== =======================================================
717 max_line_length The maximum length, excluding the linesep character(s),
718 individual lines may have when a ``Message`` is
719 serialized. Defaults to 78.
720
721 linesep The character used to separate individual lines when a
722 ``Message`` is serialized. Defaults to ``\n``.
723
724 cte_type ``7bit`` or ``8bit``. ``8bit`` applies only to a
725 ``Bytes`` ``generator``, and means that non-ASCII may
726 be used where allowed by the protocol (or where it
727 exists in the original input).
728
729 raise_on_defect Causes a ``parser`` to raise error when defects are
730 encountered instead of adding them to the ``Message``
731 object's ``defects`` list.
732 =============== =======================================================
733
734A new policy instance, with new settings, is created using the
735:meth:`~email.policy.Policy.clone` method of policy objects. ``clone`` takes
736any of the above controls as keyword arguments. Any control not specified in
737the call retains its default value. Thus you can create a policy that uses
738``\r\n`` linesep characters like this::
739
Georg Brandl3539afd2012-05-30 22:03:20 +0200740 mypolicy = compat32.clone(linesep='\r\n')
R David Murray0fa2edd2012-05-25 17:59:56 -0400741
742Policies can be used to make the generation of messages in the format needed by
743your application simpler. Instead of having to remember to specify
744``linesep='\r\n'`` in all the places you call a ``generator``, you can specify
745it once, when you set the policy used by the ``parser`` or the ``Message``,
746whichever your program uses to create ``Message`` objects. On the other hand,
747if you need to generate messages in multiple forms, you can still specify the
748parameters in the appropriate ``generator`` call. Or you can have custom
749policy instances for your different cases, and pass those in when you create
750the ``generator``.
751
752
R David Murraycb448cf2012-05-25 22:25:56 -0400753Provisional Policy with New Header API
754--------------------------------------
755
756While the policy framework is worthwhile all by itself, the main motivation for
757introducing it is to allow the creation of new policies that implement new
758features for the email package in a way that maintains backward compatibility
759for those who do not use the new policies. Because the new policies introduce a
760new API, we are releasing them in Python 3.3 as a :term:`provisional policy
761<provisional package>`. Backwards incompatible changes (up to and including
762removal of the code) may occur if deemed necessary by the core developers.
763
764The new policies are instances of :class:`~email.policy.EmailPolicy`,
765and add the following additional controls:
766
767 =============== =======================================================
768 refold_source Controls whether or not headers parsed by a
769 :mod:`~email.parser` are refolded by the
770 :mod:`~email.generator`. It can be ``none``, ``long``,
771 or ``all``. The default is ``long``, which means that
772 source headers with a line longer than
773 ``max_line_length`` get refolded. ``none`` means no
774 line get refolded, and ``all`` means that all lines
775 get refolded.
776
777 header_factory A callable that take a ``name`` and ``value`` and
778 produces a custom header object.
779 =============== =======================================================
780
781The ``header_factory`` is the key to the new features provided by the new
782policies. When one of the new policies is used, any header retrieved from
783a ``Message`` object is an object produced by the ``header_factory``, and any
784time you set a header on a ``Message`` it becomes an object produced by
785``header_factory``. All such header objects have a ``name`` attribute equal
786to the header name. Address and Date headers have additional attributes
787that give you access to the parsed data of the header. This means you can now
788do things like this::
789
790 >>> m = Message(policy=SMTP)
791 >>> m['To'] = 'Éric <foo@example.com>'
792 >>> m['to']
793 'Éric <foo@example.com>'
794 >>> m['to'].addresses
795 (Address(display_name='Éric', username='foo', domain='example.com'),)
796 >>> m['to'].addresses[0].username
797 'foo'
798 >>> m['to'].addresses[0].display_name
799 'Éric'
800 >>> m['Date'] = email.utils.localtime()
801 >>> m['Date'].datetime
802 datetime.datetime(2012, 5, 25, 21, 39, 24, 465484, tzinfo=datetime.timezone(datetime.timedelta(-1, 72000), 'EDT'))
803 >>> m['Date']
804 'Fri, 25 May 2012 21:44:27 -0400'
805 >>> print(m)
806 To: =?utf-8?q?=C3=89ric?= <foo@example.com>
807 Date: Fri, 25 May 2012 21:44:27 -0400
808
809You will note that the unicode display name is automatically encoded as
810``utf-8`` when the message is serialized, but that when the header is accessed
811directly, you get the unicode version. This eliminates any need to deal with
812the :mod:`email.header` :meth:`~email.header.decode_header` or
813:meth:`~email.header.make_header` functions.
814
815You can also create addresses from parts::
816
817 >>> m['cc'] = [Group('pals', [Address('Bob', 'bob', 'example.com'),
818 ... Address('Sally', 'sally', 'example.com')]),
819 ... Address('Bonzo', addr_spec='bonz@laugh.com')]
820 >>> print(m)
821 To: =?utf-8?q?=C3=89ric?= <foo@example.com>
822 Date: Fri, 25 May 2012 21:44:27 -0400
823 cc: pals: Bob <bob@example.com>, Sally <sally@example.com>;, Bonzo <bonz@laugh.com>
824
825Decoding to unicode is done automatically::
826
827 >>> m2 = message_from_string(str(m))
828 >>> m2['to']
829 'Éric <foo@example.com>'
830
831When you parse a message, you can use the ``addresses`` and ``groups``
832attributes of the header objects to access the groups and individual
833addresses::
834
835 >>> m2['cc'].addresses
836 (Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com'), Address(display_name='Bonzo', username='bonz', domain='laugh.com'))
837 >>> m2['cc'].groups
838 (Group(display_name='pals', addresses=(Address(display_name='Bob', username='bob', domain='example.com'), Address(display_name='Sally', username='sally', domain='example.com')), Group(display_name=None, addresses=(Address(display_name='Bonzo', username='bonz', domain='laugh.com'),))
839
840In summary, if you use one of the new policies, header manipulation works the
841way it ought to: your application works with unicode strings, and the email
842package transparently encodes and decodes the unicode to and from the RFC
843standard Content Transfer Encodings.
844
845
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000846Other Language Changes
847======================
848
849Some smaller changes made to the core Python language are:
850
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100851* Added support for Unicode name aliases and named sequences.
852 Both :func:`unicodedata.lookup()` and ``'\N{...}'`` now resolve name aliases,
853 and :func:`unicodedata.lookup()` resolves named sequences too.
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000854
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100855 (Contributed by Ezio Melotti in :issue:`12753`)
Ezio Melotti931b8aa2011-10-21 21:57:36 +0300856
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100857* Equality comparisons on :func:`range` objects now return a result reflecting
858 the equality of the underlying sequences generated by those range objects.
Ezio Melotti931b8aa2011-10-21 21:57:36 +0300859
Sandro Tosicd899122012-01-22 12:16:04 +0100860 (:issue:`13201`)
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000861
Antoine Pitrou7b578b32011-11-29 22:47:11 +0100862* The ``count()``, ``find()``, ``rfind()``, ``index()`` and ``rindex()``
863 methods of :class:`bytes` and :class:`bytearray` objects now accept an
864 integer between 0 and 255 as their first argument.
Mark Dickinson36645682011-10-23 19:53:01 +0100865
Petri Lehtinen6c3f1dd2012-06-26 10:23:07 +0300866 (Contributed by Petri Lehtinen in :issue:`12170`)
Mark Dickinson36645682011-10-23 19:53:01 +0100867
Eli Bendersky7add4ea2012-03-17 15:14:35 +0200868* New methods have been added to :class:`list` and :class:`bytearray`:
869 ``copy()`` and ``clear()``.
870
871 (:issue:`10516`)
Petri Lehtinen61ea8a02011-11-24 22:00:46 +0200872
Antoine Pitrou9a864472012-05-04 23:15:47 +0200873* Raw bytes literals can now be written ``rb"..."`` as well as ``br"..."``.
874 (Contributed by Antoine Pitrou in :issue:`13748`.)
875
876* :meth:`dict.setdefault` now does only one lookup for the given key, making
877 it atomic when used with built-in types.
878 (Contributed by Filip Gruszczyński in :issue:`13521`.)
879
880
Benjamin Petersone50d6ab2012-04-03 00:52:18 -0400881.. XXX mention new error messages for passing wrong number of arguments to functions
882
Antoine Pitrou9a864472012-05-04 23:15:47 +0200883
Antoine Pitrou79341e72012-05-17 21:13:45 +0200884A Finer-Grained Import Lock
885===========================
886
887Previous versions of CPython have always relied on a global import lock.
888This led to unexpected annoyances, such as deadlocks when importing a module
889would trigger code execution in a different thread as a side-effect.
890Clumsy workarounds were sometimes employed, such as the
891:c:func:`PyImport_ImportModuleNoBlock` C API function.
892
893In Python 3.3, importing a module takes a per-module lock. This correctly
894serializes importation of a given module from multiple threads (preventing
895the exposure of incompletely initialized modules), while eliminating the
896aforementioned annoyances.
897
898(contributed by Antoine Pitrou in :issue:`9260`.)
899
900
Victor Stinner8f17c1c2012-08-05 16:31:32 +0200901Builtin functions and types
902===========================
Victor Stinnerfa0d6282012-08-05 15:56:51 +0200903
Victor Stinner8f17c1c2012-08-05 16:31:32 +0200904* :func:`open` gets a new *opener* parameter: the underlying file descriptor
905 for the file object is then obtained by calling *opener* with (*file*,
906 *flags*). It can be used to use custom flags like :data:`os.O_CLOEXEC` for
907 example. The ``'x'`` mode was added: open for exclusive creation, failing if
908 the file already exists.
909* :func:`print`: added the *flush* keyword argument. If the *flush* keyword
910 argument is true, the stream is forcibly flushed.
911* :func:`hash`: hash randomization is enabled by default, see
912 :meth:`object.__hash__` and :envvar:`PYTHONHASHSEED`.
913* The :class:`str` type gets a new :meth:`~str.casefold` method: return a
914 casefolded copy of the string, casefolded strings may be used for caseless
915 matching. For example, ``'ß'.casefold()`` returns ``'ss'``.
Nick Coghlan273069c2012-08-20 17:14:07 +1000916* The sequence documentation has been substantially rewritten to better
917 explain the binary/text sequence distinction and to provide specific
918 documentation sections for the individual builtin sequence types
919 (:issue:`4966`)
Victor Stinnerfa0d6282012-08-05 15:56:51 +0200920
Victor Stinner636130e2012-08-05 16:37:12 +0200921New Modules
922===========
923
924faulthandler
925------------
926
Victor Stinner1da769a2012-09-18 22:40:03 +0200927This new debug module :mod:`faulthandler` contains functions to dump Python tracebacks explicitly,
Victor Stinner636130e2012-08-05 16:37:12 +0200928on a fault (a crash like a segmentation fault), after a timeout, or on a user
929signal. Call :func:`faulthandler.enable` to install fault handlers for the
930:const:`SIGSEGV`, :const:`SIGFPE`, :const:`SIGABRT`, :const:`SIGBUS`, and
931:const:`SIGILL` signals. You can also enable them at startup by setting the
932:envvar:`PYTHONFAULTHANDLER` environment variable or by using :option:`-X`
933``faulthandler`` command line option.
934
935Example of a segmentation fault on Linux: ::
936
937 $ python -q -X faulthandler
938 >>> import ctypes
939 >>> ctypes.string_at(0)
940 Fatal Python error: Segmentation fault
941
942 Current thread 0x00007fb899f39700:
943 File "/home/python/cpython/Lib/ctypes/__init__.py", line 486 in string_at
944 File "<stdin>", line 1 in <module>
945 Segmentation fault
946
947
948ipaddress
949---------
950
951The new :mod:`ipaddress` module provides tools for creating and manipulating
952objects representing IPv4 and IPv6 addresses, networks and interfaces (i.e.
953an IP address associated with a specific IP subnet).
954
955(Contributed by Google and Peter Moody in :pep:`3144`)
956
957lzma
958----
959
960The newly-added :mod:`lzma` module provides data compression and decompression
961using the LZMA algorithm, including support for the ``.xz`` and ``.lzma``
962file formats.
963
964(Contributed by Nadeem Vawda and Per Øyvind Karlsen in :issue:`6715`)
965
966
967Improved Modules
968================
Giampaolo Rodolà3108f982011-02-24 20:59:48 +0000969
Victor Stinnerf4c54ff2012-02-08 01:48:34 +0100970abc
971---
972
973Improved support for abstract base classes containing descriptors composed with
974abstract methods. The recommended approach to declaring abstract descriptors is
975now to provide :attr:`__isabstractmethod__` as a dynamically updated
976property. The built-in descriptors have been updated accordingly.
977
978 * :class:`abc.abstractproperty` has been deprecated, use :class:`property`
979 with :func:`abc.abstractmethod` instead.
980 * :class:`abc.abstractclassmethod` has been deprecated, use
981 :class:`classmethod` with :func:`abc.abstractmethod` instead.
982 * :class:`abc.abstractstaticmethod` has been deprecated, use
983 :class:`staticmethod` with :func:`abc.abstractmethod` instead.
984
985(Contributed by Darren Dale in :issue:`11610`)
986
Meador Ingec5dbb3d2011-09-20 21:48:16 -0500987array
988-----
989
990The :mod:`array` module supports the :c:type:`long long` type using ``q`` and
991``Q`` type codes.
992
993(Contributed by Oren Tirosh and Hirokazu Yamamoto in :issue:`1172711`)
994
995
Victor Stinner8f17c1c2012-08-05 16:31:32 +0200996base64, binascii
997----------------
998
999ASCII-only Unicode strings are now accepted by the decoding functions of the
1000modern interface. For example, ``base64.b64decode('YWJj')`` returns ``b'abc'``.
1001
1002
Nadeem Vawdad7e5c6e2012-02-12 01:34:18 +02001003bz2
1004---
1005
1006The :mod:`bz2` module has been rewritten from scratch. In the process, several
1007new features have been added:
1008
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001009* New :func:`bz2.open` function: open a bzip2-compressed file in binary or
1010 text mode.
1011
Nadeem Vawdad7e5c6e2012-02-12 01:34:18 +02001012* :class:`bz2.BZ2File` can now read from and write to arbitrary file-like
1013 objects, by means of its constructor's *fileobj* argument.
1014
1015 (Contributed by Nadeem Vawda in :issue:`5863`)
1016
1017* :class:`bz2.BZ2File` and :func:`bz2.decompress` can now decompress
1018 multi-stream inputs (such as those produced by the :program:`pbzip2` tool).
1019 :class:`bz2.BZ2File` can now also be used to create this type of file, using
1020 the ``'a'`` (append) mode.
1021
1022 (Contributed by Nir Aides in :issue:`1625`)
1023
1024* :class:`bz2.BZ2File` now implements all of the :class:`io.BufferedIOBase` API,
1025 except for the :meth:`detach` and :meth:`truncate` methods.
1026
1027
Victor Stinner2cded9c2011-07-08 01:45:13 +02001028codecs
1029------
1030
Antoine Pitrou4f863432012-02-12 02:12:47 +01001031The :mod:`~encodings.mbcs` codec has been rewritten to handle correctly
Georg Brandlff962c52012-02-04 08:55:56 +01001032``replace`` and ``ignore`` error handlers on all Windows versions. The
1033:mod:`~encodings.mbcs` codec now supports all error handlers, instead of only
1034``replace`` to encode and ``ignore`` to decode.
Victor Stinner3a50e702011-10-18 21:21:00 +02001035
Georg Brandlff962c52012-02-04 08:55:56 +01001036A new Windows-only codec has been added: ``cp65001`` (:issue:`13216`). It is the
1037Windows code page 65001 (Windows UTF-8, ``CP_UTF8``). For example, it is used
1038by ``sys.stdout`` if the console output code page is set to cp65001 (e.g., using
1039``chcp 65001`` command).
Victor Stinner2f3ca9f2011-10-27 01:38:56 +02001040
Georg Brandlff962c52012-02-04 08:55:56 +01001041Multibyte CJK decoders now resynchronize faster. They only ignore the first
Georg Brandl6c0929b2011-07-09 11:43:33 +02001042byte of an invalid byte sequence. For example, ``b'\xff\n'.decode('gb2312',
1043'replace')`` now returns a ``\n`` after the replacement character.
Victor Stinner2cded9c2011-07-08 01:45:13 +02001044
Georg Brandl6c0929b2011-07-09 11:43:33 +02001045(:issue:`12016`)
Victor Stinner2cded9c2011-07-08 01:45:13 +02001046
Georg Brandlff962c52012-02-04 08:55:56 +01001047Incremental CJK codec encoders are no longer reset at each call to their
1048encode() methods. For example::
Victor Stinner2cded9c2011-07-08 01:45:13 +02001049
1050 $ ./python -q
1051 >>> import codecs
1052 >>> encoder = codecs.getincrementalencoder('hz')('strict')
1053 >>> b''.join(encoder.encode(x) for x in '\u52ff\u65bd\u65bc\u4eba\u3002 Bye.')
1054 b'~{NpJ)l6HK!#~} Bye.'
1055
Georg Brandl6c0929b2011-07-09 11:43:33 +02001056This example gives ``b'~{Np~}~{J)~}~{l6~}~{HK~}~{!#~} Bye.'`` with older Python
Victor Stinner2cded9c2011-07-08 01:45:13 +02001057versions.
1058
Georg Brandl6c0929b2011-07-09 11:43:33 +02001059(:issue:`12100`)
Victor Stinner2cded9c2011-07-08 01:45:13 +02001060
Victor Stinner9f4b1e92011-11-10 20:56:30 +01001061The ``unicode_internal`` codec has been deprecated.
1062
Éric Araujo4f61a2d2012-04-04 23:01:01 -04001063
1064collections
1065-----------
1066
1067Addition of a new :class:`~collections.ChainMap` class to allow treating a
1068number of mappings as a single unit.
1069
1070(Written by Raymond Hettinger for :issue:`11089`, made public in
1071:issue:`11297`)
1072
1073The abstract base classes have been moved in a new :mod:`collections.abc`
1074module, to better differentiate between the abstract and the concrete
1075collections classes. Aliases for ABCs are still present in the
1076:mod:`collections` module to preserve existing imports.
1077
1078(:issue:`11085`)
1079
1080.. XXX addition of __slots__ to ABCs not recorded here: internal detail
1081
1082
Nick Coghlan3267a302012-05-21 22:54:43 +10001083contextlib
1084----------
1085
1086:class:`~collections.ExitStack` now provides a solid foundation for
1087programmatic manipulation of context managers and similar cleanup
1088functionality. Unlike the previous ``contextlib.nested`` API (which was
1089deprecated and removed), the new API is designed to work correctly
1090regardless of whether context managers acquire their resources in
Nick Coghlan161ea6a2012-05-22 23:04:42 +10001091their ``__init__`` method (for example, file objects) or in their
Nick Coghlan3267a302012-05-21 22:54:43 +10001092``__enter__`` method (for example, synchronisation objects from the
1093:mod:`threading` module).
1094
1095(:issue:`13585`)
1096
1097
Éric Araujo84b8ed82011-08-29 21:42:47 +02001098crypt
1099-----
1100
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001101Addition of salt and modular crypt format (hashing method) and the :func:`~crypt.mksalt`
Victor Stinnerc78fb332011-09-21 03:35:44 +02001102function to the :mod:`crypt` module.
Éric Araujo84b8ed82011-08-29 21:42:47 +02001103
1104(:issue:`10924`)
1105
Victor Stinnera7878b72011-07-14 23:07:44 +02001106curses
1107------
1108
Victor Stinner0fdfceb2011-11-25 22:10:02 +01001109 * If the :mod:`curses` module is linked to the ncursesw library, use Unicode
1110 functions when Unicode strings or characters are passed (e.g.
1111 :c:func:`waddwstr`), and bytes functions otherwise (e.g. :c:func:`waddstr`).
1112 * Use the locale encoding instead of ``utf-8`` to encode Unicode strings.
1113 * :class:`curses.window` has a new :attr:`curses.window.encoding` attribute.
Victor Stinnerc78fb332011-09-21 03:35:44 +02001114 * The :class:`curses.window` class has a new :meth:`~curses.window.get_wch`
1115 method to get a wide character
1116 * The :mod:`curses` module has a new :meth:`~curses.unget_wch` function to
1117 push a wide character so the next :meth:`~curses.window.get_wch` will return
1118 it
Victor Stinnera7878b72011-07-14 23:07:44 +02001119
Victor Stinnerc78fb332011-09-21 03:35:44 +02001120(Contributed by Iñigo Serna in :issue:`6755`)
Victor Stinnera7878b72011-07-14 23:07:44 +02001121
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001122datetime
1123--------
1124
1125 * Equality comparisons between naive and aware :class:`~datetime.datetime`
1126 instances don't raise :exc:`TypeError`.
1127 * New :meth:`datetime.datetime.timestamp` method: Return POSIX timestamp
1128 corresponding to the :class:`~datetime.datetime` instance.
1129 * The :meth:`datetime.datetime.strftime` method supports formatting years
1130 older than 1000.
Alexander Belopolsky35d600c2012-08-22 23:14:29 -04001131 * XXX The :meth:`datetime.datetime.astimezone` method can now be
1132 called without arguments to convert datetime instance to the system
1133 timezone.
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001134
Stefan Krah1919b7e2012-03-21 18:25:23 +01001135decimal
1136-------
1137
1138:issue:`7652` - integrate fast native decimal arithmetic.
1139 C-module and libmpdec written by Stefan Krah.
1140
1141The new C version of the decimal module integrates the high speed libmpdec
Stefan Krahbf803082012-04-01 13:07:24 +02001142library for arbitrary precision correctly-rounded decimal floating point
1143arithmetic. libmpdec conforms to IBM's General Decimal Arithmetic Specification.
Stefan Krah1919b7e2012-03-21 18:25:23 +01001144
Stefan Krah0c0914e2012-04-09 20:31:15 +02001145Performance gains range from 10x for database applications to 100x for
Stefan Krahbf803082012-04-01 13:07:24 +02001146numerically intensive applications. These numbers are expected gains
1147for standard precisions used in decimal floating point arithmetic. Since
1148the precision is user configurable, the exact figures may vary. For example,
1149in integer bignum arithmetic the differences can be significantly higher.
1150
1151The following table is meant as an illustration. Benchmarks are available
Georg Brandl204e7892012-04-01 13:10:58 +02001152at http://www.bytereef.org/mpdecimal/quickstart.html.
Stefan Krah1919b7e2012-03-21 18:25:23 +01001153
1154 +---------+-------------+--------------+-------------+
1155 | | decimal.py | _decimal | speedup |
1156 +=========+=============+==============+=============+
Stefan Krah49dc1d42012-09-01 14:27:51 +02001157 | pi | 42.02s | 0.345s | 120x |
Stefan Krah1919b7e2012-03-21 18:25:23 +01001158 +---------+-------------+--------------+-------------+
1159 | telco | 172.19s | 5.68s | 30x |
1160 +---------+-------------+--------------+-------------+
1161 | psycopg | 3.57s | 0.29s | 12x |
1162 +---------+-------------+--------------+-------------+
1163
1164Features
1165~~~~~~~~
1166
1167* The :exc:`~decimal.FloatOperation` signal optionally enables stricter
1168 semantics for mixing floats and Decimals.
1169
1170* If Python is compiled without threads, the C version automatically
1171 disables the expensive thread local context machinery. In this case,
1172 the variable :data:`~decimal.HAVE_THREADS` is set to False.
1173
1174API changes
1175~~~~~~~~~~~
1176
1177* The C module has the following context limits, depending on the machine
1178 architecture:
1179
1180 +-------------------+---------------------+------------------------------+
1181 | | 32-bit | 64-bit |
1182 +===================+=====================+==============================+
1183 | :const:`MAX_PREC` | :const:`425000000` | :const:`999999999999999999` |
1184 +-------------------+---------------------+------------------------------+
1185 | :const:`MAX_EMAX` | :const:`425000000` | :const:`999999999999999999` |
1186 +-------------------+---------------------+------------------------------+
1187 | :const:`MIN_EMIN` | :const:`-425000000` | :const:`-999999999999999999` |
1188 +-------------------+---------------------+------------------------------+
1189
1190* In the context templates (:class:`~decimal.DefaultContext`,
1191 :class:`~decimal.BasicContext` and :class:`~decimal.ExtendedContext`)
1192 the magnitude of :attr:`~decimal.Context.Emax` and
1193 :attr:`~decimal.Context.Emin` has changed to :const:`999999`.
1194
1195* The :class:`~decimal.Decimal` constructor in decimal.py does not observe
1196 the context limits and converts values with arbitrary exponents or precision
1197 exactly. Since the C version has internal limits, the following scheme is
1198 used: If possible, values are converted exactly, otherwise
1199 :exc:`~decimal.InvalidOperation` is raised and the result is NaN. In the
1200 latter case it is always possible to use :meth:`~decimal.Context.create_decimal`
1201 in order to obtain a rounded or inexact value.
1202
1203
1204* The power function in decimal.py is always correctly-rounded. In the
1205 C version, it is defined in terms of the correctly-rounded
1206 :meth:`~decimal.Decimal.exp` and :meth:`~decimal.Decimal.ln` functions,
1207 but the final result is only "almost always correctly rounded".
1208
1209
1210* In the C version, the context dictionary containing the signals is a
1211 :class:`~collections.abc.MutableMapping`. For speed reasons,
1212 :attr:`~decimal.Context.flags` and :attr:`~decimal.Context.traps` always
1213 refer to the same :class:`~collections.abc.MutableMapping` that the context
1214 was initialized with. If a new signal dictionary is assigned,
1215 :attr:`~decimal.Context.flags` and :attr:`~decimal.Context.traps`
1216 are updated with the new values, but they do not reference the RHS
1217 dictionary.
1218
1219
1220* Pickling a :class:`~decimal.Context` produces a different output in order
1221 to have a common interchange format for the Python and C versions.
1222
1223
1224* The order of arguments in the :class:`~decimal.Context` constructor has been
1225 changed to match the order displayed by :func:`repr`.
1226
1227
Stefan Krah0f8cab22012-08-30 12:33:55 +02001228* The ``watchexp`` parameter in the :meth:`~decimal.Decimal.quantize` method
1229 is deprecated.
1230
1231
Victor Stinner811db3b2011-09-21 03:20:03 +02001232ftplib
1233------
1234
1235The :class:`~ftplib.FTP_TLS` class now provides a new
1236:func:`~ftplib.FTP_TLS.ccc` function to revert control channel back to
Florent Xicluna6d57d212011-10-23 22:23:57 +02001237plaintext. This can be useful to take advantage of firewalls that know how to
Victor Stinner811db3b2011-09-21 03:20:03 +02001238handle NAT with non-secure FTP without opening fixed ports.
1239
1240(Contributed by Giampaolo Rodolà in :issue:`12139`)
1241
1242
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001243gc
1244--
1245
1246It is now possible to register callbacks invoked by the garbage collector
Georg Brandla81b4812012-08-11 08:43:59 +02001247before and after collection using the new :data:`~gc.callbacks` list.
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001248
1249
Christian Heimes31940372012-06-26 10:16:55 +02001250hmac
1251----
1252
1253A new :func:`~hmac.compare_digest` function has been added to prevent
1254side channel attacks on digests through timing analysis.
1255
1256(Contributed by Nick Coghlan and Christian Heimes in issue:`15061`)
1257
1258
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +01001259imaplib
1260-------
1261
1262The :class:`~imaplib.IMAP4_SSL` constructor now accepts an SSLContext
1263parameter to control parameters of the secure channel.
1264
1265(Contributed by Sijin Joseph in :issue:`8808`)
1266
1267
Nick Coghlan2f92e542012-06-23 19:39:55 +10001268inspect
1269-------
1270
1271A new :func:`~inspect.getclosurevars` function has been added. This function
1272reports the current binding of all names referenced from the function body and
1273where those names were resolved, making it easier to verify correct internal
1274state when testing code that relies on stateful closures.
1275
1276(Contributed by Meador Inge and Nick Coghlan in :issue:`13062`)
1277
Nick Coghlan04e2e3f2012-06-23 19:52:05 +10001278A new :func:`~inspect.getgeneratorlocals` function has been added. This
1279function reports the current binding of local variables in the generator's
1280stack frame, making it easier to verify correct internal state when testing
1281generators.
1282
1283(Contributed by Meador Inge in :issue:`15153`)
1284
Charles-François Natalidc3044c2012-01-09 22:40:02 +01001285io
1286--
1287
Charles-François Natalid612de12012-01-14 11:51:00 +01001288The :func:`~io.open` function has a new ``'x'`` mode that can be used to
1289exclusively create a new file, and raise a :exc:`FileExistsError` if the file
1290already exists. It is based on the C11 'x' mode to fopen().
Charles-François Natalidc3044c2012-01-09 22:40:02 +01001291
1292(Contributed by David Townshend in :issue:`12760`)
1293
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001294The constructor of the :class:`~io.TextIOWrapper` class has a new
1295*write_through* optional argument. If *write_through* is ``True``, calls to
1296:meth:`~io.TextIOWrapper.write` are guaranteed not to be buffered: any data
1297written on the :class:`~io.TextIOWrapper` object is immediately handled to its
1298underlying binary buffer.
1299
Charles-François Natalidc3044c2012-01-09 22:40:02 +01001300
Victor Stinnerfa0e3d52011-05-09 01:01:09 +02001301math
1302----
1303
1304The :mod:`math` module has a new function:
1305
1306 * :func:`~math.log2`: return the base-2 logarithm of *x*
1307 (Written by Mark Dickinson in :issue:`11888`).
1308
1309
Antoine Pitrou9a864472012-05-04 23:15:47 +02001310multiprocessing
1311---------------
1312
1313The new :func:`multiprocessing.connection.wait` function allows to poll
1314multiple objects (such as connections, sockets and pipes) with a timeout.
1315(Contributed by Richard Oudkerk in :issue:`12328`.)
1316
1317:class:`multiprocessing.Connection` objects can now be transferred over
1318multiprocessing connections.
1319(Contributed by Richard Oudkerk in :issue:`4892`.)
1320
1321
Victor Stinnerfa0e3d52011-05-09 01:01:09 +02001322nntplib
1323-------
1324
1325The :class:`nntplib.NNTP` class now supports the context manager protocol to
1326unconditionally consume :exc:`socket.error` exceptions and to close the NNTP
1327connection when done::
1328
1329 >>> from nntplib import NNTP
Ezio Melotti3c14b4e2011-07-13 11:44:44 +03001330 >>> with NNTP('news.gmane.org') as n:
Victor Stinnerfa0e3d52011-05-09 01:01:09 +02001331 ... n.group('gmane.comp.python.committers')
1332 ...
Ezio Melotti04f648c2011-07-26 09:37:46 +03001333 ('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')
Victor Stinnerfa0e3d52011-05-09 01:01:09 +02001334 >>>
1335
1336(Contributed by Giampaolo Rodolà in :issue:`9795`)
1337
1338
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001339os
1340--
1341
Charles-François Natalia003af12011-06-01 20:30:52 +02001342* The :mod:`os` module has a new :func:`~os.pipe2` function that makes it
1343 possible to create a pipe with :data:`~os.O_CLOEXEC` or
1344 :data:`~os.O_NONBLOCK` flags set atomically. This is especially useful to
1345 avoid race conditions in multi-threaded programs.
1346
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00001347* The :mod:`os` module has a new :func:`~os.sendfile` function which provides
1348 an efficent "zero-copy" way for copying data from one file (or socket)
1349 descriptor to another. The phrase "zero-copy" refers to the fact that all of
1350 the copying of data between the two descriptors is done entirely by the
1351 kernel, with no copying of data into userspace buffers. :func:`~os.sendfile`
1352 can be used to efficiently copy data from a file on disk to a network socket,
1353 e.g. for downloading a file.
Giampaolo Rodolàc9c2c8b2011-02-25 14:39:16 +00001354
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00001355 (Patch submitted by Ross Lagerwall and Giampaolo Rodolà in :issue:`10882`.)
1356
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001357* To avoid race conditions like symlink attacks and issues with temporary
1358 files and directories, it is more reliable (and also faster) to manipulate
1359 file descriptors instead of file names. Python 3.3 enhances existing functions
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001360 and introduces new functions to work on file descriptors (:issue:`4761`,
1361 :issue:`10755`).
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001362
1363 - The :mod:`os` module has a new :func:`~os.fwalk` function similar to
1364 :func:`~os.walk` except that it also yields file descriptors referring to the
1365 directories visited. This is especially useful to avoid symlink races.
1366
1367 - The following functions get new optional *dir_fd* (:ref:`paths relative to
1368 directory descriptors <dir_fd>`) and/or *follow_symlinks* (:ref:`not
1369 following symlinks <follow_symlinks>`):
1370 :func:`~os.access`, :func:`~os.chflags`, :func:`~os.chmod`, :func:`~os.chown`,
1371 :func:`~os.link`, :func:`~os.lstat`, :func:`~os.mkdir`, :func:`~os.mkfifo`,
1372 :func:`~os.mknod`, :func:`~os.open`, :func:`~os.readlink`, :func:`~os.remove`,
1373 :func:`~os.rename`, :func:`~os.replace`, :func:`~os.rmdir`, :func:`~os.stat`,
1374 :func:`~os.symlink`, :func:`~os.unlink`, :func:`~os.utime`.
1375
1376 - The following functions now support a file descriptor for their path argument:
1377 :func:`~os.chdir`, :func:`~os.chmod`, :func:`~os.chown`,
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001378 :func:`~os.execve`, :func:`~os.listdir`, :func:`~os.pathconf`, :func:`~os.path.exists`,
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001379 :func:`~os.stat`, :func:`~os.statvfs`, :func:`~os.utime`.
1380
Giampaolo Rodolà18e8bcb2011-02-25 20:57:54 +00001381* The :mod:`os` module has two new functions: :func:`~os.getpriority` and
1382 :func:`~os.setpriority`. They can be used to get or set process
1383 niceness/priority in a fashion similar to :func:`os.nice` but extended to all
1384 processes instead of just the current one.
1385
1386 (Patch submitted by Giampaolo Rodolà in :issue:`10784`.)
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001387
Antoine Pitrou9a864472012-05-04 23:15:47 +02001388* The new :func:`os.replace` function allows cross-platform renaming of a
1389 file with overwriting the destination. With :func:`os.rename`, an existing
1390 destination file is overwritten under POSIX, but raises an error under
1391 Windows.
1392 (Contributed by Antoine Pitrou in :issue:`8828`.)
1393
1394* The new :func:`os.get_terminal_size` function queries the size of the
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001395 terminal attached to a file descriptor. See also
1396 :func:`shutil.get_terminal_size`.
Antoine Pitrou9a864472012-05-04 23:15:47 +02001397 (Contributed by Zbigniew Jędrzejewski-Szmek in :issue:`13609`.)
1398
Georg Brandldba3b5c2012-06-26 09:36:14 +02001399.. XXX sort out this mess after beta1
Victor Stinnere5064372011-10-14 00:08:29 +02001400
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001401* New functions to support Linux extended attributes (:issue:`12720`):
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001402 :func:`~os.getxattr`, :func:`~os.listxattr`, :func:`~os.removexattr`,
1403 :func:`~os.setxattr`.
Victor Stinnere5064372011-10-14 00:08:29 +02001404
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001405* New interface to the scheduler. These functions
1406 control how a process is allocated CPU time by the operating system. New
1407 functions:
1408 :func:`~os.sched_get_priority_max`, :func:`~os.sched_get_priority_min`,
1409 :func:`~os.sched_getaffinity`, :func:`~os.sched_getparam`,
1410 :func:`~os.sched_getscheduler`, :func:`~os.sched_rr_get_interval`,
1411 :func:`~os.sched_setaffinity`, :func:`~os.sched_setparam`,
1412 :func:`~os.sched_setscheduler`, :func:`~os.sched_yield`,
Victor Stinnere5064372011-10-14 00:08:29 +02001413
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001414* New functions to control the file system:
Victor Stinnere5064372011-10-14 00:08:29 +02001415
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001416 * :func:`~os.posix_fadvise`: Announces an intention to access data in a
1417 specific pattern thus allowing the kernel to make optimizations.
1418 * :func:`~os.posix_fallocate`: Ensures that enough disk space is allocated
1419 for a file.
1420 * :func:`~os.sync`: Force write of everything to disk.
Victor Stinnere5064372011-10-14 00:08:29 +02001421
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001422* Add some extra posix functions to the os module:
Victor Stinnere5064372011-10-14 00:08:29 +02001423
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001424 * :func:`~os.lockf`: Apply, test or remove a POSIX lock on an open file descriptor.
1425 * :func:`~os.pread`: Read from a file descriptor at an offset, the file
1426 offset remains unchanged.
1427 * :func:`~os.pwrite`: Write to a file descriptor from an offset, leaving
1428 the file offset unchanged.
1429 * :func:`~os.readv`: Read from a file descriptor into a number of writable buffers.
1430 * :func:`~os.truncate`: Truncate the file corresponding to *path*, so that
1431 it is at most *length* bytes in size.
1432 * :func:`~os.waitid`: Wait for the completion of one or more child processes.
1433 * :func:`~os.writev`: Write the contents of *buffers* to a file descriptor,
1434 where *buffers* is an arbitrary sequence of buffers.
1435 * :func:`~os.getgrouplist` (:issue:`9344`): Return list of group ids that
1436 specified user belongs to.
Victor Stinnere5064372011-10-14 00:08:29 +02001437
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001438* :func:`~os.times` and :func:`~os.uname`: Return type changed from a tuple to
1439 a tuple-like object with named attributes.
Victor Stinnere5064372011-10-14 00:08:29 +02001440
Giampaolo Rodolà424298a2011-03-03 18:34:06 +00001441
Georg Brandl4c7c3c52012-03-10 22:36:48 +01001442pdb
1443---
1444
1445* Tab-completion is now available not only for command names, but also their
1446 arguments. For example, for the ``break`` command, function and file names
1447 are completed. (Contributed by Georg Brandl in :issue:`14210`)
1448
1449
Antoine Pitrou9a864472012-05-04 23:15:47 +02001450pickle
1451------
1452
1453:class:`pickle.Pickler` objects now have an optional
1454:attr:`~pickle.Pickler.dispatch_table` attribute allowing to set per-pickler
1455reduction functions.
1456(Contributed by Richard Oudkerk in :issue:`14166`.)
1457
1458
Victor Stinner383c3fc2011-05-25 01:35:05 +02001459pydoc
1460-----
1461
Victor Stinner6daa33c2011-05-25 01:41:22 +02001462The Tk GUI and the :func:`~pydoc.serve` function have been removed from the
1463:mod:`pydoc` module: ``pydoc -g`` and :func:`~pydoc.serve` have been deprecated
1464in Python 3.2.
Victor Stinner383c3fc2011-05-25 01:35:05 +02001465
1466
Antoine Pitrouad09b5d2012-06-24 22:41:33 +02001467re
1468--
1469
1470:class:`str` regular expressions now support ``\u`` and ``\U`` escapes.
1471
1472(Contributed by Serhiy Storchaka in :issue:`3665`.)
1473
1474
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001475sched
1476-----
Victor Stinner754851f2011-04-19 23:58:51 +02001477
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001478* :meth:`~sched.scheduler.run` now accepts a *blocking* parameter which when
1479 set to False makes the method execute the scheduled events due to expire
1480 soonest (if any) and then return immediately.
1481 This is useful in case you want to use the :class:`~sched.scheduler` in
1482 non-blocking applications. (Contributed by Giampaolo Rodolà in :issue:`13449`)
Victor Stinner754851f2011-04-19 23:58:51 +02001483
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001484* :class:`~sched.scheduler` class can now be safely used in multi-threaded
1485 environments. (Contributed by Josiah Carlson and Giampaolo Rodolà in
1486 :issue:`8684`)
1487
1488* *timefunc* and *delayfunct* parameters of :class:`~sched.scheduler` class
1489 constructor are now optional and defaults to :func:`time.time` and
1490 :func:`time.sleep` respectively. (Contributed by Chris Clark in
1491 :issue:`13245`)
1492
1493* :meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs`
1494 *argument* parameter is now optional. (Contributed by Chris Clark in
1495 :issue:`13245`)
1496
1497* :meth:`~sched.scheduler.enter` and :meth:`~sched.scheduler.enterabs`
1498 now accept a *kwargs* parameter. (Contributed by Chris Clark in
1499 :issue:`13245`)
1500
1501
1502shutil
1503------
1504
1505* The :mod:`shutil` module has these new fuctions:
1506
1507 * :func:`~shutil.disk_usage`: provides total, used and free disk space
1508 statistics. (Contributed by Giampaolo Rodolà in :issue:`12442`)
1509 * :func:`~shutil.chown`: allows one to change user and/or group of the given
1510 path also specifying the user/group names and not only their numeric
1511 ids. (Contributed by Sandro Tosi in :issue:`12191`)
Victor Stinnera9293352011-04-30 15:21:58 +02001512
Antoine Pitrou9a864472012-05-04 23:15:47 +02001513* The new :func:`shutil.get_terminal_size` function returns the size of the
1514 terminal window the interpreter is attached to.
1515 (Contributed by Zbigniew Jędrzejewski-Szmek in :issue:`13609`.)
1516
1517* Several functions now take an optional ``symlinks`` argument: when that
1518 parameter is true, symlinks aren't dereferenced and the operation instead
1519 acts on the symlink itself (or creates one, if relevant).
1520 (Contributed by Hynek Schlawack in :issue:`12715`.)
1521
Nick Coghlan5b0eca12012-06-24 16:43:06 +10001522* :func:`~shutil.rmtree` is now resistant to symlink attacks on platforms
1523 which support the new ``dir_fd`` parameter in :func:`os.open` and
Georg Brandldba3b5c2012-06-26 09:36:14 +02001524 :func:`os.unlink`. (Contributed by Martin von Löwis and Hynek Schlawack
Nick Coghlan5b0eca12012-06-24 16:43:06 +10001525 in :issue:`4489`.)
1526
Antoine Pitrou9a864472012-05-04 23:15:47 +02001527
Victor Stinnerfa0e3d52011-05-09 01:01:09 +02001528
Victor Stinnera9293352011-04-30 15:21:58 +02001529signal
1530------
1531
Victor Stinnerfa0e3d52011-05-09 01:01:09 +02001532* The :mod:`signal` module has new functions:
Victor Stinnera9293352011-04-30 15:21:58 +02001533
Victor Stinnerb3e72192011-05-08 01:46:11 +02001534 * :func:`~signal.pthread_sigmask`: fetch and/or change the signal mask of the
1535 calling thread (Contributed by Jean-Paul Calderone in :issue:`8407`) ;
1536 * :func:`~signal.pthread_kill`: send a signal to a thread ;
1537 * :func:`~signal.sigpending`: examine pending functions ;
1538 * :func:`~signal.sigwait`: wait a signal.
Ross Lagerwallbc808222011-06-25 12:13:40 +02001539 * :func:`~signal.sigwaitinfo`: wait for a signal, returning detailed
1540 information about it.
1541 * :func:`~signal.sigtimedwait`: like :func:`~signal.sigwaitinfo` but with a
1542 timeout.
Victor Stinnera9293352011-04-30 15:21:58 +02001543
Victor Stinnerd49b1f12011-05-08 02:03:15 +02001544* The signal handler writes the signal number as a single byte instead of
1545 a nul byte into the wakeup file descriptor. So it is possible to wait more
1546 than one signal and know which signals were raised.
1547
Victor Stinner388196e2011-05-10 17:13:00 +02001548* :func:`signal.signal` and :func:`signal.siginterrupt` raise an OSError,
1549 instead of a RuntimeError: OSError has an errno attribute.
1550
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001551smtplib
1552-------
1553
1554The :class:`~smtplib.SMTP_SSL` constructor and the :meth:`~smtplib.SMTP.starttls`
1555method now accept an SSLContext parameter to control parameters of the secure
1556channel.
1557
1558(Contributed by Kasun Herath in :issue:`8809`)
1559
1560
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001561socket
1562------
1563
Charles-François Natali47413c12011-10-06 19:47:44 +02001564* The :class:`~socket.socket` class now exposes additional methods to process
1565 ancillary data when supported by the underlying platform:
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001566
Charles-François Natali47413c12011-10-06 19:47:44 +02001567 * :func:`~socket.socket.sendmsg`
1568 * :func:`~socket.socket.recvmsg`
1569 * :func:`~socket.socket.recvmsg_into`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001570
Charles-François Natali47413c12011-10-06 19:47:44 +02001571 (Contributed by David Watson in :issue:`6560`, based on an earlier patch by
1572 Heiko Wundram)
1573
1574* The :class:`~socket.socket` class now supports the PF_CAN protocol family
1575 (http://en.wikipedia.org/wiki/Socketcan), on Linux
1576 (http://lwn.net/Articles/253425).
1577
1578 (Contributed by Matthias Fuchs, updated by Tiago Gonçalves in :issue:`10141`)
1579
Charles-François Natali10b8cf42011-11-10 19:21:37 +01001580* The :class:`~socket.socket` class now supports the PF_RDS protocol family
1581 (http://en.wikipedia.org/wiki/Reliable_Datagram_Sockets and
1582 http://oss.oracle.com/projects/rds/).
Victor Stinner754851f2011-04-19 23:58:51 +02001583
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001584
Victor Stinner99c8b162011-05-24 12:05:19 +02001585ssl
1586---
1587
Antoine Pitrou2c0a9672011-11-17 02:09:13 +01001588* The :mod:`ssl` module has two new random generation functions:
Victor Stinner99c8b162011-05-24 12:05:19 +02001589
1590 * :func:`~ssl.RAND_bytes`: generate cryptographically strong
1591 pseudo-random bytes.
1592 * :func:`~ssl.RAND_pseudo_bytes`: generate pseudo-random bytes.
1593
Antoine Pitrou2c0a9672011-11-17 02:09:13 +01001594 (Contributed by Victor Stinner in :issue:`12049`)
1595
1596* The :mod:`ssl` module now exposes a finer-grained exception hierarchy
1597 in order to make it easier to inspect the various kinds of errors.
1598
1599 (Contributed by Antoine Pitrou in :issue:`11183`)
1600
1601* :meth:`~ssl.SSLContext.load_cert_chain` now accepts a *password* argument
1602 to be used if the private key is encrypted.
1603
1604 (Contributed by Adam Simpkins in :issue:`12803`)
1605
Antoine Pitrou73fc8142011-12-23 20:58:36 +01001606* Diffie-Hellman key exchange, both regular and Elliptic Curve-based, is
1607 now supported through the :meth:`~ssl.SSLContext.load_dh_params` and
1608 :meth:`~ssl.SSLContext.set_ecdh_curve` methods.
1609
1610 (Contributed by Antoine Pitrou in :issue:`13626` and :issue:`13627`)
1611
Antoine Pitrou2c0a9672011-11-17 02:09:13 +01001612* SSL sockets have a new :meth:`~ssl.SSLSocket.get_channel_binding` method
1613 allowing the implementation of certain authentication mechanisms such as
1614 SCRAM-SHA-1-PLUS.
1615
1616 (Contributed by Jacek Konieczny in :issue:`12551`)
1617
Antoine Pitrou73fc8142011-12-23 20:58:36 +01001618* You can query the SSL compression algorithm used by an SSL socket, thanks
1619 to its new :meth:`~ssl.SSLSocket.compression` method.
1620
1621 (Contributed by Antoine Pitrou in :issue:`13634`)
1622
Antoine Pitrou9a864472012-05-04 23:15:47 +02001623* Support has been added for the Next Procotol Negotiation extension using
1624 the :meth:`ssl.SSLContext.set_npn_protocols` method.
1625
1626 (Contributed by Colin Marc in :issue:`14204`)
1627
Antoine Pitrouad09b5d2012-06-24 22:41:33 +02001628* SSL errors can now be introspected more easily thanks to
1629 :attr:`~ssl.SSLError.library` and :attr:`~ssl.SSLError.reason` attributes.
1630
1631 (Contributed by Antoine Pitrou in :issue:`14837`)
1632
Giampaolo Rodola'ffa1d0b2012-05-15 15:30:25 +02001633stat
1634----
1635
1636- The undocumented tarfile.filemode function has been moved to
1637 :func:`stat.filemode`. It can be used to convert a file's mode to a string of
1638 the form '-rwxrwxrwx'.
1639
1640 (Contributed by Giampaolo Rodolà in :issue:`14807`)
Antoine Pitrou73fc8142011-12-23 20:58:36 +01001641
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001642sys
1643---
Giampaolo Rodola'210e7ca2011-07-01 13:55:36 +02001644
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001645* The :mod:`sys` module has a new :data:`~sys.thread_info` :term:`struct
1646 sequence` holding informations about the thread implementation.
Giampaolo Rodola'210e7ca2011-07-01 13:55:36 +02001647
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001648 (:issue:`11223`)
Giampaolo Rodola'096dcb12011-06-27 11:17:51 +02001649
Nick Coghlan4fae8cd2012-06-11 23:07:51 +10001650textwrap
1651--------
1652
1653* The :mod:`textwrap` module has a new :func:`~textwrap.indent` that makes
1654 it straightforward to add a common prefix to selected lines in a block
1655 of text.
1656
1657 (:issue:`13857`)
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +01001658
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001659time
1660----
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +01001661
Victor Stinnerec895392012-04-29 02:41:27 +02001662The :pep:`418` added new functions to the :mod:`time` module:
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001663
Victor Stinnerec895392012-04-29 02:41:27 +02001664* :func:`~time.get_clock_info`: Get information on a clock.
1665* :func:`~time.monotonic`: Monotonic clock (cannot go backward), not affected
1666 by system clock updates.
1667* :func:`~time.perf_counter`: Performance counter with the highest available
1668 resolution to measure a short duration.
1669* :func:`~time.process_time`: Sum of the system and user CPU time of the
1670 current process.
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001671
Victor Stinnerec895392012-04-29 02:41:27 +02001672Other new functions:
1673
1674* :func:`~time.clock_getres`, :func:`~time.clock_gettime` and
1675 :func:`~time.clock_settime` functions with ``CLOCK_xxx`` constants.
1676 (Contributed by Victor Stinner in :issue:`10278`)
Victor Stinnerf4c54ff2012-02-08 01:48:34 +01001677
Antoine Pitrou5a8bc6f2011-11-17 02:20:48 +01001678
Victor Stinner0db176f2012-04-16 00:16:30 +02001679types
1680-----
1681
1682Add a new :class:`types.MappingProxyType` class: Read-only proxy of a mapping.
1683(:issue:`14386`)
1684
1685
Nick Coghlan7fc570a2012-05-20 02:34:13 +10001686The new functions `types.new_class` and `types.prepare_class` provide support
1687for PEP 3115 compliant dynamic type creation. (:issue:`14588`)
1688
1689
Senthil Kumarande49d642011-10-16 23:54:44 +08001690urllib
1691------
1692
1693The :class:`~urllib.request.Request` class, now accepts a *method* argument
1694used by :meth:`~urllib.request.Request.get_method` to determine what HTTP method
Senthil Kumarana41c9422011-10-20 02:37:08 +08001695should be used. For example, this will send a ``'HEAD'`` request::
Senthil Kumarande49d642011-10-16 23:54:44 +08001696
1697 >>> urlopen(Request('http://www.python.org', method='HEAD'))
1698
1699(:issue:`1673007`)
Giampaolo Rodola'096dcb12011-06-27 11:17:51 +02001700
Giampaolo Rodola'be55d992011-11-22 13:33:34 +01001701
Éric Araujo4f61a2d2012-04-04 23:01:01 -04001702webbrowser
1703----------
1704
1705The :mod:`webbrowser` module supports more browsers: Google Chrome (named
1706:program:`chrome`, :program:`chromium`, :program:`chrome-browser` or
1707:program:`chromium-browser` depending on the version and operating system) as
1708well as the the generic launchers :program:`xdg-open` from the FreeDesktop.org
1709project and :program:`gvfs-open` which is the default URI handler for GNOME 3.
1710
1711(:issue:`13620` and :issue:`14493`)
1712
1713
Eli Benderskyefcaba02012-08-09 08:20:20 +03001714xml.etree.ElementTree
1715---------------------
1716
1717The :mod:`xml.etree.ElementTree` module now imports its C accelerator by
1718default; there is no longer a need to explicitly import
1719:mod:`xml.etree.cElementTree` (this module stays for backwards compatibility,
1720but is now deprecated). In addition, the ``iter`` family of methods of
1721:class:`~xml.etree.ElementTree.Element` has been optimized (rewritten in C).
1722The module's documentation has also been greatly improved with added examples
1723and a more detailed reference.
1724
1725
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001726Optimizations
1727=============
1728
1729Major performance enhancements have been added:
1730
Éric Araujo4f61a2d2012-04-04 23:01:01 -04001731* Thanks to :pep:`393`, some operations on Unicode strings have been optimized:
Victor Stinner46606ce2011-11-20 18:27:55 +01001732
1733 * the memory footprint is divided by 2 to 4 depending on the text
Victor Stinnera996f1e2011-11-21 13:14:43 +01001734 * encode an ASCII string to UTF-8 doesn't need to encode characters anymore,
1735 the UTF-8 representation is shared with the ASCII representation
Victor Stinner6099a032011-12-18 14:22:26 +01001736 * the UTF-8 encoder has been optimized
1737 * repeating a single ASCII letter and getting a substring of a ASCII strings
1738 is 4 times faster
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001739
Antoine Pitrou5d7e1d32012-06-24 22:38:23 +02001740* UTF-8 is now 2x to 4x faster. UTF-16 encoding is now up to 10x faster.
Antoine Pitrou5cec9d22012-05-17 17:37:02 +02001741
Antoine Pitrouc9092962012-06-15 22:22:18 +02001742 (contributed by Serhiy Storchaka, :issue:`14624`, :issue:`14738` and
1743 :issue:`15026`.)
Antoine Pitrou5cec9d22012-05-17 17:37:02 +02001744
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001745
1746Build and C API Changes
1747=======================
1748
1749Changes to Python's build process and to the C API include:
1750
Stefan Krah95b1ba62012-02-29 17:27:21 +01001751* New :pep:`3118` related function:
1752
1753 * :c:func:`PyMemoryView_FromMemory`
1754
Éric Araujo4f61a2d2012-04-04 23:01:01 -04001755* :pep:`393` added new Unicode types, macros and functions:
Victor Stinner46606ce2011-11-20 18:27:55 +01001756
Victor Stinnera996f1e2011-11-21 13:14:43 +01001757 * High-level API:
1758
1759 * :c:func:`PyUnicode_CopyCharacters`
1760 * :c:func:`PyUnicode_FindChar`
1761 * :c:func:`PyUnicode_GetLength`, :c:macro:`PyUnicode_GET_LENGTH`
1762 * :c:func:`PyUnicode_New`
1763 * :c:func:`PyUnicode_Substring`
1764 * :c:func:`PyUnicode_ReadChar`, :c:func:`PyUnicode_WriteChar`
1765
1766 * Low-level API:
1767
1768 * :c:type:`Py_UCS1`, :c:type:`Py_UCS2`, :c:type:`Py_UCS4` types
1769 * :c:type:`PyASCIIObject` and :c:type:`PyCompactUnicodeObject` structures
1770 * :c:macro:`PyUnicode_READY`
1771 * :c:func:`PyUnicode_FromKindAndData`
1772 * :c:func:`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsUCS4Copy`
1773 * :c:macro:`PyUnicode_DATA`, :c:macro:`PyUnicode_1BYTE_DATA`,
1774 :c:macro:`PyUnicode_2BYTE_DATA`, :c:macro:`PyUnicode_4BYTE_DATA`
1775 * :c:macro:`PyUnicode_KIND` with :c:type:`PyUnicode_Kind` enum:
1776 :c:data:`PyUnicode_WCHAR_KIND`, :c:data:`PyUnicode_1BYTE_KIND`,
1777 :c:data:`PyUnicode_2BYTE_KIND`, :c:data:`PyUnicode_4BYTE_KIND`
1778 * :c:macro:`PyUnicode_READ`, :c:macro:`PyUnicode_READ_CHAR`, :c:macro:`PyUnicode_WRITE`
1779 * :c:macro:`PyUnicode_MAX_CHAR_VALUE`
1780
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001781
1782
Victor Stinnerd1be8782011-12-09 00:10:41 +01001783Deprecated
1784==========
1785
Georg Brandl0cd25c92011-04-29 13:45:54 +02001786Unsupported Operating Systems
Victor Stinnerd1be8782011-12-09 00:10:41 +01001787-----------------------------
Victor Stinnerb90db4c2011-04-26 22:48:24 +02001788
Brian Curtin49a40cd2011-05-02 22:30:06 -05001789OS/2 and VMS are no longer supported due to the lack of a maintainer.
1790
1791Windows 2000 and Windows platforms which set ``COMSPEC`` to ``command.com``
1792are no longer supported due to maintenance burden.
Victor Stinnerb90db4c2011-04-26 22:48:24 +02001793
1794
Victor Stinner46606ce2011-11-20 18:27:55 +01001795Deprecated Python modules, functions and methods
Victor Stinnerd1be8782011-12-09 00:10:41 +01001796------------------------------------------------
Victor Stinner19bd0692011-11-16 00:18:57 +01001797
Victor Stinner19bd0692011-11-16 00:18:57 +01001798* The ``unicode_internal`` codec has been deprecated because of the
Sandro Tosicd899122012-01-22 12:16:04 +01001799 :pep:`393`, use UTF-8, UTF-16 (``utf-16-le`` or ``utf-16-be``), or UTF-32
1800 (``utf-32-le`` or ``utf-32-be``)
Victor Stinner19bd0692011-11-16 00:18:57 +01001801* :meth:`ftplib.FTP.nlst` and :meth:`ftplib.FTP.dir`: use
Victor Stinner46606ce2011-11-20 18:27:55 +01001802 :meth:`ftplib.FTP.mlsd`
Victor Stinner19bd0692011-11-16 00:18:57 +01001803* :func:`platform.popen`: use the :mod:`subprocess` module. Check especially
1804 the :ref:`subprocess-replacements` section.
1805* :issue:`13374`: The Windows bytes API has been deprecated in the :mod:`os`
Victor Stinner46606ce2011-11-20 18:27:55 +01001806 module. Use Unicode filenames, instead of bytes filenames, to not depend on
Victor Stinner19bd0692011-11-16 00:18:57 +01001807 the ANSI code page anymore and to support any filename.
Florent Xiclunaa72a98f2012-02-13 11:03:30 +01001808* :issue:`13988`: The :mod:`xml.etree.cElementTree` module is deprecated. The
1809 accelerator is used automatically whenever available.
Victor Stinner47620a62012-04-29 02:52:39 +02001810* The behaviour of :func:`time.clock` depends on the platform: use the new
1811 :func:`time.perf_counter` or :func:`time.process_time` function instead,
1812 depending on your requirements, to have a well defined behaviour.
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001813* The :func:`os.stat_float_times` function is deprecated.
Victor Stinner8f17c1c2012-08-05 16:31:32 +02001814* :mod:`abc` module:
1815
1816 * :class:`abc.abstractproperty` has been deprecated, use :class:`property`
1817 with :func:`abc.abstractmethod` instead.
1818 * :class:`abc.abstractclassmethod` has been deprecated, use
1819 :class:`classmethod` with :func:`abc.abstractmethod` instead.
1820 * :class:`abc.abstractstaticmethod` has been deprecated, use
1821 :class:`staticmethod` with :func:`abc.abstractmethod` instead.
1822
Victor Stinner19bd0692011-11-16 00:18:57 +01001823
1824
Victor Stinner46606ce2011-11-20 18:27:55 +01001825Deprecated functions and types of the C API
Victor Stinnerd1be8782011-12-09 00:10:41 +01001826-------------------------------------------
Victor Stinner46606ce2011-11-20 18:27:55 +01001827
Éric Araujo4f61a2d2012-04-04 23:01:01 -04001828The :c:type:`Py_UNICODE` has been deprecated by :pep:`393` and will be
Victor Stinner46606ce2011-11-20 18:27:55 +01001829removed in Python 4. All functions using this type are deprecated:
1830
Victor Stinner46606ce2011-11-20 18:27:55 +01001831Unicode functions and methods using :c:type:`Py_UNICODE` and
1832:c:type:`Py_UNICODE*` types:
1833
1834 * :c:macro:`PyUnicode_FromUnicode`: use :c:func:`PyUnicode_FromWideChar` or
1835 :c:func:`PyUnicode_FromKindAndData`
1836 * :c:macro:`PyUnicode_AS_UNICODE`, :c:func:`PyUnicode_AsUnicode`,
1837 :c:func:`PyUnicode_AsUnicodeAndSize`: use :c:func:`PyUnicode_AsWideCharString`
1838 * :c:macro:`PyUnicode_AS_DATA`: use :c:macro:`PyUnicode_DATA` with
1839 :c:macro:`PyUnicode_READ` and :c:macro:`PyUnicode_WRITE`
1840 * :c:macro:`PyUnicode_GET_SIZE`, :c:func:`PyUnicode_GetSize`: use
1841 :c:macro:`PyUnicode_GET_LENGTH` or :c:func:`PyUnicode_GetLength`
1842 * :c:macro:`PyUnicode_GET_DATA_SIZE`: use
1843 ``PyUnicode_GET_LENGTH(str) * PyUnicode_KIND(str)`` (only work on ready
1844 strings)
Victor Stinnerbf6e5602011-12-12 01:53:47 +01001845 * :c:func:`PyUnicode_AsUnicodeCopy`: use :c:func:`PyUnicode_AsUCS4Copy` or
1846 :c:func:`PyUnicode_AsWideCharString`
Victor Stinnerab595942011-12-17 04:59:06 +01001847 * :c:func:`PyUnicode_GetMax`
1848
Victor Stinner46606ce2011-11-20 18:27:55 +01001849
Victor Stinnera996f1e2011-11-21 13:14:43 +01001850Functions and macros manipulating Py_UNICODE* strings:
1851
1852 * :c:macro:`Py_UNICODE_strlen`: use :c:func:`PyUnicode_GetLength` or
1853 :c:macro:`PyUnicode_GET_LENGTH`
1854 * :c:macro:`Py_UNICODE_strcat`: use :c:func:`PyUnicode_CopyCharacters` or
1855 :c:func:`PyUnicode_FromFormat`
1856 * :c:macro:`Py_UNICODE_strcpy`, :c:macro:`Py_UNICODE_strncpy`,
1857 :c:macro:`Py_UNICODE_COPY`: use :c:func:`PyUnicode_CopyCharacters` or
1858 :c:func:`PyUnicode_Substring`
1859 * :c:macro:`Py_UNICODE_strcmp`: use :c:func:`PyUnicode_Compare`
1860 * :c:macro:`Py_UNICODE_strncmp`: use :c:func:`PyUnicode_Tailmatch`
1861 * :c:macro:`Py_UNICODE_strchr`, :c:macro:`Py_UNICODE_strrchr`: use
1862 :c:func:`PyUnicode_FindChar`
Victor Stinner606e19d2012-01-04 03:59:16 +01001863 * :c:macro:`Py_UNICODE_FILL`: use :c:func:`PyUnicode_Fill`
Victor Stinnerab595942011-12-17 04:59:06 +01001864 * :c:macro:`Py_UNICODE_MATCH`
Victor Stinnera996f1e2011-11-21 13:14:43 +01001865
Victor Stinner46606ce2011-11-20 18:27:55 +01001866Encoders:
1867
1868 * :c:func:`PyUnicode_Encode`: use :c:func:`PyUnicode_AsEncodedObject`
1869 * :c:func:`PyUnicode_EncodeUTF7`
Victor Stinnera996f1e2011-11-21 13:14:43 +01001870 * :c:func:`PyUnicode_EncodeUTF8`: use :c:func:`PyUnicode_AsUTF8` or
1871 :c:func:`PyUnicode_AsUTF8String`
Victor Stinner46606ce2011-11-20 18:27:55 +01001872 * :c:func:`PyUnicode_EncodeUTF32`
1873 * :c:func:`PyUnicode_EncodeUTF16`
1874 * :c:func:`PyUnicode_EncodeUnicodeEscape:` use
1875 :c:func:`PyUnicode_AsUnicodeEscapeString`
1876 * :c:func:`PyUnicode_EncodeRawUnicodeEscape:` use
1877 :c:func:`PyUnicode_AsRawUnicodeEscapeString`
1878 * :c:func:`PyUnicode_EncodeLatin1`: use :c:func:`PyUnicode_AsLatin1String`
1879 * :c:func:`PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`
1880 * :c:func:`PyUnicode_EncodeCharmap`
1881 * :c:func:`PyUnicode_TranslateCharmap`
1882 * :c:func:`PyUnicode_EncodeMBCS`: use :c:func:`PyUnicode_AsMBCSString` or
1883 :c:func:`PyUnicode_EncodeCodePage` (with ``CP_ACP`` code_page)
1884 * :c:func:`PyUnicode_EncodeDecimal`,
1885 :c:func:`PyUnicode_TransformDecimalToASCII`
1886
1887
Stefan Krah029780b2012-08-24 20:14:12 +02001888Deprecated features
1889-------------------
1890
1891The :mod:`array` module's ``'u'`` format code is now deprecated and will be
1892removed in Python 4 together with the rest of the (:c:type:`Py_UNICODE`) API.
1893
1894
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001895Porting to Python 3.3
1896=====================
1897
1898This section lists previously described changes and other bugfixes
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001899that may require changes to your code.
1900
Barry Warsawc1e721b2012-07-30 16:24:12 -04001901.. _portingpythoncode:
1902
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001903Porting Python code
1904-------------------
Giampaolo Rodolà3108f982011-02-24 20:59:48 +00001905
Victor Stinnerfa0d6282012-08-05 15:56:51 +02001906* Hash randomization is enabled by default. Set the :envvar:`PYTHONHASHSEED`
1907 environment variable to ``0`` to disable hash randomization. See also the
1908 :meth:`object.__hash__` method.
Georg Brandld6c43402012-03-07 08:55:52 +01001909
Victor Stinner19bd0692011-11-16 00:18:57 +01001910* :issue:`12326`: On Linux, sys.platform doesn't contain the major version
Victor Stinnerff3d9392011-08-20 23:39:26 +02001911 anymore. It is now always 'linux', instead of 'linux2' or 'linux3' depending
1912 on the Linux version used to build Python. Replace sys.platform == 'linux2'
1913 with sys.platform.startswith('linux'), or directly sys.platform == 'linux' if
1914 you don't need to support older Python versions.
Éric Araujoc09fca62011-03-23 02:06:24 +01001915
Victor Stinnerecc6e662012-03-14 00:39:29 +01001916* :issue:`13847`, :issue:`14180`: :mod:`time` and :mod:`datetime`:
1917 :exc:`OverflowError` is now raised instead of :exc:`ValueError` if a
1918 timestamp is out of range. :exc:`OSError` is now raised if C functions
1919 :c:func:`gmtime` or :c:func:`localtime` failed.
1920
Brett Cannonc2043482012-04-29 20:59:41 -04001921* The default finders used by import now utilize a cache of what is contained
1922 within a specific directory. If you create a Python source file or sourceless
1923 bytecode file, make sure to call :func:`importlib.invalidate_caches` to clear
1924 out the cache for the finders to notice the new file.
1925
1926* :exc:`ImportError` now uses the full name of the module that was attemped to
1927 be imported. Doctests that check ImportErrors' message will need to be
1928 updated to use the full name of the module instead of just the tail of the
1929 name.
1930
Ezio Melotti7598e182012-09-20 08:33:53 +03001931* The *index* argument to :func:`__import__` now defaults to 0 instead of -1
Brett Cannonc2043482012-04-29 20:59:41 -04001932 and no longer support negative values. It was an oversight when :pep:`328` was
1933 implemented that the default value remained -1. If you need to continue to
1934 perform a relative import followed by an absolute import, then perform the
1935 relative import using an index of 1, followed by another import using an
1936 index of 0. It is preferred, though, that you use
1937 :func:`importlib.import_module` rather than call :func:`__import__` directly.
1938
1939* :func:`__import__` no longer allows one to use an index value other than 0
1940 for top-level modules. E.g. ``__import__('sys', level=1)`` is now an error.
1941
1942* Because :attr:`sys.meta_path` and :attr:`sys.path_hooks` now have finders on
1943 them by default, you will most likely want to use :meth:`list.insert` instead
1944 of :meth:`list.append` to add to those lists.
1945
1946* Because ``None`` is now inserted into :attr:`sys.path_importer_cache`, if you
1947 are clearing out entries in the dictionary of paths that do not have a
1948 finder, you will need to remove keys paired with values of ``None`` **and**
Brett Cannon903c27c2012-07-09 14:15:32 -04001949 :class:`imp.NullImporter` to be backwards-compatible. This will lead to extra
Brett Cannonc2043482012-04-29 20:59:41 -04001950 overhead on older versions of Python that re-insert ``None`` into
1951 :attr:`sys.path_importer_cache` where it repesents the use of implicit
1952 finders, but semantically it should not change anything.
1953
1954* :meth:`importlib.abc.SourceLoader.path_mtime` is now deprecated in favour of
1955 :meth:`importlib.abc.SourceLoader.path_stats` as bytecode files now store
1956 both the modification time and size of the source file the bytecode file was
1957 compiled from.
1958
Brett Cannon077ef452012-08-02 17:50:06 -04001959* :class:`importlib.abc.Finder` no longer specifies a `find_module()` abstract
1960 method that must be implemented. If you were relying on subclasses to
1961 implement that method, make sure to check for the method's existence first.
1962 You will probably want to check for `find_loader()` first, though, in the
1963 case of working with :term:`path entry finders <path entry finder>`.
1964
Nick Coghlan60610002012-07-15 22:39:39 +10001965* :mod:`pkgutil` has been converted to use :mod:`importlib` internally. This
1966 eliminates many edge cases where the old behaviour of the PEP 302 import
1967 emulation failed to match the behaviour of the real import system. The
1968 import emulation itself is still present, but is now deprecated. The
1969 :func:`pkgutil.iter_importers` and :func:`pkgutil.walk_packages` functions
1970 special case the standard import hooks so they are still supported even
1971 though they do not provide the non-standard ``iter_modules()`` method.
Brett Cannon903c27c2012-07-09 14:15:32 -04001972
Brett Cannonc2043482012-04-29 20:59:41 -04001973
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001974Porting C code
1975--------------
1976
Stefan Krah54c32032012-02-29 17:47:21 +01001977* In the course of changes to the buffer API the undocumented
1978 :c:member:`~Py_buffer.smalltable` member of the
1979 :c:type:`Py_buffer` structure has been removed and the
1980 layout of the :c:type:`PyMemoryViewObject` has changed.
1981
1982 All extensions relying on the relevant parts in ``memoryobject.h``
1983 or ``object.h`` must be rebuilt.
1984
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001985* Due to :ref:`PEP 393 <pep-393>`, the :c:type:`Py_UNICODE` type and all
1986 functions using this type are deprecated (but will stay available for
1987 at least five years). If you were using low-level Unicode APIs to
1988 construct and access unicode objects and you want to benefit of the
Éric Araujo4f61a2d2012-04-04 23:01:01 -04001989 memory footprint reduction provided by PEP 393, you have to convert
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02001990 your code to the new :doc:`Unicode API <../c-api/unicode>`.
1991
1992 However, if you only have been using high-level functions such as
1993 :c:func:`PyUnicode_Concat()`, :c:func:`PyUnicode_Join` or
1994 :c:func:`PyUnicode_FromFormat()`, your code will automatically take
1995 advantage of the new unicode representations.
1996
Brett Cannon77b2abd2012-07-09 16:09:00 -04001997* :c:func:`PyImport_GetMagicNumber` now returns -1 upon failure.
1998
Ezio Melotti7598e182012-09-20 08:33:53 +03001999* As a negative value for the *level* argument to :func:`__import__` is no
Brett Cannon522267e2012-08-10 18:55:08 -04002000 longer valid, the same now holds for :c:func:`PyImport_ImportModuleLevel`.
Ezio Melotti7598e182012-09-20 08:33:53 +03002001 This also means that the value of *level* used by
Brett Cannon522267e2012-08-10 18:55:08 -04002002 :c:func:`PyImport_ImportModuleEx` is now 0 instead of -1.
2003
Brett Cannon77b2abd2012-07-09 16:09:00 -04002004
Antoine Pitrouc229e6e2012-02-20 19:41:11 +01002005Building C extensions
2006---------------------
2007
2008* The range of possible file names for C extensions has been narrowed.
2009 Very rarely used spellings have been suppressed: under POSIX, files
2010 named ``xxxmodule.so``, ``xxxmodule.abi3.so`` and
2011 ``xxxmodule.cpython-*.so`` are no longer recognized as implementing
2012 the ``xxx`` module. If you had been generating such files, you have
2013 to switch to the other spellings (i.e., remove the ``module`` string
2014 from the file names).
2015
2016 (implemented in :issue:`14040`.)
2017
2018
Antoine Pitrou037ffbf2011-10-24 00:25:41 +02002019Other issues
2020------------
2021
Éric Araujoc09fca62011-03-23 02:06:24 +01002022.. Issue #11591: When :program:`python` was started with :option:`-S`,
2023 ``import site`` will not add site-specific paths to the module search
2024 paths. In previous versions, it did. See changeset for doc changes in
2025 various files. Contributed by Carl Meyer with editions by Éric Araujo.
Éric Araujobe3bd572011-03-26 01:55:15 +01002026
Éric Araujobfc97292011-11-14 18:18:15 +01002027.. Issue #10998: the -Q command-line flag and related artifacts have been
Éric Araujobe3bd572011-03-26 01:55:15 +01002028 removed. Code checking sys.flags.division_warning will need updating.
2029 Contributed by Éric Araujo.