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