Skip to content

Commit 8c50d07

Browse files
authored
Support OpenTelemetry SDK 1.44.0 (#2094)
1 parent 5f428d8 commit 8c50d07

6 files changed

Lines changed: 277 additions & 260 deletions

File tree

logfire/_internal/exporters/console.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,5 +506,8 @@ def export(self, batch: Sequence[ReadableLogRecord]) -> LogRecordExportResult:
506506

507507
return LogRecordExportResult.SUCCESS
508508

509+
def force_flush(self, timeout_millis: int = 10_000) -> bool:
510+
return self.span_exporter.force_flush(timeout_millis)
511+
509512
def shutdown(self):
510513
self.span_exporter.shutdown()

logfire/_internal/exporters/wrapper.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ class WrapperLogExporter(LogRecordExporter):
8383
def export(self, batch: Sequence[ReadableLogRecord]) -> LogRecordExportResult:
8484
return self.exporter.export(batch)
8585

86+
def force_flush(self, timeout_millis: int = 10_000) -> bool:
87+
return self.exporter.force_flush(timeout_millis)
88+
8689
def shutdown(self):
8790
return self.exporter.shutdown()
8891

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ classifiers = [
4646
"Framework :: OpenTelemetry :: Instrumentations",
4747
]
4848
dependencies = [
49-
"opentelemetry-sdk >= 1.39.0, < 1.44.0",
50-
"opentelemetry-exporter-otlp-proto-http >= 1.39.0, < 1.44.0",
49+
"opentelemetry-sdk >= 1.39.0, < 1.45.0",
50+
"opentelemetry-exporter-otlp-proto-http >= 1.39.0, < 1.45.0",
5151
"opentelemetry-instrumentation >= 0.41b0",
5252
"rich >= 13.4.2",
5353
"protobuf >= 4.23.4",
@@ -225,7 +225,7 @@ logfire-api = { workspace = true }
225225

226226
[tool.uv]
227227
default-groups = ["dev"]
228-
exclude-newer = "1 week"
228+
exclude-newer = "4 days"
229229

230230
[tool.uv.exclude-newer-package]
231231
# These are our own packages, not worth defending from supply chain attacks on them.

tests/test_console_exporter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from logfire import ConsoleOptions
2525
from logfire._internal.constants import ATTRIBUTES_MESSAGE_KEY
2626
from logfire._internal.exporters.console import (
27+
ConsoleLogExporter,
2728
IndentedConsoleSpanExporter,
2829
ShowParentsConsoleSpanExporter,
2930
SimpleConsoleSpanExporter,
@@ -944,6 +945,11 @@ def test_console_otel_logs(capsys: pytest.CaptureFixture[str]):
944945
)
945946

946947

948+
def test_console_log_exporter_force_flush():
949+
exporter = ConsoleLogExporter(SimpleConsoleSpanExporter())
950+
assert exporter.force_flush() is True
951+
952+
947953
def test_truncated_json(capsys: pytest.CaptureFixture[str]) -> None:
948954
with mock.patch.dict('os.environ', {'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT': '70'}):
949955
logfire.configure(

tests/test_otel_logs.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,17 @@ def shutdown(self):
152152
def export(self, batch: Sequence[ReadableLogRecord]):
153153
raise requests.exceptions.ConnectionError()
154154

155+
def force_flush(self, timeout_millis: int = 10_000) -> bool:
156+
return True
157+
155158
connection_error_exporter = ConnectionErrorExporter()
156159
exporter = QuietLogExporter(connection_error_exporter)
157160

158161
assert exporter.export([]) == LogRecordExportResult.FAILURE
159162
assert not caplog.messages
160163

164+
assert exporter.force_flush() is True
165+
161166
assert not connection_error_exporter.shutdown_called
162167
exporter.shutdown()
163168
assert connection_error_exporter.shutdown_called

0 commit comments

Comments
 (0)