Module ploigos_step_runner.config.config_value
Representation of a configuration value.
Classes
class ConfigValue (value, parent_source=None, path_parts=None)
-
Representation of a configuration value.
Parameters
value
:any
- The value of the config option this is the value for.
parent_source
:str file path
ordict
- Path to the YML or JSON file that this value is found in or the dict that this value is found in.
path_parts
:list
- List of path to the element that this is the value for.
Attributes
__value
:any
- The value of the config option this is the value for.
__parent_source
:str file path
ordict
- Path to the YML or JSON file that this value is found in or the dict that this value is found in.
__path_parts
:list
- List of path to the element that this is the value for.
Expand source code
class ConfigValue: """Representation of a configuration value. Parameters ---------- value : any The value of the config option this is the value for. parent_source : str file path or dict Path to the YML or JSON file that this value is found in or the dict that this value is found in. path_parts : list List of path to the element that this is the value for. Attributes ---------- __value : any The value of the config option this is the value for. __parent_source : str file path or dict Path to the YML or JSON file that this value is found in or the dict that this value is found in. __path_parts : list List of path to the element that this is the value for. """ def __init__(self, value, parent_source=None, path_parts=None): self.__value = value self.__parent_source = parent_source self.__path_parts = path_parts if self.__path_parts is None: self.__path_parts = [] @property def value(self): """Get the value of this configuration value (decrypted if applicable). If the value happens to be decrypted then will decrypt and then return the decrypted value. Returns ------- obj Value (decrypted if applicable) of this configuration value. See Also -------- raw_value """ # attemp tto decrypt the value decrypted_value = DecryptionUtils.decrypt(self) # If this value was able to be decrypted, return the decrypted result # else return the raw value if decrypted_value is not None: value = decrypted_value else: value = self.raw_value return value @property def raw_value(self): """Get the value of this configuration value as originally given. If the value happens to be encrypted this will return that raw encrypted value as it was given to this configuration value. Returns ------- obj Value of this configuration value as originally given. See Also -------- value """ return copy.deepcopy(self.__value) @property def path_parts(self): """Gets copy of the list of path to the element that this is the value for. Returns ------- list Copy of the list of path to the element that this is the value for. """ return copy.deepcopy(self.__path_parts) @property def parent_source(self): """Get a copy of the source that this configuration value came from. Returns ------- str file path or dict Path to the YML or JSON file that this value is found in or the dict that this value is found in. """ return copy.deepcopy(self.__parent_source) def __eq__(self, other): """Equality for this object. Parameters ---------- other : object other object to determine if equal to this object Returns ------- bool True if this and the other object are both ConfigValue objects and have the same value. False otherwise. """ if isinstance(other, ConfigValue): equal = self.value == other.value else: equal = False return equal def __repr__(self): """Human readable representation of the object. Returns ------- str Human readable representation of the object. """ return f"ConfigValue(value={self.raw_value}, value_path='{self.path_parts}')" @staticmethod def convert_leaves_to_config_values(values, parent_source=None, path_parts=None): """In place recursively change all of the leaves of the given object to a ConfigValue objects. Parameters ---------- values : dict, list, tuple, ConfigValue, None, obj Change all the leaves of the given object to ConfigValue objects. parent_source : str file path or dict Path to the YML or JSON file that this value is found in or the dict that this value is found in. path_parts : list List of path to the element that this is the value for. Returns ------- dict, list, None, or ConfigValue If given values is a a dict then returns the same dict with all of the leaf values changed to ConfigValue or None if already None. If given values is list then returns the same list with all of the leaf values changes to ConfigValue or None if already None. If given values is None, return None. If given values is already a ConfigValue return the same ConfigValue See Also -------- ConfigValue.convert_leaves_to_config_values """ if path_parts is None: path_parts = [] if isinstance(values, dict): # pylint: disable=no-else-return for child_key in values: values[child_key] = ConfigValue.convert_leaves_to_config_values( values=values[child_key], parent_source=parent_source, path_parts=(path_parts + [child_key]) ) return values elif isinstance(values, (list, tuple)): for child_key, child_value in enumerate(values): values[child_key] = ConfigValue.convert_leaves_to_config_values( values=child_value, parent_source=parent_source, path_parts=(path_parts + [child_key]) ) return values elif isinstance(values, ConfigValue): return values elif values is None: return None else: return ConfigValue( value=values, parent_source=parent_source, path_parts=path_parts ) @staticmethod def convert_leaves_to_values(values): """Recursively transforms all leaves of type ConfigValue to ConfigValue.value Parameters ---------- values : dict, list, ConfigValue, or obj A collection where the leaves contain ConfigValue to transform back to ConfigValue.value Returns ------- dict, list, or obj If given a dictionary returns that dictionary with all leaves transformed from ConfigValue to ConfigValue.value. If given a list returns that dictionary with all leaves transformed from ConfigValue to ConfigValue.value. If given a ConfigValue returns ConfigValue.value If any other object returns that object See Also -------- ConfigValue.convert_leaves_to_config_values """ if isinstance(values, dict): # pylint: disable=no-else-return for child_key in values: values[child_key] = ConfigValue.convert_leaves_to_values(values[child_key]) return values elif isinstance(values, (list, tuple)): for child_key, child_value in enumerate(values): values[child_key] = ConfigValue.convert_leaves_to_values(child_value) return values elif isinstance(values, ConfigValue): return values.value else: return values
Static methods
def convert_leaves_to_config_values(values, parent_source=None, path_parts=None)
-
In place recursively change all of the leaves of the given object to a ConfigValue objects.
Parameters
values
:dict, list, tuple, ConfigValue, None, obj
- Change all the leaves of the given object to ConfigValue objects.
parent_source
:str file path
ordict
- Path to the YML or JSON file that this value is found in or the dict that this value is found in.
path_parts
:list
- List of path to the element that this is the value for.
Returns
dict, list, None,
orConfigValue
- If given values is a a dict then returns the same dict with all of the leaf values changed to ConfigValue or None if already None. If given values is list then returns the same list with all of the leaf values changes to ConfigValue or None if already None. If given values is None, return None. If given values is already a ConfigValue return the same ConfigValue
See Also
def convert_leaves_to_values(values)
-
Recursively transforms all leaves of type ConfigValue to ConfigValue.value
Parameters
values
:dict, list, ConfigValue,
orobj
- A collection where the leaves contain ConfigValue to transform back to ConfigValue.value
Returns
dict, list,
orobj
- If given a dictionary returns that dictionary with all leaves transformed from ConfigValue to ConfigValue.value. If given a list returns that dictionary with all leaves transformed from ConfigValue to ConfigValue.value. If given a ConfigValue returns ConfigValue.value If any other object returns that object
See Also
Instance variables
prop parent_source
-
Get a copy of the source that this configuration value came from.
Returns
str file path
ordict
- Path to the YML or JSON file that this value is found in or the dict that this value is found in.
Expand source code
@property def parent_source(self): """Get a copy of the source that this configuration value came from. Returns ------- str file path or dict Path to the YML or JSON file that this value is found in or the dict that this value is found in. """ return copy.deepcopy(self.__parent_source)
prop path_parts
-
Gets copy of the list of path to the element that this is the value for.
Returns
list
- Copy of the list of path to the element that this is the value for.
Expand source code
@property def path_parts(self): """Gets copy of the list of path to the element that this is the value for. Returns ------- list Copy of the list of path to the element that this is the value for. """ return copy.deepcopy(self.__path_parts)
prop raw_value
-
Get the value of this configuration value as originally given.
If the value happens to be encrypted this will return that raw encrypted value as it was given to this configuration value.
Returns
obj
- Value of this configuration value as originally given.
See Also
value
Expand source code
@property def raw_value(self): """Get the value of this configuration value as originally given. If the value happens to be encrypted this will return that raw encrypted value as it was given to this configuration value. Returns ------- obj Value of this configuration value as originally given. See Also -------- value """ return copy.deepcopy(self.__value)
prop value
-
Get the value of this configuration value (decrypted if applicable).
If the value happens to be decrypted then will decrypt and then return the decrypted value.
Returns
obj
- Value (decrypted if applicable) of this configuration value.
See Also
raw_value
Expand source code
@property def value(self): """Get the value of this configuration value (decrypted if applicable). If the value happens to be decrypted then will decrypt and then return the decrypted value. Returns ------- obj Value (decrypted if applicable) of this configuration value. See Also -------- raw_value """ # attemp tto decrypt the value decrypted_value = DecryptionUtils.decrypt(self) # If this value was able to be decrypted, return the decrypted result # else return the raw value if decrypted_value is not None: value = decrypted_value else: value = self.raw_value return value