(obj)
r"""Check that the given object is pickleable, raising an exception if
    it is not. This function is expected to be considerably more efficient
    than actually pickling the object.
r"""Check that the given object is pickleable, raising an exception if
    it is not. This function is expected to be considerably more efficient
    than actually pickling the object.
r Check that the given object is pickleable raising an exception if it is not . This function is expected to be considerably more efficient than actually pickling the object .
def _check_pickleable(obj):
    r"""Check that the given object is pickleable, raising an exception if
    it is not. This function is expected to be considerably more efficient
    than actually pickling the object.
    """
    def recurse(obj):
        if isinstance(obj, (list, tuple, set)):
            return [recurse(x) for x in obj]
        if isinstance(obj, dict):
            return [[recurse(x), recurse(y)] for x, y in obj.items()]
        if isinstance(obj, (str, int, float, bool, bytes, bytearray)):
            return None # Python primitive types are pickleable.
        if f'{type(obj).__module__}.{type(obj).__name__}' in ['numpy.ndarray', 'torch.Tensor']:
            return None # NumPy arrays and PyTorch tensors are pickleable.
        if is_persistent(obj):
            return None # Persistent objects are pickleable, by virtue of the constructor check.
        return obj
    with io.BytesIO() as f:
        pickle.dump(recurse(obj), f)
def _check_pickleable ( obj ) : def recurse ( obj ) : if isinstance ( obj , ( list , tuple , set ) ) : return [ recurse ( x ) for x in obj ] if isinstance ( obj , dict ) : return [ [ recurse ( x ) , recurse ( y ) ] for x , y in obj . items ( ) ] if isinstance ( obj , ( str , int , float , bool , bytes , bytearray ) ) : return None # Python primitive types are pickleable. if f'{type(obj).__module__}.{type(obj).__name__}' in [ 'numpy.ndarray' , 'torch.Tensor' ] : return None # NumPy arrays and PyTorch tensors are pickleable. if is_persistent ( obj ) : return None # Persistent objects are pickleable, by virtue of the constructor check. return obj with io . BytesIO ( ) as f : pickle . dump ( recurse ( obj ) , f )