X-Git-Url: http://git.tremily.us/?p=hooke.git;a=blobdiff_plain;f=hooke%2Futil%2Fcallback.py;h=d4c870ce28a7685c369ec8beb4b8bf49aa7554e7;hp=0e76e815001cc1026784ca071850645a90f5489b;hb=60b12a779acf92ec32ef2d0ed9e5766b11705150;hpb=06dd575fc4ec14c30f6c7ed2d3c9268c7387509b diff --git a/hooke/util/callback.py b/hooke/util/callback.py index 0e76e81..d4c870c 100644 --- a/hooke/util/callback.py +++ b/hooke/util/callback.py @@ -1,20 +1,19 @@ -# Copyright (C) 2010 W. Trevor King +# Copyright (C) 2010-2012 W. Trevor King # # This file is part of Hooke. # -# Hooke is free software: you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. +# Hooke is free software: you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) any +# later version. # -# Hooke is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General -# Public License for more details. +# Hooke is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. # -# You should have received a copy of the GNU Lesser General Public -# License along with Hooke. If not, see -# . +# You should have received a copy of the GNU Lesser General Public License +# along with Hooke. If not, see . """Define the `@callback` decorator. @@ -65,11 +64,11 @@ def callback(method): returned arguments of the method they're attached to. >>> def c(self, method, *args): - ... print '\\n '.join([ + ... print('\\n '.join([ ... 'callback:', ... 'class: %s' % self, ... 'method: %s' % method, - ... 'returned: %s' % args]) + ... 'returned: %s' % args])) For some class, decorate any functions you're interested in attaching callbacks too. Also, add a `_callbacks` attribute @@ -82,13 +81,13 @@ def callback(method): ... @callback ... def xyz(self): ... "xyz's docstring" - ... print 'usual xyz business' + ... print('usual xyz business') ... return (0, 1, 1, 2, 3, 5) ... ... @callback ... def abc(self): ... "abc's docstring" - ... print 'usual abc business' + ... print('usual abc business') ... >>> x = X() @@ -105,7 +104,7 @@ def callback(method): The decorated method preserves the original docstring. - >>> print x.xyz.__doc__ + >>> print(x.xyz.__doc__) xyz's docstring So far, we haven't attached a callback to `abc`. @@ -127,7 +126,7 @@ def callback(method): array of callbacks in series. >>> def d(self, method, *args): - ... print 'callback d' + ... print('callback d') >>> x._callbacks['abc'] = [d, c, d] >>> r = x.abc() # doctest: +ELLIPSIS usual abc business @@ -170,12 +169,12 @@ def in_callback(self, *args, **kwargs): returned arguments of the method they're attached to. >>> def c(self, method, *args, **kwargs): - ... print '\\n '.join([ + ... print('\\n '.join([ ... 'callback:', ... 'class: %s' % self, ... 'method: %s' % method, ... 'args: %s' % (args,), - ... 'kwargs: %s' % kwargs]) + ... 'kwargs: %s' % kwargs])) Now place `in_callback` calls inside any interesting methods. @@ -185,14 +184,14 @@ def in_callback(self, *args, **kwargs): ... ... def xyz(self): ... "xyz's docstring" - ... print 'usual xyz business' + ... print('usual xyz business') ... in_callback(self, 5, my_kw=17) ... return (0, 1, 1, 2, 3, 5) ... ... def abc(self): ... "abc's docstring" ... in_callback(self, p1=3.14, p2=159) - ... print 'usual abc business' + ... print('usual abc business') ... >>> x = X() @@ -228,7 +227,7 @@ def in_callback(self, *args, **kwargs): array of callbacks in series. >>> def d(self, method, *args, **kwargs): - ... print 'callback d' + ... print('callback d') >>> x._callbacks['abc'] = [d, c, d] >>> r = x.abc() # doctest: +ELLIPSIS callback d