Add Python 3 support to Solum
It’s time to add Python 3 support to Solum by generalizing the usage of the six module, in addition to the Python 2 support.
The goal is to make Solum compatible with Python 3 at the end of the Liberty cycle.
For the rationale, the plan and work items, please see Nova Python 3 spec, since it's almost the same for Solum:
http://
Summary of the plan:
* Write a few bunch of patches to fix the most obvious Python 3 syntax issues (dict.iteritems, 123L, reraise an exception, etc.) to be able to load unit tests
* Find a subset of unit tests which pass on Python 3.4 and add a py34 target in tox.ini to run them.
* Add a non-voting py34 check job running tox -e py34
* When the py34 check job becomes stable enough, make it voting. At this point, it's no more possible to add regressions on the Python 3 in the tests executed by tox -e py34
* Fix remaining tests one by one, each time add it to the py34 target of tox.ini
For more information on Python 3, see the wiki page: https:/
Blueprint information
- Status:
- Not started
- Approver:
- Devdatta Kulkarni
- Priority:
- Medium
- Drafter:
- Victor Stinner
- Direction:
- Approved
- Assignee:
- Victor Stinner
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- next-mitaka
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
py3: Replace unicode with six.text_type
Addressed by: https:/
py3: Get httplib and __builtin__ from six.moves
Addressed by: https:/
py3: Get urllib and urlparse from six.moves
Addressed by: https:/
py3: Replace dict.iteritems() with dict.items()
Addressed by: https:/
py3: Replace types.BooleanType with bool
Addressed by: https:/
Replace string.letters with string.
Addressed by: https:/
py3: MultiType.
Addressed by: https:/
py3: Stop using StandardError exception
Addressed by: https:/
Use @six.python_
Addressed by: https:/
py3: Replace exc.message with str(exc)
Addressed by: https:/
py3: Fix using map() for python2,3 compatibility
Addressed by: https:/
py3: Fix using filter() for python2,3 compatibility