[Zope3-dev] Too many dependencies in zope.decorator

Jim Fulton jim at zope.com
Sun Aug 27 09:46:13 EDT 2006


On Aug 24, 2006, at 7:32 AM, Christian Theune wrote:

> Hi,
>
> ZODB with Blobs uses zope.proxy. Recently I discovered that due to  
> a refactoring, the semantics of a proxy have significantly changed  
> and a new concept of a "decorator" was born.

I don't know what you mean.  The concept of decorator is not new and  
I'm not aware that
zope.proxy was changed in any way recently to support it.  The only  
thing that changed
was that descriptors in proxies are treated a little differently.


>
> ZODB with Blobs needs the ability of a "specification decorator".

Does it really? Does anything in ZODB actually introspect interfaces?

> However, the zope.decorator depends also on zope.security, which in  
> turns depends on many other things that depend on even more things.  
> I didn't look up the final list, but as it's more than just one  
> thing, I consider it to be too much for inclusion with ZODB.
>
> Would it be possible to split up the modules of zope.decorator in  
> two, so ZODB could use the specification decorator without  
> depending on the security decorator?

On some level this makes sense.  However, this  package was moved up  
from zope.app and I think that more thought should have gone into how  
that was done.

This package is really small.  It only defines three things:  
DecoratorSpecificationDescriptor, DecoratedSecurityCheckerDescriptor,  
and Decorator.

  Of these:

  - The Decorator base class isn't used.  It should be probably be  
removed.  Unfortunately, this
    will require a deprecation cycle.

- DecoratedSecurityCheckerDescriptor is only used in one place,  
although it is redefined in zope.app.container.  It appears that it  
was copied at some point and has fallen out of sync. :(
I'm 99% sure that the zope.app.container should simply import this.   
Then it will be used in multiple places.  I suggest that the  
definition should move to zope.security.

- Likewise, DecoratorSpecificationDescriptor is duplicated in  
zope.app.container and has fallen out of sync.

I don't remember why these descriptors were duplicated in  
zope.app.container.  I'm pretty sure that part of the reason was that  
they are so trivial.  I'm not enthusiastic to have an egg and a ZODB  
dependency for so trivial a package.

I suggest moving the DecoratorSpecificationDescriptor into  
zope.proxy, sich depends on zope.interface already.

Of course, this would be for 3.4.

Jim

--
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 Zope3-dev mailing list