[ZODB-Dev] Re: SVN:
ZODB/branches/anguenot-ordering-beforecommitsubscribers/src/transaction/
Implements the ordering of before commit subscribers :
Tim Peters
tim at zope.com
Mon Aug 8 13:41:07 EDT 2005
[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.
More information about the ZODB-Dev
mailing list