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 either.

Zope3-dev mailing list
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com

Reply via email to