diff --git a/arraycontext/container/traversal.py b/arraycontext/container/traversal.py index 21599ffcb0505060ce1d588e85429bc507ac6a16..c9ac2d545012fe5921ca9fd501a03212c34f955e 100644 --- a/arraycontext/container/traversal.py +++ b/arraycontext/container/traversal.py @@ -271,8 +271,17 @@ def _keyed_map_array_container_impl( if type(_ary) is leaf_cls: # type(ary) is never None return f(keys, _ary) elif is_array_container(_ary): + def _tuple_if_not_tuple(x): + if not isinstance(x, tuple): + assert isinstance(x, (str, int)) + return x, + else: + assert all(isinstance(el, (str, int)) + for el in x) + return x + return deserialize_container(_ary, [ - (key, frec(keys+(key,), subary)) + (key, frec(keys+_tuple_if_not_tuple(key), subary)) for key, subary in serialize_container(_ary) ]) else: