Ensure that this works:

```python
@setup
def mytask():
    print("I am a setup task")

with dag_maker() as dag:
    mytask.override(task_id='newtask')

assert len(dag.task_group.children) == 1
setup_task = dag.task_group.children["newtask"]
assert setup_task._is_setup
```
and teardown also works
"""Type declaration for ``task_decorator_factory`` return type."""
    @overload
    def __call__(  
        self,
        python_callable: Callable[FParams, FReturn],
    ) -> Task[FParams, FReturn]:
        """For the "bare decorator" ``@task`` case."""
    @overload
    def __call__(
        self,
        *,
        multiple_outputs: bool | None = None,
        **kwargs: Any,
    ) -> Callable[[Callable[FParams, FReturn]], Task[FParams, FReturn]]:
        """For the decorator factory ``@task()`` case."""
    def override(self, **kwargs: Any) -> Task[FParams, FReturn]:
        ...
def task_decorator_factory(
    python_callable: Callable | None = None,
    *,
    multiple_outputs: bool | None = None,
    decorated_operator_class: type[BaseOperator],
    **kwargs,
) -> TaskDecorator:
    """Generate a wrapper that wraps a function into an Airflow operator.
    Can be reused in a single DAG.
    :param python_callable: Function to decorate.