self._cfg_yaml = None
self._specification = {"environment": dict(),
+ "configuration": dict(),
"debug": dict(),
"static": dict(),
"input": dict(),
"""
return self._specification["environment"]
+ @property
+ def configuration(self):
+ """Getter - configuration.
+
+ :returns: Configuration of PAL.
+ :rtype: dict
+ """
+ return self._specification["configuration"]
+
@property
def static(self):
"""Getter - static content.
logging.info("Done.")
+ def _parse_configuration(self):
+ """Parse configuration of PAL in the specification YAML file.
+ """
+
+ logging.info("Parsing specification file: configuration ...")
+
+ idx = self._get_type_index("configuration")
+ if idx is None:
+ logging.warning("No configuration information in the specification "
+ "file.")
+ return None
+
+ try:
+ self._specification["configuration"] = self._cfg_yaml[idx]
+ except KeyError:
+ raise PresentationError("No configuration defined.")
+
+ logging.info("Done.")
+
def _parse_debug(self):
"""Parse debug specification in the specification YAML file.
"""
self._specification["environment"]["paths"])
except KeyError:
pass
+
+ # add data sets to the elements:
+ if isinstance(element.get("data", None), str):
+ data_set = element["data"]
+ try:
+ element["data"] = self.configuration["data-sets"][data_set]
+ except KeyError:
+ raise PresentationError("Data set {0} is not defined in "
+ "the configuration section.".
+ format(data_set))
+
if element["type"] == "table":
logging.info(" {:3d} Processing a table ...".format(count))
try:
pass
self._specification["tables"].append(element)
count += 1
+
elif element["type"] == "plot":
logging.info(" {:3d} Processing a plot ...".format(count))
+
+ # Add layout to the plots:
+ layout = element["layout"].get("layout", None)
+ if layout is not None:
+ element["layout"].pop("layout")
+ try:
+ for key, val in (self.configuration["plot-layouts"]
+ [layout].items()):
+ element["layout"][key] = val
+ except KeyError:
+ raise PresentationError("Layout {0} is not defined in "
+ "the configuration section.".
+ format(layout))
self._specification["plots"].append(element)
count += 1
+
elif element["type"] == "file":
logging.info(" {:3d} Processing a file ...".format(count))
try:
details=str(err))
self._parse_env()
+ self._parse_configuration()
self._parse_debug()
if not self.debug:
self._parse_input()