### Apache Airflow version

2.2.2 (latest released)

### Operating System

MacOS 11.6.1

### Versions of Apache Airflow Providers

$ pip freeze | grep airflow
apache-airflow==2.2.2
apache-airflow-providers-celery==2.1.0
apache-airflow-providers-ftp==2.0.1
apache-airflow-providers-http==2.0.1
apache-airflow-providers-imap==2.0.1
apache-airflow-providers-sqlite==2.0.1

### Deployment

Other

### Deployment details

`airflow standalone`

### What happened

```
AttributeError: 'NoneType' object has no attribute 'update_relative'
```

### What you expected to happen

Task group should be set as downstream of `start` task, and upstream of `end` task

### How to reproduce

* Add the following code to dags folder

```python
from datetime import datetime

from airflow.decorators import dag, task, task_group


@dag(start_date=datetime(2023, 1, 1), schedule_interval="@once")
def test_dag_1():
    @task
    def start():
        pass

    @task
    def do_thing(x):
        print(x)

    @task_group
    def do_all_things():
        do_thing(1)
        do_thing(2)

    @task
    def end():
        pass

    start() >> do_all_things() >> end()


test_dag_1()
```

* Run `airflow standalone`

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

tests/utils/test_task_group.py
"""Test that unknown args passed to the decorator cause an error at parse time"""
    with pytest.raises(TypeError):
        @task_group_decorator(b=2)
        def tg():
            ...
def test_decorator_partial_unmapped():
    @task_group_decorator
    def tg():
        ...
    with pytest.warns(UserWarning, match='was never mapped'):
        with DAG("test-dag", start_date=DEFAULT_DATE):
            tg.partial()
def test_decorator_map():
    @task_group_decorator
    def my_task_group(my_arg_1: str, unmapped: bool):
        assert unmapped is True
        assert isinstance(my_arg_1, object)
        task_1 = DummyOperator(task_id="task_1")
        task_2 = BashOperator(task_id="task_2", bash_command='echo "${my_arg_1}"', env={'my_arg_1': my_arg_1})
        task_3 = DummyOperator(task_id="task_3")
        task_1 >> [task_2, task_3]
        return task_1, task_2, task_3
    with DAG("test-dag", start_date=DEFAULT_DATE) as dag:
        lines = ["foo", "bar", "baz"]
        (task_1, task_2, task_3) = my_task_group.partial(unmapped=True).map(my_arg_1=lines)
    assert task_1 in dag.tasks
    tg = dag.task_group.get_child_by_label("my_task_group")
    assert isinstance(tg, MappedTaskGroup)
    assert "my_arg_1" in tg.mapped_kwargs