def test_json_encoder_to_serializer(self): serializer_cls = json_encoder_to_serializer(BasicSimpleModelJSONEncoder) serializer = serializer_cls() # type: Serializer self.assertIsInstance(serializer, Serializer) serialized = serializer.serialize(self.simple_model) encoded = BasicSimpleModelJSONEncoder().default(self.simple_model) self.assertDictEqual(serialized, encoded)
def __init__(self, json_property_name=None, object_property_name: str = None, object_constructor_parameter_name: str = None, json_property_getter: Callable[[Dict], Any] = None, json_property_setter: Callable[[Any, Any], None] = None, encoder_cls: Union[type, Callable[[], type]] = JSONEncoder, decoder_cls: Union[type, Callable[[], type]] = JSONDecoder, optional: bool = False, **kwargs): """ Constructor. :param json_property_name: :param object_property_name: :param object_constructor_parameter_name: :param json_property_getter: :param json_property_setter: :param encoder_cls: :param decoder_cls: :param optional: """ if json_property_name is not None: if json_property_getter is not None and json_property_setter is not None: raise ValueError( "Redundant `json_property_name` argument given. It has been specified that a " "serialized property is to be used via the given property name and both a setter and " "getter of this property has been provided. To avoid confusion, the serialized " "property cannot be specified in this case.") if json_property_getter is None: def json_property_getter(obj_as_json: dict): if json_property_name not in obj_as_json: if optional: return None else: raise KeyError( "No value associated to the non-optional key `%s` in the input JSON: `%s`" % (json_property_name, obj_as_json)) return obj_as_json[json_property_name] if json_property_setter is None: def json_property_setter(obj_as_json: dict, value: Any): obj_as_json[json_property_name] = value encoder_as_serializer_cls = json_encoder_to_serializer(encoder_cls) decoder_as_serializer_cls = json_decoder_to_deserializer(decoder_cls) super().__init__(object_property_name, object_constructor_parameter_name, serialized_property_getter=json_property_getter, serialized_property_setter=json_property_setter, serializer_cls=encoder_as_serializer_cls, deserializer_cls=decoder_as_serializer_cls, optional=optional, **kwargs)
def test_json_encoder_to_serializer(self): serializer_cls = json_encoder_to_serializer( BasicSimpleModelJSONEncoder) serializer = serializer_cls() # type: Serializer self.assertIsInstance(serializer, Serializer) serialized = serializer.serialize(self.simple_model) encoded = BasicSimpleModelJSONEncoder().default(self.simple_model) self.assertDictEqual(serialized, encoded)
def __init__( self, json_property_name=None, object_property_name: str=None, object_constructor_parameter_name: str=None, json_property_getter: Callable[[Dict], Any]=None, json_property_setter: Callable[[Any, Any], None]=None, encoder_cls: Union[type, Callable[[], type]]=JSONEncoder, decoder_cls: Union[type, Callable[[], type]]=JSONDecoder, optional: bool=False, **kwargs): """ Constructor. :param json_property_name: :param object_property_name: :param object_constructor_parameter_name: :param json_property_getter: :param json_property_setter: :param encoder_cls: :param decoder_cls: :param optional: """ if json_property_name is not None: if json_property_getter is not None and json_property_setter is not None: raise ValueError("Redundant `json_property_name` argument given. It has been specified that a " "serialized property is to be used via the given property name and both a setter and " "getter of this property has been provided. To avoid confusion, the serialized " "property cannot be specified in this case.") if json_property_getter is None: def json_property_getter(obj_as_json: dict): if json_property_name not in obj_as_json: if optional: return None else: raise KeyError("No value associated to the non-optional key `%s` in the input JSON: `%s`" % (json_property_name, obj_as_json)) return obj_as_json[json_property_name] if json_property_setter is None: def json_property_setter(obj_as_json: dict, value: Any): obj_as_json[json_property_name] = value encoder_as_serializer_cls = json_encoder_to_serializer(encoder_cls) decoder_as_serializer_cls = json_decoder_to_deserializer(decoder_cls) super().__init__(object_property_name, object_constructor_parameter_name, serialized_property_getter=json_property_getter, serialized_property_setter=json_property_setter, serializer_cls=encoder_as_serializer_cls, deserializer_cls=decoder_as_serializer_cls, optional=optional, **kwargs)