From 54f368c7a5f9be11c64989dd360092b4a9f52c8d Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Mon, 14 Jun 2021 00:40:48 -0500
Subject: [PATCH] map_array_container: Use execption to decide whether we have
 a container

---
 arraycontext/container/traversal.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/arraycontext/container/traversal.py b/arraycontext/container/traversal.py
index 2ceb9f9..5dd68af 100644
--- a/arraycontext/container/traversal.py
+++ b/arraycontext/container/traversal.py
@@ -166,12 +166,13 @@ def map_array_container(
     :param ary: a (potentially nested) structure of :class:`ArrayContainer`\ s,
         or an instance of a base array type.
     """
-    if is_array_container(ary):
-        return deserialize_container(ary, [
-                (key, f(subary)) for key, subary in serialize_container(ary)
-                ])
-    else:
+    try:
+        ser_ctr = serialize_container(ary)
+    except TypeError:
         return f(ary)
+    else:
+        return deserialize_container(ary, [
+                (key, f(subary)) for key, subary in ser_ctr])
 
 
 def multimap_array_container(f: Callable[..., Any], *args: Any) -> Any:
-- 
GitLab