[Zope-dev] Re: SVN: Zope/trunk/ Moved two implements declarations from Five into the proper classes.

Hanno Schlichting plone at hannosch.info
Mon Oct 22 03:43:09 EDT 2007


Philipp von Weitershausen wrote:
> Hanno Schlichting wrote:
>> Log message for revision 80945:
>>   Moved two implements declarations from Five into the proper classes.
> 
> I object to this change. HTTPRequest does not really fulfil the
> IBrowserRequest interface, and ObjectManager isn't a real IContainer
> either. I understand that somebody made a mistake when they declared
> them as such in the early days of Five. This is the reason we can't take
> it back. But, at least as a sign of the fact that they're not (yet) the
> real deal, this declaration has remained in ZCML.

Hiding the interface declaration in some exotic place in ZCML isn't very
helpful IMO. We can add a comment to the implements directive in both
classes that these are not implementing the full interface, though. Five
isn't just an add-on anymore but a core part of Zope2, moving things
into the proper places, should make it easier for those people, who
haven't followed the whole history of Five.

> A sensible step forward would be to make HTTPRequest a full
> IBrowserRequest (we're getting there). As for ObjectManager, I think
> IContainer implies a couple of semantics (such as unicode names, the
> sending of events, etc.) that we should look closer at before deciding.

All sounds fine as next steps, hopefully someone is willing to put some
work into it. My main motivation besides making things more easily
discoverable was speed increase. For some reason five:implements or
classImplements is the slowest of all CA actions, when combined with
complex classes. Moving these two statements to the classes themselves,
made them take just the 75th fraction of time then before.

Hanno



More information about the Zope-Dev mailing list