<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_attached_preparation_wait_kwargs(self, action, container_name, kwargs=None):
 """ Generates keyword arguments for waiting for a container when preparing a volume. The container name may be the container being prepared, or the id of the container calling preparation commands. :param action: Action configuration. :type action: dockermap.map.runner.ActionConfig :param container_name: Container name or id. Set ``None`` when included in kwargs for ``create_container``. :type container_name: unicode | str | NoneType :param kwargs: Additional keyword arguments to complement or override the configuration-based values. :type kwargs: dict | NoneType :return: Resulting keyword arguments. :rtype: dict """

        c_kwargs = dict(container=container_name)
        client_config = action.client_config
        c_kwargs = dict(container=container_name)
        wait_timeout = client_config.get('wait_timeout')
        if wait_timeout is not None:
            c_kwargs['timeout'] = wait_timeout
        update_kwargs(c_kwargs, kwargs)
        return c_kwargs