[Twisted-Python] pickle apparently doesn't go with curry ...

Glyph Lefkowitz glyph at twistedmatrix.com
Tue Nov 12 22:13:41 MST 2002


On Tue, 12 Nov 2002 12:06:07 -0500, Steve Waterbury <waterbug at beeblebrox.gsfc.nasa.gov> wrote:

> Any ideas?

Well, others have already told you why this doesn't work :-) but if I may
suggest something...

No offense to the very bright folks who brought us the Python Cookbook, because
I find much of it very valuable, but some of their recepies are overly
complicated with bizarre side effects that are really not obvious until you've
been using them for a while.  Persistence is a particularly dark corner, both
with pickle and without.  Two of my least favorite recipies in this regard are
"Borg" and "curry".  While interesting from a technical perspective on Python's
expressiveness, they're rarely expressing what you want :).  For example, to
translate the curry example you gave to a slightly-more-verbose but
much-more-straightforward python idiom:

class curry:
    def __init__(self, func, *create_time_args, **create_time_kwds):
        self.func = func
        self.create_time_args = create_time_args
        self.create_time_kwds = create_time_kwds
    def __call__(self, *call_time_args, **call_time_kwds):
        args = self.create_time_args + call_time_args
        kwds = self.create_time_kwds.copy()
        kwds.update(call_time_kwds)
        return self.func(*args, **kwds)

The cost of a much more straightforward interaction with other Python tools --
not just for persistence, but for example, for debugging -- comes to exactly 1
additional line of code.

-- 
 |    <`'>    |  Glyph Lefkowitz: Traveling Sorcerer   |
 |   < _/ >   |  Lead Developer,  the Twisted project  |
 |  < ___/ >  |      http://www.twistedmatrix.com      |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: </pipermail/twisted-python/attachments/20021112/22948cee/attachment.sig>


More information about the Twisted-Python mailing list