Difference between revisions of "Python3"
(→Others) |
(→Others) |
||
Line 83: | Line 83: | ||
! Project !! Python 3 compatibility !! CI tests running? !! Blocked by !! Comment | ! Project !! Python 3 compatibility !! CI tests running? !! Blocked by !! Comment | ||
|- | |- | ||
− | | Ceilometer || | + | | Ceilometer || style="background-color: red;" | NO || style="background-color: red;" | NO || mysql-python || |
|- | |- | ||
− | | Nova || | + | | Nova || style="background-color:red;" | NO || style="background-color: red;" | NO || |
− | * boto | + | * boto: has an py3k branch that has not been updated in 2 months (https://github.com/boto/boto/tree/py3kport) |
− | * cheetah | + | * cheetah: no release in 3 years |
− | * mysql-python | + | * mysql-python: 2 pull requests for Python 3 (https://github.com/farcepest/MySQLdb1/pulls). The projects is being renamed to moist (https://github.com/farcepest/moist), Python 3 support might happen there. |
− | * paramiko | + | * paramiko: a Py3 version seems to exist (https://github.com/paramiko/paramiko/pull/236) but it's unclear whether the maintainer is interested in merging it |
− | * suds | + | * suds: no release in 3 years, no real tests (just a bunch of example programs) |
+ | || | ||
|- | |- | ||
− | | oslo.config || style="background-color: lightgreen;" | OK || style="background-color: lightgreen;" | Yes | + | | oslo.config || style="background-color: lightgreen;" | OK || style="background-color: lightgreen;" | Yes || || |
|- | |- | ||
| oslo-incubator || style="background-color: orange;" | In progress || style="background-color: red;" | No | | oslo-incubator || style="background-color: orange;" | In progress || style="background-color: red;" | No | ||
Line 104: | Line 105: | ||
|| Being worked on by Chuck Short and Julien Danjou | || Being worked on by Chuck Short and Julien Danjou | ||
|- | |- | ||
− | | pbr || style="background-color: lightgreen;" | OK || style="background-color: lightgreen;" | Yes | + | | pbr || style="background-color: lightgreen;" | OK || style="background-color: lightgreen;" | Yes || || |
|- | |- | ||
− | | trove || style= | + | | trove || style="background-color: red;" | NO || style="background-color: red;" | NO || mysql-python || |
|} | |} | ||
Revision as of 00:50, 14 January 2014
This page tracks the progress of Python 3 effort porting for OpenStack.
Contents
Python 3
Why should OpenStack move to Python 3 right now?
- Python 3 is usually seen as the new Python version which breaks compatibility and raises new Unicode issues. Python 3 is much more than that. It’s a new clean language which has a more consistent syntax. It has many new features, not less than 15 new modules. Python 3 is already well supported by major Linux distributions, whereas Python 2.7 reached its end-of-life. Slowly, some bugs cannot be fixed in Python 2.7 anymore and are only fixed in the latest Python 3 release. Python 3 is now 5 years old and considered as a mature programming language.
Port Python 2 code to Python 3
OpenStack project chose to use the same code base for Python 2 and Python 3. The Six: Python 2 and 3 Compatibility Library helps to write code working on both versions.
References to port Python 2 code to Python 3:
- Porting to Python 3 Book by Lennart Regebro, especially the Language differences and workarounds.
- HOWTO: Porting Python 2 Code to Python 3 by Brett Cannon
- Porting Python Code to 3.x
- python-incompatibility: Demonstrates incompatibilities between Python versions.
Python 3 of OpenStack Depedencies
Blocker Pointer: it's not yet possible to specify different list of dependencies for Python 2 and Python 3. For example, mox only works on Python 2, mox3 can be used on Python 3.
- Julien Danjou proposed to add requirements-py3.txt: openstack/requirements patch and openstack-dev/pbr patch
- An alternative is to support markers in requirements (in pip): pip issue: Support markers in setup(install_requires)?
OpenStack Dependencies:
- mox: use mox3 or port tests on mock which works on Python 3 (mock has been integrated in Python 3.3 as unittest.mock)
- eventlet: not available on Python 3 yet, alternatives: asyncio (Tulip for Python 3.3+/Trollius for Python 2), Tornado
Portage in progress
- Oslo Messaging: Portage in Progress by Victor Stinner (dashboard)
- keystoneclient: Portage in Progress by Cyril Roelandt (dashboard)
- glanceclient: Portage in Progress by Yassine Lamgarchal (dashboard)
Python 3 Status of OpenStack projects
See also Python3Deps.
OpenStack clients
Project | Python 3 compatibility | CI tests running? | Blocked by | Comment |
---|---|---|---|---|
python-ceilometerclient | In Progress | Yes | python-keystoneclient | |
python-cinderclient | Yes | Yes | ? | |
python-ganttclient | ? | ? | ? | |
python-glanceclient | In Progress | Yes | python-keystoneclient | |
python-heatclient | No | Yes | ? | |
python-ironicclient | No | Yes | ? | |
python-keystoneclient | In progress | Yes | HTTPretty | |
python-marconiclient | Yes | Yes | ||
python-melangeclient | ? | ? | ? | |
python-novaclient | OK | YES | ||
python-neutronclient | In progress | No | Differences between Python 2 and 3 | |
python-openstackclient | No | Yes | ? | |
python-savannaclient | In progress | Yes |
| |
python-swiftclient | In progress | Yes | Differences between Python 2 and 3 | |
python-tuskarclient | No | Yes | python-keystoneclient | |
python-troveclient | Yes | Yes |
Others
Project | Python 3 compatibility | CI tests running? | Blocked by | Comment |
---|---|---|---|---|
Ceilometer | NO | NO | mysql-python | |
Nova | NO | NO |
|
|
oslo.config | OK | Yes | ||
oslo-incubator | In progress | No |
|
Being worked on by Chuck Short and Julien Danjou |
pbr | OK | Yes | ||
trove | NO | NO | mysql-python |
Reports at OpenStack Summits
- Havana summit notes: https://etherpad.openstack.org/p/havana-python3
- Icehouse summit notes: https://etherpad.openstack.org/p/IcehousePypyPy3