Skip to content

Commit 4cbc5f5

Browse files
authored
Fix logfire_api requiring OpenTelemetry SDK (#1310)
1 parent 481c501 commit 4cbc5f5

File tree

4 files changed

+484
-479
lines changed

4 files changed

+484
-479
lines changed

logfire-api/logfire_api/__init__.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from contextlib import contextmanager, nullcontext
66
from typing import Any, ContextManager, Literal, TYPE_CHECKING, Sequence
77
from unittest.mock import MagicMock
8-
from opentelemetry.sdk.trace import ReadableSpan
98

109
try:
1110
logfire_module = importlib.import_module('logfire')
@@ -20,11 +19,24 @@
2019
def configure(*args, **kwargs): ...
2120

2221
class LogfireSpan:
23-
def __init__(self, *args, **kwargs):
24-
self._readable_span = ReadableSpan(name='')
25-
2622
def __getattr__(self, attr):
27-
return getattr(self._readable_span, attr, MagicMock())
23+
return MagicMock()
24+
25+
@property
26+
def name(self):
27+
return ''
28+
29+
@property
30+
def attributes(self):
31+
return {}
32+
33+
@property
34+
def events(self):
35+
return ()
36+
37+
@property
38+
def links(self):
39+
return ()
2840

2941
def __enter__(self):
3042
return self

tests/otel_integrations/test_openai_agents.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,7 @@ async def test_chat_completions(exporter: TestExporter):
887887
'store': None,
888888
'include_usage': None,
889889
'response_include': None,
890+
'top_logprobs': None,
890891
'extra_query': None,
891892
'extra_body': None,
892893
'extra_headers': None,

tests/test_logfire_api.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
import importlib
44
import sys
55
from pathlib import Path
6-
from types import MappingProxyType, ModuleType
6+
from types import ModuleType
77
from typing import Callable
88
from unittest.mock import MagicMock
99

1010
import pytest
11-
from opentelemetry.sdk.resources import Resource
12-
from opentelemetry.trace import SpanKind, Status
1311
from pydantic import __version__ as pydantic_version
1412

1513
from logfire._internal.utils import get_version
@@ -72,19 +70,12 @@ def test_runtime(logfire_api_factory: Callable[[], ModuleType], module_name: str
7270
assert isinstance(span, logfire_api.LogfireSpan)
7371
span.set_attribute('foo', 'bar')
7472

73+
assert span.name == '' if module_name == 'logfire_api.' else 'test span'
7574
if module_name == 'logfire_api.':
76-
assert span.context is None
77-
assert span.name == ''
78-
assert span.parent is None
79-
assert isinstance(span.resource, Resource)
80-
assert isinstance(span.attributes, MappingProxyType)
81-
assert span.events == ()
82-
assert span.links == ()
83-
assert isinstance(span.kind, SpanKind)
84-
assert isinstance(span.status, Status)
85-
assert span.start_time is None
86-
assert span.end_time is None
87-
assert span.instrumentation_scope is None
75+
assert span.attributes == {}
76+
assert span.events == ()
77+
assert span.links == ()
78+
assert span.resource.attributes
8879

8980
logfire__all__.remove('LogfireSpan')
9081
logfire__all__.remove('span')

0 commit comments

Comments
 (0)