Note that this is moot, as I've decided to use a backward-compatible mro. That is, new-style extension classes will use an mro that is backward compatible with old-style extension classes. They do *not* use the same mro algorithm as new-style classes. Jim Tres Seaver wrote:
On Mon, 2003-11-24 at 12:03, Christian Heimes wrote:
Sidnei da Silva wrote:
I'm going to fix those (after my english class) and then try something harder ;)
Here is more stuff:
import mrohell base = mrohell.step1() mrohell.step2(base, mroonly=True) Couldn't get mro for Products.Archetypes.BaseBTreeFolder.BaseBTreeFolder Couldn't get mro for Products.Archetypes.BaseFolder.BaseFolder Couldn't get mro for Products.Archetypes.OrderedBaseFolder.OrderedBaseFolder Couldn't get mro for Products.GroupUserFolder.GroupUserFolder.GroupUserFolder Couldn't get mro for Products.CMFPlone.PloneFolder.BasePloneFolder Couldn't get mro for Products.CMFPlone.LargePloneFolder.LargePloneFolder Couldn't get mro for Products.Archetypes.BaseFolder.BaseFolderMixin Couldn't get mro for Products.CMFDefault.SkinnedFolder.SkinnedFolder Couldn't get mro for Products.CMFPlone.PloneFolder.PloneFolder Couldn't get mro for Products.Archetypes.ArchetypeTool.ArchetypeTool Couldn't get mro for Products.CMFFormController.Script.FSPythonScript Couldn't get mro for Products.CMFFormController.FSControllerValidator.FSControllerValidator Couldn't get mro for Products.CMFCore.FSPythonScript.FSPythonScript Couldn't get mro for Products.CMFFormController.FSControllerPythonScript.FSControllerPythonScript Couldn't get mro for Products.CMFCore.FSPageTemplate.FSPageTemplate Couldn't get mro for Products.CMFFormController.FSControllerPageTemplate.FSControllerPageTemplate Couldn't get mro for Products.CMFPlone.PropertiesTool.PropertiesTool Couldn't get mro for Products.CMFCore.FSZSQLMethod.FSZSQLMethod Couldn't get mro for Products.CMFPlone.FactoryTool.TempFolder Couldn't get mro for Products.Archetypes.OrderedBaseFolder.OrderedFolder Couldn't get mro for Products.Archetypes.examples.SimpleFolder.SimpleFolder 526 21 210
It seems that there are only several classes that cause problems: Products.CMFDefault.SkinnedFolder.SkinnedFolder Products.Archetypes.BaseFolder.BaseFolder Products.CMFCore.FS* Products.Archetypes.BaseFolder.BaseFolderMixin
AFAIK most of the other classes with mro problems are just subclasses of these classes above.
Jim made checkins to deal with the CMF-related MRO problems, on his 'mro-advanture-branch'::
=== CMF/CMFDefault/SkinnedFolder.py 1.15 => 1.15.6.1 === --- CMF/CMFDefault/SkinnedFolder.py:1.15 Sat Jun 28 12:31:21 2003 +++ CMF/CMFDefault/SkinnedFolder.py Fri Oct 31 14:24:19 2003 @@ -61,8 +61,7 @@ , )
- -class SkinnedFolder(CMFCatalogAware, PortalFolder): +class SkinnedFolder(PortalFolder): """ """ meta_type = 'Skinned Folder' @@ -70,6 +69,10 @@ security = ClassSecurityInfo()
manage_options = PortalFolder.manage_options + + indexObject = CMFCatalogAware.indexObject + unindexObject = CMFCatalogAware.unindexObject + reindexObject = CMFCatalogAware.reindexObject
def __call__(self): '''
=== CMF/CMFCore/FSObject.py 1.15 => 1.15.2.1 === --- CMF/CMFCore/FSObject.py:1.15 Fri Sep 12 20:46:40 2003 +++ CMF/CMFCore/FSObject.py Fri Oct 31 14:24:18 2003 @@ -18,7 +18,7 @@ from string import split from os import path, stat
-import Acquisition, Globals +import Acquisition, Globals, ExtensionClass from AccessControl import ClassSecurityInfo from OFS.SimpleItem import Item from DateTime import DateTime @@ -31,7 +31,7 @@
from OFS.Cache import Cacheable
-class FSObject(Acquisition.Implicit, Item, Cacheable): +class FSObject(Item, Cacheable, Acquisition.Implicit, ExtensionClass.Base): """FSObject is a base class for all filesystem based look-alikes.
Subclasses of this class mimic ZODB based objects like Image and
I imagine making similar small changes to Archetypes won't be hard.
Tres.
-- Jim Fulton mailto:jim@zope.com Python Powered! CTO (540) 361-1714 http://www.python.org Zope Corporation http://www.zope.com http://www.zope.org