[Zope-dev] Zope vs. Python 3 porting roadmap
Lennart Regebro
regebro at gmail.com
Tue Nov 23 16:09:07 EST 2010
Hi all!
Hanno asked me to write this up, so I did.
Done and released:
==================
setutools (ie distribute)
zope.interface
zope.event
zope.exceptions
Low hanging fruit:
==================
zope.i18nmessageid: Done - not merged
setuptools - Done
TODO: Test the regebro-python3 branch with ZTK and Plone. Merge and release.
zope.hookable: Done - not merged
setuptools - Done
zope.testing - [test] Done, not released
TODO: Test the regebro-python3 branch with ZTK and Plone. Merge and release.
Mid hanging fruit:
==================
zope.proxy: In progress
setuptools - Done
zope.interface - Done
TODO: There are still some failing tests, needs attention of experts.
zope.testing: In progress
setuptools - Done
zope.interface - Done
zope.exceptions - Done
TODO: The branch regebro-400 contains a Python 3 compatible version, which
doesn't include the doctest module. It should be merged to trunk and released
as 3.11.0 or 4.0.0. However, that branch also removes the testrunner, which
already is removed from trunk, so the merge is not trivial.
zope.testrunnner: Done
setuptools - Done
zope.interface - Done
zope.exceptions - Done
zope.testing - [test] Done, not released
TODO: Some cleanup needed after releasing zope.testing for Python 3.
High hanging fruit:
===================
zc.buildout: (depends on itself, hard to use 2to3)
setuptools - Done
zope.testing - [test] Done, not released
COMMENT: Since zc.buildout uses itself to install and run and test, it needs to
support Python 3 before you can start porting it to Python 3. Tricky. :-)
Using 2to3 get's complicated, so I'm trying to port this to Python 2 without
it. That too is a horrid nightmare, since zc.buildout also tend to
generate code from strings, and then makes things even more fun by
having tests that require there to be at least three different
versions released on PyPI. :-)
zope.component: Not started
setuptools - Done
zope.interface - Done
zope.event - Done
zope.testing - [test] Done, not released
zope.testrunner - [test] Almost done, waiting for zope.testing.
zope.hookable - [hook] [test] Done, not released
zope.i18nmessageid - [zcml] Done, not released
zope.proxy - [security]
zope.location - [security] (Note semi-circular dependency)
zope.security - [security] (Note semi-circular dependency)
zope.configuration - [zcml]
ZODB3 - [persistentregistry] [test]
COMMENT: Loads of tests, mostly doctests means this is a pain to port. Also
there is loads of magic which also may be a pain to port. Lastly, to run all
the tests, we need a lot of extra modules, and some of those require
zope.component. So we need to run only some tests under Python 3, and add
tests once we port the other modules.
zope.component dependencies
===========================
Optional packages for zope.component. Should be ported directly after
zope.component. I don't know how difficult these are to port.
zope.schema:
setuptools - Done
zope.interface - Done
zope.event - Done
zope.testing - [test] Done, not released
z3c.recipe.sphinxdoc - [docs]
COMMENT: Sphinx isn't ported yet. That's only for docs though, so no biggie.
Possibly we'll have to avoid zc.buildout because of that.
zope.configuration:
setuptools - Done
zope.interface - Done
zope.i18nmessageid - Done, not released
zope.schema
zope.location:
setuptools - Done
zope.interface - Done
zope.proxy
zope.schema
zope.component - (Note semi-circular dependency)
zope.security: (Uses a c-module)
setuptools - Done
zope.interface - Done
zope.i18nmessageid - Done, not released
zope.proxy
zope.component - (Note semi-circular dependency)
zope.location
zope.schema
zope.testing - [test] Done, not released
ZODB3:
zope.event - Done
zope.interface - Done
transaction
zc.lockfile
ZConfig
zdaemon
zope.testing - [test] Done, not released
manuel - [test]
COMMENT: Once zope.testing and zc.buildout are done, merging Martins work
might not be too painful.
transaction:
zope.interface - Done
zc.lockfile:
setuptools - Done
ZConfig:
None
zdaemon:
None
manuel:
setuptools - Done
zope.testrunner - Done, waiting for zope.testing.
zope.testing - [test] Done, not released
More information about the Zope-Dev
mailing list