@@ -27,8 +27,6 @@ class _TypeConverterRegistry:
2727 def __init__ (self ):
2828 """Constructor."""
2929 self ._converter_list = []
30- self ._json_value_types = set (
31- [int , float , bool , type (None ), list , tuple , dict , str ])
3230
3331 def register (
3432 self ,
@@ -44,11 +42,7 @@ def register(
4442 ):
4543 raise TypeError ('Argument \' src\' and \' dest\' must be a type or '
4644 'tuple of types.' )
47- if isinstance (dest , tuple ):
48- json_value_convertible = any (d in self ._json_value_types for d in dest )
49- else :
50- json_value_convertible = dest in self ._json_value_types
51- self ._converter_list .append ((src , dest , convert_fn , json_value_convertible ))
45+ self ._converter_list .append ((src , dest , convert_fn ))
5246
5347 def get_converter (
5448 self , src : Type [Any ], dest : Type [Any ]) -> Optional [Callable [[Any ], Any ]]:
@@ -58,51 +52,30 @@ def get_converter(
5852 # We may consider more efficient way to do lookup in future.
5953 # NOTE(daiyip): We do reverse lookup since usually subclass converter
6054 # is register after base class.
61- for src_type , dest_type , converter , _ in reversed (self ._converter_list ):
55+ for src_type , dest_type , converter in reversed (self ._converter_list ):
6256 if pg_inspect .is_subclass (src , src_type ):
6357 dest_types = dest_type if isinstance (dest_type , tuple ) else (dest_type ,)
6458 for dest_type in dest_types :
6559 if pg_inspect .is_subclass (dest_type , dest ):
6660 return converter
6761 return None
6862
69- def get_json_value_converter (
70- self , src : Type [Any ]) -> Optional [Callable [[Any ], Any ]]:
71- """Get converter from source type to a JSON simple type."""
72- for src_type , _ , converter , json_value_convertible in reversed (
73- self ._converter_list ):
74- if pg_inspect .is_subclass (src , src_type ) and json_value_convertible :
75- return converter
76- return None
77-
7863
7964_TYPE_CONVERTER_REGISTRY = _TypeConverterRegistry ()
8065
8166
8267def get_converter (
83- src : Type [Any ], dest : Type [Any ]
68+ src : Type [Any ], dest : Union [ Type [Any ], Tuple [ Type [ Any ], ...] ]
8469) -> Optional [Callable [[Any ], Any ]]:
8570 """Get converter from source type to destination type."""
86- return _TYPE_CONVERTER_REGISTRY .get_converter (src , dest )
87-
88-
89- def get_first_applicable_converter (
90- src_type : Type [Any ],
91- dest_type : Union [Type [Any ], Tuple [Type [Any ], ...]]):
92- """Get first applicable converter."""
93- dest_types = dest_type if isinstance (dest_type , tuple ) else (dest_type ,)
94- for dest_type in dest_types :
95- converter = get_converter (src_type , dest_type )
71+ dest_types = dest if isinstance (dest , tuple ) else (dest ,)
72+ for dest in dest_types :
73+ converter = _TYPE_CONVERTER_REGISTRY .get_converter (src , dest )
9674 if converter is not None :
9775 return converter
9876 return None
9977
10078
101- def get_json_value_converter (src : Type [Any ]) -> Optional [Callable [[Any ], Any ]]:
102- """Get converter from source type to a JSON simple type."""
103- return _TYPE_CONVERTER_REGISTRY .get_json_value_converter (src )
104-
105-
10679def register_converter (
10780 src_type : Union [Type [Any ], Tuple [Type [Any ], ...]],
10881 dest_type : Union [Type [Any ], Tuple [Type [Any ], ...]],
@@ -148,4 +121,3 @@ def _register_builtin_converters():
148121
149122
150123_register_builtin_converters ()
151- object_utils .JSONConvertible .TYPE_CONVERTER = get_json_value_converter
0 commit comments