From c9b24f349dc28f4af37b633e7cf407035700011e Mon Sep 17 00:00:00 2001 From: Henning Glawe <glaweh@debian.org> Date: Mon, 1 Aug 2016 11:48:02 +0200 Subject: [PATCH] sort json dict keys and start/endRe events --- common/python/nomadcore/parser_backend.py | 20 ++++++++++---------- common/python/nomadcore/simple_parser.py | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/common/python/nomadcore/parser_backend.py b/common/python/nomadcore/parser_backend.py index a288197..f03d9ef 100644 --- a/common/python/nomadcore/parser_backend.py +++ b/common/python/nomadcore/parser_backend.py @@ -69,7 +69,7 @@ class JsonParseEventsWriterBackend(object): "data":self.stats} url = 'https://nomad-dev.rz-berlin.mpg.de/parsers/addStat' #url = 'http://127.0.0.1:8081/parsers/addStat' - data = json.dumps(stats) + data = json.dumps(stats, sort_keys=True) req = urllib.request.Request(url, data) response = urllib.request.urlopen(req) the_page = response.read() @@ -94,7 +94,7 @@ class JsonParseEventsWriterBackend(object): self.fileOut.write(", ") else: self.__writeComma = True - json.dump(dic, self.fileOut, indent = 2, separators = (',', ':')) # default = self.__numpyEncoder) + json.dump(dic, self.fileOut, indent = 2, separators = (',', ':'), sort_keys=True) # default = self.__numpyEncoder) def startedParsingSession(self, mainFileUri, parserInfo, parserStatus = None, parserErrors = None): """should be called when the parsing starts, parserInfo should be a valid json dictionary""" @@ -104,13 +104,13 @@ class JsonParseEventsWriterBackend(object): self.sessionParserStatus = parserStatus self.sessionParserErrors = parserErrors if mainFileUri is not None: - self.fileOut.write(",\n \"mainFileUri\": " + json.dumps(mainFileUri)) + self.fileOut.write(",\n \"mainFileUri\": " + json.dumps(mainFileUri, sort_keys=True)) if parserInfo is not None: - self.fileOut.write(",\n \"parserInfo\": " + json.dumps(parserInfo, indent = 2, separators = (',', ':'))) + self.fileOut.write(",\n \"parserInfo\": " + json.dumps(parserInfo, indent = 2, separators = (',', ':'), sort_keys=True)) if parserStatus is not None: - self.fileOut.write(",\n \"parserStatus\": " + json.dumps(parserStatus, indent = 2, separators = (',', ':'))) + self.fileOut.write(",\n \"parserStatus\": " + json.dumps(parserStatus, indent = 2, separators = (',', ':'), sort_keys=True)) if parserErrors is not None: - self.fileOut.write(",\n \"parserStatus\": " + json.dumps(parserErrors, indent = 2, separators = (',', ':'))) + self.fileOut.write(",\n \"parserStatus\": " + json.dumps(parserErrors, indent = 2, separators = (',', ':'), sort_keys=True)) self.fileOut.write(""", "events": [""") @@ -118,13 +118,13 @@ class JsonParseEventsWriterBackend(object): """should be called when the parsing finishes""" self.fileOut.write("]") if mainFileUri is not None and self.sessionMainFileUri is None: - self.fileOut.write(",\n \"mainFileUri\": " + json.dumps(mainFileUri)) + self.fileOut.write(",\n \"mainFileUri\": " + json.dumps(mainFileUri, sort_keys=True)) if parserInfo is not None and self.sessionParserInfo is None: - self.fileOut.write(",\n \"parserInfo\": " + json.dumps(parserInfo, indent = 2, separators = (',', ':'))) + self.fileOut.write(",\n \"parserInfo\": " + json.dumps(parserInfo, indent = 2, separators = (',', ':'), sort_keys=True)) if parserStatus is not None and self.sessionParserStatus is None: - self.fileOut.write(",\n \"parserStatus\": " + json.dumps(parserStatus, indent = 2, separators = (',', ':'))) + self.fileOut.write(",\n \"parserStatus\": " + json.dumps(parserStatus, indent = 2, separators = (',', ':'), sort_keys=True)) if parserErrors is not None and self.sessionParserErrors is None: - self.fileOut.write(",\n \"parserErrors\": " + json.dumps(parserErrors, indent = 2, separators = (',', ':'))) + self.fileOut.write(",\n \"parserErrors\": " + json.dumps(parserErrors, indent = 2, separators = (',', ':'), sort_keys=True)) self.fileOut.write(""" }""") self.fileOut.flush() diff --git a/common/python/nomadcore/simple_parser.py b/common/python/nomadcore/simple_parser.py index 33664bc..d19e1c6 100644 --- a/common/python/nomadcore/simple_parser.py +++ b/common/python/nomadcore/simple_parser.py @@ -581,14 +581,14 @@ class CompiledMatcher(object): raise Exception("Expected to match %s on %r" % (self.startRe.pattern, line)) self.annotate(m,line,parser,self.matcher,0) result_dict = {} - for k,v in m.groupdict().items(): + for k,v in sorted(m.groupdict().items()): if v is None: # a group may be optional (subexpression of ? or | in regex) continue k_converted, v_converted = self.addStrValue(parser.backend, k, v) result_dict[k_converted] = v_converted if self.matcher.fixedStartValues: - for k,v in self.matcher.fixedStartValues.items(): + for k,v in sorted(self.matcher.fixedStartValues.items()): k_converted, v_converted = self.addStrValue(parser.backend, k, v) result_dict[k_converted] = v_converted if self.matcher.forwardMatch: @@ -601,14 +601,14 @@ class CompiledMatcher(object): m = self.endRe.match(line) #, re.MULTILINE) self.annotate(m,line,parser,self.matcher,1) result_dict = {} - for k,v in m.groupdict().items(): + for k,v in sorted(m.groupdict().items()): if v is None: # a group may be optional (subexpression of ? or | in regex) continue k_converted, v_converted = self.addStrValue(parser.backend, k, v) result_dict[k_converted] = v_converted if self.matcher.fixedEndValues: - for k,v in self.matcher.fixedEndValues.items(): + for k,v in sorted(self.matcher.fixedEndValues.items()): k_converted, v_converted = self.addStrValue(parser.backend, k, v) result_dict[k_converted] = v_converted return result_dict -- GitLab