Jump to: navigation, search


Revision as of 17:21, 10 January 2014 by Yassine (talk | contribs) (Portage in progress)

This page tracks the progress of Python 3 effort porting for OpenStack.

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:

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.

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 No 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
  • Minor 2to3 issues
  • python-keystoneclient
python-swiftclient In progress Yes Differences between Python 2 and 3
python-tuskarclient No Yes python-keystoneclient
python-troveclient Yes Yes


Project Python 3 compatibility CI tests running? Blocked by Comment
oslo.config OK https://review.openstack.org/#/c/37426/
pbr OK https://review.openstack.org/#/c/37426/
oslo-incubator In progress No
  • eventlet and greenlet not py3 compatible
  • qpid not py3 compatible
  • mysql-python not py3 compatible
  • pyzmq not py3 compatible
  • sqlalchemy-migrate not py3 compatible
  • mox not compatible but pymox3 works fine
Being worked on by Chuck Short and Julien Danjou

Reports at OpenStack Summits