Don't unnecessarily recast lists and dicts
[mudpy.git] / lib / mudpy / misc.py
index 1f3909b..c6fd97d 100644 (file)
@@ -104,7 +104,7 @@ class Element:
         if self.origin._format == "yaml":
             try:
                 return self.origin.data[self.key].keys()
-            except KeyError:
+            except (AttributeError, KeyError):
                 return []
         else:
             if self.key in self.origin.data.sections():
@@ -143,7 +143,7 @@ class Element:
         if self.origin._format == "yaml":
             try:
                 return self.origin.data[self.key][facet]
-            except KeyError:
+            except (KeyError, TypeError):
                 pass
             if self.has_facet("inherit"):
                 for ancestor in self.ancestry():
@@ -224,7 +224,10 @@ class Element:
             default = []
         value = self.get(facet)
         if value:
-            return mudpy.data.makelist(value)
+            if type(value) is list:
+                return value
+            else:
+                return mudpy.data.makelist(value)
         else:
             return default
 
@@ -234,7 +237,10 @@ class Element:
             default = {}
         value = self.get(facet)
         if value:
-            return mudpy.data.makedict(value)
+            if type(value) is dict:
+                return value
+            else:
+                return mudpy.data.makedict(value)
         else:
             return default