[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