Jump to: navigation, search

Python3/SprintPycon2014

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>