Esempio n. 1
0
    def unsupported(self, tp: AnyType) -> SerializationMethod:
        try:
            return super().unsupported(tp)
        except Unsupported:
            if self._fall_back_on_any and is_type(tp):
                any_method = self._any_method
                if issubclass(tp, Mapping):

                    def method(obj: Any) -> Any:
                        return {
                            any_method(key.__class__)(key):
                            any_method(value.__class__)(value)
                            for key, value in obj.items()
                        }

                    return method

                elif issubclass(tp, Collection):

                    def method(obj: Any) -> Any:
                        return [any_method(elt.__class__)(elt) for elt in obj]

                    return method

            raise
Esempio n. 2
0
    def unsupported(self, tp: AnyType) -> SerializationMethod:
        try:
            return super().unsupported(tp)
        except Unsupported:
            if self._fall_back_on_any and is_type(tp):
                any_method = self.any()
                if issubclass(tp, Mapping):

                    def method(obj: Any) -> Any:
                        return {
                            any_method(key): any_method(value)
                            for key, value in obj.items()
                        }

                    return method

                elif issubclass(tp, Collection):

                    def method(obj: Any) -> Any:
                        return list(map(any_method, obj))

                    return method

            raise
Esempio n. 3
0
def is_convertible(tp: AnyType) -> bool:
    origin = get_origin_or_type(tp)
    return is_new_type(tp) or (is_type(origin)
                               and origin not in INVALID_CONVERSION_TYPES)
Esempio n. 4
0
 def handle_enum(tp: AnyType) -> Optional[AnyConversion]:
     if is_type(tp) and issubclass(tp, Enum):
         return Conversion(identity, source=Any, target=tp)
     return default_deserialization(tp)