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
On Tue, Nov 23, 2010 at 4:09 PM, Lennart Regebro <regebro@gmail.com> wrote:
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. :-)
This is like saying it needed to support Python 2 before it could be written on Python 2.
Using 2to3 get's complicated, so I'm trying to port this to Python 2 without it.
I assume you mean Python 3. I think this (not trying to use 2to3) is the right approach.
That too is a horrid nightmare, since zc.buildout also tend to generate code from strings,
The code it generates is pretty simple, but if it can't generate 2&3-compatible code, then not worrying about 2to3 should make generating code simpler.
and then makes things even more fun by having tests that require there to be at least three different versions released on PyPI. :-)
The upgrade tests? The bootstrap tests? I would disable these to get started. Jim -- Jim Fulton
On Tue, Nov 23, 2010 at 22:21, Jim Fulton <jim@zope.com> wrote:
This is like saying it needed to support Python 2 before it could be written on Python 2.
With the difference that it's written bit by bit, but needs to get ported all at once. Of course, if you know which tests to get to pass first it's easier. I'm getting there, I for example realized that the bootstrap tests probably should be made to pass last, not first. :-)
That too is a horrid nightmare, since zc.buildout also tend to generate code from strings,
The code it generates is pretty simple, but if it can't generate 2&3-compatible code, then not worrying about 2to3 should make generating code simpler.
Because the code it generates are in strings, 2to3 won't touch it, so it has to be changed by hand to run on both 2 and 3. As you say, the code is simple which means it's usually a simple task to make it compatible.
and then makes things even more fun by having tests that require there to be at least three different versions released on PyPI. :-)
The upgrade tests? The bootstrap tests? I would disable these to get started.
Yeah, it's a part of the bootstrap tests. I probably have to disable them, yeah. Possibly I could get them to use a local fake PyPI with several "fake" zc.buildout versions. We'll see, that's quite far away yet. -- Lennart Regebro, Colliberty: http://www.colliberty.com/ Telephone: +48 691 268 328
Oh, and zc.buildout also exposes bugs in Distribute under Python 3, so a new version of Distribute is needed before this can be finished. But that could probably happen quite fast after I get most of the zc.buildout tests running.
participants (2)
-
Jim Fulton -
Lennart Regebro