def kwarg_adder(func):
    """
    Decorator to add the kwargs from the client to the kwargs at the function level. If the same
    parameters are used in both, the function level kwarg will supersede the one at the client level.

    :param func: client function to add client kwargs to
    :return: the function with updated kwargs
    """
    def decorated(self, *args, **function_kwarg):
        if hasattr(self, 'client_kwargs'):
            client_args = {key: val for key, val in self.client_kwargs.items()
                           if key not in function_kwarg.keys()}

            function_kwarg.update(client_args)
        return func(self, *args, **function_kwarg)

    return decorated