@@ -1910,7 +1910,6 @@ def __subclasshook__(cls, C):
1910
1910
return callable (getattr (C , "__iter__" , None ))
1911
1911
1912
1912
1913
-
1914
1913
class _ObjStyleKeysMeta (type ):
1915
1914
def __instancecheck__ (cls , C ):
1916
1915
return hasattr (C , "__dict__" ) and hasattr (C .__dict__ , "keys" )
@@ -2047,7 +2046,6 @@ def get_handler(self, op, obj, path=None, raise_exc=True):
2047
2046
raise UnregisteredTarget (op , obj_type , type_map = type_map , path = path )
2048
2047
2049
2048
self ._type_cache [cache_key ] = ret
2050
-
2051
2049
return self ._type_cache [cache_key ]
2052
2050
2053
2051
def get_type_map (self , op ):
@@ -2071,6 +2069,8 @@ def _register_default_types(self):
2071
2069
self .register (dict , keys = dict .keys )
2072
2070
self .register (list , get = _get_sequence_item )
2073
2071
self .register (tuple , get = _get_sequence_item )
2072
+ self .register (OrderedDict , get = operator .getitem )
2073
+ self .register (OrderedDict , keys = OrderedDict .keys )
2074
2074
self .register (_AbstractIterable , iterate = iter )
2075
2075
self .register (_ObjStyleKeys , keys = _ObjStyleKeys .get_keys )
2076
2076
@@ -2165,7 +2165,7 @@ def register_op(self, op_name, auto_func=None, exact=False):
2165
2165
in self ._op_type_map .values ()], []))
2166
2166
type_map = self ._op_type_map .get (op_name , OrderedDict ())
2167
2167
type_tree = self ._op_type_tree .get (op_name , OrderedDict ())
2168
- for t in known_types :
2168
+ for t in sorted ( known_types , key = lambda t : t . __name__ ) :
2169
2169
if t in type_map :
2170
2170
continue
2171
2171
try :
0 commit comments