chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import io
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
if TYPE_CHECKING:
|
||||
pass
|
||||
|
||||
|
||||
import ray._private.utils
|
||||
import ray.cloudpickle as pickle
|
||||
import ray.exceptions
|
||||
from ray._private import ray_constants
|
||||
from ray.util import inspect_serializability
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
ALLOW_OUT_OF_BAND_OBJECT_REF_SERIALIZATION = ray_constants.env_bool(
|
||||
"RAY_allow_out_of_band_object_ref_serialization", True
|
||||
)
|
||||
|
||||
|
||||
def pickle_dumps(obj: Any, error_msg: str):
|
||||
"""Wrap cloudpickle.dumps to provide better error message
|
||||
when the object is not serializable.
|
||||
"""
|
||||
try:
|
||||
return pickle.dumps(obj)
|
||||
except (TypeError, ray.exceptions.OufOfBandObjectRefSerializationException) as e:
|
||||
sio = io.StringIO()
|
||||
inspect_serializability(obj, print_file=sio)
|
||||
msg = f"{error_msg}:\n{sio.getvalue()}"
|
||||
if isinstance(e, TypeError):
|
||||
raise TypeError(msg) from e
|
||||
else:
|
||||
raise ray.exceptions.OufOfBandObjectRefSerializationException(msg)
|
||||
Reference in New Issue
Block a user