Source code for poppy.core.properties

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from poppy.core.logger import logger

from poppy.core.generic.dot_dict import SimpleDotDict

__all__ = ["Properties"]




[docs]class Properties(SimpleDotDict): """ Class for storing parameters used in the pipeline. Tasks in the pipeline should share parameters and targets through this dictionary like. """ def __init__(self, *args, **kwargs): # init as usual super(Properties, self).__init__(*args, **kwargs) def __getattr__(self, item): return self.__getitem__(item) def __setattr__(self, item, value): return self.__setitem__(item, value) def __add__(self, other): """ To be able to merge two properties by adding them to each other. """ self.update(other) return self def __radd__(self, other): """ Same as __add__ but in the other order. The properties at most right in the merging is preponderant. """ other.update(self) return other def __iadd__(self, other): """ Incrementation. """ self.update(other) return self
[docs] def to_bag(self): """ Transform the data inside the properties into a bag instance containing the top level properties. """ class Bag: pass bag = Bag() for key, value in self.items(): setattr(bag, key, value) return bag