diff --git a/evennia/commands/default/building.py b/evennia/commands/default/building.py index 40f1b6037..88138eb9c 100644 --- a/evennia/commands/default/building.py +++ b/evennia/commands/default/building.py @@ -4241,23 +4241,23 @@ class CmdSpawn(COMMAND_DEFAULT_CLASS): # treat as string eval_err = err prototype = utils.to_str(inp) - finally: - # it's possible that the input was a prototype-key, in which case - # it's okay for the LITERAL_EVAL to fail. Only if the result does not - # match the expected type do we have a problem. - if not isinstance(prototype, expect): - if eval_err: - string = ( - f"{inp}\n{eval_err}\n|RCritical Python syntax error in argument. Only" - " primitive Python structures are allowed. \nMake sure to use correct" - " Python syntax. Remember especially to put quotes around all strings" - " inside lists and dicts.|n For more advanced uses, embed funcparser" - " callables ($funcs) in the strings." - ) - else: - string = f"Expected {expect}, got {type(prototype)}." - self.msg(string) - return + + # it's possible that the input was a prototype-key, in which case + # it's okay for the LITERAL_EVAL to fail. Only if the result does not + # match the expected type do we have a problem. + if not isinstance(prototype, expect): + if eval_err: + string = ( + f"{inp}\n{eval_err}\n|RCritical Python syntax error in argument. Only" + " primitive Python structures are allowed. \nMake sure to use correct" + " Python syntax. Remember especially to put quotes around all strings" + " inside lists and dicts.|n For more advanced uses, embed funcparser" + " callables ($funcs) in the strings." + ) + else: + string = f"Expected {expect}, got {type(prototype)}." + self.msg(string) + return if expect == dict: # an actual prototype. We need to make sure it's safe,