human
I wrote the below code

    def process_item(item):
        'Recursive    processor    and    identification    of    data'
        dtype = type(item)
        if (dtype in (basestring, int, float, bool)):
            return item
        elif (dtype == tuple):
            return tuple((process_item(val) for val in item))
        elif (dtype in (list, _SaverList)):
            return [process_item(val) for val in item]
        elif (dtype in (dict, _SaverDict)):
            return dict(((process_item(key), process_item(val)) for (key, val) in item.items()))
        elif (dtype in (set, _SaverSet)):
            return set((process_item(val) for val in item))
        elif (dtype in (OrderedDict, _SaverOrderedDict)):
            return OrderedDict(((process_item(key), process_item(val)) for (key, val) in item.items()))
        elif (dtype in (deque, _SaverDeque)):
            return deque((process_item(val) for val in item))
        elif hasattr(item, '__iter__'):
            try:
                return item.__class__([process_item(val) for val in item])
            except (AttributeError, TypeError):
                return [process_item(val) for val in item]
        elif (hasattr(item, 'sessid') and hasattr(item, 'conn_time')):
            return pack_session(item)
        return pack_dbobj(item)
    return process_item(data)

What's a good function header?
assistant
#Here's a good function header.

def to_pickle(data):