[Julien Anguenot]
+def beforeCommitHookOrdered(hook, order, *args, **kws):
+
Register a hook to call before the transaction is committed. ...
+Note, a hook __call__() method can't define any 'order' argument
since
+this one is reserved by this method
[Florent Guillaume]
If that's a concern, maybe it can be called order__ or something ? What's
the pythonic way to do this ?
It would be more accurate to say that the hook's __call__ method can't be
invoked with a keyword argument named `order`. The same is equally true of
invoking it with a keyword argument named `hook`. There's no problem if
__call__ defines arguments named `hook` and/or `order` provided those are
passed positionally to __call__.
The problem (such as it is) is really inherited from the older function:
def beforeCommitHook(self, hook, *args, **kws):
The most Pythonic way would have been to define that as
def beforeCommitHook(self, hook, args=(), kws=None):
if kws is None:
kws = {}
much like Python's thread.start_new_thread() and threading.Thread()
constructor. Then Julien could have added an optional new `order=0`
argument to the old function too (instead of creating an additional
function).
While not ideal, it's minor, and naming the fixed arguments (in both
methods), e.g., __hook and __order would remove most of the little ugliness.
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/
ZODB-Dev mailing list - ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev