<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 22, 2015 at 3:15 AM, Victor Stinner <span dir="ltr"><<a href="mailto:vstinner@redhat.com" target="_blank">vstinner@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
It's moving fast. I'm currently working on porting remaining libraries to prepare my spec for nova.<br></blockquote><div><br></div><div>Great, I did't realize how close all the dependencies were.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
> oslo.db -- looks like it is almost there<br>
<br>
</span>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).<br>
<br>
> oslo.messaging -- same<br>
<br>
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:<br>
<a href="https://review.openstack.org/#/c/172132/" target="_blank">https://review.openstack.org/#/c/172132/</a><br>
<br>
> paste -- almost there<br>
<br>
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.<br>
<br>
> sqlalchemy-migrate -- almost there<br>
<br>
It already supports Python 3, so it doesn't block.<br>
<span class=""><br>
> suds -- with the suds fork shouldn't be too hard<br>
<br>
</span>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.<br>
<br>
> websockify -- unknown<br>
<br>
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.<br>
<br>
> libvirt-python -- unknown<br>
<br>
Oh, I missed this dependency. It's my next target :-)<br>
<span class=""><br>
> mysql-python -- alternitive looks viable.<br>
<br>
</span>Yes, it's possible to replace it with PyMySQL. Does anyone know the status of this switch?<br>
<span class=""><br>
> 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.<br>
<br>
</span>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.<br></blockquote><div><br></div><div>How invasive would the port to python3 be? Would it be easier to have a python3 migration sprint and rip the band aid off instead of dragging it out and having partial python3 support for a whole cycle?</div><div> </div><div>In general what is the least painful way to add python3 support for a very large python project?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I started to port nova in my local repository. Some unit tests already pass.<br>
<br>
nova already uses six in many places, so it's not like we really start from scratch, the port is already an ingoing process.<br>
<div class="HOEnZb"><div class="h5"><br>
Victor<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div></div>