blob: ffd462f4eb72b1685e2150b9399c01da8ccd66e1 [file] [edit]
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import importlib
import sys
# TODO(#3613): Flatten this to a list once diagnostics are in their own modules.
_MODULES_BY_DIAGNOSTIC_NAME = {
'Breakdown': 'diagnostics.breakdown',
'GenericSet': 'diagnostics.generic_set',
'UnmergeableDiagnosticSet': 'diagnostics.unmergeable_diagnostic_set',
'RelatedEventSet': 'diagnostics.related_event_set',
'DateRange': 'diagnostics.date_range',
'RelatedNameMap': 'diagnostics.related_name_map',
}
_CLASSES_BY_NAME = {}
def IsDiagnosticTypename(name):
return name in _MODULES_BY_DIAGNOSTIC_NAME
def GetDiagnosticTypenames():
return list(_MODULES_BY_DIAGNOSTIC_NAME.keys())
def GetDiagnosticClassForName(name):
assert IsDiagnosticTypename(name), name
if name in _CLASSES_BY_NAME:
return _CLASSES_BY_NAME[name]
module_name = 'tracing.value.%s' % _MODULES_BY_DIAGNOSTIC_NAME[name]
importlib.import_module(module_name)
cls = getattr(sys.modules[module_name], name)
_CLASSES_BY_NAME[name] = cls
return cls