diff --git a/pyproject.toml b/pyproject.toml index 9f96ba0..cd4ba78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,14 +17,14 @@ classifiers = [ ] license = { text = "Apache-2.0" } dependencies = [ - "opentelemetry-api>=1.20.0,<1.38", - "opentelemetry-exporter-otlp>=1.20.0,<1.38", - "opentelemetry-exporter-otlp-proto-common>=1.20.0,<1.38", - "opentelemetry-exporter-otlp-proto-grpc>=1.20.0,<1.38", - "opentelemetry-exporter-otlp-proto-http>=1.20.0,<1.38", - "opentelemetry-proto>=1.20.0,<1.38", - "opentelemetry-sdk>=1.20.0,<1.38", - "opentelemetry-semantic-conventions>=0.41b0,<0.59b0" + "opentelemetry-api>=1.39.0", + "opentelemetry-exporter-otlp>=1.39.0", + "opentelemetry-exporter-otlp-proto-common>=1.39.0", + "opentelemetry-exporter-otlp-proto-grpc>=1.39.0", + "opentelemetry-exporter-otlp-proto-http>=1.39.0", + "opentelemetry-proto>=1.39.0", + "opentelemetry-sdk>=1.39.0", + "opentelemetry-semantic-conventions>=0.60b0" ] [project.urls] diff --git a/src/partial_span_processor/__init__.py b/src/partial_span_processor/__init__.py index f72316d..62165e9 100644 --- a/src/partial_span_processor/__init__.py +++ b/src/partial_span_processor/__init__.py @@ -25,7 +25,8 @@ from opentelemetry._logs.severity import SeverityNumber from opentelemetry.exporter.otlp.proto.common.trace_encoder import encode_spans from opentelemetry.proto.trace.v1 import trace_pb2 -from opentelemetry.sdk._logs import LogData, LogRecord +from opentelemetry._logs import LogRecord +from opentelemetry.sdk._logs import ReadableLogRecord from opentelemetry.sdk.trace import ReadableSpan, Span, SpanProcessor from opentelemetry.trace import set_span_in_context @@ -152,7 +153,7 @@ def get_heartbeat_attributes(self) -> dict[str, str]: "partial.body.type": "json/v1", } - def get_log_data(self, span: Span, attributes: dict[str, str]) -> LogData: + def get_log_data(self, span: Span, attributes: dict[str, str]) -> ReadableLogRecord: instrumentation_scope = span.instrumentation_scope if hasattr(span, "instrumentation_scope") else None span_context = span.get_span_context() @@ -187,11 +188,12 @@ def get_log_data(self, span: Span, attributes: dict[str, str]) -> LogData: severity_text="INFO", severity_number=SeverityNumber.INFO, body=serialized_traces_data, - resource=self.resource, attributes=attributes, ) - return LogData( - log_record=log_record, instrumentation_scope=instrumentation_scope, + return ReadableLogRecord( + log_record=log_record, + resource=self.resource, + instrumentation_scope=instrumentation_scope, ) def process_delayed_heartbeat_spans(self) -> None: diff --git a/tests/partial_span_processor/in_memory_log_exporter.py b/tests/partial_span_processor/in_memory_log_exporter.py index ccc6427..2229312 100644 --- a/tests/partial_span_processor/in_memory_log_exporter.py +++ b/tests/partial_span_processor/in_memory_log_exporter.py @@ -17,11 +17,9 @@ import threading import typing +from opentelemetry.sdk._logs import ReadableLogRecord from opentelemetry.sdk._logs.export import LogExporter, LogExportResult -if typing.TYPE_CHECKING: - from opentelemetry.sdk._logs import LogData - class InMemoryLogExporter(LogExporter): """Implementation of :class:`.LogExporter` that stores logs in memory. @@ -40,11 +38,11 @@ def clear(self) -> None: with self._lock: self._logs.clear() - def get_finished_logs(self) -> tuple[LogData, ...]: + def get_finished_logs(self) -> tuple[ReadableLogRecord, ...]: with self._lock: return tuple(self._logs) - def export(self, batch: typing.Sequence[LogData]) -> LogExportResult: + def export(self, batch: typing.Sequence[ReadableLogRecord]) -> LogExportResult: if self._stopped: return LogExportResult.FAILURE with self._lock: diff --git a/tests/partial_span_processor/test_partial_span_processor.py b/tests/partial_span_processor/test_partial_span_processor.py index 2077a35..2340fa5 100644 --- a/tests/partial_span_processor/test_partial_span_processor.py +++ b/tests/partial_span_processor/test_partial_span_processor.py @@ -151,7 +151,7 @@ def test_on_end_when_initial_heartbeat_sent(self): self.assertEqual(logs[0].log_record.attributes["partial.event"], "stop") self.assertEqual(logs[0].log_record.attributes["partial.body.type"], "json/v1") - self.assertEqual(logs[0].log_record.resource.attributes["service.name"], + self.assertEqual(logs[0].resource.attributes["service.name"], "test") def test_process_delayed_heartbeat_spans(self):