<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def all_composite_ids(self, sensor_names=None):
 """Get all composite IDs that are configured. Returns: generator of configured composite names """

        if sensor_names is None:
            sensor_names = self.attrs['sensor']
        compositors = []
        # Note if we get compositors from the dep tree then it will include
        # modified composites which we don't want
        for sensor_name in sensor_names:
            sensor_comps = self.cpl.compositors.get(sensor_name, {}).keys()
            # ignore inline compositor dependencies starting with '_'
            compositors.extend(c for c in sensor_comps if not c.name.startswith('_'))
        return sorted(set(compositors))