Add Python 3 support to Trove
It’s time to add Python 3 support to Trove by generalizing the usage of the six module, in addition to the Python 2 support.
The goal is to make Trove 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 Trove:
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:
- Started
- Approver:
- Amrith Kumar
- Priority:
- Medium
- Drafter:
- Victor Stinner
- Direction:
- Approved
- Assignee:
- None
- Definition:
- Approved
- Series goal:
- Accepted for newton
- Implementation:
- Good progress
- Milestone target:
- newton-rc1
- Started by
- Amrith Kumar
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
Port run_tests.py to Python 3
Addressed by: https:/
Switch from MySQL-python to PyMySQL
Addressed by: https:/
Replaces __builtin__ with six.moves.builtins
Addressed by: https:/
Replaces itertools.izip with six.moves.zip
Addressed by: https:/
Fix indexing of dict.keys() in python3
Addressed by: https:/
Python3: Add support for raise and ConfigParser
Addressed by: https:/
Python3: Add support for iter.next
Addressed by: https:/
Python3: Add support for iteritems and iterkeys
Addressed by: https:/
Python3: Add support for unicode, basestring, long
Addressed by: https:/
Python3: Add support for httplib, urlparse
Addressed by: https:/
Add a minimal py34 test environment
Addressed by: https:/
Port test_template unit test to Python 3
Addressed by: https:/
Port crypto_utils to Python 3
Addressed by: https:/
Port more common unit tests to Python 3
Addressed by: https:/
Python 3: fix relative imports
Addressed by: https:/
Python 3: avoid sets.Set and string.letters
Addressed by: https:/
Simplify guestagent.pkg: don't use metaclass
Addressed by: https:/
Port designate code to Python 3
Addressed by: https:/
Port more API unit tests to Python 3
Addressed by: https:/
Port instance unit tests to Python 3
Addressed by: https:/
Enable more unit tests on Python 3
Addressed by: https:/
Port more unit tests to Python 3
Addressed by: https:/
pkg: replace commands module with subprocess
Addressed by: https:/
Port backup test_storage to Python 3
Addressed by: https:/
Port more guestagent unit tests to Python 3
Addressed by: https:/
Run Python 3 unit tests in parallel
Gerrit topic: https:/
Addressed by: https:/
Replace print statment with print function
Addressed by: https:/
Replace MySQL-Python with PyMySQL
Addressed by: https:/
Port test_pagination on Python 3
Addressed by: https:/
Port galera and redis cluster tests to Python 3
Gerrit topic: https:/
Addressed by: https:/
Switch from MySQL-python to PyMySQL
Addressed by: https:/
Port guestagent test_dbaas to Python 3
Addressed by: https:/
py3: Enable test_backup_models and test_datastores
Addressed by: https:/
Fix concurrency issue with Python 3.4 test
Addressed by: https:/
Add lock around run_tests db create
Addressed by: https:/
Add missing py34 support for urllib
Addressed by: https:/
WIP: Try to enable run_tests.py on Python 3
Addressed by: https:/
Port pagination on Python 3
Addressed by: https:/
Port operating_system to Python 3
Addressed by: https:/
Port operating_system to Python 3
Addressed by: https:/
Fix guestagent.
Gerrit topic: https:/
Addressed by: https:/
Add .stestr.conf to fix tox-py27 stable job