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
"""Track whether the next added task is a setup or teardown task"""
    is_setup: bool = False
    is_teardown: bool = False
    on_failure_fail_dagrun: bool = False
    @classmethod
    @contextmanager
    def setup(cls):
        if cls.is_setup or cls.is_teardown:
            raise AirflowException("You cannot mark a setup or teardown task as setup or teardown again.")
        cls.is_setup = True
        try:
            yield
        finally:
            cls.is_setup = False
    @classmethod
    @contextmanager
    def teardown(cls, *, on_failure_fail_dagrun=False):
        if cls.is_setup or cls.is_teardown:
            raise AirflowException("You cannot mark a setup or teardown task as setup or teardown again.")
        cls.is_teardown = True
        cls.on_failure_fail_dagrun = on_failure_fail_dagrun
        try:
            yield
        finally:
            cls.is_teardown = False
            cls.on_failure_fail_dagrun = False