Source code for sceptre.config.strategies

# -*- coding: utf-8 -*-

"""
sceptre.config.strategies

This module contains the implementations of the strategies used to merge config
attributes.
"""
from copy import deepcopy


[docs]def list_join(a, b): """ Takes two lists and joins them. :param a: A list. :type a: list :param b: A list. :type b: list :returns: A joined list from the two parameters. :rtype: list """ if a and not isinstance(a, list): raise TypeError("{} is not a list".format(a)) if b and not isinstance(b, list): raise TypeError("{} is not a list".format(b)) if a is None: return deepcopy(b) if b is not None: return deepcopy(a + b) return deepcopy(a)
[docs]def dict_merge(a, b): """ Takes two dictionaries and merges them. :param a: A dictionary. :type a: dict :param b: A dictionary. :type b: dict :returns: A merged dict. :rtype: dict """ if a and not isinstance(a, dict): raise TypeError("{} is not a dict".format(a)) if b and not isinstance(b, dict): raise TypeError("{} is not a dict".format(b)) if a is None: return deepcopy(b) if b is not None: return deepcopy({**a, **b}) return deepcopy(a)
[docs]def child_wins(a, b): """ Always returns the second parameter. :param a: An object. :type a: object :param b: An object. :type b: object :returns: b """ return b