diff --git a/getstream/common/telemetry.py b/getstream/common/telemetry.py index 4e5cac47..1f72e4ff 100644 --- a/getstream/common/telemetry.py +++ b/getstream/common/telemetry.py @@ -170,9 +170,11 @@ def span_request( """ include_bodies = INCLUDE_BODIES if include_bodies is None else include_bodies if not _HAS_OTEL: # pragma: no cover + yield _NullSpan() return tracer = _get_tracer() - if tracer is None: # pragma: no cover + if tracer is None: + yield _NullSpan() # pragma: no cover return with tracer.start_as_current_span(name, kind=SpanKind.CLIENT) as span: # type: ignore[arg-type] base_attrs: Dict[str, Any] = dict(attributes or {}) diff --git a/tests/test_client.py b/tests/test_client.py index f0b4e059..bcbfca31 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -38,3 +38,23 @@ def test_incorrect_client_throws_exception(monkeypatch): with pytest.raises(ValueError): Stream(api_key="xxx", api_secret="xxx", base_url="ftp://example.com") + + +def test_client_does_not_raise_exception_without_tracer(client: Stream, monkeypatch): + # Monkey patch _get_tracer to always return None + from getstream.common import telemetry + + monkeypatch.setattr(telemetry, "_get_tracer", lambda: None) + + response = client.get_app() + assert response.data is not None + + +def test_client_works_with_no_otel(client: Stream, monkeypatch): + # Monkey patch _get_tracer to always return None + from getstream.common import telemetry + + monkeypatch.setattr(telemetry, "_HAS_OTEL", False) + + response = client.get_app() + assert response.data is not None