Skip to content

Commit

Permalink
Deduplicate loop as per CR
Browse files Browse the repository at this point in the history
  • Loading branch information
albertvaka committed Jun 20, 2019
1 parent e70bcd4 commit 407d786
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions go_expvar/datadog_checks/go_expvar/go_expvar.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,31 +227,28 @@ def deep_get(self, content, keys, traversed_path=None):
if keys == []:
return [(traversed_path, content)]

results = []

key = keys[0]
if key.isalnum():
# key is not a regex, simply match for equality
for new_key, new_content in self.items(content):
if key == new_key:
results.extend(self.deep_get(new_content, keys[1:], traversed_path + [str(new_key)]))
matcher = key.__eq__
else:
# key might be a regex
key_rex = self._regexes.get(key)
if key_rex is None:
key_regex = self._regexes.get(key)
if key_regex is None:
# we don't have it cached, compile it
regex = "".join(["^", key, "$"])
regex = "^{}$".format(key)
try:
key_rex = re.compile(regex)
key_regex = re.compile(regex)
except Exception:
self.warning("Cannot compile regex: %s" % regex)
return []
self._regexes[key] = key_rex

for new_key, new_content in self.items(content):
if key_rex.match(new_key):
results.extend(self.deep_get(new_content, keys[1:], traversed_path + [str(new_key)]))
self._regexes[key] = key_regex
matcher = key_regex.match

results = []
for new_key, new_content in self.items(content):
if matcher(new_key):
results.extend(self.deep_get(new_content, keys[1:], traversed_path + [str(new_key)]))
return results

def items(self, object):
Expand Down

0 comments on commit 407d786

Please sign in to comment.