[Zope-dev] Re: New-style ExtensionClasses (Zope 2.8) -- MRO issue
Jim Fulton
jim at zope.com
Tue Nov 25 15:55:55 EST 2003
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 at zope.com Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
More information about the Zope-Dev
mailing list