From 4caae9a41722c57398b5008929255a408ba7f062 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Tue, 23 Sep 2025 20:13:30 +0200 Subject: [PATCH] Remove conditional check on OTEL version for `Gauge` import --- logfire/_internal/metrics.py | 44 +++++++++++------------------------- tests/test_metrics.py | 12 ---------- 2 files changed, 13 insertions(+), 43 deletions(-) diff --git a/logfire/_internal/metrics.py b/logfire/_internal/metrics.py index 8d9ee1347..61a2cfb7c 100644 --- a/logfire/_internal/metrics.py +++ b/logfire/_internal/metrics.py @@ -19,6 +19,7 @@ ObservableGauge, ObservableUpDownCounter, UpDownCounter, + _Gauge as Gauge, ) from opentelemetry.sdk.metrics import MeterProvider as SDKMeterProvider from opentelemetry.trace import get_current_span @@ -27,14 +28,6 @@ from .tracer import _LogfireWrappedSpan # type: ignore from .utils import handle_internal_errors -try: - # This only exists in opentelemetry-sdk>=1.23.0 - from opentelemetry.metrics import _Gauge - - Gauge = _Gauge -except ImportError: # pragma: no cover - Gauge = None - # The following proxy classes are adapted from OTEL's SDK @dataclasses.dataclass @@ -160,14 +153,7 @@ def create_gauge( name: str, unit: str = '', description: str = '', - ) -> _Gauge: - if Gauge is None: - # This only exists in opentelemetry-sdk>=1.23.0 - raise RuntimeError( - 'Gauge is not available in this version of OpenTelemetry SDK.\n' - 'You should upgrade to 1.23.0 or newer:\n' - ' pip install opentelemetry-sdk>=1.23.0' - ) + ) -> Gauge: return self._add_proxy_instrument(_ProxyGauge, name=name, unit=unit, description=description) def create_observable_gauge( @@ -280,19 +266,15 @@ def _create_real_instrument(self, meter: Meter) -> UpDownCounter: return meter.create_up_down_counter(**self._kwargs) -if Gauge is not None: # pragma: no branch - - class _ProxyGauge(_ProxyInstrument[Gauge], Gauge): - def set( - self, - amount: int | float, - attributes: Attributes | None = None, - *args: Any, - **kwargs: Any, - ) -> None: - self._instrument.set(amount, attributes, *args, **kwargs) +class _ProxyGauge(_ProxyInstrument[Gauge], Gauge): + def set( + self, + amount: int | float, + attributes: Attributes | None = None, + *args: Any, + **kwargs: Any, + ) -> None: + self._instrument.set(amount, attributes, *args, **kwargs) - def _create_real_instrument(self, meter: Meter): - return meter.create_gauge(**self._kwargs) -else: # pragma: no cover - _ProxyGauge = None # type: ignore + def _create_real_instrument(self, meter: Meter): + return meter.create_gauge(**self._kwargs) diff --git a/tests/test_metrics.py b/tests/test_metrics.py index b47461057..2202e6099 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -17,7 +17,6 @@ ) import logfire -import logfire._internal.metrics from logfire._internal.config import METRICS_PREFERRED_TEMPORALITY from logfire._internal.exporters.quiet_metrics import QuietMetricExporter from logfire._internal.exporters.test import TestExporter @@ -205,17 +204,6 @@ def test_create_metric_gauge(metrics_reader: InMemoryMetricReader) -> None: ) -def test_create_metric_gauge_old_opentelemetry_sdk(monkeypatch: pytest.MonkeyPatch) -> None: - monkeypatch.setattr(logfire._internal.metrics, 'Gauge', None) - with pytest.raises(RuntimeError) as exc_info: - logfire.metric_gauge('gauge') - assert str(exc_info.value) == snapshot("""\ -Gauge is not available in this version of OpenTelemetry SDK. -You should upgrade to 1.23.0 or newer: - pip install opentelemetry-sdk>=1.23.0\ -""") - - def test_create_metric_up_down_counter(metrics_reader: InMemoryMetricReader) -> None: counter = logfire.metric_up_down_counter('up_down_counter') counter.add(1)