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
"""Metaclass of BaseOperator."""
    @classmethod
    def _apply_defaults(cls, func: T) -> T:
        """
        Function decorator that Looks for an argument named "default_args", and
        fills the unspecified arguments from it.
        Since python2.* isn't clear about which arguments are missing when
        calling a function, and that this can be quite confusing with multi-level
        inheritance and argument defaults, this decorator also alerts with
        specific information about the missing arguments.
        """
        
        
        
        
        sig_cache = signature(func)
        non_variadic_params = {
            name: param
            for (name, param) in sig_cache.parameters.items()
            if param.name != "self" and param.kind not in (param.VAR_POSITIONAL, param.VAR_KEYWORD)
        }
        non_optional_args = {
            name
            for name, param in non_variadic_params.items()
            if param.default == param.empty and name != "task_id"
        }
        fixup_decorator_warning_stack(func)
        @functools.wraps(func)
        def apply_defaults(self: BaseOperator, *args: Any, **kwargs: Any) -> Any: