From caf80449e25cf6f8d908cd3b06d19b8619bc4d28 Mon Sep 17 00:00:00 2001 From: Mark Jacobson <35484465+mark-saeon@users.noreply.github.com> Date: Thu, 5 Jul 2018 13:51:51 +0200 Subject: [PATCH] Fix iteration over a mutating list --- ckanext/metadata/jsonschema_validation.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ckanext/metadata/jsonschema_validation.py b/ckanext/metadata/jsonschema_validation.py index f02494c..79312a4 100644 --- a/ckanext/metadata/jsonschema_validation.py +++ b/ckanext/metadata/jsonschema_validation.py @@ -26,18 +26,26 @@ def validate(instance, schema): def clear_empties(node): + """ + Recursively remove empty elements from the instance tree. + """ if type(node) is dict: + # iterate over a copy of the dict's keys, as we are deleting keys during iteration for element in node.keys(): clear_empties(node[element]) if not node[element]: del node[element] elif type(node) is list: - for element in node: + # iterate over a copy of the list, as we are deleting elements during iteration + for element in list(node): clear_empties(element) if not element: node.remove(element) def add_error(node, path, message): + """ + Add an error message to the error tree. + """ if path: element = path.popleft() else: