Source code for obci.analysis.obci_signal_processing.signal.read_info_source

#!/usr/bin/env python3
# Author:
#     Mateusz KruszyƄski <mateusz.kruszynski@gmail.com>
#
import copy
from . import info_file_proxy
from . import signal_logging as logger
from . import signal_exceptions
LOGGER = logger.get_logger("read_info_source", "info")


[docs]class InfoSource(object):
[docs] def get_param(self, p_key): LOGGER.error("The method must be subclassed")
[docs] def get_params(self): LOGGER.error("The method must be subclassed")
[docs] def set_params(self, p_params): LOGGER.error("The method must be subclassed")
[docs] def update_params(self, p_params): LOGGER.error("The method must be subclassed")
[docs] def set_param(self, k, v): LOGGER.error("The method must be subclassed")
[docs] def reset_params(self): LOGGER.error("The method must be subclassed")
def __deepcopy__(self, memo): return MemoryInfoSource(copy.deepcopy(self.get_params()))
[docs]class MemoryInfoSource(InfoSource): def __init__(self, p_params={}): self._params = None self.set_params(p_params)
[docs] def set_params(self, p_params): self._params = dict(p_params)
[docs] def reset_params(self): self.set_params({})
[docs] def update_params(self, p_params): for k, v in p_params.items(): self.set_param(k, v)
[docs] def set_param(self, p_key, p_value): self._params[p_key] = p_value
[docs] def get_param(self, p_key): try: return self._params[p_key] except KeyError: raise signal_exceptions.NoParameter(p_key)
[docs] def get_params(self): return self._params
[docs]class FileInfoSource(InfoSource): def __init__(self, p_file): self._memory_source = None try: '' + p_file LOGGER.debug("Got file path.") self._info_proxy = info_file_proxy.InfoFileReadProxy(p_file) except TypeError: LOGGER.debug("Got file proxy.") self._info_proxy = p_file
[docs] def get_param(self, p_key): if self._memory_source is None: return self._info_proxy.get_param(p_key) else: return self._memory_source.get_param(p_key)
[docs] def get_params(self): if self._memory_source is None: return self._info_proxy.get_params() else: return self._memory_source.get_params()
def _get_memory_source(self): if self._memory_source is None: self._memory_source = MemoryInfoSource(self._info_proxy.get_params()) return self._memory_source
[docs] def set_param(self, k, v): self._get_memory_source().set_param(k, v)
[docs] def set_params(self, p_params): self._get_memory_source().set_params(p_params)
[docs] def update_params(self, p_params): self._get_memory_source().update_params(p_params)
[docs] def reset_params(self): self._get_memory_source().reset_params()