From 80ca9ff294487367ff1b2b7307bf0963edaa5cc1 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Thu, 5 Oct 2017 19:31:44 -0400 Subject: [PATCH] handle callbacks depth-first in DataWalker --- koji/util.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/koji/util.py b/koji/util.py index 7d805042..ba999a7d 100644 --- a/koji/util.py +++ b/koji/util.py @@ -166,22 +166,20 @@ class DataWalker(object): return self._walk(self.data) def _walk(self, value): - # first let callback filter the value - value = self.callback(value, **self.kwargs) - # then recurse if needed + # recurse if needed if isinstance(value, tuple): - return tuple([self._walk(x) for x in value]) + value = tuple([self._walk(x) for x in value]) elif isinstance(value, list): - return list([self._walk(x) for x in value]) + value = list([self._walk(x) for x in value]) elif isinstance(value, dict): ret = {} for k in value: k = self._walk(k) v = self._walk(value[k]) ret[k] = v - return ret - else: - return value + value = ret + # finally, let callback filter the value + return self.callback(value, **self.kwargs) def encode_datetime(value):