Skip to content

Commit 71a8258

Browse files
committed
quick patch for ordereddicts as reported in #246
1 parent 85a7a3a commit 71a8258

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

glom/core.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1910,7 +1910,6 @@ def __subclasshook__(cls, C):
19101910
return callable(getattr(C, "__iter__", None))
19111911

19121912

1913-
19141913
class _ObjStyleKeysMeta(type):
19151914
def __instancecheck__(cls, C):
19161915
return hasattr(C, "__dict__") and hasattr(C.__dict__, "keys")
@@ -2047,7 +2046,6 @@ def get_handler(self, op, obj, path=None, raise_exc=True):
20472046
raise UnregisteredTarget(op, obj_type, type_map=type_map, path=path)
20482047

20492048
self._type_cache[cache_key] = ret
2050-
20512049
return self._type_cache[cache_key]
20522050

20532051
def get_type_map(self, op):
@@ -2071,6 +2069,8 @@ def _register_default_types(self):
20712069
self.register(dict, keys=dict.keys)
20722070
self.register(list, get=_get_sequence_item)
20732071
self.register(tuple, get=_get_sequence_item)
2072+
self.register(OrderedDict, get=operator.getitem)
2073+
self.register(OrderedDict, keys=OrderedDict.keys)
20742074
self.register(_AbstractIterable, iterate=iter)
20752075
self.register(_ObjStyleKeys, keys=_ObjStyleKeys.get_keys)
20762076

@@ -2165,7 +2165,7 @@ def register_op(self, op_name, auto_func=None, exact=False):
21652165
in self._op_type_map.values()], []))
21662166
type_map = self._op_type_map.get(op_name, OrderedDict())
21672167
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__):
21692169
if t in type_map:
21702170
continue
21712171
try:

0 commit comments

Comments
 (0)