Source code for alphatwirl.heppyresult.Component
# Tai Sakuma <tai.sakuma@cern.ch>
##__________________________________________________________________||
import os
from .ReadComponentConfig import ReadComponentConfig
from .Analyzer import Analyzer
##__________________________________________________________________||
[docs]class Component(object):
def __init__(self, path):
self.path = path
self.name = os.path.basename(path)
self.analyzerNames = [n for n in os.listdir(self.path) if os.path.isdir(os.path.join(self.path, n))]
self._anaDict = { }
self._cfg = None
self._readConfig = ReadComponentConfig()
def __repr__(self):
name_value_pairs = (
('name', self.name),
)
return '{}({})'.format(
self.__class__.__name__,
', '.join(['{} = {!r}'.format(n, v) for n, v in name_value_pairs]),
)
def __getattr__(self, name):
if name not in self._anaDict:
if name not in self.analyzerNames:
raise AttributeError("'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
path = os.path.join(self.path, name)
self._anaDict[name] = Analyzer(path)
return self._anaDict[name]
def __getstate__(self):
return self.__dict__
def __setstate__(self, dict):
self.__dict__ = dict
[docs] def analyzers(self):
return [getattr(self, n) for n in self.analyzerNames]
[docs] def config(self):
if self._cfg is None:
path = os.path.join(self.path, 'config.txt')
self._cfg = self._readConfig(path)
return self._cfg
##__________________________________________________________________||