[Zope-Checkins] CVS: Zope3/lib/python/Zope/Configuration - meta.py:1.15.4.2
R. David Murray
bitz@bitdance.com
Mon, 21 Oct 2002 19:14:04 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/Configuration
In directory cvs.zope.org:/tmp/cvs-serv11649
Modified Files:
Tag: rdmurray-metameta-branch
meta.py
Log Message:
Remove my temporary hack in meta.py. Subsequent checkins will fix
the implementation declarations of the various INonEmptyDirectives.
In some cases this means changing an incorrect __implements__ to a
__class_implements__, in others it means adding the __class_implements__.
I debated the wisdom of this change, but it seems to me that depending
on the subdirective dictionary being non-empty to signal which kind
of object is getting returned is very fragil. Consider the
not-too-unlikely development scenario of temporarily removing your
subdirective declarations from your meta.zcml file. Suddenly your
code breaks, even though your Directive class hasn't changed.
Better, I think, to have the code fail right away if you forgot or
messed up your Interface declaration. Explicit is better than
implicit.
=== Zope3/lib/python/Zope/Configuration/meta.py 1.15.4.1 => 1.15.4.2 ===
--- Zope3/lib/python/Zope/Configuration/meta.py:1.15.4.1 Mon Oct 14 18:34:32 2002
+++ Zope3/lib/python/Zope/Configuration/meta.py Mon Oct 21 19:14:03 2002
@@ -161,15 +161,7 @@
r = callable(context, **kw)
- #XXX This _metadataKey check is a temporary hack. I really want this
- # line to just be "if INonEmptyDirective.isImplementedBy(callable):",
- # but to achieve that I have to go through and put the correct
- # declarations on all the current directive classes and functions,
- # and I don't want to do that until I know this branch is going to
- # be accepted.
- _metadataKey = "__Zope.Configuration.metadataKey__"
- if (len(subs)>1 or (len(subs)==1 and not subs.has_key(_metadataKey))
- or INonEmptyDirective.isImplementedBy(callable)):
+ if INonEmptyDirective.isImplementedBy(callable):
return r, subs
else:
return (