diff options
Diffstat (limited to 'qtip/loader')
-rw-r--r-- | qtip/loader/base.py | 15 | ||||
-rw-r--r-- | qtip/loader/plan.py | 5 | ||||
-rw-r--r-- | qtip/loader/qpi.py | 14 |
3 files changed, 18 insertions, 16 deletions
diff --git a/qtip/loader/base.py b/qtip/loader/base.py index d3a7e1d3..a0e5d031 100644 --- a/qtip/loader/base.py +++ b/qtip/loader/base.py @@ -7,13 +7,14 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from collections import defaultdict from itertools import chain from os import listdir from os import path import yaml from qtip.base.error import InvalidFormat, NotFound -from qtip.base.constant import PropName +from qtip.base.constant import BaseProp ROOT_DIR = path.join(path.dirname(__file__), path.pardir, path.pardir, @@ -28,15 +29,15 @@ class BaseLoader(object): def __init__(self, name, paths=None): self._file = name self._abspath = self._find(name, paths=paths) + content = defaultdict(lambda: None) try: - content = yaml.safe_load(file(self._abspath)) + content.update(yaml.safe_load(file(self._abspath))) except yaml.YAMLError: # TODO(yujunz) log yaml error raise InvalidFormat(self._abspath) - self.name = content[PropName.NAME] if PropName.NAME in content \ - else path.splitext(name)[0] + self.name = content[BaseProp.NAME] or path.splitext(name)[0] self.content = content def _find(self, name, paths=None): @@ -57,6 +58,6 @@ class BaseLoader(object): for name in names: item = cls(name, paths=paths) yield { - PropName.NAME: name, - PropName.ABSPATH: item._abspath, - PropName.CONTENT: item.content} + BaseProp.NAME: name, + BaseProp.ABSPATH: item._abspath, + BaseProp.CONTENT: item.content} diff --git a/qtip/loader/plan.py b/qtip/loader/plan.py index cf517ea2..c1ee00be 100644 --- a/qtip/loader/plan.py +++ b/qtip/loader/plan.py @@ -8,7 +8,7 @@ ############################################################################## -from qtip.base.constant import PropName +from qtip.base.constant import PlanProp from qtip.loader.base import BaseLoader from qtip.loader.qpi import QPISpec @@ -24,4 +24,5 @@ class Plan(BaseLoader): super(Plan, self).__init__(name, paths) self.qpis = [QPISpec(qpi, paths=paths) - for qpi in self.content[PropName.QPIS]] + for qpi in self.content[PlanProp.QPIS]] + self.info = self.content[PlanProp.INFO] diff --git a/qtip/loader/qpi.py b/qtip/loader/qpi.py index fe2323dd..ef6e065e 100644 --- a/qtip/loader/qpi.py +++ b/qtip/loader/qpi.py @@ -10,7 +10,7 @@ from base import BaseLoader from metric import MetricSpec -from qtip.base.constant import PropName +from qtip.base.constant import SpecProp from qtip.util.formula import Formula @@ -24,15 +24,15 @@ class QPISpec(BaseLoader): def __init__(self, name, paths=None): super(QPISpec, self).__init__(name, paths=paths) content = self.content - self.formula = Formula(content[PropName.FORMULA]) + self.formula = Formula(content[SpecProp.FORMULA]) self.sections = [Section(record, paths=paths) - for record in content[PropName.SECTIONS]] + for record in content[SpecProp.SECTIONS]] class Section(object): def __init__(self, content, paths=None): - self.name = content[PropName.NAME] - self.weight = content[PropName.WEIGHT] - self.formula = Formula(content[PropName.FORMULA]) + self.name = content[SpecProp.NAME] + self.weight = content[SpecProp.WEIGHT] + self.formula = Formula(content[SpecProp.FORMULA]) self.metrics = [MetricSpec(record, paths=paths) - for record in content[PropName.METRICS]] + for record in content[SpecProp.METRICS]] |