[openstack-dev] [oslo] eventlet 0.17.3 is now fully Python 3 compatible

Victor Stinner vstinner at redhat.com
Wed Apr 22 10:15:34 UTC 2015


It's moving fast. I'm currently working on porting remaining libraries to prepare my spec for nova.

> oslo.db -- looks like it is almost there 

I don't know the status of oslo.db support of Python 3. I guess that it already works on Python 3, it's just a matter of running tests with MySQL (MySQL-Python blocks again here).

> oslo.messaging -- same 

Two changes of my Python 3 changes were already merged last week. Three remaining Python 3 changes are almost there, they are mostly blocked by the freeze on requirements, but changes are already approved. The blocker is the bump of eventlet to 0.17.3:

> paste -- almost there 

I fixed that last night (!) with the release of Paste 2.0. It's the first Paste release since 2010. Paste 2.0 has an experimental support of Python 3. It should be enough for nova, according to my quick tests in my local nova repository where I fixed most obvious Python 3 issues. Ian Bicking allowed me to publish new versions of Paste.

> sqlalchemy-migrate -- almost there 

It already supports Python 3, so it doesn't block.

> suds -- with the suds fork shouldn't be too hard 

You should just switch to the fork. I contacted the author of suds-jurko: he plans to rename its component from "suds-jurko" to "suds". So his fork would be simple drop-in which would not require any change in OpenStack except of requirements.

> websockify -- unknown

It announces Python 3.3 and 3.4 support and has a py34 env in tox.ini. I didn't check yet if it supports Python 3, but since the project is active (last commit 12 hours ago), it's shouldn't be hard to fix them quickly.

> libvirt-python -- unknown 

Oh, I missed this dependency. It's my next target :-)

> mysql-python -- alternitive looks viable. 

Yes, it's possible to replace it with PyMySQL. Does anyone know the status of this switch?

> Based on there being two unknowns, and a lot of dependencies that are just almost there, and a few we may want to migrate off of, I was assuming addressing those issues would make it hard for us to make nova python3 compatible for Liberty.

My plan for Liberty is not to support fully Python 3 in nova, but only start the port (well, continue to be exact). The idea is to fix syntax errors and obvious issues like dict.iteritems() => six.iteritems(dict), then more complex changes. Maybe it's possible to finish the port in a cycle, but it really depends on the time taken to merge patches.

I started to port nova in my local repository. Some unit tests already pass.

nova already uses six in many places, so it's not like we really start from scratch, the port is already an ingoing process.


More information about the OpenStack-dev mailing list