libaaron/libaaron.py
def deepupdate(
    mapping: abc.MutableMapping, other: abc.Mapping, listextend=False
):
    """update one dictionary from another recursively. Only individual
    values will be overwritten--not entire branches of nested
    dictionaries.
    """

    def inner(other, previouskeys):
        """previouskeys is a tuple that stores all the names of keys
        we've recursed into so far so it can they can be looked up
        recursively on the pimary mapping when a value needs updateing.
        """
        for key, value in other.items():
            if isinstance(value, abc.Mapping):
                inner(value, (*previouskeys, key))

            else:
                node = mapping
                for previouskey in previouskeys:
                    node = node.setdefault(previouskey, {})
                target = node.get(key)
                if (
                    listextend
                    and isinstance(target, abc.MutableSequence)
                    and isinstance(value, abc.Sequence)
                ):
                    target.extend(value)
                else:
                    node[key] = value

    inner(other, ())
def deepupdate(
    mapping: abc.MutableMapping, other: abc.Mapping, listextend=False
):
    """update one dictionary from another recursively. Only individual
    values will be overwritten--not entire branches of nested
    dictionaries.
    """

    def inner(other, previouskeys):
        """previouskeys is a tuple that stores all the names of keys
        we've recursed into so far so it can they can be looked up
        recursively on the pimary mapping when a value needs updateing.
        """
        for key, value in other.items():
            if isinstance(value, abc.Mapping):
                inner(value, (*previouskeys, key))

            else:
                node = mapping
                for previouskey in previouskeys:
                    node = node.setdefault(previouskey, {})
                target = node.get(key)
                if (
                    listextend
                    and isinstance(target, abc.MutableSequence)
                    and isinstance(value, abc.Sequence)
                ):
                    target.extend(value)
                else:
                    node[key] = value

    inner(other, ())
def deepupdate ( mapping : abc . MutableMapping , other : abc . Mapping , listextend = False ) : def inner ( other , previouskeys ) : """previouskeys is a tuple that stores all the names of keys
        we've recursed into so far so it can they can be looked up
        recursively on the pimary mapping when a value needs updateing.
        """ for key , value in other . items ( ) : if isinstance ( value , abc . Mapping ) : inner ( value , ( * previouskeys , key ) ) else : node = mapping for previouskey in previouskeys : node = node . setdefault ( previouskey , { } ) target = node . get ( key ) if ( listextend and isinstance ( target , abc . MutableSequence ) and isinstance ( value , abc . Sequence ) ) : target . extend ( value ) else : node [ key ] = value inner ( other , ( ) )
update one dictionary from another recursively. Only individual
    values will be overwritten--not entire branches of nested
    dictionaries.
update one dictionary from another recursively . Only individual values will be overwritten -- not entire branches of nested dictionaries .