human
I wrote the below code

    lights = {}
    @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS)
    def update_lights():
        'Update    the    lights    objects    with    latest    info    from    bridge.'
        try:
            bridge.update_all_light_status()
            bridge.update_group_list()
        except TimeoutError:
            _LOGGER.error('Timeout    during    updating    of    lights.')
        except OSError:
            _LOGGER.error('OSError    during    updating    of    lights.')
        new_lights = []
        for (light_id, light) in bridge.lights().items():
            if (light_id not in lights):
                osram_light = OsramLightifyLight(light_id, light, update_lights)
                lights[light_id] = osram_light
                new_lights.append(osram_light)
            else:
                lights[light_id].light = light
        if add_groups:
            for (group_name, group) in bridge.groups().items():
                if (group_name not in lights):
                    osram_group = OsramLightifyGroup(group, bridge, update_lights)
                    lights[group_name] = osram_group
                    new_lights.append(osram_group)
                else:
                    lights[group_name].group = group
        if new_lights:
            add_devices_callback(new_lights)
    update_lights()

What's a good function header?
 ... Here's a good function header?
assistant
#Here's a good function header.

def setup_bridge(bridge, add_devices_callback, add_groups):