pinecone.openapi_support.serializer
1import io 2 3from typing import Any 4 5 6from .exceptions import PineconeApiValueError 7from .model_utils import ModelNormal, ModelSimple, ModelComposed, date, datetime, model_to_dict 8 9 10class Serializer: 11 @staticmethod 12 def get_file_data_and_close_file(file_instance: io.IOBase) -> bytes: 13 file_data = file_instance.read() 14 file_instance.close() 15 return file_data 16 17 @classmethod 18 def sanitize_for_serialization(cls, obj) -> Any: 19 """Prepares data for transmission before it is sent with the rest client 20 If obj is None, return None. 21 If obj is str, int, long, float, bool, return directly. 22 If obj is datetime.datetime, datetime.date 23 convert to string in iso8601 format. 24 If obj is list, sanitize each element in the list. 25 If obj is dict, return the dict. 26 If obj is OpenAPI model, return the properties dict. 27 If obj is io.IOBase, return the bytes 28 :param obj: The data to serialize. 29 :return: The serialized form of data. 30 """ 31 if isinstance(obj, (ModelNormal, ModelComposed)): 32 return { 33 key: cls.sanitize_for_serialization(val) 34 for key, val in model_to_dict(obj, serialize=True).items() 35 } 36 elif isinstance(obj, io.IOBase): 37 return cls.get_file_data_and_close_file(obj) 38 elif isinstance(obj, (str, int, float, bool)) or obj is None: 39 return obj 40 elif isinstance(obj, (datetime, date)): 41 return obj.isoformat() 42 elif isinstance(obj, ModelSimple): 43 return cls.sanitize_for_serialization(obj.value) 44 elif isinstance(obj, (list, tuple)): 45 return [cls.sanitize_for_serialization(item) for item in obj] 46 if isinstance(obj, dict): 47 return {key: cls.sanitize_for_serialization(val) for key, val in obj.items()} 48 raise PineconeApiValueError( 49 "Unable to prepare type {} for serialization".format(obj.__class__.__name__) 50 )
class
Serializer:
11class Serializer: 12 @staticmethod 13 def get_file_data_and_close_file(file_instance: io.IOBase) -> bytes: 14 file_data = file_instance.read() 15 file_instance.close() 16 return file_data 17 18 @classmethod 19 def sanitize_for_serialization(cls, obj) -> Any: 20 """Prepares data for transmission before it is sent with the rest client 21 If obj is None, return None. 22 If obj is str, int, long, float, bool, return directly. 23 If obj is datetime.datetime, datetime.date 24 convert to string in iso8601 format. 25 If obj is list, sanitize each element in the list. 26 If obj is dict, return the dict. 27 If obj is OpenAPI model, return the properties dict. 28 If obj is io.IOBase, return the bytes 29 :param obj: The data to serialize. 30 :return: The serialized form of data. 31 """ 32 if isinstance(obj, (ModelNormal, ModelComposed)): 33 return { 34 key: cls.sanitize_for_serialization(val) 35 for key, val in model_to_dict(obj, serialize=True).items() 36 } 37 elif isinstance(obj, io.IOBase): 38 return cls.get_file_data_and_close_file(obj) 39 elif isinstance(obj, (str, int, float, bool)) or obj is None: 40 return obj 41 elif isinstance(obj, (datetime, date)): 42 return obj.isoformat() 43 elif isinstance(obj, ModelSimple): 44 return cls.sanitize_for_serialization(obj.value) 45 elif isinstance(obj, (list, tuple)): 46 return [cls.sanitize_for_serialization(item) for item in obj] 47 if isinstance(obj, dict): 48 return {key: cls.sanitize_for_serialization(val) for key, val in obj.items()} 49 raise PineconeApiValueError( 50 "Unable to prepare type {} for serialization".format(obj.__class__.__name__) 51 )
@classmethod
def
sanitize_for_serialization(cls, obj) -> Any:
18 @classmethod 19 def sanitize_for_serialization(cls, obj) -> Any: 20 """Prepares data for transmission before it is sent with the rest client 21 If obj is None, return None. 22 If obj is str, int, long, float, bool, return directly. 23 If obj is datetime.datetime, datetime.date 24 convert to string in iso8601 format. 25 If obj is list, sanitize each element in the list. 26 If obj is dict, return the dict. 27 If obj is OpenAPI model, return the properties dict. 28 If obj is io.IOBase, return the bytes 29 :param obj: The data to serialize. 30 :return: The serialized form of data. 31 """ 32 if isinstance(obj, (ModelNormal, ModelComposed)): 33 return { 34 key: cls.sanitize_for_serialization(val) 35 for key, val in model_to_dict(obj, serialize=True).items() 36 } 37 elif isinstance(obj, io.IOBase): 38 return cls.get_file_data_and_close_file(obj) 39 elif isinstance(obj, (str, int, float, bool)) or obj is None: 40 return obj 41 elif isinstance(obj, (datetime, date)): 42 return obj.isoformat() 43 elif isinstance(obj, ModelSimple): 44 return cls.sanitize_for_serialization(obj.value) 45 elif isinstance(obj, (list, tuple)): 46 return [cls.sanitize_for_serialization(item) for item in obj] 47 if isinstance(obj, dict): 48 return {key: cls.sanitize_for_serialization(val) for key, val in obj.items()} 49 raise PineconeApiValueError( 50 "Unable to prepare type {} for serialization".format(obj.__class__.__name__) 51 )
Prepares data for transmission before it is sent with the rest client If obj is None, return None. If obj is str, int, long, float, bool, return directly. If obj is datetime.datetime, datetime.date convert to string in iso8601 format. If obj is list, sanitize each element in the list. If obj is dict, return the dict. If obj is OpenAPI model, return the properties dict. If obj is io.IOBase, return the bytes
Parameters
- obj: The data to serialize.
Returns
The serialized form of data.