Jump to: navigation, search

Difference between revisions of "Python3/SprintPycon2014"

(Synchronize work on OpenStack components)
 
(39 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[http://www.enovance.com/ Enovance] organizes a sprint to Port OpenStack to Python 3 during 4 days: between April, 14 (Monday) and April, 17 (Thursday). See [Pycon Montreal 2014 sprints https://us.pycon.org/2014/community/sprints/].
+
Victor Stinner organizes a sprint to Port OpenStack to Python 3 during 4 days at Montreal (Canada) during Pycon Montreal 2014: between April, 14 (Monday) and April, 17 (Thursday). See [https://us.pycon.org/2014/community/sprints/ Pycon Montreal 2014 sprints].
  
 
== What ==
 
== What ==
  
The ultimate goal is to port the whole OpenStack project to Python 3. The goal of the sprint is to send patches to port as much code as possible, OpenStack and OpenStack dependencies.
+
The ultimate goal is to port the whole OpenStack project to Python 3. The goal of the sprint is to port OpenStack components and OpenStack dependencies to Python 3, send patches to port as much code as possible.
 +
 
 +
If you don't know OpenStack at all, please join us to port modules to Python 3: MySQL-python, boto (see boto3), etc.
 +
 
 +
Or come to help us replacing eventlet with Trollius!
  
 
== Who ==
 
== Who ==
Line 21: Line 25:
 
== Requirements ==
 
== Requirements ==
  
 +
* Good knowledge of Python
 
* Bring a laptop
 
* Bring a laptop
* Good knownledge of Python
+
* Create an account on Launchpad: [https://login.launchpad.net/+new_account Launchpad: new account] -- Launchpad is used as OpenID provider, it is at least needed to edit this wiki page, used for the sprint
* Basic knownledge of OpenStack: [http://devstack.org/ install DevStack]
+
 
* Subscribe to Launchpad and OpenStack projects, sign the CLA (can be done during the sprint)
+
To contribute to OpenStack:
 +
 
 +
* Basic knowledge of OpenStack
 +
* [http://devstack.org/ Install DevStack] (small setup of OpenStack written to hack OpenStack)
 +
* and OpenStack projects, sign the CLA (can be done during the sprint)
 
** [https://www.openstack.org/join/register/ Join The OpenStack Foundation:  Individual Member (Free)]
 
** [https://www.openstack.org/join/register/ Join The OpenStack Foundation:  Individual Member (Free)]
** [https://login.launchpad.net/+new_account Launchpad: new account]
 
 
**  [https://review.openstack.org/ Login on review.openstack.org] and [https://review.openstack.org/#/settings/ssh-keys upload your SSH key]
 
**  [https://review.openstack.org/ Login on review.openstack.org] and [https://review.openstack.org/#/settings/ssh-keys upload your SSH key]
 +
 +
== Getting started ==
 +
 +
We will focus on [https://github.com/openstack/oslo-incubator/ Oslo Incubator], so start by cloning the repository:
 +
 +
git clone https://github.com/openstack/oslo-incubator.git
 +
 +
Enter oslo-incubator directory, edit requirements.txt to comment "eventlet" line.
 +
 +
cd oslo-incubator
 +
vim requirements.txt  # comment eventlet line, save, exit
 +
 +
Install [https://pypi.python.org/pypi/tox tox]:
 +
 +
pip install tox==1.6.1
 +
 +
Finally, run unit tests using [https://pypi.python.org/pypi/tox tox] (pip install tox):
 +
 +
tox -e py33
 +
 +
If you would like to run a specific unit test:
 +
 +
$ . .tox/py33/bin/activate
 +
$ python -m testtools.run tests.unit.test_cliutils
 +
 +
Or you may try:
 +
 +
$ . .tox/py33/bin/activate
 +
$ nosetests tests/unit/test_cliutils.py
 +
 +
See also http://haypo-notes.readthedocs.org/openstack.html#tests
 +
 +
== Port OpenStack components to Python 3 ==
 +
 +
First, see [[Python3#OpenStack_clients]] for the latest status.
 +
 +
* oslo incubator: see https://wiki.openstack.org/wiki/Python3#Oslo_Incubator
 +
* oslo.messaging
 +
* swiftclient is almost done
 +
* glanceclient
 +
* neutronclient
 +
* savannaclient
 +
 +
Other tasks:
 +
 +
* Replace nose with testr
 +
* Horizon: Replace oslo.sphinx with oslosphinx (drop the dot)
 +
* Replace eventlet with trollius! (very complex right now)
 +
 +
== Port OpenStack dependencies to Python 3 ==
 +
 +
First, see [[Python3#Dependencies]] for the latest status.
 +
 +
* boto: https://github.com/boto/boto/pull/1156 - I sent this PR a long time ago but it hasn't gotten traction. I think the boto team wants to completely rewrite boto (boto3) and do Python 3 support there. i expect that to fracture the community and double the maintenance load (much like Python 3 ;-)) but I think that was what he was leaning towards. You might consider voting for Python 3 support in plain old boto in that PR or on the mailing list...
 +
* jsonrpclib
 +
* mysql-python: 2 pending pull requests:
 +
    * https://github.com/farcepest/MySQLdb1/pull/31
 +
    * https://github.com/farcepest/MySQLdb1/pull/48
 +
* oslosphinx: https://review.openstack.org/#/c/79311/
 +
* pycadf
 +
* python-ldap
 +
* qpid-python
 +
* rtslib-fb
 +
* sphinxcontrib-docbookrestapi
 +
* sphinxcontrib-httpdomain
 +
* sphinxcontrib-pecanwsme
 +
* sqlalchemy-migrate (in progress)
 +
* suds
 +
* thrift
 +
* websockify
  
 
== Document ==
 
== Document ==
Line 39: Line 117:
 
* [http://techs.enovance.com/6521/openstack_python3 Why should OpenStack move to Python 3 right now?]
 
* [http://techs.enovance.com/6521/openstack_python3 Why should OpenStack move to Python 3 right now?]
  
== Sync ==
+
== Synchronizations ==
 +
 
 +
=== IRC ===
 +
 
 +
The IRC channel #openstack-pycon of the IRC server Freenode will be used during the sprint.
 +
 
 +
=== Participants ===
 +
 
 +
* Chmouel Boudjnah
 +
* Cyril Roelandt (remote)
 +
* Doug Hellman (will review patches, remote)
 +
* Julien Danjou (interested to review patches, remote)
 +
* Frederic Lepied
 +
* Victor Stinner (organizer)
 +
* Éric Araujo (Wednesday)
 +
 
 +
=== Synchronize work on OpenStack components ===
  
 
Any change in OpenStack must be carefully reviewed. Don't expect to see your changes commited immediatly, you will probably have to discuss with the "core developers" of each project to enhance your patch, to make it fit the coding style of the project.
 
Any change in OpenStack must be carefully reviewed. Don't expect to see your changes commited immediatly, you will probably have to discuss with the "core developers" of each project to enhance your patch, to make it fit the coding style of the project.
Line 47: Line 141:
 
* <component>: <developer name>
 
* <component>: <developer name>
  
If you send a patch, please add it to the list below:
+
If you send a patch, please add it to the list below.
 +
 
 +
* oslo-incubator: https://review.openstack.org/#/c/87336/
 +
* oslo-incubator: https://review.openstack.org/#/c/87376/
 +
* oslo-incubator: https://review.openstack.org/#/c/87404/
 +
* oslo-incubator: https://review.openstack.org/#/c/87413/
 +
* oslo-incubator: https://review.openstack.org/#/c/88087/
 +
* oslo-incubator: https://review.openstack.org/#/c/87973/
 +
* oslo-incubator: https://review.openstack.org/#/c/88124/
 +
* oslo-incubator: https://review.openstack.org/#/c/74433/
 +
* oslo-incubator: https://review.openstack.org/#/c/74728/
 +
* swiftclient: https://review.openstack.org/#/c/87287/
 +
* swiftclient: https://review.openstack.org/#/c/84104/
 +
* swiftclient: https://review.openstack.org/#/c/84102/
 +
* swiftclient: https://review.openstack.org/#/c/87772/
 +
* swiftclient: https://review.openstack.org/#/c/88351/
 +
 
 +
=== Synchronize work on OpenStack dependencies ===
 +
 
 +
If you want to work on an OpenStack dependency, please modify the list below:
 +
 
 +
* <python project>: <developer name>
 +
 
 +
If you send a patch, pull request, whatever, please add it to the list below:
  
* <nowiki>https://review.openstack.org/#/...</nowiki>
+
* <project>: <url to patch>

Latest revision as of 16:13, 17 April 2014

Victor Stinner organizes a sprint to Port OpenStack to Python 3 during 4 days at Montreal (Canada) during Pycon Montreal 2014: between April, 14 (Monday) and April, 17 (Thursday). See Pycon Montreal 2014 sprints.

What

The ultimate goal is to port the whole OpenStack project to Python 3. The goal of the sprint is to port OpenStack components and OpenStack dependencies to Python 3, send patches to port as much code as possible.

If you don't know OpenStack at all, please join us to port modules to Python 3: MySQL-python, boto (see boto3), etc.

Or come to help us replacing eventlet with Trollius!

Who

Anyone knowing Python and OpenStack can participate!

When

April, 14 (Monday) and April, 17 (Thursday).

The next major release of OpenStack is "Icehouse", scheduled for April, 17.

Where

Montreal, at Pycon Montreal 2014.

Requirements

  • Good knowledge of Python
  • Bring a laptop
  • Create an account on Launchpad: Launchpad: new account -- Launchpad is used as OpenID provider, it is at least needed to edit this wiki page, used for the sprint

To contribute to OpenStack:

Getting started

We will focus on Oslo Incubator, so start by cloning the repository:

git clone https://github.com/openstack/oslo-incubator.git

Enter oslo-incubator directory, edit requirements.txt to comment "eventlet" line.

cd oslo-incubator
vim requirements.txt  # comment eventlet line, save, exit

Install tox:

pip install tox==1.6.1

Finally, run unit tests using tox (pip install tox):

tox -e py33

If you would like to run a specific unit test:

$ . .tox/py33/bin/activate
$ python -m testtools.run tests.unit.test_cliutils

Or you may try:

$ . .tox/py33/bin/activate
$ nosetests tests/unit/test_cliutils.py

See also http://haypo-notes.readthedocs.org/openstack.html#tests

Port OpenStack components to Python 3

First, see Python3#OpenStack_clients for the latest status.

Other tasks:

  • Replace nose with testr
  • Horizon: Replace oslo.sphinx with oslosphinx (drop the dot)
  • Replace eventlet with trollius! (very complex right now)

Port OpenStack dependencies to Python 3

First, see Python3#Dependencies for the latest status.

  • boto: https://github.com/boto/boto/pull/1156 - I sent this PR a long time ago but it hasn't gotten traction. I think the boto team wants to completely rewrite boto (boto3) and do Python 3 support there. i expect that to fracture the community and double the maintenance load (much like Python 3 ;-)) but I think that was what he was leaning towards. You might consider voting for Python 3 support in plain old boto in that PR or on the mailing list...
  • jsonrpclib
  • mysql-python: 2 pending pull requests:
   * https://github.com/farcepest/MySQLdb1/pull/31
   * https://github.com/farcepest/MySQLdb1/pull/48
  • oslosphinx: https://review.openstack.org/#/c/79311/
  • pycadf
  • python-ldap
  • qpid-python
  • rtslib-fb
  • sphinxcontrib-docbookrestapi
  • sphinxcontrib-httpdomain
  • sphinxcontrib-pecanwsme
  • sqlalchemy-migrate (in progress)
  • suds
  • thrift
  • websockify

Document

Synchronizations

IRC

The IRC channel #openstack-pycon of the IRC server Freenode will be used during the sprint.

Participants

  • Chmouel Boudjnah
  • Cyril Roelandt (remote)
  • Doug Hellman (will review patches, remote)
  • Julien Danjou (interested to review patches, remote)
  • Frederic Lepied
  • Victor Stinner (organizer)
  • Éric Araujo (Wednesday)

Synchronize work on OpenStack components

Any change in OpenStack must be carefully reviewed. Don't expect to see your changes commited immediatly, you will probably have to discuss with the "core developers" of each project to enhance your patch, to make it fit the coding style of the project.

If you want to work on a component (ex: neutron, nova, etc.), please write the component name with your name below:

  • <component>: <developer name>

If you send a patch, please add it to the list below.

Synchronize work on OpenStack dependencies

If you want to work on an OpenStack dependency, please modify the list below:

  • <python project>: <developer name>

If you send a patch, pull request, whatever, please add it to the list below:

  • <project>: <url to patch>