diff --git a/common/python/nomadcore/caching_backend.py b/common/python/nomadcore/caching_backend.py index 78eeb8717eadc88eeb989f761d2d0bfeb92bb8f8..9391cd68f77247b62b9c75f76ffa8069afdb6daf 100644 --- a/common/python/nomadcore/caching_backend.py +++ b/common/python/nomadcore/caching_backend.py @@ -338,6 +338,12 @@ class ActiveBackend(object): if self.propagateStartFinishParsing and self.superBackend: self.superBackend.finishedParsingSession(parsingStatus, parsingErrors, mainFileUri, parserInfo) + def addMatchTelemetry(self, match_telemetry, gIndex = -1): + """ should be called for outputting match telemetry data: + input data, together with capture info """ + if self.superBackend: + self.superBackend.addMatchTelemetry(match_telemetry, gIndex) + def metaInfoEnv(self): """the metaInfoEnv this parser was optimized for""" return self.__metaInfoEnv diff --git a/common/python/nomadcore/local_backend.py b/common/python/nomadcore/local_backend.py index 2a7e54eba73210be90d6847d8476601e45022b50..23eecc4ccd0f442d9da3b510ae6359e18811fd51 100644 --- a/common/python/nomadcore/local_backend.py +++ b/common/python/nomadcore/local_backend.py @@ -201,6 +201,10 @@ class LocalBackend(object): """ pass + def addMatchTelemetry(self, match_telemetry, gIndex = -1): + """ should be called for outputting match telemetry data: + input data, together with capture info """ + pass #=============================================================================== class Results(object): diff --git a/common/python/nomadcore/parser_backend.py b/common/python/nomadcore/parser_backend.py index 4365c83eba25908adfa8b3835843070ab4be70bd..92687d4e4ff9bcbe326660c9729da74a8c04cd18 100644 --- a/common/python/nomadcore/parser_backend.py +++ b/common/python/nomadcore/parser_backend.py @@ -235,6 +235,21 @@ class JsonParseEventsWriterBackend(object): } self.__jsonOutput(res) + def addMatchTelemetry(self, match_telemetry, gIndex = -1): + if not self.writeMatchTelemetry: + return + res = { + 'event': "matchTelemetry", + 'gIndex': gIndex, + 'line': match_telemetry['line'], + 'lineNr': match_telemetry['lineNr'], + 'matcherName': match_telemetry['matcherName'], + 'matchFlags': match_telemetry['matchFlags'], + 'flat_values': match_telemetry['span_flat'], + 'group': match_telemetry['group'], + } + self.__jsonOutput(res) + def convertScalarStringValue(self, metaName, strValue): """converts a scalar string value of the given meta info to a python value""" metaInfo = self.metaInfoEnv().infoKindEl(metaName)