[Zope3-dev] Re: zope.sendmail having dependency on zope.app.comonent

Philipp von Weitershausen philipp at weitershausen.de
Fri Aug 31 05:16:56 EDT 2007

On 30 Aug 2007, at 14:19 , Michael Howitz wrote:

> Am 22.08.2007 um 15:53 schrieb Philipp von Weitershausen:
>> Michael Howitz wrote:
>>> while looking at the dependencies of packages in the zope.*  
>>> namespace at gocept we found out that zope.sendmail depends on  
>>> zope.app.component.
>> Just to make sure: If we ever had a formal distinction of the  
>> zope.* and zope.app.* namespaces, I think we've abandoned it a  
>> while ago already. So, it doesn't matter whether a package is in  
>> zope.* or zope.app.*, we need to take all interdependencies (also  
>> the ones in zope.app.*) into account. So all in all I don't think  
>> it's a big problem in zope.sendmail depended on  
>> zope.app.component, as long as zope.app.component wouldn't depend  
>> on a gazillion other things...
> So, you suggest to leave this dependency as it is as long no-one  
> complains?

In general, yes. That said, zope.app.component isn't the lightest  
dependency. It draws in almost all of zope.app.*

>>> zope.sendmail needs  
>>> zope.app.component.vocabulary.UtilityVocabulary to define a  
>>> vocabulary for the utilities implementing  
>>> zope.sendmail.interfaces.IMailDelivery.
>>> So we'd suggest to move  
>>> zope.app.component.vocabulary.UtilityVocabulary out of the  
>>> zope.app.* namespace because it is a generic vocabulary.
>>> Possible places for UtilityVocabulary could be zope.component  
>>> (because the concept of utilities is defined there) or  
>>> zope.schema (because the concept of vocabularies is defined there).
>>> zope.schema seems to be the better place because zope.component  
>>> does not depend on zope.schema yet.
>> But zope.schema does in no way depend on zope.component.
> Yes, you are right. So we would introduce a dependency from  
> zope.schema to zope.comonent.
> The only way to get lost of the zope.app dependency seems to be a  
> new package "zope.app.sendmail" (including deprecation!). But there  
> is already a zope.app.mail which is deprecated and will be removed  
> in 3.5.

I don't understand why that is "the only way" and why we have to  
create more packages in that dreadful zope.app.* namespace.

One way to break this dependency is to move the UtilityVocabulary out  
to a separate package, e.g. zope.utilityvocabulary.

Another way is to simply stop using UtilityVocabulary; this would  
also be an opportunity to replace it with a source. zc.sourcefactory  
is supposed to make this quite easy (and from what I've seen, it  
does), but unfortunately its dependencies aren't exactly light-weight  

More information about the Zope3-dev mailing list