From Fedora Project Wiki


Python 3.3

Summary

Update the Python 3 stack in Fedora from 3.2 to 3.3

Owner

  • Email: <dmalcolm@redhat.com>

Current status

  • Targeted release: Fedora 18
  • Last updated: 2012-07-20
  • Percentage of completion: 10% (see detailed notes under "Scope" below)

Upstream is at feature freeze for 3.3; latest tarball release is Python 3.3.0 beta 1, released on June 27th, 2012.

Month Python 3.3 release schedule) Fedora 18 Schedule Fedora 19 Schedule
March 3.3.0 alpha 1: March 3, 2012
3.3.0 alpha 2: March 31, 2012
April 3.3.0 alpha 3: April 28, 2012
May 3.3.0 alpha 4: May 26, 2012 Start Feature Submission Wed 2012-05-02
June 3.3.0 beta 1: June 23, 2012: (No new features beyond this point.)
July 3.3.0 beta 2: July 14, 2012
Feature Submission Deadline Tue 2012-07-24
3.3.0 candidate 1: July 28, 2012
Feature Freeze (Testable/Complete) Tue 2012-08-07
Branch Fedora 18 from Rawhide Tue 2012-08-07
August 2012-08-14 Alpha Change Deadline
3.3.0 candidate 2: August 11, 2012
2012-08-28 Alpha Release
3.3.0 final: August 18, 2012
September 2012-09-18 Beta Change Deadline / Features 100% Complete

Note: Fedora 18 schedule above is based on Releases/18/Schedule as 2012-07-19

Detailed Description

Python 3.3 adds numerous features and optimizations. See the upstream notes at http://www.python.org/getit/releases/3.3.0/ and http://docs.python.org/dev/whatsnew/3.3.html

Benefit to Fedora

Fedora aims to showcase the latest in free and open source software - we should have the most recent release of Python 3.

Scope

Compare with the Python 3.2 feature page.

We need to wait for Python 3.3 to reach feature freeze, so that the bytecode format for .pyc files is frozen, together with the ABI for extension modules.

At that point we can rebase python3 to the latest release candidate of that code. We would then need to rebuild all python 3 packages. See https://fedoraproject.org/wiki/Python3#Python_3_already_in_Fedora

For bonus points, we ought to tell "file" and "rpmlint" about the new bytecode format for .pyc files.

Note that the suffix of some files should change, and this may require slight packaging tweaks in the various packages that ship Python 3 code:

  • bytecode files changing from .cpython-32.pyc (and .cpython-32.pyo) to .cpython-33.pyc (and .cpython-32.pyo)
  • extension modules changing from .cpython-32mu.so to .cpython-33m.so (the "u" part goes away as part of PEP 393).

There have been some C API changes (especially relating to unicode handling); if we're unlucky we may need to do some code patching to get some extension modules to compile.

Approximate dependency tree

Approximate src.rpm dependency tree:

  • python3 [IN PROGRESS: scratch build (with %check enabled): http://koji.fedoraproject.org/koji/taskinfo?taskID=4285096 ; builds locally (with %check disabled); committed to a "python3.3" branch here for now: http://pkgs.fedoraproject.org/gitweb/?p=python3.git;a=shortlog;h=refs/heads/python3.3]
    • python-setuptools
      • ATpy
      • babel
      • blender
      • bpython
      • deltarpm
      • numpy
      • pygobject2
      • pygobject3
        • nfoview
      • pyke
      • python-BeautifulSoup
      • python-beaker
      • python-coverage
      • python-crypto
      • python-decorator
      • python-docutils
      • python-enchant
      • python-jinja2
      • python-lxml
      • python-mako
      • python-minimock
      • python-paste
      • python-ply
      • python-psycopg2
      • python-pygments
      • python-simplegeneric
      • python-smbpasswd
      • python3-cairo
      • python3-chardet
      • python3-cherrypy
      • python3-postgresql
      • python3-psutil
      • python3-six
      • python3-sqlalchemy
      • sip
        • PyQt4
    • gcc-python-plugin
    • lcgdm
    • libselinux
      • libsemanage
    • loook
    • mpi4py
    • mysql-connector-python
    • nordugrid-arc

How To Test

Interested testers do not need special hardware. If you have a favorite Python 3 script, module, or application, please test it with Python 3.3 and verify that it still works as you expect.

My own test plan:

  • Smoketest of the interpreter
  • Run the upstream regression test suite (this is done during %check)

User Experience

Users should not notice any difference, other than the availability of the 3.3 interpreter

Dependencies

See notes in "Scope" above.

Contingency Plan

I'm working on test rebuilds of all affected packages; I plan to commit the proposed changes to "python3.3" branches of dist-git, so that everything is ready and any major issues should have been shaken out before we "pull the trigger" and commit/build for real into f18.

Documentation

What's New In Python 3.3

Release Notes

The system Python 3 stack has been upgraded to 3.3 (the system Python 2 stack remains at 2.7), bringing in hundreds of fixes and tweaks; for a list of changes see http://docs.python.org/dev/whatsnew/3.3.html

Comments and Discussion