[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