1 **************************** 2 What's New in Python 2.6 3 **************************** 4 5 .. XXX add trademark info for Apple, Microsoft, SourceForge. 6 7 :Author: A.M. Kuchling (amk at amk.ca) 8 9 .. $Id$ 10 Rules for maintenance: 11 12 * Anyone can add text to this document. Do not spend very much time 13 on the wording of your changes, because your text will probably 14 get rewritten to some degree. 15 16 * The maintainer will go through Misc/NEWS periodically and add 17 changes; it's therefore more important to add your changes to 18 Misc/NEWS than to this file. 19 20 * This is not a complete list of every single change; completeness 21 is the purpose of Misc/NEWS. Some changes I consider too small 22 or esoteric to include. If such a change is added to the text, 23 I'll just remove it. (This is another reason you shouldn't spend 24 too much time on writing your addition.) 25 26 * If you want to draw your new text to the attention of the 27 maintainer, add 'XXX' to the beginning of the paragraph or 28 section. 29 30 * It's OK to just add a fragmentary note about a change. For 31 example: "XXX Describe the transmogrify() function added to the 32 socket module." The maintainer will research the change and 33 write the necessary text. 34 35 * You can comment out your additions if you like, but it's not 36 necessary (especially when a final release is some months away). 37 38 * Credit the author of a patch or bugfix. Just the name is 39 sufficient; the e-mail address isn't necessary. 40 41 * It's helpful to add the bug/patch number in a parenthetical comment. 42 43 XXX Describe the transmogrify() function added to the socket 44 module. 45 (Contributed by P.Y. Developer; :issue:`12345`.) 46 47 This saves the maintainer some effort going through the SVN logs 48 when researching a change. 49 50 This article explains the new features in Python 2.6, released on October 1 51 2008. The release schedule is described in :pep:`361`. 52 53 The major theme of Python 2.6 is preparing the migration path to 54 Python 3.0, a major redesign of the language. Whenever possible, 55 Python 2.6 incorporates new features and syntax from 3.0 while 56 remaining compatible with existing code by not removing older features 57 or syntax. When it's not possible to do that, Python 2.6 tries to do 58 what it can, adding compatibility functions in a 59 :mod:`future_builtins` module and a :option:`-3` switch to warn about 60 usages that will become unsupported in 3.0. 61 62 Some significant new packages have been added to the standard library, 63 such as the :mod:`multiprocessing` and :mod:`json` modules, but 64 there aren't many new features that aren't related to Python 3.0 in 65 some way. 66 67 Python 2.6 also sees a number of improvements and bugfixes throughout 68 the source. A search through the change logs finds there were 259 69 patches applied and 612 bugs fixed between Python 2.5 and 2.6. Both 70 figures are likely to be underestimates. 71 72 This article doesn't attempt to provide a complete specification of 73 the new features, but instead provides a convenient overview. For 74 full details, you should refer to the documentation for Python 2.6. If 75 you want to understand the rationale for the design and 76 implementation, refer to the PEP for a particular new feature. 77 Whenever possible, "What's New in Python" links to the bug/patch item 78 for each change. 79 80 .. Compare with previous release in 2 - 3 sentences here. 81 add hyperlink when the documentation becomes available online. 82 83 .. ======================================================================== 84 .. Large, PEP-level features and changes should be described here. 85 .. ======================================================================== 86 87 Python 3.0 88 ================ 89 90 The development cycle for Python versions 2.6 and 3.0 was 91 synchronized, with the alpha and beta releases for both versions being 92 made on the same days. The development of 3.0 has influenced many 93 features in 2.6. 94 95 Python 3.0 is a far-ranging redesign of Python that breaks 96 compatibility with the 2.x series. This means that existing Python 97 code will need some conversion in order to run on 98 Python 3.0. However, not all the changes in 3.0 necessarily break 99 compatibility. In cases where new features won't cause existing code 100 to break, they've been backported to 2.6 and are described in this 101 document in the appropriate place. Some of the 3.0-derived features 102 are: 103 104 * A :meth:`__complex__` method for converting objects to a complex number. 105 * Alternate syntax for catching exceptions: ``except TypeError as exc``. 106 * The addition of :func:`functools.reduce` as a synonym for the built-in 107 :func:`reduce` function. 108 109 Python 3.0 adds several new built-in functions and changes the 110 semantics of some existing builtins. Functions that are new in 3.0 111 such as :func:`bin` have simply been added to Python 2.6, but existing 112 builtins haven't been changed; instead, the :mod:`future_builtins` 113 module has versions with the new 3.0 semantics. Code written to be 114 compatible with 3.0 can do ``from future_builtins import hex, map`` as 115 necessary. 116 117 A new command-line switch, :option:`-3`, enables warnings 118 about features that will be removed in Python 3.0. You can run code 119 with this switch to see how much work will be necessary to port 120 code to 3.0. The value of this switch is available 121 to Python code as the boolean variable :data:`sys.py3kwarning`, 122 and to C extension code as :c:data:`Py_Py3kWarningFlag`. 123 124 .. seealso:: 125 126 The 3xxx series of PEPs, which contains proposals for Python 3.0. 127 :pep:`3000` describes the development process for Python 3.0. 128 Start with :pep:`3100` that describes the general goals for Python 129 3.0, and then explore the higher-numbered PEPS that propose 130 specific features. 131 132 133 Changes to the Development Process 134 ================================================== 135 136 While 2.6 was being developed, the Python development process 137 underwent two significant changes: we switched from SourceForge's 138 issue tracker to a customized Roundup installation, and the 139 documentation was converted from LaTeX to reStructuredText. 140 141 142 New Issue Tracker: Roundup 143 -------------------------------------------------- 144 145 For a long time, the Python developers had been growing increasingly 146 annoyed by SourceForge's bug tracker. SourceForge's hosted solution 147 doesn't permit much customization; for example, it wasn't possible to 148 customize the life cycle of issues. 149 150 The infrastructure committee of the Python Software Foundation 151 therefore posted a call for issue trackers, asking volunteers to set 152 up different products and import some of the bugs and patches from 153 SourceForge. Four different trackers were examined: `Jira 154 <https://www.atlassian.com/software/jira/>`__, 155 `Launchpad <https://launchpad.net/>`__, 156 `Roundup <http://roundup.sourceforge.net/>`__, and 157 `Trac <https://trac.edgewall.org/>`__. 158 The committee eventually settled on Jira 159 and Roundup as the two candidates. Jira is a commercial product that 160 offers no-cost hosted instances to free-software projects; Roundup 161 is an open-source project that requires volunteers 162 to administer it and a server to host it. 163 164 After posting a call for volunteers, a new Roundup installation was 165 set up at https://bugs.python.org. One installation of Roundup can 166 host multiple trackers, and this server now also hosts issue trackers 167 for Jython and for the Python web site. It will surely find 168 other uses in the future. Where possible, 169 this edition of "What's New in Python" links to the bug/patch 170 item for each change. 171 172 Hosting of the Python bug tracker is kindly provided by 173 `Upfront Systems <http://www.upfrontsystems.co.za/>`__ 174 of Stellenbosch, South Africa. Martin von Loewis put a 175 lot of effort into importing existing bugs and patches from 176 SourceForge; his scripts for this import operation are at 177 http://svn.python.org/view/tracker/importer/ and may be useful to 178 other projects wishing to move from SourceForge to Roundup. 179 180 .. seealso:: 181 182 https://bugs.python.org 183 The Python bug tracker. 184 185 http://bugs.jython.org: 186 The Jython bug tracker. 187 188 http://roundup.sourceforge.net/ 189 Roundup downloads and documentation. 190 191 http://svn.python.org/view/tracker/importer/ 192 Martin von Loewis's conversion scripts. 193 194 New Documentation Format: reStructuredText Using Sphinx 195 ----------------------------------------------------------- 196 197 The Python documentation was written using LaTeX since the project 198 started around 1989. In the 1980s and early 1990s, most documentation 199 was printed out for later study, not viewed online. LaTeX was widely 200 used because it provided attractive printed output while remaining 201 straightforward to write once the basic rules of the markup were 202 learned. 203 204 Today LaTeX is still used for writing publications destined for 205 printing, but the landscape for programming tools has shifted. We no 206 longer print out reams of documentation; instead, we browse through it 207 online and HTML has become the most important format to support. 208 Unfortunately, converting LaTeX to HTML is fairly complicated and Fred 209 L. Drake Jr., the long-time Python documentation editor, spent a lot 210 of time maintaining the conversion process. Occasionally people would 211 suggest converting the documentation into SGML and later XML, but 212 performing a good conversion is a major task and no one ever committed 213 the time required to finish the job. 214 215 During the 2.6 development cycle, Georg Brandl put a lot of effort 216 into building a new toolchain for processing the documentation. The 217 resulting package is called Sphinx, and is available from 218 http://sphinx-doc.org/. 219 220 Sphinx concentrates on HTML output, producing attractively styled and 221 modern HTML; printed output is still supported through conversion to 222 LaTeX. The input format is reStructuredText, a markup syntax 223 supporting custom extensions and directives that is commonly used in 224 the Python community. 225 226 Sphinx is a standalone package that can be used for writing, and 227 almost two dozen other projects 228 (`listed on the Sphinx web site <http://sphinx-doc.org/examples.html>`__) 229 have adopted Sphinx as their documentation tool. 230 231 .. seealso:: 232 233 `Documenting Python <https://docs.python.org/devguide/documenting.html>`__ 234 Describes how to write for Python's documentation. 235 236 `Sphinx <http://sphinx-doc.org/>`__ 237 Documentation and code for the Sphinx toolchain. 238 239 `Docutils <http://docutils.sourceforge.net>`__ 240 The underlying reStructuredText parser and toolset. 241 242 243 PEP 343: The 'with' statement 244 ============================= 245 246 The previous version, Python 2.5, added the ':keyword:`with`' 247 statement as an optional feature, to be enabled by a ``from __future__ 248 import with_statement`` directive. In 2.6 the statement no longer needs to 249 be specially enabled; this means that :keyword:`with` is now always a 250 keyword. The rest of this section is a copy of the corresponding 251 section from the "What's New in Python 2.5" document; if you're 252 familiar with the ':keyword:`with`' statement 253 from Python 2.5, you can skip this section. 254 255 The ':keyword:`with`' statement clarifies code that previously would use 256 ``try...finally`` blocks to ensure that clean-up code is executed. In this 257 section, I'll discuss the statement as it will commonly be used. In the next 258 section, I'll examine the implementation details and show how to write objects 259 for use with this statement. 260 261 The ':keyword:`with`' statement is a control-flow structure whose basic 262 structure is:: 263 264 with expression [as variable]: 265 with-block 266 267 The expression is evaluated, and it should result in an object that supports the 268 context management protocol (that is, has :meth:`__enter__` and :meth:`__exit__` 269 methods). 270 271 The object's :meth:`__enter__` is called before *with-block* is executed and 272 therefore can run set-up code. It also may return a value that is bound to the 273 name *variable*, if given. (Note carefully that *variable* is *not* assigned 274 the result of *expression*.) 275 276 After execution of the *with-block* is finished, the object's :meth:`__exit__` 277 method is called, even if the block raised an exception, and can therefore run 278 clean-up code. 279 280 Some standard Python objects now support the context management protocol and can 281 be used with the ':keyword:`with`' statement. File objects are one example:: 282 283 with open('/etc/passwd', 'r') as f: 284 for line in f: 285 print line 286 ... more processing code ... 287 288 After this statement has executed, the file object in *f* will have been 289 automatically closed, even if the :keyword:`for` loop raised an exception 290 part-way through the block. 291 292 .. note:: 293 294 In this case, *f* is the same object created by :func:`open`, because 295 :meth:`file.__enter__` returns *self*. 296 297 The :mod:`threading` module's locks and condition variables also support the 298 ':keyword:`with`' statement:: 299 300 lock = threading.Lock() 301 with lock: 302 # Critical section of code 303 ... 304 305 The lock is acquired before the block is executed and always released once the 306 block is complete. 307 308 The :func:`localcontext` function in the :mod:`decimal` module makes it easy 309 to save and restore the current decimal context, which encapsulates the desired 310 precision and rounding characteristics for computations:: 311 312 from decimal import Decimal, Context, localcontext 313 314 # Displays with default precision of 28 digits 315 v = Decimal('578') 316 print v.sqrt() 317 318 with localcontext(Context(prec=16)): 319 # All code in this block uses a precision of 16 digits. 320 # The original context is restored on exiting the block. 321 print v.sqrt() 322 323 324 .. _new-26-context-managers: 325 326 Writing Context Managers 327 ------------------------ 328 329 Under the hood, the ':keyword:`with`' statement is fairly complicated. Most 330 people will only use ':keyword:`with`' in company with existing objects and 331 don't need to know these details, so you can skip the rest of this section if 332 you like. Authors of new objects will need to understand the details of the 333 underlying implementation and should keep reading. 334 335 A high-level explanation of the context management protocol is: 336 337 * The expression is evaluated and should result in an object called a "context 338 manager". The context manager must have :meth:`__enter__` and :meth:`__exit__` 339 methods. 340 341 * The context manager's :meth:`__enter__` method is called. The value returned 342 is assigned to *VAR*. If no ``as VAR`` clause is present, the value is simply 343 discarded. 344 345 * The code in *BLOCK* is executed. 346 347 * If *BLOCK* raises an exception, the context manager's :meth:`__exit__` method 348 is called with three arguments, the exception details (``type, value, traceback``, 349 the same values returned by :func:`sys.exc_info`, which can also be ``None`` 350 if no exception occurred). The method's return value controls whether an exception 351 is re-raised: any false value re-raises the exception, and ``True`` will result 352 in suppressing it. You'll only rarely want to suppress the exception, because 353 if you do the author of the code containing the ':keyword:`with`' statement will 354 never realize anything went wrong. 355 356 * If *BLOCK* didn't raise an exception, the :meth:`__exit__` method is still 357 called, but *type*, *value*, and *traceback* are all ``None``. 358 359 Let's think through an example. I won't present detailed code but will only 360 sketch the methods necessary for a database that supports transactions. 361 362 (For people unfamiliar with database terminology: a set of changes to the 363 database are grouped into a transaction. Transactions can be either committed, 364 meaning that all the changes are written into the database, or rolled back, 365 meaning that the changes are all discarded and the database is unchanged. See 366 any database textbook for more information.) 367 368 Let's assume there's an object representing a database connection. Our goal will 369 be to let the user write code like this:: 370 371 db_connection = DatabaseConnection() 372 with db_connection as cursor: 373 cursor.execute('insert into ...') 374 cursor.execute('delete from ...') 375 # ... more operations ... 376 377 The transaction should be committed if the code in the block runs flawlessly or 378 rolled back if there's an exception. Here's the basic interface for 379 :class:`DatabaseConnection` that I'll assume:: 380 381 class DatabaseConnection: 382 # Database interface 383 def cursor(self): 384 "Returns a cursor object and starts a new transaction" 385 def commit(self): 386 "Commits current transaction" 387 def rollback(self): 388 "Rolls back current transaction" 389 390 The :meth:`__enter__` method is pretty easy, having only to start a new 391 transaction. For this application the resulting cursor object would be a useful 392 result, so the method will return it. The user can then add ``as cursor`` to 393 their ':keyword:`with`' statement to bind the cursor to a variable name. :: 394 395 class DatabaseConnection: 396 ... 397 def __enter__(self): 398 # Code to start a new transaction 399 cursor = self.cursor() 400 return cursor 401 402 The :meth:`__exit__` method is the most complicated because it's where most of 403 the work has to be done. The method has to check if an exception occurred. If 404 there was no exception, the transaction is committed. The transaction is rolled 405 back if there was an exception. 406 407 In the code below, execution will just fall off the end of the function, 408 returning the default value of ``None``. ``None`` is false, so the exception 409 will be re-raised automatically. If you wished, you could be more explicit and 410 add a :keyword:`return` statement at the marked location. :: 411 412 class DatabaseConnection: 413 ... 414 def __exit__(self, type, value, tb): 415 if tb is None: 416 # No exception, so commit 417 self.commit() 418 else: 419 # Exception occurred, so rollback. 420 self.rollback() 421 # return False 422 423 424 .. _module-contextlib: 425 426 The contextlib module 427 --------------------- 428 429 The :mod:`contextlib` module provides some functions and a decorator that 430 are useful when writing objects for use with the ':keyword:`with`' statement. 431 432 The decorator is called :func:`contextmanager`, and lets you write a single 433 generator function instead of defining a new class. The generator should yield 434 exactly one value. The code up to the :keyword:`yield` will be executed as the 435 :meth:`__enter__` method, and the value yielded will be the method's return 436 value that will get bound to the variable in the ':keyword:`with`' statement's 437 :keyword:`as` clause, if any. The code after the :keyword:`yield` will be 438 executed in the :meth:`__exit__` method. Any exception raised in the block will 439 be raised by the :keyword:`yield` statement. 440 441 Using this decorator, our database example from the previous section 442 could be written as:: 443 444 from contextlib import contextmanager 445 446 @contextmanager 447 def db_transaction(connection): 448 cursor = connection.cursor() 449 try: 450 yield cursor 451 except: 452 connection.rollback() 453 raise 454 else: 455 connection.commit() 456 457 db = DatabaseConnection() 458 with db_transaction(db) as cursor: 459 ... 460 461 The :mod:`contextlib` module also has a ``nested(mgr1, mgr2, ...)`` function 462 that combines a number of context managers so you don't need to write nested 463 ':keyword:`with`' statements. In this example, the single ':keyword:`with`' 464 statement both starts a database transaction and acquires a thread lock:: 465 466 lock = threading.Lock() 467 with nested (db_transaction(db), lock) as (cursor, locked): 468 ... 469 470 Finally, the :func:`closing` function returns its argument so that it can be 471 bound to a variable, and calls the argument's ``.close()`` method at the end 472 of the block. :: 473 474 import urllib, sys 475 from contextlib import closing 476 477 with closing(urllib.urlopen('http://www.yahoo.com')) as f: 478 for line in f: 479 sys.stdout.write(line) 480 481 482 .. seealso:: 483 484 :pep:`343` - The "with" statement 485 PEP written by Guido van Rossum and Nick Coghlan; implemented by Mike Bland, 486 Guido van Rossum, and Neal Norwitz. The PEP shows the code generated for a 487 ':keyword:`with`' statement, which can be helpful in learning how the statement 488 works. 489 490 The documentation for the :mod:`contextlib` module. 491 492 .. ====================================================================== 493 494 .. _pep-0366: 495 496 PEP 366: Explicit Relative Imports From a Main Module 497 ============================================================ 498 499 Python's :option:`-m` switch allows running a module as a script. 500 When you ran a module that was located inside a package, relative 501 imports didn't work correctly. 502 503 The fix for Python 2.6 adds a :attr:`__package__` attribute to 504 modules. When this attribute is present, relative imports will be 505 relative to the value of this attribute instead of the 506 :attr:`__name__` attribute. 507 508 PEP 302-style importers can then set :attr:`__package__` as necessary. 509 The :mod:`runpy` module that implements the :option:`-m` switch now 510 does this, so relative imports will now work correctly in scripts 511 running from inside a package. 512 513 .. ====================================================================== 514 515 .. _pep-0370: 516 517 PEP 370: Per-user ``site-packages`` Directory 518 ===================================================== 519 520 When you run Python, the module search path ``sys.path`` usually 521 includes a directory whose path ends in ``"site-packages"``. This 522 directory is intended to hold locally-installed packages available to 523 all users using a machine or a particular site installation. 524 525 Python 2.6 introduces a convention for user-specific site directories. 526 The directory varies depending on the platform: 527 528 * Unix and Mac OS X: :file:`~/.local/` 529 * Windows: :file:`%APPDATA%/Python` 530 531 Within this directory, there will be version-specific subdirectories, 532 such as :file:`lib/python2.6/site-packages` on Unix/Mac OS and 533 :file:`Python26/site-packages` on Windows. 534 535 If you don't like the default directory, it can be overridden by an 536 environment variable. :envvar:`PYTHONUSERBASE` sets the root 537 directory used for all Python versions supporting this feature. On 538 Windows, the directory for application-specific data can be changed by 539 setting the :envvar:`APPDATA` environment variable. You can also 540 modify the :file:`site.py` file for your Python installation. 541 542 The feature can be disabled entirely by running Python with the 543 :option:`-s` option or setting the :envvar:`PYTHONNOUSERSITE` 544 environment variable. 545 546 .. seealso:: 547 548 :pep:`370` - Per-user ``site-packages`` Directory 549 PEP written and implemented by Christian Heimes. 550 551 552 .. ====================================================================== 553 554 .. _pep-0371: 555 556 PEP 371: The ``multiprocessing`` Package 557 ===================================================== 558 559 The new :mod:`multiprocessing` package lets Python programs create new 560 processes that will perform a computation and return a result to the 561 parent. The parent and child processes can communicate using queues 562 and pipes, synchronize their operations using locks and semaphores, 563 and can share simple arrays of data. 564 565 The :mod:`multiprocessing` module started out as an exact emulation of 566 the :mod:`threading` module using processes instead of threads. That 567 goal was discarded along the path to Python 2.6, but the general 568 approach of the module is still similar. The fundamental class 569 is the :class:`Process`, which is passed a callable object and 570 a collection of arguments. The :meth:`start` method 571 sets the callable running in a subprocess, after which you can call 572 the :meth:`is_alive` method to check whether the subprocess is still running 573 and the :meth:`join` method to wait for the process to exit. 574 575 Here's a simple example where the subprocess will calculate a 576 factorial. The function doing the calculation is written strangely so 577 that it takes significantly longer when the input argument is a 578 multiple of 4. 579 580 :: 581 582 import time 583 from multiprocessing import Process, Queue 584 585 586 def factorial(queue, N): 587 "Compute a factorial." 588 # If N is a multiple of 4, this function will take much longer. 589 if (N % 4) == 0: 590 time.sleep(.05 * N/4) 591 592 # Calculate the result 593 fact = 1L 594 for i in range(1, N+1): 595 fact = fact * i 596 597 # Put the result on the queue 598 queue.put(fact) 599 600 if __name__ == '__main__': 601 queue = Queue() 602 603 N = 5 604 605 p = Process(target=factorial, args=(queue, N)) 606 p.start() 607 p.join() 608 609 result = queue.get() 610 print 'Factorial', N, '=', result 611 612 A :class:`~Queue.Queue` is used to communicate the result of the factorial. 613 The :class:`~Queue.Queue` object is stored in a global variable. 614 The child process will use the value of the variable when the child 615 was created; because it's a :class:`~Queue.Queue`, parent and child can use 616 the object to communicate. (If the parent were to change the value of 617 the global variable, the child's value would be unaffected, and vice 618 versa.) 619 620 Two other classes, :class:`Pool` and :class:`Manager`, provide 621 higher-level interfaces. :class:`Pool` will create a fixed number of 622 worker processes, and requests can then be distributed to the workers 623 by calling :meth:`apply` or :meth:`apply_async` to add a single request, 624 and :meth:`map` or :meth:`map_async` to add a number of 625 requests. The following code uses a :class:`Pool` to spread requests 626 across 5 worker processes and retrieve a list of results:: 627 628 from multiprocessing import Pool 629 630 def factorial(N, dictionary): 631 "Compute a factorial." 632 ... 633 p = Pool(5) 634 result = p.map(factorial, range(1, 1000, 10)) 635 for v in result: 636 print v 637 638 This produces the following output:: 639 640 1 641 39916800 642 51090942171709440000 643 8222838654177922817725562880000000 644 33452526613163807108170062053440751665152000000000 645 ... 646 647 The other high-level interface, the :class:`Manager` class, creates a 648 separate server process that can hold master copies of Python data 649 structures. Other processes can then access and modify these data 650 structures using proxy objects. The following example creates a 651 shared dictionary by calling the :meth:`dict` method; the worker 652 processes then insert values into the dictionary. (Locking is not 653 done for you automatically, which doesn't matter in this example. 654 :class:`Manager`'s methods also include :meth:`Lock`, :meth:`RLock`, 655 and :meth:`Semaphore` to create shared locks.) 656 657 :: 658 659 import time 660 from multiprocessing import Pool, Manager 661 662 def factorial(N, dictionary): 663 "Compute a factorial." 664 # Calculate the result 665 fact = 1L 666 for i in range(1, N+1): 667 fact = fact * i 668 669 # Store result in dictionary 670 dictionary[N] = fact 671 672 if __name__ == '__main__': 673 p = Pool(5) 674 mgr = Manager() 675 d = mgr.dict() # Create shared dictionary 676 677 # Run tasks using the pool 678 for N in range(1, 1000, 10): 679 p.apply_async(factorial, (N, d)) 680 681 # Mark pool as closed -- no more tasks can be added. 682 p.close() 683 684 # Wait for tasks to exit 685 p.join() 686 687 # Output results 688 for k, v in sorted(d.items()): 689 print k, v 690 691 This will produce the output:: 692 693 1 1 694 11 39916800 695 21 51090942171709440000 696 31 8222838654177922817725562880000000 697 41 33452526613163807108170062053440751665152000000000 698 51 15511187532873822802242430164693032110632597200169861120000... 699 700 .. seealso:: 701 702 The documentation for the :mod:`multiprocessing` module. 703 704 :pep:`371` - Addition of the multiprocessing package 705 PEP written by Jesse Noller and Richard Oudkerk; 706 implemented by Richard Oudkerk and Jesse Noller. 707 708 709 .. ====================================================================== 710 711 .. _pep-3101: 712 713 PEP 3101: Advanced String Formatting 714 ===================================================== 715 716 In Python 3.0, the `%` operator is supplemented by a more powerful string 717 formatting method, :meth:`format`. Support for the :meth:`str.format` method 718 has been backported to Python 2.6. 719 720 In 2.6, both 8-bit and Unicode strings have a `.format()` method that 721 treats the string as a template and takes the arguments to be formatted. 722 The formatting template uses curly brackets (`{`, `}`) as special characters:: 723 724 >>> # Substitute positional argument 0 into the string. 725 >>> "User ID: {0}".format("root") 726 'User ID: root' 727 >>> # Use the named keyword arguments 728 >>> "User ID: {uid} Last seen: {last_login}".format( 729 ... uid="root", 730 ... last_login = "5 Mar 2008 07:20") 731 'User ID: root Last seen: 5 Mar 2008 07:20' 732 733 Curly brackets can be escaped by doubling them:: 734 735 >>> "Empty dict: {{}}".format() 736 "Empty dict: {}" 737 738 Field names can be integers indicating positional arguments, such as 739 ``{0}``, ``{1}``, etc. or names of keyword arguments. You can also 740 supply compound field names that read attributes or access dictionary keys:: 741 742 >>> import sys 743 >>> print 'Platform: {0.platform}\nPython version: {0.version}'.format(sys) 744 Platform: darwin 745 Python version: 2.6a1+ (trunk:61261M, Mar 5 2008, 20:29:41) 746 [GCC 4.0.1 (Apple Computer, Inc. build 5367)]' 747 748 >>> import mimetypes 749 >>> 'Content-type: {0[.mp4]}'.format(mimetypes.types_map) 750 'Content-type: video/mp4' 751 752 Note that when using dictionary-style notation such as ``[.mp4]``, you 753 don't need to put any quotation marks around the string; it will look 754 up the value using ``.mp4`` as the key. Strings beginning with a 755 number will be converted to an integer. You can't write more 756 complicated expressions inside a format string. 757 758 So far we've shown how to specify which field to substitute into the 759 resulting string. The precise formatting used is also controllable by 760 adding a colon followed by a format specifier. For example:: 761 762 >>> # Field 0: left justify, pad to 15 characters 763 >>> # Field 1: right justify, pad to 6 characters 764 >>> fmt = '{0:15} ${1:>6}' 765 >>> fmt.format('Registration', 35) 766 'Registration $ 35' 767 >>> fmt.format('Tutorial', 50) 768 'Tutorial $ 50' 769 >>> fmt.format('Banquet', 125) 770 'Banquet $ 125' 771 772 Format specifiers can reference other fields through nesting:: 773 774 >>> fmt = '{0:{1}}' 775 >>> width = 15 776 >>> fmt.format('Invoice #1234', width) 777 'Invoice #1234 ' 778 >>> width = 35 779 >>> fmt.format('Invoice #1234', width) 780 'Invoice #1234 ' 781 782 The alignment of a field within the desired width can be specified: 783 784 ================ ============================================ 785 Character Effect 786 ================ ============================================ 787 < (default) Left-align 788 > Right-align 789 ^ Center 790 = (For numeric types only) Pad after the sign. 791 ================ ============================================ 792 793 Format specifiers can also include a presentation type, which 794 controls how the value is formatted. For example, floating-point numbers 795 can be formatted as a general number or in exponential notation:: 796 797 >>> '{0:g}'.format(3.75) 798 '3.75' 799 >>> '{0:e}'.format(3.75) 800 '3.750000e+00' 801 802 A variety of presentation types are available. Consult the 2.6 803 documentation for a :ref:`complete list <formatstrings>`; here's a sample: 804 805 ===== ======================================================================== 806 ``b`` Binary. Outputs the number in base 2. 807 ``c`` Character. Converts the integer to the corresponding Unicode character 808 before printing. 809 ``d`` Decimal Integer. Outputs the number in base 10. 810 ``o`` Octal format. Outputs the number in base 8. 811 ``x`` Hex format. Outputs the number in base 16, using lower-case letters for 812 the digits above 9. 813 ``e`` Exponent notation. Prints the number in scientific notation using the 814 letter 'e' to indicate the exponent. 815 ``g`` General format. This prints the number as a fixed-point number, unless 816 the number is too large, in which case it switches to 'e' exponent 817 notation. 818 ``n`` Number. This is the same as 'g' (for floats) or 'd' (for integers), 819 except that it uses the current locale setting to insert the appropriate 820 number separator characters. 821 ``%`` Percentage. Multiplies the number by 100 and displays in fixed ('f') 822 format, followed by a percent sign. 823 ===== ======================================================================== 824 825 Classes and types can define a :meth:`__format__` method to control how they're 826 formatted. It receives a single argument, the format specifier:: 827 828 def __format__(self, format_spec): 829 if isinstance(format_spec, unicode): 830 return unicode(str(self)) 831 else: 832 return str(self) 833 834 There's also a :func:`format` builtin that will format a single 835 value. It calls the type's :meth:`__format__` method with the 836 provided specifier:: 837 838 >>> format(75.6564, '.2f') 839 '75.66' 840 841 842 .. seealso:: 843 844 :ref:`formatstrings` 845 The reference documentation for format fields. 846 847 :pep:`3101` - Advanced String Formatting 848 PEP written by Talin. Implemented by Eric Smith. 849 850 .. ====================================================================== 851 852 .. _pep-3105: 853 854 PEP 3105: ``print`` As a Function 855 ===================================================== 856 857 The ``print`` statement becomes the :func:`print` function in Python 3.0. 858 Making :func:`print` a function makes it possible to replace the function 859 by doing ``def print(...)`` or importing a new function from somewhere else. 860 861 Python 2.6 has a ``__future__`` import that removes ``print`` as language 862 syntax, letting you use the functional form instead. For example:: 863 864 >>> from __future__ import print_function 865 >>> print('# of entries', len(dictionary), file=sys.stderr) 866 867 The signature of the new function is:: 868 869 def print(*args, sep=' ', end='\n', file=None) 870 871 872 The parameters are: 873 874 * *args*: positional arguments whose values will be printed out. 875 * *sep*: the separator, which will be printed between arguments. 876 * *end*: the ending text, which will be printed after all of the 877 arguments have been output. 878 * *file*: the file object to which the output will be sent. 879 880 .. seealso:: 881 882 :pep:`3105` - Make print a function 883 PEP written by Georg Brandl. 884 885 .. ====================================================================== 886 887 .. _pep-3110: 888 889 PEP 3110: Exception-Handling Changes 890 ===================================================== 891 892 One error that Python programmers occasionally make 893 is writing the following code:: 894 895 try: 896 ... 897 except TypeError, ValueError: # Wrong! 898 ... 899 900 The author is probably trying to catch both :exc:`TypeError` and 901 :exc:`ValueError` exceptions, but this code actually does something 902 different: it will catch :exc:`TypeError` and bind the resulting 903 exception object to the local name ``"ValueError"``. The 904 :exc:`ValueError` exception will not be caught at all. The correct 905 code specifies a tuple of exceptions:: 906 907 try: 908 ... 909 except (TypeError, ValueError): 910 ... 911 912 This error happens because the use of the comma here is ambiguous: 913 does it indicate two different nodes in the parse tree, or a single 914 node that's a tuple? 915 916 Python 3.0 makes this unambiguous by replacing the comma with the word 917 "as". To catch an exception and store the exception object in the 918 variable ``exc``, you must write:: 919 920 try: 921 ... 922 except TypeError as exc: 923 ... 924 925 Python 3.0 will only support the use of "as", and therefore interprets 926 the first example as catching two different exceptions. Python 2.6 927 supports both the comma and "as", so existing code will continue to 928 work. We therefore suggest using "as" when writing new Python code 929 that will only be executed with 2.6. 930 931 .. seealso:: 932 933 :pep:`3110` - Catching Exceptions in Python 3000 934 PEP written and implemented by Collin Winter. 935 936 .. ====================================================================== 937 938 .. _pep-3112: 939 940 PEP 3112: Byte Literals 941 ===================================================== 942 943 Python 3.0 adopts Unicode as the language's fundamental string type and 944 denotes 8-bit literals differently, either as ``b'string'`` 945 or using a :class:`bytes` constructor. For future compatibility, 946 Python 2.6 adds :class:`bytes` as a synonym for the :class:`str` type, 947 and it also supports the ``b''`` notation. 948 949 950 The 2.6 :class:`str` differs from 3.0's :class:`bytes` type in various 951 ways; most notably, the constructor is completely different. In 3.0, 952 ``bytes([65, 66, 67])`` is 3 elements long, containing the bytes 953 representing ``ABC``; in 2.6, ``bytes([65, 66, 67])`` returns the 954 12-byte string representing the :func:`str` of the list. 955 956 The primary use of :class:`bytes` in 2.6 will be to write tests of 957 object type such as ``isinstance(x, bytes)``. This will help the 2to3 958 converter, which can't tell whether 2.x code intends strings to 959 contain either characters or 8-bit bytes; you can now 960 use either :class:`bytes` or :class:`str` to represent your intention 961 exactly, and the resulting code will also be correct in Python 3.0. 962 963 There's also a ``__future__`` import that causes all string literals 964 to become Unicode strings. This means that ``\u`` escape sequences 965 can be used to include Unicode characters:: 966 967 968 from __future__ import unicode_literals 969 970 s = ('\u751f\u3080\u304e\u3000\u751f\u3054' 971 '\u3081\u3000\u751f\u305f\u307e\u3054') 972 973 print len(s) # 12 Unicode characters 974 975 At the C level, Python 3.0 will rename the existing 8-bit 976 string type, called :c:type:`PyStringObject` in Python 2.x, 977 to :c:type:`PyBytesObject`. Python 2.6 uses ``#define`` 978 to support using the names :c:func:`PyBytesObject`, 979 :c:func:`PyBytes_Check`, :c:func:`PyBytes_FromStringAndSize`, 980 and all the other functions and macros used with strings. 981 982 Instances of the :class:`bytes` type are immutable just 983 as strings are. A new :class:`bytearray` type stores a mutable 984 sequence of bytes:: 985 986 >>> bytearray([65, 66, 67]) 987 bytearray(b'ABC') 988 >>> b = bytearray(u'\u21ef\u3244', 'utf-8') 989 >>> b 990 bytearray(b'\xe2\x87\xaf\xe3\x89\x84') 991 >>> b[0] = '\xe3' 992 >>> b 993 bytearray(b'\xe3\x87\xaf\xe3\x89\x84') 994 >>> unicode(str(b), 'utf-8') 995 u'\u31ef \u3244' 996 997 Byte arrays support most of the methods of string types, such as 998 :meth:`startswith`/:meth:`endswith`, :meth:`find`/:meth:`rfind`, 999 and some of the methods of lists, such as :meth:`append`, 1000 :meth:`pop`, and :meth:`reverse`. 1001 1002 :: 1003 1004 >>> b = bytearray('ABC') 1005 >>> b.append('d') 1006 >>> b.append(ord('e')) 1007 >>> b 1008 bytearray(b'ABCde') 1009 1010 There's also a corresponding C API, with 1011 :c:func:`PyByteArray_FromObject`, 1012 :c:func:`PyByteArray_FromStringAndSize`, 1013 and various other functions. 1014 1015 .. seealso:: 1016 1017 :pep:`3112` - Bytes literals in Python 3000 1018 PEP written by Jason Orendorff; backported to 2.6 by Christian Heimes. 1019 1020 .. ====================================================================== 1021 1022 .. _pep-3116: 1023 1024 PEP 3116: New I/O Library 1025 ===================================================== 1026 1027 Python's built-in file objects support a number of methods, but 1028 file-like objects don't necessarily support all of them. Objects that 1029 imitate files usually support :meth:`read` and :meth:`write`, but they 1030 may not support :meth:`readline`, for example. Python 3.0 introduces 1031 a layered I/O library in the :mod:`io` module that separates buffering 1032 and text-handling features from the fundamental read and write 1033 operations. 1034 1035 There are three levels of abstract base classes provided by 1036 the :mod:`io` module: 1037 1038 * :class:`RawIOBase` defines raw I/O operations: :meth:`read`, 1039 :meth:`readinto`, 1040 :meth:`write`, :meth:`seek`, :meth:`tell`, :meth:`truncate`, 1041 and :meth:`close`. 1042 Most of the methods of this class will often map to a single system call. 1043 There are also :meth:`readable`, :meth:`writable`, and :meth:`seekable` 1044 methods for determining what operations a given object will allow. 1045 1046 Python 3.0 has concrete implementations of this class for files and 1047 sockets, but Python 2.6 hasn't restructured its file and socket objects 1048 in this way. 1049 1050 .. XXX should 2.6 register them in io.py? 1051 1052 * :class:`BufferedIOBase` is an abstract base class that 1053 buffers data in memory to reduce the number of 1054 system calls used, making I/O processing more efficient. 1055 It supports all of the methods of :class:`RawIOBase`, 1056 and adds a :attr:`raw` attribute holding the underlying raw object. 1057 1058 There are five concrete classes implementing this ABC. 1059 :class:`BufferedWriter` and :class:`BufferedReader` are for objects 1060 that support write-only or read-only usage that have a :meth:`seek` 1061 method for random access. :class:`BufferedRandom` objects support 1062 read and write access upon the same underlying stream, and 1063 :class:`BufferedRWPair` is for objects such as TTYs that have both 1064 read and write operations acting upon unconnected streams of data. 1065 The :class:`BytesIO` class supports reading, writing, and seeking 1066 over an in-memory buffer. 1067 1068 .. index:: 1069 single: universal newlines; What's new 1070 1071 * :class:`TextIOBase`: Provides functions for reading and writing 1072 strings (remember, strings will be Unicode in Python 3.0), 1073 and supporting :term:`universal newlines`. :class:`TextIOBase` defines 1074 the :meth:`readline` method and supports iteration upon 1075 objects. 1076 1077 There are two concrete implementations. :class:`TextIOWrapper` 1078 wraps a buffered I/O object, supporting all of the methods for 1079 text I/O and adding a :attr:`buffer` attribute for access 1080 to the underlying object. :class:`~StringIO.StringIO` simply buffers 1081 everything in memory without ever writing anything to disk. 1082 1083 (In Python 2.6, :class:`io.StringIO` is implemented in 1084 pure Python, so it's pretty slow. You should therefore stick with the 1085 existing :mod:`StringIO` module or :mod:`cStringIO` for now. At some 1086 point Python 3.0's :mod:`io` module will be rewritten into C for speed, 1087 and perhaps the C implementation will be backported to the 2.x releases.) 1088 1089 In Python 2.6, the underlying implementations haven't been 1090 restructured to build on top of the :mod:`io` module's classes. The 1091 module is being provided to make it easier to write code that's 1092 forward-compatible with 3.0, and to save developers the effort of writing 1093 their own implementations of buffering and text I/O. 1094 1095 .. seealso:: 1096 1097 :pep:`3116` - New I/O 1098 PEP written by Daniel Stutzbach, Mike Verdone, and Guido van Rossum. 1099 Code by Guido van Rossum, Georg Brandl, Walter Doerwald, 1100 Jeremy Hylton, Martin von Loewis, Tony Lownds, and others. 1101 1102 .. ====================================================================== 1103 1104 .. _pep-3118: 1105 1106 PEP 3118: Revised Buffer Protocol 1107 ===================================================== 1108 1109 The buffer protocol is a C-level API that lets Python types 1110 exchange pointers into their internal representations. A 1111 memory-mapped file can be viewed as a buffer of characters, for 1112 example, and this lets another module such as :mod:`re` 1113 treat memory-mapped files as a string of characters to be searched. 1114 1115 The primary users of the buffer protocol are numeric-processing 1116 packages such as NumPy, which expose the internal representation 1117 of arrays so that callers can write data directly into an array instead 1118 of going through a slower API. This PEP updates the buffer protocol in light of experience 1119 from NumPy development, adding a number of new features 1120 such as indicating the shape of an array or locking a memory region. 1121 1122 The most important new C API function is 1123 ``PyObject_GetBuffer(PyObject *obj, Py_buffer *view, int flags)``, which 1124 takes an object and a set of flags, and fills in the 1125 ``Py_buffer`` structure with information 1126 about the object's memory representation. Objects 1127 can use this operation to lock memory in place 1128 while an external caller could be modifying the contents, 1129 so there's a corresponding ``PyBuffer_Release(Py_buffer *view)`` to 1130 indicate that the external caller is done. 1131 1132 .. XXX PyObject_GetBuffer not documented in c-api 1133 1134 The *flags* argument to :c:func:`PyObject_GetBuffer` specifies 1135 constraints upon the memory returned. Some examples are: 1136 1137 * :const:`PyBUF_WRITABLE` indicates that the memory must be writable. 1138 1139 * :const:`PyBUF_LOCK` requests a read-only or exclusive lock on the memory. 1140 1141 * :const:`PyBUF_C_CONTIGUOUS` and :const:`PyBUF_F_CONTIGUOUS` 1142 requests a C-contiguous (last dimension varies the fastest) or 1143 Fortran-contiguous (first dimension varies the fastest) array layout. 1144 1145 Two new argument codes for :c:func:`PyArg_ParseTuple`, 1146 ``s*`` and ``z*``, return locked buffer objects for a parameter. 1147 1148 .. seealso:: 1149 1150 :pep:`3118` - Revising the buffer protocol 1151 PEP written by Travis Oliphant and Carl Banks; implemented by 1152 Travis Oliphant. 1153 1154 1155 .. ====================================================================== 1156 1157 .. _pep-3119: 1158 1159 PEP 3119: Abstract Base Classes 1160 ===================================================== 1161 1162 Some object-oriented languages such as Java support interfaces, 1163 declaring that a class has a given set of methods or supports a given 1164 access protocol. Abstract Base Classes (or ABCs) are an equivalent 1165 feature for Python. The ABC support consists of an :mod:`abc` module 1166 containing a metaclass called :class:`ABCMeta`, special handling of 1167 this metaclass by the :func:`isinstance` and :func:`issubclass` 1168 builtins, and a collection of basic ABCs that the Python developers 1169 think will be widely useful. Future versions of Python will probably 1170 add more ABCs. 1171 1172 Let's say you have a particular class and wish to know whether it supports 1173 dictionary-style access. The phrase "dictionary-style" is vague, however. 1174 It probably means that accessing items with ``obj[1]`` works. 1175 Does it imply that setting items with ``obj[2] = value`` works? 1176 Or that the object will have :meth:`keys`, :meth:`values`, and :meth:`items` 1177 methods? What about the iterative variants such as :meth:`iterkeys`? :meth:`copy` 1178 and :meth:`update`? Iterating over the object with :func:`iter`? 1179 1180 The Python 2.6 :mod:`collections` module includes a number of 1181 different ABCs that represent these distinctions. :class:`Iterable` 1182 indicates that a class defines :meth:`__iter__`, and 1183 :class:`Container` means the class defines a :meth:`__contains__` 1184 method and therefore supports ``x in y`` expressions. The basic 1185 dictionary interface of getting items, setting items, and 1186 :meth:`keys`, :meth:`values`, and :meth:`items`, is defined by the 1187 :class:`MutableMapping` ABC. 1188 1189 You can derive your own classes from a particular ABC 1190 to indicate they support that ABC's interface:: 1191 1192 import collections 1193 1194 class Storage(collections.MutableMapping): 1195 ... 1196 1197 1198 Alternatively, you could write the class without deriving from 1199 the desired ABC and instead register the class by 1200 calling the ABC's :meth:`register` method:: 1201 1202 import collections 1203 1204 class Storage: 1205 ... 1206 1207 collections.MutableMapping.register(Storage) 1208 1209 For classes that you write, deriving from the ABC is probably clearer. 1210 The :meth:`register` method is useful when you've written a new 1211 ABC that can describe an existing type or class, or if you want 1212 to declare that some third-party class implements an ABC. 1213 For example, if you defined a :class:`PrintableType` ABC, 1214 it's legal to do:: 1215 1216 # Register Python's types 1217 PrintableType.register(int) 1218 PrintableType.register(float) 1219 PrintableType.register(str) 1220 1221 Classes should obey the semantics specified by an ABC, but 1222 Python can't check this; it's up to the class author to 1223 understand the ABC's requirements and to implement the code accordingly. 1224 1225 To check whether an object supports a particular interface, you can 1226 now write:: 1227 1228 def func(d): 1229 if not isinstance(d, collections.MutableMapping): 1230 raise ValueError("Mapping object expected, not %r" % d) 1231 1232 Don't feel that you must now begin writing lots of checks as in the 1233 above example. Python has a strong tradition of duck-typing, where 1234 explicit type-checking is never done and code simply calls methods on 1235 an object, trusting that those methods will be there and raising an 1236 exception if they aren't. Be judicious in checking for ABCs and only 1237 do it where it's absolutely necessary. 1238 1239 You can write your own ABCs by using ``abc.ABCMeta`` as the 1240 metaclass in a class definition:: 1241 1242 from abc import ABCMeta, abstractmethod 1243 1244 class Drawable(): 1245 __metaclass__ = ABCMeta 1246 1247 @abstractmethod 1248 def draw(self, x, y, scale=1.0): 1249 pass 1250 1251 def draw_doubled(self, x, y): 1252 self.draw(x, y, scale=2.0) 1253 1254 1255 class Square(Drawable): 1256 def draw(self, x, y, scale): 1257 ... 1258 1259 1260 In the :class:`Drawable` ABC above, the :meth:`draw_doubled` method 1261 renders the object at twice its size and can be implemented in terms 1262 of other methods described in :class:`Drawable`. Classes implementing 1263 this ABC therefore don't need to provide their own implementation 1264 of :meth:`draw_doubled`, though they can do so. An implementation 1265 of :meth:`draw` is necessary, though; the ABC can't provide 1266 a useful generic implementation. 1267 1268 You can apply the ``@abstractmethod`` decorator to methods such as 1269 :meth:`draw` that must be implemented; Python will then raise an 1270 exception for classes that don't define the method. 1271 Note that the exception is only raised when you actually 1272 try to create an instance of a subclass lacking the method:: 1273 1274 >>> class Circle(Drawable): 1275 ... pass 1276 ... 1277 >>> c = Circle() 1278 Traceback (most recent call last): 1279 File "<stdin>", line 1, in <module> 1280 TypeError: Can't instantiate abstract class Circle with abstract methods draw 1281 >>> 1282 1283 Abstract data attributes can be declared using the 1284 ``@abstractproperty`` decorator:: 1285 1286 from abc import abstractproperty 1287 ... 1288 1289 @abstractproperty 1290 def readonly(self): 1291 return self._x 1292 1293 Subclasses must then define a :meth:`readonly` property. 1294 1295 .. seealso:: 1296 1297 :pep:`3119` - Introducing Abstract Base Classes 1298 PEP written by Guido van Rossum and Talin. 1299 Implemented by Guido van Rossum. 1300 Backported to 2.6 by Benjamin Aranguren, with Alex Martelli. 1301 1302 .. ====================================================================== 1303 1304 .. _pep-3127: 1305 1306 PEP 3127: Integer Literal Support and Syntax 1307 ===================================================== 1308 1309 Python 3.0 changes the syntax for octal (base-8) integer literals, 1310 prefixing them with "0o" or "0O" instead of a leading zero, and adds 1311 support for binary (base-2) integer literals, signalled by a "0b" or 1312 "0B" prefix. 1313 1314 Python 2.6 doesn't drop support for a leading 0 signalling 1315 an octal number, but it does add support for "0o" and "0b":: 1316 1317 >>> 0o21, 2*8 + 1 1318 (17, 17) 1319 >>> 0b101111 1320 47 1321 1322 The :func:`oct` builtin still returns numbers 1323 prefixed with a leading zero, and a new :func:`bin` 1324 builtin returns the binary representation for a number:: 1325 1326 >>> oct(42) 1327 '052' 1328 >>> future_builtins.oct(42) 1329 '0o52' 1330 >>> bin(173) 1331 '0b10101101' 1332 1333 The :func:`int` and :func:`long` builtins will now accept the "0o" 1334 and "0b" prefixes when base-8 or base-2 are requested, or when the 1335 *base* argument is zero (signalling that the base used should be 1336 determined from the string):: 1337 1338 >>> int ('0o52', 0) 1339 42 1340 >>> int('1101', 2) 1341 13 1342 >>> int('0b1101', 2) 1343 13 1344 >>> int('0b1101', 0) 1345 13 1346 1347 1348 .. seealso:: 1349 1350 :pep:`3127` - Integer Literal Support and Syntax 1351 PEP written by Patrick Maupin; backported to 2.6 by 1352 Eric Smith. 1353 1354 .. ====================================================================== 1355 1356 .. _pep-3129: 1357 1358 PEP 3129: Class Decorators 1359 ===================================================== 1360 1361 Decorators have been extended from functions to classes. It's now legal to 1362 write:: 1363 1364 @foo 1365 @bar 1366 class A: 1367 pass 1368 1369 This is equivalent to:: 1370 1371 class A: 1372 pass 1373 1374 A = foo(bar(A)) 1375 1376 .. seealso:: 1377 1378 :pep:`3129` - Class Decorators 1379 PEP written by Collin Winter. 1380 1381 .. ====================================================================== 1382 1383 .. _pep-3141: 1384 1385 PEP 3141: A Type Hierarchy for Numbers 1386 ===================================================== 1387 1388 Python 3.0 adds several abstract base classes for numeric types 1389 inspired by Scheme's numeric tower. These classes were backported to 1390 2.6 as the :mod:`numbers` module. 1391 1392 The most general ABC is :class:`Number`. It defines no operations at 1393 all, and only exists to allow checking if an object is a number by 1394 doing ``isinstance(obj, Number)``. 1395 1396 :class:`Complex` is a subclass of :class:`Number`. Complex numbers 1397 can undergo the basic operations of addition, subtraction, 1398 multiplication, division, and exponentiation, and you can retrieve the 1399 real and imaginary parts and obtain a number's conjugate. Python's built-in 1400 complex type is an implementation of :class:`Complex`. 1401 1402 :class:`Real` further derives from :class:`Complex`, and adds 1403 operations that only work on real numbers: :func:`floor`, :func:`trunc`, 1404 rounding, taking the remainder mod N, floor division, 1405 and comparisons. 1406 1407 :class:`Rational` numbers derive from :class:`Real`, have 1408 :attr:`numerator` and :attr:`denominator` properties, and can be 1409 converted to floats. Python 2.6 adds a simple rational-number class, 1410 :class:`Fraction`, in the :mod:`fractions` module. (It's called 1411 :class:`Fraction` instead of :class:`Rational` to avoid 1412 a name clash with :class:`numbers.Rational`.) 1413 1414 :class:`Integral` numbers derive from :class:`Rational`, and 1415 can be shifted left and right with ``<<`` and ``>>``, 1416 combined using bitwise operations such as ``&`` and ``|``, 1417 and can be used as array indexes and slice boundaries. 1418 1419 In Python 3.0, the PEP slightly redefines the existing builtins 1420 :func:`round`, :func:`math.floor`, :func:`math.ceil`, and adds a new 1421 one, :func:`math.trunc`, that's been backported to Python 2.6. 1422 :func:`math.trunc` rounds toward zero, returning the closest 1423 :class:`Integral` that's between the function's argument and zero. 1424 1425 .. seealso:: 1426 1427 :pep:`3141` - A Type Hierarchy for Numbers 1428 PEP written by Jeffrey Yasskin. 1429 1430 `Scheme's numerical tower <https://www.gnu.org/software/guile/manual/html_node/Numerical-Tower.html#Numerical-Tower>`__, from the Guile manual. 1431 1432 `Scheme's number datatypes <http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2>`__ from the R5RS Scheme specification. 1433 1434 1435 The :mod:`fractions` Module 1436 -------------------------------------------------- 1437 1438 To fill out the hierarchy of numeric types, the :mod:`fractions` 1439 module provides a rational-number class. Rational numbers store their 1440 values as a numerator and denominator forming a fraction, and can 1441 exactly represent numbers such as ``2/3`` that floating-point numbers 1442 can only approximate. 1443 1444 The :class:`Fraction` constructor takes two :class:`Integral` values 1445 that will be the numerator and denominator of the resulting fraction. :: 1446 1447 >>> from fractions import Fraction 1448 >>> a = Fraction(2, 3) 1449 >>> b = Fraction(2, 5) 1450 >>> float(a), float(b) 1451 (0.66666666666666663, 0.40000000000000002) 1452 >>> a+b 1453 Fraction(16, 15) 1454 >>> a/b 1455 Fraction(5, 3) 1456 1457 For converting floating-point numbers to rationals, 1458 the float type now has an :meth:`as_integer_ratio()` method that returns 1459 the numerator and denominator for a fraction that evaluates to the same 1460 floating-point value:: 1461 1462 >>> (2.5) .as_integer_ratio() 1463 (5, 2) 1464 >>> (3.1415) .as_integer_ratio() 1465 (7074029114692207L, 2251799813685248L) 1466 >>> (1./3) .as_integer_ratio() 1467 (6004799503160661L, 18014398509481984L) 1468 1469 Note that values that can only be approximated by floating-point 1470 numbers, such as 1./3, are not simplified to the number being 1471 approximated; the fraction attempts to match the floating-point value 1472 **exactly**. 1473 1474 The :mod:`fractions` module is based upon an implementation by Sjoerd 1475 Mullender that was in Python's :file:`Demo/classes/` directory for a 1476 long time. This implementation was significantly updated by Jeffrey 1477 Yasskin. 1478 1479 1480 Other Language Changes 1481 ====================== 1482 1483 Some smaller changes made to the core Python language are: 1484 1485 * Directories and zip archives containing a :file:`__main__.py` file 1486 can now be executed directly by passing their name to the 1487 interpreter. The directory or zip archive is automatically inserted 1488 as the first entry in sys.path. (Suggestion and initial patch by 1489 Andy Chu, subsequently revised by Phillip J. Eby and Nick Coghlan; 1490 :issue:`1739468`.) 1491 1492 * The :func:`hasattr` function was catching and ignoring all errors, 1493 under the assumption that they meant a :meth:`__getattr__` method 1494 was failing somehow and the return value of :func:`hasattr` would 1495 therefore be ``False``. This logic shouldn't be applied to 1496 :exc:`KeyboardInterrupt` and :exc:`SystemExit`, however; Python 2.6 1497 will no longer discard such exceptions when :func:`hasattr` 1498 encounters them. (Fixed by Benjamin Peterson; :issue:`2196`.) 1499 1500 * When calling a function using the ``**`` syntax to provide keyword 1501 arguments, you are no longer required to use a Python dictionary; 1502 any mapping will now work:: 1503 1504 >>> def f(**kw): 1505 ... print sorted(kw) 1506 ... 1507 >>> ud=UserDict.UserDict() 1508 >>> ud['a'] = 1 1509 >>> ud['b'] = 'string' 1510 >>> f(**ud) 1511 ['a', 'b'] 1512 1513 (Contributed by Alexander Belopolsky; :issue:`1686487`.) 1514 1515 It's also become legal to provide keyword arguments after a ``*args`` argument 1516 to a function call. :: 1517 1518 >>> def f(*args, **kw): 1519 ... print args, kw 1520 ... 1521 >>> f(1,2,3, *(4,5,6), keyword=13) 1522 (1, 2, 3, 4, 5, 6) {'keyword': 13} 1523 1524 Previously this would have been a syntax error. 1525 (Contributed by Amaury Forgeot d'Arc; :issue:`3473`.) 1526 1527 * A new builtin, ``next(iterator, [default])`` returns the next item 1528 from the specified iterator. If the *default* argument is supplied, 1529 it will be returned if *iterator* has been exhausted; otherwise, 1530 the :exc:`StopIteration` exception will be raised. (Backported 1531 in :issue:`2719`.) 1532 1533 * Tuples now have :meth:`index` and :meth:`count` methods matching the 1534 list type's :meth:`index` and :meth:`count` methods:: 1535 1536 >>> t = (0,1,2,3,4,0,1,2) 1537 >>> t.index(3) 1538 3 1539 >>> t.count(0) 1540 2 1541 1542 (Contributed by Raymond Hettinger) 1543 1544 * The built-in types now have improved support for extended slicing syntax, 1545 accepting various combinations of ``(start, stop, step)``. 1546 Previously, the support was partial and certain corner cases wouldn't work. 1547 (Implemented by Thomas Wouters.) 1548 1549 .. Revision 57619 1550 1551 * Properties now have three attributes, :attr:`getter`, :attr:`setter` 1552 and :attr:`deleter`, that are decorators providing useful shortcuts 1553 for adding a getter, setter or deleter function to an existing 1554 property. You would use them like this:: 1555 1556 class C(object): 1557 @property 1558 def x(self): 1559 return self._x 1560 1561 @x.setter 1562 def x(self, value): 1563 self._x = value 1564 1565 @x.deleter 1566 def x(self): 1567 del self._x 1568 1569 class D(C): 1570 @C.x.getter 1571 def x(self): 1572 return self._x * 2 1573 1574 @x.setter 1575 def x(self, value): 1576 self._x = value / 2 1577 1578 * Several methods of the built-in set types now accept multiple iterables: 1579 :meth:`intersection`, 1580 :meth:`intersection_update`, 1581 :meth:`union`, :meth:`update`, 1582 :meth:`difference` and :meth:`difference_update`. 1583 1584 :: 1585 1586 >>> s=set('1234567890') 1587 >>> s.intersection('abc123', 'cdf246') # Intersection between all inputs 1588 set(['2']) 1589 >>> s.difference('246', '789') 1590 set(['1', '0', '3', '5']) 1591 1592 (Contributed by Raymond Hettinger.) 1593 1594 * Many floating-point features were added. The :func:`float` function 1595 will now turn the string ``nan`` into an 1596 IEEE 754 Not A Number value, and ``+inf`` and ``-inf`` into 1597 positive or negative infinity. This works on any platform with 1598 IEEE 754 semantics. (Contributed by Christian Heimes; :issue:`1635`.) 1599 1600 Other functions in the :mod:`math` module, :func:`isinf` and 1601 :func:`isnan`, return true if their floating-point argument is 1602 infinite or Not A Number. (:issue:`1640`) 1603 1604 Conversion functions were added to convert floating-point numbers 1605 into hexadecimal strings (:issue:`3008`). These functions 1606 convert floats to and from a string representation without 1607 introducing rounding errors from the conversion between decimal and 1608 binary. Floats have a :meth:`hex` method that returns a string 1609 representation, and the ``float.fromhex()`` method converts a string 1610 back into a number:: 1611 1612 >>> a = 3.75 1613 >>> a.hex() 1614 '0x1.e000000000000p+1' 1615 >>> float.fromhex('0x1.e000000000000p+1') 1616 3.75 1617 >>> b=1./3 1618 >>> b.hex() 1619 '0x1.5555555555555p-2' 1620 1621 * A numerical nicety: when creating a complex number from two floats 1622 on systems that support signed zeros (-0 and +0), the 1623 :func:`complex` constructor will now preserve the sign 1624 of the zero. (Fixed by Mark T. Dickinson; :issue:`1507`.) 1625 1626 * Classes that inherit a :meth:`__hash__` method from a parent class 1627 can set ``__hash__ = None`` to indicate that the class isn't 1628 hashable. This will make ``hash(obj)`` raise a :exc:`TypeError` 1629 and the class will not be indicated as implementing the 1630 :class:`Hashable` ABC. 1631 1632 You should do this when you've defined a :meth:`__cmp__` or 1633 :meth:`__eq__` method that compares objects by their value rather 1634 than by identity. All objects have a default hash method that uses 1635 ``id(obj)`` as the hash value. There's no tidy way to remove the 1636 :meth:`__hash__` method inherited from a parent class, so 1637 assigning ``None`` was implemented as an override. At the 1638 C level, extensions can set ``tp_hash`` to 1639 :c:func:`PyObject_HashNotImplemented`. 1640 (Fixed by Nick Coghlan and Amaury Forgeot d'Arc; :issue:`2235`.) 1641 1642 * The :exc:`GeneratorExit` exception now subclasses 1643 :exc:`BaseException` instead of :exc:`Exception`. This means 1644 that an exception handler that does ``except Exception:`` 1645 will not inadvertently catch :exc:`GeneratorExit`. 1646 (Contributed by Chad Austin; :issue:`1537`.) 1647 1648 * Generator objects now have a :attr:`gi_code` attribute that refers to 1649 the original code object backing the generator. 1650 (Contributed by Collin Winter; :issue:`1473257`.) 1651 1652 * The :func:`compile` built-in function now accepts keyword arguments 1653 as well as positional parameters. (Contributed by Thomas Wouters; 1654 :issue:`1444529`.) 1655 1656 * The :func:`complex` constructor now accepts strings containing 1657 parenthesized complex numbers, meaning that ``complex(repr(cplx))`` 1658 will now round-trip values. For example, ``complex('(3+4j)')`` 1659 now returns the value (3+4j). (:issue:`1491866`) 1660 1661 * The string :meth:`translate` method now accepts ``None`` as the 1662 translation table parameter, which is treated as the identity 1663 transformation. This makes it easier to carry out operations 1664 that only delete characters. (Contributed by Bengt Richter and 1665 implemented by Raymond Hettinger; :issue:`1193128`.) 1666 1667 * The built-in :func:`dir` function now checks for a :meth:`__dir__` 1668 method on the objects it receives. This method must return a list 1669 of strings containing the names of valid attributes for the object, 1670 and lets the object control the value that :func:`dir` produces. 1671 Objects that have :meth:`__getattr__` or :meth:`__getattribute__` 1672 methods can use this to advertise pseudo-attributes they will honor. 1673 (:issue:`1591665`) 1674 1675 * Instance method objects have new attributes for the object and function 1676 comprising the method; the new synonym for :attr:`im_self` is 1677 :attr:`__self__`, and :attr:`im_func` is also available as :attr:`__func__`. 1678 The old names are still supported in Python 2.6, but are gone in 3.0. 1679 1680 * An obscure change: when you use the :func:`locals` function inside a 1681 :keyword:`class` statement, the resulting dictionary no longer returns free 1682 variables. (Free variables, in this case, are variables referenced in the 1683 :keyword:`class` statement that aren't attributes of the class.) 1684 1685 .. ====================================================================== 1686 1687 1688 Optimizations 1689 ------------- 1690 1691 * The :mod:`warnings` module has been rewritten in C. This makes 1692 it possible to invoke warnings from the parser, and may also 1693 make the interpreter's startup faster. 1694 (Contributed by Neal Norwitz and Brett Cannon; :issue:`1631171`.) 1695 1696 * Type objects now have a cache of methods that can reduce 1697 the work required to find the correct method implementation 1698 for a particular class; once cached, the interpreter doesn't need to 1699 traverse base classes to figure out the right method to call. 1700 The cache is cleared if a base class or the class itself is modified, 1701 so the cache should remain correct even in the face of Python's dynamic 1702 nature. 1703 (Original optimization implemented by Armin Rigo, updated for 1704 Python 2.6 by Kevin Jacobs; :issue:`1700288`.) 1705 1706 By default, this change is only applied to types that are included with 1707 the Python core. Extension modules may not necessarily be compatible with 1708 this cache, 1709 so they must explicitly add :c:macro:`Py_TPFLAGS_HAVE_VERSION_TAG` 1710 to the module's ``tp_flags`` field to enable the method cache. 1711 (To be compatible with the method cache, the extension module's code 1712 must not directly access and modify the ``tp_dict`` member of 1713 any of the types it implements. Most modules don't do this, 1714 but it's impossible for the Python interpreter to determine that. 1715 See :issue:`1878` for some discussion.) 1716 1717 * Function calls that use keyword arguments are significantly faster 1718 by doing a quick pointer comparison, usually saving the time of a 1719 full string comparison. (Contributed by Raymond Hettinger, after an 1720 initial implementation by Antoine Pitrou; :issue:`1819`.) 1721 1722 * All of the functions in the :mod:`struct` module have been rewritten in 1723 C, thanks to work at the Need For Speed sprint. 1724 (Contributed by Raymond Hettinger.) 1725 1726 * Some of the standard built-in types now set a bit in their type 1727 objects. This speeds up checking whether an object is a subclass of 1728 one of these types. (Contributed by Neal Norwitz.) 1729 1730 * Unicode strings now use faster code for detecting 1731 whitespace and line breaks; this speeds up the :meth:`split` method 1732 by about 25% and :meth:`splitlines` by 35%. 1733 (Contributed by Antoine Pitrou.) Memory usage is reduced 1734 by using pymalloc for the Unicode string's data. 1735 1736 * The ``with`` statement now stores the :meth:`__exit__` method on the stack, 1737 producing a small speedup. (Implemented by Jeffrey Yasskin.) 1738 1739 * To reduce memory usage, the garbage collector will now clear internal 1740 free lists when garbage-collecting the highest generation of objects. 1741 This may return memory to the operating system sooner. 1742 1743 .. ====================================================================== 1744 1745 .. _new-26-interpreter: 1746 1747 Interpreter Changes 1748 ------------------------------- 1749 1750 Two command-line options have been reserved for use by other Python 1751 implementations. The :option:`-J` switch has been reserved for use by 1752 Jython for Jython-specific options, such as switches that are passed to 1753 the underlying JVM. :option:`-X` has been reserved for options 1754 specific to a particular implementation of Python such as CPython, 1755 Jython, or IronPython. If either option is used with Python 2.6, the 1756 interpreter will report that the option isn't currently used. 1757 1758 Python can now be prevented from writing :file:`.pyc` or :file:`.pyo` 1759 files by supplying the :option:`-B` switch to the Python interpreter, 1760 or by setting the :envvar:`PYTHONDONTWRITEBYTECODE` environment 1761 variable before running the interpreter. This setting is available to 1762 Python programs as the ``sys.dont_write_bytecode`` variable, and 1763 Python code can change the value to modify the interpreter's 1764 behaviour. (Contributed by Neal Norwitz and Georg Brandl.) 1765 1766 The encoding used for standard input, output, and standard error can 1767 be specified by setting the :envvar:`PYTHONIOENCODING` environment 1768 variable before running the interpreter. The value should be a string 1769 in the form ``<encoding>`` or ``<encoding>:<errorhandler>``. 1770 The *encoding* part specifies the encoding's name, e.g. ``utf-8`` or 1771 ``latin-1``; the optional *errorhandler* part specifies 1772 what to do with characters that can't be handled by the encoding, 1773 and should be one of "error", "ignore", or "replace". (Contributed 1774 by Martin von Loewis.) 1775 1776 .. ====================================================================== 1777 1778 New and Improved Modules 1779 ======================== 1780 1781 As in every release, Python's standard library received a number of 1782 enhancements and bug fixes. Here's a partial list of the most notable 1783 changes, sorted alphabetically by module name. Consult the 1784 :file:`Misc/NEWS` file in the source tree for a more complete list of 1785 changes, or look through the Subversion logs for all the details. 1786 1787 * The :mod:`asyncore` and :mod:`asynchat` modules are 1788 being actively maintained again, and a number of patches and bugfixes 1789 were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for 1790 one patch.) 1791 1792 * The :mod:`bsddb` module also has a new maintainer, Jess Cea Avion, and the package 1793 is now available as a standalone package. The web page for the package is 1794 `www.jcea.es/programacion/pybsddb.htm 1795 <https://www.jcea.es/programacion/pybsddb.htm>`__. 1796 The plan is to remove the package from the standard library 1797 in Python 3.0, because its pace of releases is much more frequent than 1798 Python's. 1799 1800 The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol 1801 available, instead of restricting itself to protocol 1. 1802 (Contributed by W. Barnes.) 1803 1804 * The :mod:`cgi` module will now read variables from the query string 1805 of an HTTP POST request. This makes it possible to use form actions 1806 with URLs that include query strings such as 1807 "/cgi-bin/add.py?category=1". (Contributed by Alexandre Fiori and 1808 Nubis; :issue:`1817`.) 1809 1810 The :func:`parse_qs` and :func:`parse_qsl` functions have been 1811 relocated from the :mod:`cgi` module to the :mod:`urlparse` module. 1812 The versions still available in the :mod:`cgi` module will 1813 trigger :exc:`PendingDeprecationWarning` messages in 2.6 1814 (:issue:`600362`). 1815 1816 * The :mod:`cmath` module underwent extensive revision, 1817 contributed by Mark Dickinson and Christian Heimes. 1818 Five new functions were added: 1819 1820 * :func:`polar` converts a complex number to polar form, returning 1821 the modulus and argument of the complex number. 1822 1823 * :func:`rect` does the opposite, turning a modulus, argument pair 1824 back into the corresponding complex number. 1825 1826 * :func:`phase` returns the argument (also called the angle) of a complex 1827 number. 1828 1829 * :func:`isnan` returns True if either 1830 the real or imaginary part of its argument is a NaN. 1831 1832 * :func:`isinf` returns True if either the real or imaginary part of 1833 its argument is infinite. 1834 1835 The revisions also improved the numerical soundness of the 1836 :mod:`cmath` module. For all functions, the real and imaginary 1837 parts of the results are accurate to within a few units of least 1838 precision (ulps) whenever possible. See :issue:`1381` for the 1839 details. The branch cuts for :func:`asinh`, :func:`atanh`: and 1840 :func:`atan` have also been corrected. 1841 1842 The tests for the module have been greatly expanded; nearly 2000 new 1843 test cases exercise the algebraic functions. 1844 1845 On IEEE 754 platforms, the :mod:`cmath` module now handles IEEE 754 1846 special values and floating-point exceptions in a manner consistent 1847 with Annex 'G' of the C99 standard. 1848 1849 * A new data type in the :mod:`collections` module: :class:`namedtuple(typename, 1850 fieldnames)` is a factory function that creates subclasses of the standard tuple 1851 whose fields are accessible by name as well as index. For example:: 1852 1853 >>> var_type = collections.namedtuple('variable', 1854 ... 'id name type size') 1855 >>> # Names are separated by spaces or commas. 1856 >>> # 'id, name, type, size' would also work. 1857 >>> var_type._fields 1858 ('id', 'name', 'type', 'size') 1859 1860 >>> var = var_type(1, 'frequency', 'int', 4) 1861 >>> print var[0], var.id # Equivalent 1862 1 1 1863 >>> print var[2], var.type # Equivalent 1864 int int 1865 >>> var._asdict() 1866 {'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'} 1867 >>> v2 = var._replace(name='amplitude') 1868 >>> v2 1869 variable(id=1, name='amplitude', type='int', size=4) 1870 1871 Several places in the standard library that returned tuples have 1872 been modified to return :class:`namedtuple` instances. For example, 1873 the :meth:`Decimal.as_tuple` method now returns a named tuple with 1874 :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields. 1875 1876 (Contributed by Raymond Hettinger.) 1877 1878 * Another change to the :mod:`collections` module is that the 1879 :class:`deque` type now supports an optional *maxlen* parameter; 1880 if supplied, the deque's size will be restricted to no more 1881 than *maxlen* items. Adding more items to a full deque causes 1882 old items to be discarded. 1883 1884 :: 1885 1886 >>> from collections import deque 1887 >>> dq=deque(maxlen=3) 1888 >>> dq 1889 deque([], maxlen=3) 1890 >>> dq.append(1); dq.append(2); dq.append(3) 1891 >>> dq 1892 deque([1, 2, 3], maxlen=3) 1893 >>> dq.append(4) 1894 >>> dq 1895 deque([2, 3, 4], maxlen=3) 1896 1897 (Contributed by Raymond Hettinger.) 1898 1899 * The :mod:`Cookie` module's :class:`Morsel` objects now support an 1900 :attr:`httponly` attribute. In some browsers. cookies with this attribute 1901 set cannot be accessed or manipulated by JavaScript code. 1902 (Contributed by Arvin Schnell; :issue:`1638033`.) 1903 1904 * A new window method in the :mod:`curses` module, 1905 :meth:`chgat`, changes the display attributes for a certain number of 1906 characters on a single line. (Contributed by Fabian Kreutz.) 1907 1908 :: 1909 1910 # Boldface text starting at y=0,x=21 1911 # and affecting the rest of the line. 1912 stdscr.chgat(0, 21, curses.A_BOLD) 1913 1914 The :class:`Textbox` class in the :mod:`curses.textpad` module 1915 now supports editing in insert mode as well as overwrite mode. 1916 Insert mode is enabled by supplying a true value for the *insert_mode* 1917 parameter when creating the :class:`Textbox` instance. 1918 1919 * The :mod:`datetime` module's :meth:`strftime` methods now support a 1920 ``%f`` format code that expands to the number of microseconds in the 1921 object, zero-padded on 1922 the left to six places. (Contributed by Skip Montanaro; :issue:`1158`.) 1923 1924 * The :mod:`decimal` module was updated to version 1.66 of 1925 `the General Decimal Specification <http://speleotrove.com/decimal/decarith.html>`__. New features 1926 include some methods for some basic mathematical functions such as 1927 :meth:`exp` and :meth:`log10`:: 1928 1929 >>> Decimal(1).exp() 1930 Decimal("2.718281828459045235360287471") 1931 >>> Decimal("2.7182818").ln() 1932 Decimal("0.9999999895305022877376682436") 1933 >>> Decimal(1000).log10() 1934 Decimal("3") 1935 1936 The :meth:`as_tuple` method of :class:`Decimal` objects now returns a 1937 named tuple with :attr:`sign`, :attr:`digits`, and :attr:`exponent` fields. 1938 1939 (Implemented by Facundo Batista and Mark Dickinson. Named tuple 1940 support added by Raymond Hettinger.) 1941 1942 * The :mod:`difflib` module's :class:`SequenceMatcher` class 1943 now returns named tuples representing matches, 1944 with :attr:`a`, :attr:`b`, and :attr:`size` attributes. 1945 (Contributed by Raymond Hettinger.) 1946 1947 * An optional ``timeout`` parameter, specifying a timeout measured in 1948 seconds, was added to the :class:`ftplib.FTP` class constructor as 1949 well as the :meth:`connect` method. (Added by Facundo Batista.) 1950 Also, the :class:`FTP` class's :meth:`storbinary` and 1951 :meth:`storlines` now take an optional *callback* parameter that 1952 will be called with each block of data after the data has been sent. 1953 (Contributed by Phil Schwartz; :issue:`1221598`.) 1954 1955 * The :func:`reduce` built-in function is also available in the 1956 :mod:`functools` module. In Python 3.0, the builtin has been 1957 dropped and :func:`reduce` is only available from :mod:`functools`; 1958 currently there are no plans to drop the builtin in the 2.x series. 1959 (Patched by Christian Heimes; :issue:`1739906`.) 1960 1961 * When possible, the :mod:`getpass` module will now use 1962 :file:`/dev/tty` to print a prompt message and read the password, 1963 falling back to standard error and standard input. If the 1964 password may be echoed to the terminal, a warning is printed before 1965 the prompt is displayed. (Contributed by Gregory P. Smith.) 1966 1967 * The :func:`glob.glob` function can now return Unicode filenames if 1968 a Unicode path was used and Unicode filenames are matched within the 1969 directory. (:issue:`1001604`) 1970 1971 * A new function in the :mod:`heapq` module, ``merge(iter1, iter2, ...)``, 1972 takes any number of iterables returning data in sorted 1973 order, and returns a new generator that returns the contents of all 1974 the iterators, also in sorted order. For example:: 1975 1976 >>> list(heapq.merge([1, 3, 5, 9], [2, 8, 16])) 1977 [1, 2, 3, 5, 8, 9, 16] 1978 1979 Another new function, ``heappushpop(heap, item)``, 1980 pushes *item* onto *heap*, then pops off and returns the smallest item. 1981 This is more efficient than making a call to :func:`heappush` and then 1982 :func:`heappop`. 1983 1984 :mod:`heapq` is now implemented to only use less-than comparison, 1985 instead of the less-than-or-equal comparison it previously used. 1986 This makes :mod:`heapq`'s usage of a type match the 1987 :meth:`list.sort` method. 1988 (Contributed by Raymond Hettinger.) 1989 1990 * An optional ``timeout`` parameter, specifying a timeout measured in 1991 seconds, was added to the :class:`httplib.HTTPConnection` and 1992 :class:`HTTPSConnection` class constructors. (Added by Facundo 1993 Batista.) 1994 1995 * Most of the :mod:`inspect` module's functions, such as 1996 :func:`getmoduleinfo` and :func:`getargs`, now return named tuples. 1997 In addition to behaving like tuples, the elements of the return value 1998 can also be accessed as attributes. 1999 (Contributed by Raymond Hettinger.) 2000 2001 Some new functions in the module include 2002 :func:`isgenerator`, :func:`isgeneratorfunction`, 2003 and :func:`isabstract`. 2004 2005 * The :mod:`itertools` module gained several new functions. 2006 2007 ``izip_longest(iter1, iter2, ...[, fillvalue])`` makes tuples from 2008 each of the elements; if some of the iterables are shorter than 2009 others, the missing values are set to *fillvalue*. For example:: 2010 2011 >>> tuple(itertools.izip_longest([1,2,3], [1,2,3,4,5])) 2012 ((1, 1), (2, 2), (3, 3), (None, 4), (None, 5)) 2013 2014 ``product(iter1, iter2, ..., [repeat=N])`` returns the Cartesian product 2015 of the supplied iterables, a set of tuples containing 2016 every possible combination of the elements returned from each iterable. :: 2017 2018 >>> list(itertools.product([1,2,3], [4,5,6])) 2019 [(1, 4), (1, 5), (1, 6), 2020 (2, 4), (2, 5), (2, 6), 2021 (3, 4), (3, 5), (3, 6)] 2022 2023 The optional *repeat* keyword argument is used for taking the 2024 product of an iterable or a set of iterables with themselves, 2025 repeated *N* times. With a single iterable argument, *N*-tuples 2026 are returned:: 2027 2028 >>> list(itertools.product([1,2], repeat=3)) 2029 [(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), 2030 (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)] 2031 2032 With two iterables, *2N*-tuples are returned. :: 2033 2034 >>> list(itertools.product([1,2], [3,4], repeat=2)) 2035 [(1, 3, 1, 3), (1, 3, 1, 4), (1, 3, 2, 3), (1, 3, 2, 4), 2036 (1, 4, 1, 3), (1, 4, 1, 4), (1, 4, 2, 3), (1, 4, 2, 4), 2037 (2, 3, 1, 3), (2, 3, 1, 4), (2, 3, 2, 3), (2, 3, 2, 4), 2038 (2, 4, 1, 3), (2, 4, 1, 4), (2, 4, 2, 3), (2, 4, 2, 4)] 2039 2040 ``combinations(iterable, r)`` returns sub-sequences of length *r* from 2041 the elements of *iterable*. :: 2042 2043 >>> list(itertools.combinations('123', 2)) 2044 [('1', '2'), ('1', '3'), ('2', '3')] 2045 >>> list(itertools.combinations('123', 3)) 2046 [('1', '2', '3')] 2047 >>> list(itertools.combinations('1234', 3)) 2048 [('1', '2', '3'), ('1', '2', '4'), 2049 ('1', '3', '4'), ('2', '3', '4')] 2050 2051 ``permutations(iter[, r])`` returns all the permutations of length *r* of 2052 the iterable's elements. If *r* is not specified, it will default to the 2053 number of elements produced by the iterable. :: 2054 2055 >>> list(itertools.permutations([1,2,3,4], 2)) 2056 [(1, 2), (1, 3), (1, 4), 2057 (2, 1), (2, 3), (2, 4), 2058 (3, 1), (3, 2), (3, 4), 2059 (4, 1), (4, 2), (4, 3)] 2060 2061 ``itertools.chain(*iterables)`` is an existing function in 2062 :mod:`itertools` that gained a new constructor in Python 2.6. 2063 ``itertools.chain.from_iterable(iterable)`` takes a single 2064 iterable that should return other iterables. :func:`chain` will 2065 then return all the elements of the first iterable, then 2066 all the elements of the second, and so on. :: 2067 2068 >>> list(itertools.chain.from_iterable([[1,2,3], [4,5,6]])) 2069 [1, 2, 3, 4, 5, 6] 2070 2071 (All contributed by Raymond Hettinger.) 2072 2073 * The :mod:`logging` module's :class:`FileHandler` class 2074 and its subclasses :class:`WatchedFileHandler`, :class:`RotatingFileHandler`, 2075 and :class:`TimedRotatingFileHandler` now 2076 have an optional *delay* parameter to their constructors. If *delay* 2077 is true, opening of the log file is deferred until the first 2078 :meth:`emit` call is made. (Contributed by Vinay Sajip.) 2079 2080 :class:`TimedRotatingFileHandler` also has a *utc* constructor 2081 parameter. If the argument is true, UTC time will be used 2082 in determining when midnight occurs and in generating filenames; 2083 otherwise local time will be used. 2084 2085 * Several new functions were added to the :mod:`math` module: 2086 2087 * :func:`~math.isinf` and :func:`~math.isnan` determine whether a given float 2088 is a (positive or negative) infinity or a NaN (Not a Number), respectively. 2089 2090 * :func:`~math.copysign` copies the sign bit of an IEEE 754 number, 2091 returning the absolute value of *x* combined with the sign bit of 2092 *y*. For example, ``math.copysign(1, -0.0)`` returns -1.0. 2093 (Contributed by Christian Heimes.) 2094 2095 * :func:`~math.factorial` computes the factorial of a number. 2096 (Contributed by Raymond Hettinger; :issue:`2138`.) 2097 2098 * :func:`~math.fsum` adds up the stream of numbers from an iterable, 2099 and is careful to avoid loss of precision through using partial sums. 2100 (Contributed by Jean Brouwers, Raymond Hettinger, and Mark Dickinson; 2101 :issue:`2819`.) 2102 2103 * :func:`~math.acosh`, :func:`~math.asinh` 2104 and :func:`~math.atanh` compute the inverse hyperbolic functions. 2105 2106 * :func:`~math.log1p` returns the natural logarithm of *1+x* 2107 (base *e*). 2108 2109 * :func:`trunc` rounds a number toward zero, returning the closest 2110 :class:`Integral` that's between the function's argument and zero. 2111 Added as part of the backport of 2112 `PEP 3141's type hierarchy for numbers <#pep-3141>`__. 2113 2114 * The :mod:`math` module has been improved to give more consistent 2115 behaviour across platforms, especially with respect to handling of 2116 floating-point exceptions and IEEE 754 special values. 2117 2118 Whenever possible, the module follows the recommendations of the C99 2119 standard about 754's special values. For example, ``sqrt(-1.)`` 2120 should now give a :exc:`ValueError` across almost all platforms, 2121 while ``sqrt(float('NaN'))`` should return a NaN on all IEEE 754 2122 platforms. Where Annex 'F' of the C99 standard recommends signaling 2123 'divide-by-zero' or 'invalid', Python will raise :exc:`ValueError`. 2124 Where Annex 'F' of the C99 standard recommends signaling 'overflow', 2125 Python will raise :exc:`OverflowError`. (See :issue:`711019` and 2126 :issue:`1640`.) 2127 2128 (Contributed by Christian Heimes and Mark Dickinson.) 2129 2130 * :class:`~mmap.mmap` objects now have a :meth:`rfind` method that searches for a 2131 substring beginning at the end of the string and searching 2132 backwards. The :meth:`find` method also gained an *end* parameter 2133 giving an index at which to stop searching. 2134 (Contributed by John Lenton.) 2135 2136 * The :mod:`operator` module gained a 2137 :func:`methodcaller` function that takes a name and an optional 2138 set of arguments, returning a callable that will call 2139 the named function on any arguments passed to it. For example:: 2140 2141 >>> # Equivalent to lambda s: s.replace('old', 'new') 2142 >>> replacer = operator.methodcaller('replace', 'old', 'new') 2143 >>> replacer('old wine in old bottles') 2144 'new wine in new bottles' 2145 2146 (Contributed by Georg Brandl, after a suggestion by Gregory Petrosyan.) 2147 2148 The :func:`attrgetter` function now accepts dotted names and performs 2149 the corresponding attribute lookups:: 2150 2151 >>> inst_name = operator.attrgetter( 2152 ... '__class__.__name__') 2153 >>> inst_name('') 2154 'str' 2155 >>> inst_name(help) 2156 '_Helper' 2157 2158 (Contributed by Georg Brandl, after a suggestion by Barry Warsaw.) 2159 2160 * The :mod:`os` module now wraps several new system calls. 2161 ``fchmod(fd, mode)`` and ``fchown(fd, uid, gid)`` change the mode 2162 and ownership of an opened file, and ``lchmod(path, mode)`` changes 2163 the mode of a symlink. (Contributed by Georg Brandl and Christian 2164 Heimes.) 2165 2166 :func:`chflags` and :func:`lchflags` are wrappers for the 2167 corresponding system calls (where they're available), changing the 2168 flags set on a file. Constants for the flag values are defined in 2169 the :mod:`stat` module; some possible values include 2170 :const:`UF_IMMUTABLE` to signal the file may not be changed and 2171 :const:`UF_APPEND` to indicate that data can only be appended to the 2172 file. (Contributed by M. Levinson.) 2173 2174 ``os.closerange(low, high)`` efficiently closes all file descriptors 2175 from *low* to *high*, ignoring any errors and not including *high* itself. 2176 This function is now used by the :mod:`subprocess` module to make starting 2177 processes faster. (Contributed by Georg Brandl; :issue:`1663329`.) 2178 2179 * The ``os.environ`` object's :meth:`clear` method will now unset the 2180 environment variables using :func:`os.unsetenv` in addition to clearing 2181 the object's keys. (Contributed by Martin Horcicka; :issue:`1181`.) 2182 2183 * The :func:`os.walk` function now has a ``followlinks`` parameter. If 2184 set to True, it will follow symlinks pointing to directories and 2185 visit the directory's contents. For backward compatibility, the 2186 parameter's default value is false. Note that the function can fall 2187 into an infinite recursion if there's a symlink that points to a 2188 parent directory. (:issue:`1273829`) 2189 2190 * In the :mod:`os.path` module, the :func:`splitext` function 2191 has been changed to not split on leading period characters. 2192 This produces better results when operating on Unix's dot-files. 2193 For example, ``os.path.splitext('.ipython')`` 2194 now returns ``('.ipython', '')`` instead of ``('', '.ipython')``. 2195 (:issue:`1115886`) 2196 2197 A new function, ``os.path.relpath(path, start='.')``, returns a relative path 2198 from the ``start`` path, if it's supplied, or from the current 2199 working directory to the destination ``path``. (Contributed by 2200 Richard Barran; :issue:`1339796`.) 2201 2202 On Windows, :func:`os.path.expandvars` will now expand environment variables 2203 given in the form "%var%", and "~user" will be expanded into the 2204 user's home directory path. (Contributed by Josiah Carlson; 2205 :issue:`957650`.) 2206 2207 * The Python debugger provided by the :mod:`pdb` module 2208 gained a new command: "run" restarts the Python program being debugged 2209 and can optionally take new command-line arguments for the program. 2210 (Contributed by Rocky Bernstein; :issue:`1393667`.) 2211 2212 * The :func:`pdb.post_mortem` function, used to begin debugging a 2213 traceback, will now use the traceback returned by :func:`sys.exc_info` 2214 if no traceback is supplied. (Contributed by Facundo Batista; 2215 :issue:`1106316`.) 2216 2217 * The :mod:`pickletools` module now has an :func:`optimize` function 2218 that takes a string containing a pickle and removes some unused 2219 opcodes, returning a shorter pickle that contains the same data structure. 2220 (Contributed by Raymond Hettinger.) 2221 2222 * A :func:`get_data` function was added to the :mod:`pkgutil` 2223 module that returns the contents of resource files included 2224 with an installed Python package. For example:: 2225 2226 >>> import pkgutil 2227 >>> print pkgutil.get_data('test', 'exception_hierarchy.txt') 2228 BaseException 2229 +-- SystemExit 2230 +-- KeyboardInterrupt 2231 +-- GeneratorExit 2232 +-- Exception 2233 +-- StopIteration 2234 +-- StandardError 2235 ... 2236 2237 (Contributed by Paul Moore; :issue:`2439`.) 2238 2239 * The :mod:`pyexpat` module's :class:`Parser` objects now allow setting 2240 their :attr:`buffer_size` attribute to change the size of the buffer 2241 used to hold character data. 2242 (Contributed by Achim Gaedke; :issue:`1137`.) 2243 2244 * The :mod:`Queue` module now provides queue variants that retrieve entries 2245 in different orders. The :class:`PriorityQueue` class stores 2246 queued items in a heap and retrieves them in priority order, 2247 and :class:`LifoQueue` retrieves the most recently added entries first, 2248 meaning that it behaves like a stack. 2249 (Contributed by Raymond Hettinger.) 2250 2251 * The :mod:`random` module's :class:`Random` objects can 2252 now be pickled on a 32-bit system and unpickled on a 64-bit 2253 system, and vice versa. Unfortunately, this change also means 2254 that Python 2.6's :class:`Random` objects can't be unpickled correctly 2255 on earlier versions of Python. 2256 (Contributed by Shawn Ligocki; :issue:`1727780`.) 2257 2258 The new ``triangular(low, high, mode)`` function returns random 2259 numbers following a triangular distribution. The returned values 2260 are between *low* and *high*, not including *high* itself, and 2261 with *mode* as the most frequently occurring value 2262 in the distribution. (Contributed by Wladmir van der Laan and 2263 Raymond Hettinger; :issue:`1681432`.) 2264 2265 * Long regular expression searches carried out by the :mod:`re` 2266 module will check for signals being delivered, so 2267 time-consuming searches can now be interrupted. 2268 (Contributed by Josh Hoyt and Ralf Schmitt; :issue:`846388`.) 2269 2270 The regular expression module is implemented by compiling bytecodes 2271 for a tiny regex-specific virtual machine. Untrusted code 2272 could create malicious strings of bytecode directly and cause crashes, 2273 so Python 2.6 includes a verifier for the regex bytecode. 2274 (Contributed by Guido van Rossum from work for Google App Engine; 2275 :issue:`3487`.) 2276 2277 * The :mod:`rlcompleter` module's :meth:`Completer.complete()` method 2278 will now ignore exceptions triggered while evaluating a name. 2279 (Fixed by Lorenz Quack; :issue:`2250`.) 2280 2281 * The :mod:`sched` module's :class:`scheduler` instances now 2282 have a read-only :attr:`queue` attribute that returns the 2283 contents of the scheduler's queue, represented as a list of 2284 named tuples with the fields ``(time, priority, action, argument)``. 2285 (Contributed by Raymond Hettinger; :issue:`1861`.) 2286 2287 * The :mod:`select` module now has wrapper functions 2288 for the Linux :c:func:`epoll` and BSD :c:func:`kqueue` system calls. 2289 :meth:`modify` method was added to the existing :class:`poll` 2290 objects; ``pollobj.modify(fd, eventmask)`` takes a file descriptor 2291 or file object and an event mask, modifying the recorded event mask 2292 for that file. 2293 (Contributed by Christian Heimes; :issue:`1657`.) 2294 2295 * The :func:`shutil.copytree` function now has an optional *ignore* argument 2296 that takes a callable object. This callable will receive each directory path 2297 and a list of the directory's contents, and returns a list of names that 2298 will be ignored, not copied. 2299 2300 The :mod:`shutil` module also provides an :func:`ignore_patterns` 2301 function for use with this new parameter. :func:`ignore_patterns` 2302 takes an arbitrary number of glob-style patterns and returns a 2303 callable that will ignore any files and directories that match any 2304 of these patterns. The following example copies a directory tree, 2305 but skips both :file:`.svn` directories and Emacs backup files, 2306 which have names ending with '~':: 2307 2308 shutil.copytree('Doc/library', '/tmp/library', 2309 ignore=shutil.ignore_patterns('*~', '.svn')) 2310 2311 (Contributed by Tarek Ziad; :issue:`2663`.) 2312 2313 * Integrating signal handling with GUI handling event loops 2314 like those used by Tkinter or GTk+ has long been a problem; most 2315 software ends up polling, waking up every fraction of a second to check 2316 if any GUI events have occurred. 2317 The :mod:`signal` module can now make this more efficient. 2318 Calling ``signal.set_wakeup_fd(fd)`` sets a file descriptor 2319 to be used; when a signal is received, a byte is written to that 2320 file descriptor. There's also a C-level function, 2321 :c:func:`PySignal_SetWakeupFd`, for setting the descriptor. 2322 2323 Event loops will use this by opening a pipe to create two descriptors, 2324 one for reading and one for writing. The writable descriptor 2325 will be passed to :func:`set_wakeup_fd`, and the readable descriptor 2326 will be added to the list of descriptors monitored by the event loop via 2327 :c:func:`select` or :c:func:`poll`. 2328 On receiving a signal, a byte will be written and the main event loop 2329 will be woken up, avoiding the need to poll. 2330 2331 (Contributed by Adam Olsen; :issue:`1583`.) 2332 2333 The :func:`siginterrupt` function is now available from Python code, 2334 and allows changing whether signals can interrupt system calls or not. 2335 (Contributed by Ralf Schmitt.) 2336 2337 The :func:`setitimer` and :func:`getitimer` functions have also been 2338 added (where they're available). :func:`setitimer` 2339 allows setting interval timers that will cause a signal to be 2340 delivered to the process after a specified time, measured in 2341 wall-clock time, consumed process time, or combined process+system 2342 time. (Contributed by Guilherme Polo; :issue:`2240`.) 2343 2344 * The :mod:`smtplib` module now supports SMTP over SSL thanks to the 2345 addition of the :class:`SMTP_SSL` class. This class supports an 2346 interface identical to the existing :class:`SMTP` class. 2347 (Contributed by Monty Taylor.) Both class constructors also have an 2348 optional ``timeout`` parameter that specifies a timeout for the 2349 initial connection attempt, measured in seconds. (Contributed by 2350 Facundo Batista.) 2351 2352 An implementation of the LMTP protocol (:rfc:`2033`) was also added 2353 to the module. LMTP is used in place of SMTP when transferring 2354 e-mail between agents that don't manage a mail queue. (LMTP 2355 implemented by Leif Hedstrom; :issue:`957003`.) 2356 2357 :meth:`SMTP.starttls` now complies with :rfc:`3207` and forgets any 2358 knowledge obtained from the server not obtained from the TLS 2359 negotiation itself. (Patch contributed by Bill Fenner; 2360 :issue:`829951`.) 2361 2362 * The :mod:`socket` module now supports TIPC (http://tipc.sourceforge.net/), 2363 a high-performance non-IP-based protocol designed for use in clustered 2364 environments. TIPC addresses are 4- or 5-tuples. 2365 (Contributed by Alberto Bertogli; :issue:`1646`.) 2366 2367 A new function, :func:`create_connection`, takes an address and 2368 connects to it using an optional timeout value, returning the 2369 connected socket object. This function also looks up the address's 2370 type and connects to it using IPv4 or IPv6 as appropriate. Changing 2371 your code to use :func:`create_connection` instead of 2372 ``socket(socket.AF_INET, ...)`` may be all that's required to make 2373 your code work with IPv6. 2374 2375 * The base classes in the :mod:`SocketServer` module now support 2376 calling a :meth:`handle_timeout` method after a span of inactivity 2377 specified by the server's :attr:`timeout` attribute. (Contributed 2378 by Michael Pomraning.) The :meth:`serve_forever` method 2379 now takes an optional poll interval measured in seconds, 2380 controlling how often the server will check for a shutdown request. 2381 (Contributed by Pedro Werneck and Jeffrey Yasskin; 2382 :issue:`742598`, :issue:`1193577`.) 2383 2384 * The :mod:`sqlite3` module, maintained by Gerhard Haering, 2385 has been updated from version 2.3.2 in Python 2.5 to 2386 version 2.4.1. 2387 2388 * The :mod:`struct` module now supports the C99 :c:type:`_Bool` type, 2389 using the format character ``'?'``. 2390 (Contributed by David Remahl.) 2391 2392 * The :class:`Popen` objects provided by the :mod:`subprocess` module 2393 now have :meth:`terminate`, :meth:`kill`, and :meth:`send_signal` methods. 2394 On Windows, :meth:`send_signal` only supports the :const:`SIGTERM` 2395 signal, and all these methods are aliases for the Win32 API function 2396 :c:func:`TerminateProcess`. 2397 (Contributed by Christian Heimes.) 2398 2399 * A new variable in the :mod:`sys` module, :attr:`float_info`, is an 2400 object containing information derived from the :file:`float.h` file 2401 about the platform's floating-point support. Attributes of this 2402 object include :attr:`mant_dig` (number of digits in the mantissa), 2403 :attr:`epsilon` (smallest difference between 1.0 and the next 2404 largest value representable), and several others. (Contributed by 2405 Christian Heimes; :issue:`1534`.) 2406 2407 Another new variable, :attr:`dont_write_bytecode`, controls whether Python 2408 writes any :file:`.pyc` or :file:`.pyo` files on importing a module. 2409 If this variable is true, the compiled files are not written. The 2410 variable is initially set on start-up by supplying the :option:`-B` 2411 switch to the Python interpreter, or by setting the 2412 :envvar:`PYTHONDONTWRITEBYTECODE` environment variable before 2413 running the interpreter. Python code can subsequently 2414 change the value of this variable to control whether bytecode files 2415 are written or not. 2416 (Contributed by Neal Norwitz and Georg Brandl.) 2417 2418 Information about the command-line arguments supplied to the Python 2419 interpreter is available by reading attributes of a named 2420 tuple available as ``sys.flags``. For example, the :attr:`verbose` 2421 attribute is true if Python 2422 was executed in verbose mode, :attr:`debug` is true in debugging mode, etc. 2423 These attributes are all read-only. 2424 (Contributed by Christian Heimes.) 2425 2426 A new function, :func:`getsizeof`, takes a Python object and returns 2427 the amount of memory used by the object, measured in bytes. Built-in 2428 objects return correct results; third-party extensions may not, 2429 but can define a :meth:`__sizeof__` method to return the 2430 object's size. 2431 (Contributed by Robert Schuppenies; :issue:`2898`.) 2432 2433 It's now possible to determine the current profiler and tracer functions 2434 by calling :func:`sys.getprofile` and :func:`sys.gettrace`. 2435 (Contributed by Georg Brandl; :issue:`1648`.) 2436 2437 * The :mod:`tarfile` module now supports POSIX.1-2001 (pax) tarfiles in 2438 addition to the POSIX.1-1988 (ustar) and GNU tar formats that were 2439 already supported. The default format is GNU tar; specify the 2440 ``format`` parameter to open a file using a different format:: 2441 2442 tar = tarfile.open("output.tar", "w", 2443 format=tarfile.PAX_FORMAT) 2444 2445 The new ``encoding`` and ``errors`` parameters specify an encoding and 2446 an error handling scheme for character conversions. ``'strict'``, 2447 ``'ignore'``, and ``'replace'`` are the three standard ways Python can 2448 handle errors,; 2449 ``'utf-8'`` is a special value that replaces bad characters with 2450 their UTF-8 representation. (Character conversions occur because the 2451 PAX format supports Unicode filenames, defaulting to UTF-8 encoding.) 2452 2453 The :meth:`TarFile.add` method now accepts an ``exclude`` argument that's 2454 a function that can be used to exclude certain filenames from 2455 an archive. 2456 The function must take a filename and return true if the file 2457 should be excluded or false if it should be archived. 2458 The function is applied to both the name initially passed to :meth:`add` 2459 and to the names of files in recursively-added directories. 2460 2461 (All changes contributed by Lars Gustbel). 2462 2463 * An optional ``timeout`` parameter was added to the 2464 :class:`telnetlib.Telnet` class constructor, specifying a timeout 2465 measured in seconds. (Added by Facundo Batista.) 2466 2467 * The :class:`tempfile.NamedTemporaryFile` class usually deletes 2468 the temporary file it created when the file is closed. This 2469 behaviour can now be changed by passing ``delete=False`` to the 2470 constructor. (Contributed by Damien Miller; :issue:`1537850`.) 2471 2472 A new class, :class:`SpooledTemporaryFile`, behaves like 2473 a temporary file but stores its data in memory until a maximum size is 2474 exceeded. On reaching that limit, the contents will be written to 2475 an on-disk temporary file. (Contributed by Dustin J. Mitchell.) 2476 2477 The :class:`NamedTemporaryFile` and :class:`SpooledTemporaryFile` classes 2478 both work as context managers, so you can write 2479 ``with tempfile.NamedTemporaryFile() as tmp: ...``. 2480 (Contributed by Alexander Belopolsky; :issue:`2021`.) 2481 2482 * The :mod:`test.test_support` module gained a number 2483 of context managers useful for writing tests. 2484 :func:`EnvironmentVarGuard` is a 2485 context manager that temporarily changes environment variables and 2486 automatically restores them to their old values. 2487 2488 Another context manager, :class:`TransientResource`, can surround calls 2489 to resources that may or may not be available; it will catch and 2490 ignore a specified list of exceptions. For example, 2491 a network test may ignore certain failures when connecting to an 2492 external web site:: 2493 2494 with test_support.TransientResource(IOError, 2495 errno=errno.ETIMEDOUT): 2496 f = urllib.urlopen('https://sf.net') 2497 ... 2498 2499 Finally, :func:`check_warnings` resets the :mod:`warning` module's 2500 warning filters and returns an object that will record all warning 2501 messages triggered (:issue:`3781`):: 2502 2503 with test_support.check_warnings() as wrec: 2504 warnings.simplefilter("always") 2505 # ... code that triggers a warning ... 2506 assert str(wrec.message) == "function is outdated" 2507 assert len(wrec.warnings) == 1, "Multiple warnings raised" 2508 2509 (Contributed by Brett Cannon.) 2510 2511 * The :mod:`textwrap` module can now preserve existing whitespace 2512 at the beginnings and ends of the newly-created lines 2513 by specifying ``drop_whitespace=False`` 2514 as an argument:: 2515 2516 >>> S = """This sentence has a bunch of 2517 ... extra whitespace.""" 2518 >>> print textwrap.fill(S, width=15) 2519 This sentence 2520 has a bunch 2521 of extra 2522 whitespace. 2523 >>> print textwrap.fill(S, drop_whitespace=False, width=15) 2524 This sentence 2525 has a bunch 2526 of extra 2527 whitespace. 2528 >>> 2529 2530 (Contributed by Dwayne Bailey; :issue:`1581073`.) 2531 2532 * The :mod:`threading` module API is being changed to use properties 2533 such as :attr:`daemon` instead of :meth:`setDaemon` and 2534 :meth:`isDaemon` methods, and some methods have been renamed to use 2535 underscores instead of camel-case; for example, the 2536 :meth:`activeCount` method is renamed to :meth:`active_count`. Both 2537 the 2.6 and 3.0 versions of the module support the same properties 2538 and renamed methods, but don't remove the old methods. No date has been set 2539 for the deprecation of the old APIs in Python 3.x; the old APIs won't 2540 be removed in any 2.x version. 2541 (Carried out by several people, most notably Benjamin Peterson.) 2542 2543 The :mod:`threading` module's :class:`Thread` objects 2544 gained an :attr:`ident` property that returns the thread's 2545 identifier, a nonzero integer. (Contributed by Gregory P. Smith; 2546 :issue:`2871`.) 2547 2548 * The :mod:`timeit` module now accepts callables as well as strings 2549 for the statement being timed and for the setup code. 2550 Two convenience functions were added for creating 2551 :class:`Timer` instances: 2552 ``repeat(stmt, setup, time, repeat, number)`` and 2553 ``timeit(stmt, setup, time, number)`` create an instance and call 2554 the corresponding method. (Contributed by Erik Demaine; 2555 :issue:`1533909`.) 2556 2557 * The :mod:`Tkinter` module now accepts lists and tuples for options, 2558 separating the elements by spaces before passing the resulting value to 2559 Tcl/Tk. 2560 (Contributed by Guilherme Polo; :issue:`2906`.) 2561 2562 * The :mod:`turtle` module for turtle graphics was greatly enhanced by 2563 Gregor Lingl. New features in the module include: 2564 2565 * Better animation of turtle movement and rotation. 2566 * Control over turtle movement using the new :meth:`delay`, 2567 :meth:`tracer`, and :meth:`speed` methods. 2568 * The ability to set new shapes for the turtle, and to 2569 define a new coordinate system. 2570 * Turtles now have an :meth:`undo()` method that can roll back actions. 2571 * Simple support for reacting to input events such as mouse and keyboard 2572 activity, making it possible to write simple games. 2573 * A :file:`turtle.cfg` file can be used to customize the starting appearance 2574 of the turtle's screen. 2575 * The module's docstrings can be replaced by new docstrings that have been 2576 translated into another language. 2577 2578 (:issue:`1513695`) 2579 2580 * An optional ``timeout`` parameter was added to the 2581 :func:`urllib.urlopen` function and the 2582 :class:`urllib.ftpwrapper` class constructor, as well as the 2583 :func:`urllib2.urlopen` function. The parameter specifies a timeout 2584 measured in seconds. For example:: 2585 2586 >>> u = urllib2.urlopen("http://slow.example.com", 2587 timeout=3) 2588 Traceback (most recent call last): 2589 ... 2590 urllib2.URLError: <urlopen error timed out> 2591 >>> 2592 2593 (Added by Facundo Batista.) 2594 2595 * The Unicode database provided by the :mod:`unicodedata` module 2596 has been updated to version 5.1.0. (Updated by 2597 Martin von Loewis; :issue:`3811`.) 2598 2599 * The :mod:`warnings` module's :func:`formatwarning` and :func:`showwarning` 2600 gained an optional *line* argument that can be used to supply the 2601 line of source code. (Added as part of :issue:`1631171`, which re-implemented 2602 part of the :mod:`warnings` module in C code.) 2603 2604 A new function, :func:`catch_warnings`, is a context manager 2605 intended for testing purposes that lets you temporarily modify the 2606 warning filters and then restore their original values (:issue:`3781`). 2607 2608 * The XML-RPC :class:`~SimpleXMLRPCServer.SimpleXMLRPCServer` and :class:`~DocXMLRPCServer.DocXMLRPCServer` 2609 classes can now be prevented from immediately opening and binding to 2610 their socket by passing ``False`` as the *bind_and_activate* 2611 constructor parameter. This can be used to modify the instance's 2612 :attr:`allow_reuse_address` attribute before calling the 2613 :meth:`server_bind` and :meth:`server_activate` methods to 2614 open the socket and begin listening for connections. 2615 (Contributed by Peter Parente; :issue:`1599845`.) 2616 2617 :class:`~SimpleXMLRPCServer.SimpleXMLRPCServer` also has a :attr:`_send_traceback_header` 2618 attribute; if true, the exception and formatted traceback are returned 2619 as HTTP headers "X-Exception" and "X-Traceback". This feature is 2620 for debugging purposes only and should not be used on production servers 2621 because the tracebacks might reveal passwords or other sensitive 2622 information. (Contributed by Alan McIntyre as part of his 2623 project for Google's Summer of Code 2007.) 2624 2625 * The :mod:`xmlrpclib` module no longer automatically converts 2626 :class:`datetime.date` and :class:`datetime.time` to the 2627 :class:`xmlrpclib.DateTime` type; the conversion semantics were 2628 not necessarily correct for all applications. Code using 2629 :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time` 2630 instances. (:issue:`1330538`) The code can also handle 2631 dates before 1900 (contributed by Ralf Schmitt; :issue:`2014`) 2632 and 64-bit integers represented by using ``<i8>`` in XML-RPC responses 2633 (contributed by Riku Lindblad; :issue:`2985`). 2634 2635 * The :mod:`zipfile` module's :class:`ZipFile` class now has 2636 :meth:`extract` and :meth:`extractall` methods that will unpack 2637 a single file or all the files in the archive to the current directory, or 2638 to a specified directory:: 2639 2640 z = zipfile.ZipFile('python-251.zip') 2641 2642 # Unpack a single file, writing it relative 2643 # to the /tmp directory. 2644 z.extract('Python/sysmodule.c', '/tmp') 2645 2646 # Unpack all the files in the archive. 2647 z.extractall() 2648 2649 (Contributed by Alan McIntyre; :issue:`467924`.) 2650 2651 The :meth:`open`, :meth:`read` and :meth:`extract` methods can now 2652 take either a filename or a :class:`ZipInfo` object. This is useful when an 2653 archive accidentally contains a duplicated filename. 2654 (Contributed by Graham Horler; :issue:`1775025`.) 2655 2656 Finally, :mod:`zipfile` now supports using Unicode filenames 2657 for archived files. (Contributed by Alexey Borzenkov; :issue:`1734346`.) 2658 2659 .. ====================================================================== 2660 .. whole new modules get described in subsections here 2661 2662 The :mod:`ast` module 2663 ---------------------- 2664 2665 The :mod:`ast` module provides an Abstract Syntax Tree 2666 representation of Python code, and Armin Ronacher 2667 contributed a set of helper functions that perform a variety of 2668 common tasks. These will be useful for HTML templating 2669 packages, code analyzers, and similar tools that process 2670 Python code. 2671 2672 The :func:`parse` function takes an expression and returns an AST. 2673 The :func:`dump` function outputs a representation of a tree, suitable 2674 for debugging:: 2675 2676 import ast 2677 2678 t = ast.parse(""" 2679 d = {} 2680 for i in 'abcdefghijklm': 2681 d[i + i] = ord(i) - ord('a') + 1 2682 print d 2683 """) 2684 print ast.dump(t) 2685 2686 This outputs a deeply nested tree:: 2687 2688 Module(body=[ 2689 Assign(targets=[ 2690 Name(id='d', ctx=Store()) 2691 ], value=Dict(keys=[], values=[])) 2692 For(target=Name(id='i', ctx=Store()), 2693 iter=Str(s='abcdefghijklm'), body=[ 2694 Assign(targets=[ 2695 Subscript(value= 2696 Name(id='d', ctx=Load()), 2697 slice= 2698 Index(value= 2699 BinOp(left=Name(id='i', ctx=Load()), op=Add(), 2700 right=Name(id='i', ctx=Load()))), ctx=Store()) 2701 ], value= 2702 BinOp(left= 2703 BinOp(left= 2704 Call(func= 2705 Name(id='ord', ctx=Load()), args=[ 2706 Name(id='i', ctx=Load()) 2707 ], keywords=[], starargs=None, kwargs=None), 2708 op=Sub(), right=Call(func= 2709 Name(id='ord', ctx=Load()), args=[ 2710 Str(s='a') 2711 ], keywords=[], starargs=None, kwargs=None)), 2712 op=Add(), right=Num(n=1))) 2713 ], orelse=[]) 2714 Print(dest=None, values=[ 2715 Name(id='d', ctx=Load()) 2716 ], nl=True) 2717 ]) 2718 2719 The :func:`literal_eval` method takes a string or an AST 2720 representing a literal expression, parses and evaluates it, and 2721 returns the resulting value. A literal expression is a Python 2722 expression containing only strings, numbers, dictionaries, 2723 etc. but no statements or function calls. If you need to 2724 evaluate an expression but cannot accept the security risk of using an 2725 :func:`eval` call, :func:`literal_eval` will handle it safely:: 2726 2727 >>> literal = '("a", "b", {2:4, 3:8, 1:2})' 2728 >>> print ast.literal_eval(literal) 2729 ('a', 'b', {1: 2, 2: 4, 3: 8}) 2730 >>> print ast.literal_eval('"a" + "b"') 2731 Traceback (most recent call last): 2732 ... 2733 ValueError: malformed string 2734 2735 The module also includes :class:`NodeVisitor` and 2736 :class:`NodeTransformer` classes for traversing and modifying an AST, 2737 and functions for common transformations such as changing line 2738 numbers. 2739 2740 .. ====================================================================== 2741 2742 The :mod:`future_builtins` module 2743 -------------------------------------- 2744 2745 Python 3.0 makes many changes to the repertoire of built-in 2746 functions, and most of the changes can't be introduced in the Python 2747 2.x series because they would break compatibility. 2748 The :mod:`future_builtins` module provides versions 2749 of these built-in functions that can be imported when writing 2750 3.0-compatible code. 2751 2752 The functions in this module currently include: 2753 2754 * ``ascii(obj)``: equivalent to :func:`repr`. In Python 3.0, 2755 :func:`repr` will return a Unicode string, while :func:`ascii` will 2756 return a pure ASCII bytestring. 2757 2758 * ``filter(predicate, iterable)``, 2759 ``map(func, iterable1, ...)``: the 3.0 versions 2760 return iterators, unlike the 2.x builtins which return lists. 2761 2762 * ``hex(value)``, ``oct(value)``: instead of calling the 2763 :meth:`__hex__` or :meth:`__oct__` methods, these versions will 2764 call the :meth:`__index__` method and convert the result to hexadecimal 2765 or octal. :func:`oct` will use the new ``0o`` notation for its 2766 result. 2767 2768 .. ====================================================================== 2769 2770 The :mod:`json` module: JavaScript Object Notation 2771 -------------------------------------------------------------------- 2772 2773 The new :mod:`json` module supports the encoding and decoding of Python types in 2774 JSON (Javascript Object Notation). JSON is a lightweight interchange format 2775 often used in web applications. For more information about JSON, see 2776 http://www.json.org. 2777 2778 :mod:`json` comes with support for decoding and encoding most built-in Python 2779 types. The following example encodes and decodes a dictionary:: 2780 2781 >>> import json 2782 >>> data = {"spam": "foo", "parrot": 42} 2783 >>> in_json = json.dumps(data) # Encode the data 2784 >>> in_json 2785 '{"parrot": 42, "spam": "foo"}' 2786 >>> json.loads(in_json) # Decode into a Python object 2787 {"spam": "foo", "parrot": 42} 2788 2789 It's also possible to write your own decoders and encoders to support 2790 more types. Pretty-printing of the JSON strings is also supported. 2791 2792 :mod:`json` (originally called simplejson) was written by Bob 2793 Ippolito. 2794 2795 2796 .. ====================================================================== 2797 2798 The :mod:`plistlib` module: A Property-List Parser 2799 -------------------------------------------------- 2800 2801 The ``.plist`` format is commonly used on Mac OS X to 2802 store basic data types (numbers, strings, lists, 2803 and dictionaries) by serializing them into an XML-based format. 2804 It resembles the XML-RPC serialization of data types. 2805 2806 Despite being primarily used on Mac OS X, the format 2807 has nothing Mac-specific about it and the Python implementation works 2808 on any platform that Python supports, so the :mod:`plistlib` module 2809 has been promoted to the standard library. 2810 2811 Using the module is simple:: 2812 2813 import sys 2814 import plistlib 2815 import datetime 2816 2817 # Create data structure 2818 data_struct = dict(lastAccessed=datetime.datetime.now(), 2819 version=1, 2820 categories=('Personal','Shared','Private')) 2821 2822 # Create string containing XML. 2823 plist_str = plistlib.writePlistToString(data_struct) 2824 new_struct = plistlib.readPlistFromString(plist_str) 2825 print data_struct 2826 print new_struct 2827 2828 # Write data structure to a file and read it back. 2829 plistlib.writePlist(data_struct, '/tmp/customizations.plist') 2830 new_struct = plistlib.readPlist('/tmp/customizations.plist') 2831 2832 # read/writePlist accepts file-like objects as well as paths. 2833 plistlib.writePlist(data_struct, sys.stdout) 2834 2835 .. ====================================================================== 2836 2837 ctypes Enhancements 2838 -------------------------------------------------- 2839 2840 Thomas Heller continued to maintain and enhance the 2841 :mod:`ctypes` module. 2842 2843 :mod:`ctypes` now supports a :class:`c_bool` datatype 2844 that represents the C99 ``bool`` type. (Contributed by David Remahl; 2845 :issue:`1649190`.) 2846 2847 The :mod:`ctypes` string, buffer and array types have improved 2848 support for extended slicing syntax, 2849 where various combinations of ``(start, stop, step)`` are supplied. 2850 (Implemented by Thomas Wouters.) 2851 2852 .. Revision 57769 2853 2854 All :mod:`ctypes` data types now support 2855 :meth:`from_buffer` and :meth:`from_buffer_copy` 2856 methods that create a ctypes instance based on a 2857 provided buffer object. :meth:`from_buffer_copy` copies 2858 the contents of the object, 2859 while :meth:`from_buffer` will share the same memory area. 2860 2861 A new calling convention tells :mod:`ctypes` to clear the ``errno`` or 2862 Win32 LastError variables at the outset of each wrapped call. 2863 (Implemented by Thomas Heller; :issue:`1798`.) 2864 2865 You can now retrieve the Unix ``errno`` variable after a function 2866 call. When creating a wrapped function, you can supply 2867 ``use_errno=True`` as a keyword parameter to the :func:`DLL` function 2868 and then call the module-level methods :meth:`set_errno` and 2869 :meth:`get_errno` to set and retrieve the error value. 2870 2871 The Win32 LastError variable is similarly supported by 2872 the :func:`DLL`, :func:`OleDLL`, and :func:`WinDLL` functions. 2873 You supply ``use_last_error=True`` as a keyword parameter 2874 and then call the module-level methods :meth:`set_last_error` 2875 and :meth:`get_last_error`. 2876 2877 The :func:`byref` function, used to retrieve a pointer to a ctypes 2878 instance, now has an optional *offset* parameter that is a byte 2879 count that will be added to the returned pointer. 2880 2881 .. ====================================================================== 2882 2883 Improved SSL Support 2884 -------------------------------------------------- 2885 2886 Bill Janssen made extensive improvements to Python 2.6's support for 2887 the Secure Sockets Layer by adding a new module, :mod:`ssl`, that's 2888 built atop the `OpenSSL <https://www.openssl.org/>`__ library. 2889 This new module provides more control over the protocol negotiated, 2890 the X.509 certificates used, and has better support for writing SSL 2891 servers (as opposed to clients) in Python. The existing SSL support 2892 in the :mod:`socket` module hasn't been removed and continues to work, 2893 though it will be removed in Python 3.0. 2894 2895 To use the new module, you must first create a TCP connection in the 2896 usual way and then pass it to the :func:`ssl.wrap_socket` function. 2897 It's possible to specify whether a certificate is required, and to 2898 obtain certificate info by calling the :meth:`getpeercert` method. 2899 2900 .. seealso:: 2901 2902 The documentation for the :mod:`ssl` module. 2903 2904 .. ====================================================================== 2905 2906 Deprecations and Removals 2907 ========================= 2908 2909 * String exceptions have been removed. Attempting to use them raises a 2910 :exc:`TypeError`. 2911 2912 * Changes to the :class:`Exception` interface 2913 as dictated by :pep:`352` continue to be made. For 2.6, 2914 the :attr:`message` attribute is being deprecated in favor of the 2915 :attr:`args` attribute. 2916 2917 * (3.0-warning mode) Python 3.0 will feature a reorganized standard 2918 library that will drop many outdated modules and rename others. 2919 Python 2.6 running in 3.0-warning mode will warn about these modules 2920 when they are imported. 2921 2922 The list of deprecated modules is: 2923 :mod:`audiodev`, 2924 :mod:`bgenlocations`, 2925 :mod:`buildtools`, 2926 :mod:`bundlebuilder`, 2927 :mod:`Canvas`, 2928 :mod:`compiler`, 2929 :mod:`dircache`, 2930 :mod:`dl`, 2931 :mod:`fpformat`, 2932 :mod:`gensuitemodule`, 2933 :mod:`ihooks`, 2934 :mod:`imageop`, 2935 :mod:`imgfile`, 2936 :mod:`linuxaudiodev`, 2937 :mod:`mhlib`, 2938 :mod:`mimetools`, 2939 :mod:`multifile`, 2940 :mod:`new`, 2941 :mod:`pure`, 2942 :mod:`statvfs`, 2943 :mod:`sunaudiodev`, 2944 :mod:`test.testall`, and 2945 :mod:`toaiff`. 2946 2947 * The :mod:`gopherlib` module has been removed. 2948 2949 * The :mod:`MimeWriter` module and :mod:`mimify` module 2950 have been deprecated; use the :mod:`email` 2951 package instead. 2952 2953 * The :mod:`md5` module has been deprecated; use the :mod:`hashlib` module 2954 instead. 2955 2956 * The :mod:`posixfile` module has been deprecated; :func:`fcntl.lockf` 2957 provides better locking. 2958 2959 * The :mod:`popen2` module has been deprecated; use the :mod:`subprocess` 2960 module. 2961 2962 * The :mod:`rgbimg` module has been removed. 2963 2964 * The :mod:`sets` module has been deprecated; it's better to 2965 use the built-in :class:`set` and :class:`frozenset` types. 2966 2967 * The :mod:`sha` module has been deprecated; use the :mod:`hashlib` module 2968 instead. 2969 2970 2971 .. ====================================================================== 2972 2973 2974 Build and C API Changes 2975 ======================= 2976 2977 Changes to Python's build process and to the C API include: 2978 2979 * Python now must be compiled with C89 compilers (after 19 2980 years!). This means that the Python source tree has dropped its 2981 own implementations of :c:func:`memmove` and :c:func:`strerror`, which 2982 are in the C89 standard library. 2983 2984 * Python 2.6 can be built with Microsoft Visual Studio 2008 (version 2985 9.0), and this is the new default compiler. See the 2986 :file:`PCbuild` directory for the build files. (Implemented by 2987 Christian Heimes.) 2988 2989 * On Mac OS X, Python 2.6 can be compiled as a 4-way universal build. 2990 The :program:`configure` script 2991 can take a :option:`!--with-universal-archs=[32-bit|64-bit|all]` 2992 switch, controlling whether the binaries are built for 32-bit 2993 architectures (x86, PowerPC), 64-bit (x86-64 and PPC-64), or both. 2994 (Contributed by Ronald Oussoren.) 2995 2996 * The BerkeleyDB module now has a C API object, available as 2997 ``bsddb.db.api``. This object can be used by other C extensions 2998 that wish to use the :mod:`bsddb` module for their own purposes. 2999 (Contributed by Duncan Grisby.) 3000 3001 * The new buffer interface, previously described in 3002 `the PEP 3118 section <#pep-3118-revised-buffer-protocol>`__, 3003 adds :c:func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release`, 3004 as well as a few other functions. 3005 3006 * Python's use of the C stdio library is now thread-safe, or at least 3007 as thread-safe as the underlying library is. A long-standing potential 3008 bug occurred if one thread closed a file object while another thread 3009 was reading from or writing to the object. In 2.6 file objects 3010 have a reference count, manipulated by the 3011 :c:func:`PyFile_IncUseCount` and :c:func:`PyFile_DecUseCount` 3012 functions. File objects can't be closed unless the reference count 3013 is zero. :c:func:`PyFile_IncUseCount` should be called while the GIL 3014 is still held, before carrying out an I/O operation using the 3015 ``FILE *`` pointer, and :c:func:`PyFile_DecUseCount` should be called 3016 immediately after the GIL is re-acquired. 3017 (Contributed by Antoine Pitrou and Gregory P. Smith.) 3018 3019 * Importing modules simultaneously in two different threads no longer 3020 deadlocks; it will now raise an :exc:`ImportError`. A new API 3021 function, :c:func:`PyImport_ImportModuleNoBlock`, will look for a 3022 module in ``sys.modules`` first, then try to import it after 3023 acquiring an import lock. If the import lock is held by another 3024 thread, an :exc:`ImportError` is raised. 3025 (Contributed by Christian Heimes.) 3026 3027 * Several functions return information about the platform's 3028 floating-point support. :c:func:`PyFloat_GetMax` returns 3029 the maximum representable floating point value, 3030 and :c:func:`PyFloat_GetMin` returns the minimum 3031 positive value. :c:func:`PyFloat_GetInfo` returns an object 3032 containing more information from the :file:`float.h` file, such as 3033 ``"mant_dig"`` (number of digits in the mantissa), ``"epsilon"`` 3034 (smallest difference between 1.0 and the next largest value 3035 representable), and several others. 3036 (Contributed by Christian Heimes; :issue:`1534`.) 3037 3038 * C functions and methods that use 3039 :c:func:`PyComplex_AsCComplex` will now accept arguments that 3040 have a :meth:`__complex__` method. In particular, the functions in the 3041 :mod:`cmath` module will now accept objects with this method. 3042 This is a backport of a Python 3.0 change. 3043 (Contributed by Mark Dickinson; :issue:`1675423`.) 3044 3045 * Python's C API now includes two functions for case-insensitive string 3046 comparisons, ``PyOS_stricmp(char*, char*)`` 3047 and ``PyOS_strnicmp(char*, char*, Py_ssize_t)``. 3048 (Contributed by Christian Heimes; :issue:`1635`.) 3049 3050 * Many C extensions define their own little macro for adding 3051 integers and strings to the module's dictionary in the 3052 ``init*`` function. Python 2.6 finally defines standard macros 3053 for adding values to a module, :c:macro:`PyModule_AddStringMacro` 3054 and :c:macro:`PyModule_AddIntMacro()`. (Contributed by 3055 Christian Heimes.) 3056 3057 * Some macros were renamed in both 3.0 and 2.6 to make it clearer that 3058 they are macros, 3059 not functions. :c:macro:`Py_Size()` became :c:macro:`Py_SIZE()`, 3060 :c:macro:`Py_Type()` became :c:macro:`Py_TYPE()`, and 3061 :c:macro:`Py_Refcnt()` became :c:macro:`Py_REFCNT()`. 3062 The mixed-case macros are still available 3063 in Python 2.6 for backward compatibility. 3064 (:issue:`1629`) 3065 3066 * Distutils now places C extensions it builds in a 3067 different directory when running on a debug version of Python. 3068 (Contributed by Collin Winter; :issue:`1530959`.) 3069 3070 * Several basic data types, such as integers and strings, maintain 3071 internal free lists of objects that can be re-used. The data 3072 structures for these free lists now follow a naming convention: the 3073 variable is always named ``free_list``, the counter is always named 3074 ``numfree``, and a macro ``Py<typename>_MAXFREELIST`` is 3075 always defined. 3076 3077 * A new Makefile target, "make patchcheck", prepares the Python source tree 3078 for making a patch: it fixes trailing whitespace in all modified 3079 ``.py`` files, checks whether the documentation has been changed, 3080 and reports whether the :file:`Misc/ACKS` and :file:`Misc/NEWS` files 3081 have been updated. 3082 (Contributed by Brett Cannon.) 3083 3084 Another new target, "make profile-opt", compiles a Python binary 3085 using GCC's profile-guided optimization. It compiles Python with 3086 profiling enabled, runs the test suite to obtain a set of profiling 3087 results, and then compiles using these results for optimization. 3088 (Contributed by Gregory P. Smith.) 3089 3090 .. ====================================================================== 3091 3092 Port-Specific Changes: Windows 3093 ----------------------------------- 3094 3095 * The support for Windows 95, 98, ME and NT4 has been dropped. 3096 Python 2.6 requires at least Windows 2000 SP4. 3097 3098 * The new default compiler on Windows is Visual Studio 2008 (version 3099 9.0). The build directories for Visual Studio 2003 (version 7.1) and 3100 2005 (version 8.0) were moved into the PC/ directory. The new 3101 :file:`PCbuild` directory supports cross compilation for X64, debug 3102 builds and Profile Guided Optimization (PGO). PGO builds are roughly 3103 10% faster than normal builds. (Contributed by Christian Heimes 3104 with help from Amaury Forgeot d'Arc and Martin von Loewis.) 3105 3106 * The :mod:`msvcrt` module now supports 3107 both the normal and wide char variants of the console I/O 3108 API. The :func:`getwch` function reads a keypress and returns a Unicode 3109 value, as does the :func:`getwche` function. The :func:`putwch` function 3110 takes a Unicode character and writes it to the console. 3111 (Contributed by Christian Heimes.) 3112 3113 * :func:`os.path.expandvars` will now expand environment variables in 3114 the form "%var%", and "~user" will be expanded into the user's home 3115 directory path. (Contributed by Josiah Carlson; :issue:`957650`.) 3116 3117 * The :mod:`socket` module's socket objects now have an 3118 :meth:`ioctl` method that provides a limited interface to the 3119 :c:func:`WSAIoctl` system interface. 3120 3121 * The :mod:`_winreg` module now has a function, 3122 :func:`ExpandEnvironmentStrings`, 3123 that expands environment variable references such as ``%NAME%`` 3124 in an input string. The handle objects provided by this 3125 module now support the context protocol, so they can be used 3126 in :keyword:`with` statements. (Contributed by Christian Heimes.) 3127 3128 :mod:`_winreg` also has better support for x64 systems, 3129 exposing the :func:`DisableReflectionKey`, :func:`EnableReflectionKey`, 3130 and :func:`QueryReflectionKey` functions, which enable and disable 3131 registry reflection for 32-bit processes running on 64-bit systems. 3132 (:issue:`1753245`) 3133 3134 * The :mod:`msilib` module's :class:`Record` object 3135 gained :meth:`GetInteger` and :meth:`GetString` methods that 3136 return field values as an integer or a string. 3137 (Contributed by Floris Bruynooghe; :issue:`2125`.) 3138 3139 .. ====================================================================== 3140 3141 Port-Specific Changes: Mac OS X 3142 ----------------------------------- 3143 3144 * When compiling a framework build of Python, you can now specify the 3145 framework name to be used by providing the 3146 :option:`!--with-framework-name=` option to the 3147 :program:`configure` script. 3148 3149 * The :mod:`macfs` module has been removed. This in turn required the 3150 :func:`macostools.touched` function to be removed because it depended on the 3151 :mod:`macfs` module. (:issue:`1490190`) 3152 3153 * Many other Mac OS modules have been deprecated and will be removed in 3154 Python 3.0: 3155 :mod:`_builtinSuites`, 3156 :mod:`aepack`, 3157 :mod:`aetools`, 3158 :mod:`aetypes`, 3159 :mod:`applesingle`, 3160 :mod:`appletrawmain`, 3161 :mod:`appletrunner`, 3162 :mod:`argvemulator`, 3163 :mod:`Audio_mac`, 3164 :mod:`autoGIL`, 3165 :mod:`Carbon`, 3166 :mod:`cfmfile`, 3167 :mod:`CodeWarrior`, 3168 :mod:`ColorPicker`, 3169 :mod:`EasyDialogs`, 3170 :mod:`Explorer`, 3171 :mod:`Finder`, 3172 :mod:`FrameWork`, 3173 :mod:`findertools`, 3174 :mod:`ic`, 3175 :mod:`icglue`, 3176 :mod:`icopen`, 3177 :mod:`macerrors`, 3178 :mod:`MacOS`, 3179 :mod:`macfs`, 3180 :mod:`macostools`, 3181 :mod:`macresource`, 3182 :mod:`MiniAEFrame`, 3183 :mod:`Nav`, 3184 :mod:`Netscape`, 3185 :mod:`OSATerminology`, 3186 :mod:`pimp`, 3187 :mod:`PixMapWrapper`, 3188 :mod:`StdSuites`, 3189 :mod:`SystemEvents`, 3190 :mod:`Terminal`, and 3191 :mod:`terminalcommand`. 3192 3193 .. ====================================================================== 3194 3195 Port-Specific Changes: IRIX 3196 ----------------------------------- 3197 3198 A number of old IRIX-specific modules were deprecated and will 3199 be removed in Python 3.0: 3200 :mod:`al` and :mod:`AL`, 3201 :mod:`cd`, 3202 :mod:`cddb`, 3203 :mod:`cdplayer`, 3204 :mod:`CL` and :mod:`cl`, 3205 :mod:`DEVICE`, 3206 :mod:`ERRNO`, 3207 :mod:`FILE`, 3208 :mod:`FL` and :mod:`fl`, 3209 :mod:`flp`, 3210 :mod:`fm`, 3211 :mod:`GET`, 3212 :mod:`GLWS`, 3213 :mod:`GL` and :mod:`gl`, 3214 :mod:`IN`, 3215 :mod:`IOCTL`, 3216 :mod:`jpeg`, 3217 :mod:`panelparser`, 3218 :mod:`readcd`, 3219 :mod:`SV` and :mod:`sv`, 3220 :mod:`torgb`, 3221 :mod:`videoreader`, and 3222 :mod:`WAIT`. 3223 3224 .. ====================================================================== 3225 3226 3227 Porting to Python 2.6 3228 ===================== 3229 3230 This section lists previously described changes and other bugfixes 3231 that may require changes to your code: 3232 3233 * Classes that aren't supposed to be hashable should 3234 set ``__hash__ = None`` in their definitions to indicate 3235 the fact. 3236 3237 * String exceptions have been removed. Attempting to use them raises a 3238 :exc:`TypeError`. 3239 3240 * The :meth:`__init__` method of :class:`collections.deque` 3241 now clears any existing contents of the deque 3242 before adding elements from the iterable. This change makes the 3243 behavior match ``list.__init__()``. 3244 3245 * :meth:`object.__init__` previously accepted arbitrary arguments and 3246 keyword arguments, ignoring them. In Python 2.6, this is no longer 3247 allowed and will result in a :exc:`TypeError`. This will affect 3248 :meth:`__init__` methods that end up calling the corresponding 3249 method on :class:`object` (perhaps through using :func:`super`). 3250 See :issue:`1683368` for discussion. 3251 3252 * The :class:`Decimal` constructor now accepts leading and trailing 3253 whitespace when passed a string. Previously it would raise an 3254 :exc:`InvalidOperation` exception. On the other hand, the 3255 :meth:`create_decimal` method of :class:`Context` objects now 3256 explicitly disallows extra whitespace, raising a 3257 :exc:`ConversionSyntax` exception. 3258 3259 * Due to an implementation accident, if you passed a file path to 3260 the built-in :func:`__import__` function, it would actually import 3261 the specified file. This was never intended to work, however, and 3262 the implementation now explicitly checks for this case and raises 3263 an :exc:`ImportError`. 3264 3265 * C API: the :c:func:`PyImport_Import` and :c:func:`PyImport_ImportModule` 3266 functions now default to absolute imports, not relative imports. 3267 This will affect C extensions that import other modules. 3268 3269 * C API: extension data types that shouldn't be hashable 3270 should define their ``tp_hash`` slot to 3271 :c:func:`PyObject_HashNotImplemented`. 3272 3273 * The :mod:`socket` module exception :exc:`socket.error` now inherits 3274 from :exc:`IOError`. Previously it wasn't a subclass of 3275 :exc:`StandardError` but now it is, through :exc:`IOError`. 3276 (Implemented by Gregory P. Smith; :issue:`1706815`.) 3277 3278 * The :mod:`xmlrpclib` module no longer automatically converts 3279 :class:`datetime.date` and :class:`datetime.time` to the 3280 :class:`xmlrpclib.DateTime` type; the conversion semantics were 3281 not necessarily correct for all applications. Code using 3282 :mod:`xmlrpclib` should convert :class:`date` and :class:`~datetime.time` 3283 instances. (:issue:`1330538`) 3284 3285 * (3.0-warning mode) The :class:`Exception` class now warns 3286 when accessed using slicing or index access; having 3287 :class:`Exception` behave like a tuple is being phased out. 3288 3289 * (3.0-warning mode) inequality comparisons between two dictionaries 3290 or two objects that don't implement comparison methods are reported 3291 as warnings. ``dict1 == dict2`` still works, but ``dict1 < dict2`` 3292 is being phased out. 3293 3294 Comparisons between cells, which are an implementation detail of Python's 3295 scoping rules, also cause warnings because such comparisons are forbidden 3296 entirely in 3.0. 3297 3298 .. ====================================================================== 3299 3300 3301 .. _26acks: 3302 3303 Acknowledgements 3304 ================ 3305 3306 The author would like to thank the following people for offering 3307 suggestions, corrections and assistance with various drafts of this 3308 article: Georg Brandl, Steve Brown, Nick Coghlan, Ralph Corderoy, 3309 Jim Jewett, Kent Johnson, Chris Lambacher, Martin Michlmayr, 3310 Antoine Pitrou, Brian Warner. 3311 3312