| Version 6 (modified by itamar, 10 months ago) |
|---|
Objective
To have Twisted available on Python 3.3 and newer, with the same functionality as is currently available on Python 2.x.
Strategy
- Single source - The result will be a version of Twisted that is source-compatible with Python 2.6, Python 2.7, and Python 3.3.
- Test-driven - Following the standard Twisted development process, all changed code will be fully automatically unit tested.
- Opportunistic - Where module dependencies (within Twisted) need to be ported to support porting of the high-priority modules, modules may be split so that only some of their contents need to be ported.
All other standard Twisted development practices apply.
Details
- Bootstrap the testing system
- Port the non-reactor parts of trial necessary to run the tests for the non-reactor parts of trial
- Refactor the implementation to separate the reactor and non-reactor parts into separate source files
- Add more tests for uncovered functionality
- Get the non-reactor parts passing their own tests on Python 3.3 (alpha, until 3.3 is actually released)
- Test-driven port of the dependencies of the reactor features of trial
- Test-driven port of the reactor features of trial
- Port the non-reactor parts of trial necessary to run the tests for the non-reactor parts of trial
- setup.py should only install ported modules on Python 3.
- Test-driven port of the following modules (some of which may be dependencies of above steps):
- twisted.cred
- twisted.internet.defer
- twisted.trial
- twisted.internet.gireactor
- twisted.internet.selectreactor
- twisted.internet.pollreactor
- twisted.internet.ssl
- twisted.protocols.basic
- twisted.web
- client
- http
- resource
- server
- http_headers
- twisted.internet
- abstract
- reactor
- endpoints
- protocol
- interfaces
- error
- task
- twisted.python
- failure
- log
- util
- procutils
- twisted.names
- twisted.application
- internet
- service
- Build-slave for Python 3.3 should only run ported test modules.
- Strings
- Python 2 largely conflates text and bytes in the str type, but offers unicode for unambiguous text usage.
- Python 3 reduces the functionality of the str type and renames it to bytes, reflecting the intent that it be used for bytes only. It renames the unicode type to str.
- There is a third kind of string, used to represent Python identifiers and docstrings. These are bytes in Python 2 and text in Python 3.
