### Apache Airflow version

2.7.0

### What happened

When trying to install SodaCore on Airflow 2.7, the following error is received due to a conflict with `opentelemetry-api`.

```
ERROR: Cannot install apache-airflow==2.7.0 and soda-core==3.0.48 because these package versions have conflicting dependencies.

The conflict is caused by:
    apache-airflow 2.7.0 depends on opentelemetry-api==1.15.0
    soda-core 3.0.48 depends on opentelemetry-api~=1.16.0
```

SodaCore has depended on `opentelemetry-api~=1.16.0` ever since v[3.0.24](https://github.com/sodadata/soda-core/releases/tag/v3.0.24).

### What you think should happen instead

Airflow needs to support versions of `opentelemetry-api` 1.16.x.

### How to reproduce

Simply running the following commands to install the two packages should reproduce the error.

```
$ python3 -m venv /tmp/soda                                                                                         
$ /tmp/soda/bin/pip install apache-airflow==2.7.0 soda-core-bigquery==3.0.48
```

### Operating System

n/a

### Versions of Apache Airflow Providers

_No response_

### Deployment

Virtualenv installation

### Deployment details

_No response_

### 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)

"""
    Find the root of airflow sources we operate on. Handle the case when Breeze is installed via `pipx` from
    a different source tree, so it searches upwards of the current directory to find the right root of
    airflow directory we are actually in. This **might** be different than the sources of Airflow Breeze
    was installed from.
    If not found, we operate on Airflow sources that we were installed it. This handles the case when
    we run Breeze from a "random" directory.
    This method also handles the following errors and warnings:
       * It fails (and exits hard) if Breeze is installed in non-editable mode (in which case it will
         not find the Airflow sources when walking upwards the directory where it is installed)
       * It warns (with 2 seconds timeout) if you are using Breeze from a different airflow sources than
         the one you operate on.
       * If we are running in the same source tree as where Breeze was installed from (so no warning above),
         it warns (with 2 seconds timeout) if there is a change in setup.* files of Breeze since installation
         time. In such case usesr is encouraged to re-install Breeze to update dependencies.
    :return: Path for the found sources.
    """
    sources_root_from_env = os.getenv("AIRFLOW_SOURCES_ROOT", None)
    if sources_root_from_env:
        return Path(sources_root_from_env)
    installation_airflow_sources = get_installation_airflow_sources()
    if installation_airflow_sources is None and not skip_upgrade_check():
        get_console().print(