<div dir="ltr"><div>Thanks Victor, that is pretty much exactly what I wanted to hear - there's a known, finite plan to get us to fully working with python3. I'll go change my reviews now.<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 26 May 2015 at 12:44, 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">(Oops, I sent a draft by mistake, sorry about that.)<br>
<span class=""><br>
Hi,<br>
<br>
There is an ongoing effort to port OpenStack applications to Python 3 during the Liberty cycle. The following table gives the status of each application and links to patches:<br>
<a href="https://wiki.openstack.org/wiki/Python3#OpenStack_applications" target="_blank">https://wiki.openstack.org/wiki/Python3#OpenStack_applications</a><br>
<br>
Specs were accepted for:<br>
<br>
* heat: <a href="https://review.openstack.org/#/c/175340/" target="_blank">https://review.openstack.org/#/c/175340/</a><br>
* keystone: <a href="https://review.openstack.org/#/c/177380/" target="_blank">https://review.openstack.org/#/c/177380/</a><br>
* neutron: <a href="https://review.openstack.org/#/c/172962/" target="_blank">https://review.openstack.org/#/c/172962/</a><br>
</span>* nova: <a href="https://review.openstack.org/176868" target="_blank">https://review.openstack.org/176868</a><br>
<br>
For cinder, I ported the last blocking dependency to Python 3, rtslib-fb:<br>
<a href="https://github.com/agrover/rtslib-fb/pull/62" target="_blank">https://github.com/agrover/rtslib-fb/pull/62</a><br>
(There is not release including the fix yet.)<br>
<br>
MySQL-python should be replaced with PyMySQL to run Python 3 tests, as done in Ironic, Nova and other applications.<br>
<br>
I started to write patches to port Cinder code to Python 3:<br>
<a href="https://review.openstack.org/#/q/project:openstack/cinder+branch:master+topic:py3,n,z" target="_blank">https://review.openstack.org/#/q/project:openstack/cinder+branch:master+topic:py3,n,z</a><br>
<br>
Duncan Thomas rejected one of my patch:<br>
"As commented on <a href="https://review.openstack.org/#/c/185411/" target="_blank">https://review.openstack.org/#/c/185411/</a> I'd really like to be convinced that there's an end in sight for this python3 work, or I'm going to start rejecting it. This change is making the code noticeably harder to read, and has no checks to stop it recurring in future, and is lacking substantial justification as to it's benefits."<br>
<br>
In the other issue, he wrote:<br>
"""<br>
Is there a master list of remaining python3 issues anywhere? At the moment we are introducing more and more little changes into the code, including some really ugly six stuff, without any idea if we are even close to actually being able to work with python3.<br>
<br>
To be honest, I think that I'd like to see a working python3 tree before we merge any more - we can then pull in the fixes in a clean manner, knowing the end-goal is possible.<br>
<br>
Thoughts appreciated, otherwise I'm tempted to start hitting -2 on python3 stuff.<br>
"""<br>
<br>
Ok, I checked the status of Cinder port to Python 3.<br>
<br>
I merged my pending patches into a local branch and I fixed manually dependencies for tox -e py34 (replace MySQL-python with PyMySQL, install the development version of oslo.vmware). With 4 minor changes, I'm able to run one cinder unit test (cinder/tests/unit/test_quota.py). Cool!<br>
<br>
The next step will be to run a subset of tests in "tox -e py34" to make it pass, and then add a checking job. When the job becomes stable, make it voting to avoid further Python 3 regressions.<br>
<br>
Then more code should be ported to Python 3 to slowly port the whole Cinder code base.<br>
<br>
Well, that's exactly the plan approved for Nova, and other OpenStack applications have the same (or a similar) plan for Python 3.<br>
<br>
About the usage of six: we chose six to add Python 3 support to all other OpenStack libraries and applications. Sorry if it makes the code "more ugly". More information on porting code to Python 3:<br>
<a href="https://wiki.openstack.org/wiki/Python3#Port_Python_2_code_to_Python_3" target="_blank">https://wiki.openstack.org/wiki/Python3#Port_Python_2_code_to_Python_3</a><br>
<br>
Victor Stinner aka haypo<br>
<div class="HOEnZb"><div class="h5"><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><br clear="all"><br>-- <br><div class="gmail_signature">Duncan Thomas</div>
</div>