def unpack_apply_message(bufs, g=None, copy=True):
    """unpack f,args,kwargs from buffers packed by pack_apply_message()
    Returns: original f,args,kwargs"""
    bufs = list(bufs) # allow us to pop
    assert len(bufs) >= 3, "not enough buffers!"
    if not copy:
        for i in range(3):
            bufs[i] = bufs[i].bytes
    cf = pickle.loads(bufs.pop(0))
    sargs = list(pickle.loads(bufs.pop(0)))
    skwargs = dict(pickle.loads(bufs.pop(0)))
    # print sargs, skwargs
    f = uncan(cf, g)
    for sa in sargs:
        if sa.data is None:
            m = bufs.pop(0)
            if sa.getTypeDescriptor() in ('buffer', 'ndarray'):
                # always use a buffer, until memoryviews get sorted out
                sa.data = buffer(m)
                # disable memoryview support
                # if copy:
                #     sa.data = buffer(m)
                # else:
                #     sa.data = m.buffer
            else:
                if copy:
                    sa.data = m
                else:
                    sa.data = m.bytes
    
    args = uncanSequence(map(unserialize, sargs), g)
    kwargs = {}
    for k in sorted(skwargs.iterkeys()):
        sa = skwargs[k]
        if sa.data is None:
            m = bufs.pop(0)
            if sa.getTypeDescriptor() in ('buffer', 'ndarray'):
                # always use a buffer, until memoryviews get sorted out
                sa.data = buffer(m)
                # disable memoryview support
                # if copy:
                #     sa.data = buffer(m)
                # else:
                #     sa.data = m.buffer
            else:
                if copy:
                    sa.data = m
                else:
                    sa.data = m.bytes

        kwargs[k] = uncan(unserialize(sa), g)
    
    return f,args,kwargs
def unpack_apply_message(bufs, g=None, copy=True):
    """unpack f,args,kwargs from buffers packed by pack_apply_message()
    Returns: original f,args,kwargs"""
    bufs = list(bufs) # allow us to pop
    assert len(bufs) >= 3, "not enough buffers!"
    if not copy:
        for i in range(3):
            bufs[i] = bufs[i].bytes
    cf = pickle.loads(bufs.pop(0))
    sargs = list(pickle.loads(bufs.pop(0)))
    skwargs = dict(pickle.loads(bufs.pop(0)))
    # print sargs, skwargs
    f = uncan(cf, g)
    for sa in sargs:
        if sa.data is None:
            m = bufs.pop(0)
            if sa.getTypeDescriptor() in ('buffer', 'ndarray'):
                # always use a buffer, until memoryviews get sorted out
                sa.data = buffer(m)
                # disable memoryview support
                # if copy:
                #     sa.data = buffer(m)
                # else:
                #     sa.data = m.buffer
            else:
                if copy:
                    sa.data = m
                else:
                    sa.data = m.bytes
    
    args = uncanSequence(map(unserialize, sargs), g)
    kwargs = {}
    for k in sorted(skwargs.iterkeys()):
        sa = skwargs[k]
        if sa.data is None:
            m = bufs.pop(0)
            if sa.getTypeDescriptor() in ('buffer', 'ndarray'):
                # always use a buffer, until memoryviews get sorted out
                sa.data = buffer(m)
                # disable memoryview support
                # if copy:
                #     sa.data = buffer(m)
                # else:
                #     sa.data = m.buffer
            else:
                if copy:
                    sa.data = m
                else:
                    sa.data = m.bytes

        kwargs[k] = uncan(unserialize(sa), g)
    
    return f,args,kwargs
def unpack_apply_message ( bufs , g = None , copy = True ) : bufs = list ( bufs ) # allow us to pop assert len ( bufs ) >= 3 , "not enough buffers!" if not copy : for i in range ( 3 ) : bufs [ i ] = bufs [ i ] . bytes cf = pickle . loads ( bufs . pop ( 0 ) ) sargs = list ( pickle . loads ( bufs . pop ( 0 ) ) ) skwargs = dict ( pickle . loads ( bufs . pop ( 0 ) ) ) # print sargs, skwargs f = uncan ( cf , g ) for sa in sargs : if sa . data is None : m = bufs . pop ( 0 ) if sa . getTypeDescriptor ( ) in ( 'buffer' , 'ndarray' ) : # always use a buffer, until memoryviews get sorted out sa . data = buffer ( m ) # disable memoryview support # if copy: #     sa.data = buffer(m) # else: #     sa.data = m.buffer else : if copy : sa . data = m else : sa . data = m . bytes args = uncanSequence ( map ( unserialize , sargs ) , g ) kwargs = { } for k in sorted ( skwargs . iterkeys ( ) ) : sa = skwargs [ k ] if sa . data is None : m = bufs . pop ( 0 ) if sa . getTypeDescriptor ( ) in ( 'buffer' , 'ndarray' ) : # always use a buffer, until memoryviews get sorted out sa . data = buffer ( m ) # disable memoryview support # if copy: #     sa.data = buffer(m) # else: #     sa.data = m.buffer else : if copy : sa . data = m else : sa . data = m . bytes kwargs [ k ] = uncan ( unserialize ( sa ) , g ) return f , args , kwargs
unpack f,args,kwargs from buffers packed by pack_apply_message()
    Returns: original f,args,kwargs
unpack f args kwargs from buffers packed by pack_apply_message () Returns : original f args kwargs