serialization_addons.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """
  2. This module is intended for implementing internal serializers for some
  3. site packages.
  4. """
  5. import sys
  6. from ray.util.annotations import DeveloperAPI
  7. @DeveloperAPI
  8. def register_starlette_serializer(serialization_context):
  9. try:
  10. import starlette.datastructures
  11. except ImportError:
  12. return
  13. # Starlette's app.state object is not serializable
  14. # because it overrides __getattr__
  15. serialization_context._register_cloudpickle_serializer(
  16. starlette.datastructures.State,
  17. custom_serializer=lambda s: s._state,
  18. custom_deserializer=lambda s: starlette.datastructures.State(s),
  19. )
  20. @DeveloperAPI
  21. def apply(serialization_context):
  22. from ray._common.pydantic_compat import register_pydantic_serializers
  23. register_pydantic_serializers(serialization_context)
  24. register_starlette_serializer(serialization_context)
  25. if sys.platform != "win32":
  26. from ray._private.arrow_serialization import (
  27. _register_custom_datasets_serializers,
  28. )
  29. _register_custom_datasets_serializers(serialization_context)