
l at lrowe
Apr 17, 2008, 7:47 AM
Post #6 of 7
(425 views)
Permalink
|
.implementedBy is for classes (is this interface implemented by instances of a class), .providedBy is for instances (is this interface provided by this object). The only way I can think that you may trigger this error during unpickling is if you have somehow managed to get an __implemented__ attribute on the object itself. Not sure how you would manage that. Probably the best bet is to truncate your filestorage to a transaction before the change was persisted. Otherwise, you'll need to provide some more information, i.e. the pickle and the class definition. PDBDebugMode may be of help. Laurence Charlie Clark wrote: > Hi, > > whilst trying out some Zope 3 stuff (implementedBy, providedBy) I > managed to screw up some portal objects but I'm not quite sure how and > I've no idea how to fix them. > > I effectively did something like: > > for obj in folder.contentValues: > if IMyInterface.implementedBy(obj): > do_something_with_object() > > If I understand things correctly this should not affect the objects > themselves at all but it does and leads to the following error when I > subsequently try and access them. > > Traceback (most recent call last): > File "/opt/Zope-2.10/lib/python/ZODB/Connection.py", line 761, in > setstate > self._setstate(obj) > File "/opt/Zope-2.10/lib/python/ZODB/Connection.py", line 819, in > _setstate > self._reader.setGhostState(obj, p) > File "/opt/Zope-2.10/lib/python/ZODB/serialize.py", line 604, in > setGhostState > state = self.getState(pickle) > File "/opt/Zope-2.10/lib/python/ZODB/serialize.py", line 597, in getState > return unpickler.load() > File "/opt/Zope-2.10/lib/python/zope/interface/declarations.py", line > 352, in implementedByFallback > raise TypeError("ImplementedBy called for non-factory", cls) > TypeError: (<exceptions.TypeError instance at 0x348cc88>, <built-in > function implementedBy>, (<Container at >,)) > > Any idea how I can fix this? > > It turns out that I need to use .providedBy() rather than > .implementedBy() although I'm not too clear of the distinction. > > Charlie > -- > Charlie Clark > Helmholtzstr. 20 > Düsseldorf > D- 40215 > Tel: +49-211-938-5360 > GSM: +49-178-782-6226 > > > > _______________________________________________ > Zope-CMF maillist - Zope-CMF[at]lists.zope.org > http://mail.zope.org/mailman/listinfo/zope-cmf > > See http://collector.zope.org/CMF for bug reports and feature requests > _______________________________________________ Zope-CMF maillist - Zope-CMF[at]lists.zope.org http://mail.zope.org/mailman/listinfo/zope-cmf See http://collector.zope.org/CMF for bug reports and feature requests
|