From 3942b34f6c7020ceb6f7e3e5f4502676f7cb0709 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Tue, 24 Jun 2025 13:20:39 +0000 Subject: [PATCH 1/4] Mark events API/SDK as deprecated --- CHANGELOG.md | 1 + .../src/opentelemetry/_events/__init__.py | 23 +++++++++++++++++++ .../src/opentelemetry/sdk/_events/__init__.py | 8 +++++++ 3 files changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8097b699f2..fc19eeded75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +- Mark the Events API/SDK as deprecated. The Logs API/SDK should be used instead. An event is now a `LogRecord` with the `event_name` field set. - Update OTLP proto to v1.7 [#4645](https://github.com/open-telemetry/opentelemetry-python/pull/4645). - Update OTLP gRPC/HTTP exporters: the export timeout is now inclusive of all retries and backoffs. A +/-20% jitter was added to all backoffs. A pointless 32 second sleep that occurred after all retries diff --git a/opentelemetry-api/src/opentelemetry/_events/__init__.py b/opentelemetry-api/src/opentelemetry/_events/__init__.py index f073b223345..b8db8477080 100644 --- a/opentelemetry-api/src/opentelemetry/_events/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_events/__init__.py @@ -17,6 +17,8 @@ from os import environ from typing import Optional, cast +from typing_extensions import deprecated + from opentelemetry._logs import LogRecord from opentelemetry._logs.severity import SeverityNumber from opentelemetry.environment_variables import ( @@ -30,6 +32,9 @@ _logger = getLogger(__name__) +@deprecated( + "You should use `LogRecord` with the `event_name` field set instead. Deprecated since version 1.35.0." +) class Event(LogRecord): def __init__( self, @@ -59,6 +64,9 @@ def __init__( self.name = name +@deprecated( + "You should use `Logger` instead. Deprecated since version 1.35.0." +) class EventLogger(ABC): def __init__( self, @@ -77,11 +85,17 @@ def emit(self, event: "Event") -> None: """Emits a :class:`Event` representing an event.""" +@deprecated( + "You should use `NoOpLogger` instead. Deprecated since version 1.35.0." +) class NoOpEventLogger(EventLogger): def emit(self, event: Event) -> None: pass +@deprecated( + "You should use `ProxyLogger` instead. Deprecated since version 1.35.0." +) class ProxyEventLogger(EventLogger): def __init__( self, @@ -118,6 +132,9 @@ def emit(self, event: Event) -> None: self._event_logger.emit(event) +@deprecated( + "You should use `LoggerProvider` instead. Deprecated since version 1.35.0." +) class EventLoggerProvider(ABC): @abstractmethod def get_event_logger( @@ -130,6 +147,9 @@ def get_event_logger( """Returns an EventLoggerProvider for use.""" +@deprecated( + "You should use `NoOpLoggerProvider` instead. Deprecated since version 1.35.0." +) class NoOpEventLoggerProvider(EventLoggerProvider): def get_event_logger( self, @@ -143,6 +163,9 @@ def get_event_logger( ) +@deprecated( + "You should use `ProxyLoggerProvider` instead. Deprecated since version 1.35.0." +) class ProxyEventLoggerProvider(EventLoggerProvider): def get_event_logger( self, diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py index c427a48e2f8..e8b5709fc63 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py @@ -15,6 +15,8 @@ from time import time_ns from typing import Optional +from typing_extensions import deprecated + from opentelemetry import trace from opentelemetry._events import Event from opentelemetry._events import EventLogger as APIEventLogger @@ -26,6 +28,9 @@ _logger = logging.getLogger(__name__) +@deprecated( + "You should use `Logger` instead. Deprecated since version 1.35.0." +) class EventLogger(APIEventLogger): def __init__( self, @@ -65,6 +70,9 @@ def emit(self, event: Event) -> None: self._logger.emit(log_record) +@deprecated( + "You should use `LoggerProvider` instead. Deprecated since version 1.35.0." +) class EventLoggerProvider(APIEventLoggerProvider): def __init__(self, logger_provider: Optional[LoggerProvider] = None): self._logger_provider = logger_provider or get_logger_provider() From f45bce1b8f55c610b112f1d410a9fb9b3125a52d Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Tue, 24 Jun 2025 13:28:07 +0000 Subject: [PATCH 2/4] Add PR # to changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc19eeded75..cc06672f4fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased -- Mark the Events API/SDK as deprecated. The Logs API/SDK should be used instead. An event is now a `LogRecord` with the `event_name` field set. +- Mark the Events API/SDK as deprecated. The Logs API/SDK should be used instead. An event is now a `LogRecord` with the `event_name` field set ([#4654](https://github.com/open-telemetry/opentelemetry-python/pull/4654)). - Update OTLP proto to v1.7 [#4645](https://github.com/open-telemetry/opentelemetry-python/pull/4645). - Update OTLP gRPC/HTTP exporters: the export timeout is now inclusive of all retries and backoffs. A +/-20% jitter was added to all backoffs. A pointless 32 second sleep that occurred after all retries From 3ec07b7a1cb50e31a806a6312684494f63b7ca08 Mon Sep 17 00:00:00 2001 From: DylanRussell Date: Thu, 26 Jun 2025 12:06:52 -0400 Subject: [PATCH 3/4] Update CHANGELOG.md Co-authored-by: Riccardo Magliocchetti --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc06672f4fc..0263fbe9d69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased -- Mark the Events API/SDK as deprecated. The Logs API/SDK should be used instead. An event is now a `LogRecord` with the `event_name` field set ([#4654](https://github.com/open-telemetry/opentelemetry-python/pull/4654)). +- Mark the Events API/SDK as deprecated. The Logs API/SDK should be used instead. An event is now a `LogRecord` with the `event_name` field set + ([#4654](https://github.com/open-telemetry/opentelemetry-python/pull/4654)). - Update OTLP proto to v1.7 [#4645](https://github.com/open-telemetry/opentelemetry-python/pull/4645). - Update OTLP gRPC/HTTP exporters: the export timeout is now inclusive of all retries and backoffs. A +/-20% jitter was added to all backoffs. A pointless 32 second sleep that occurred after all retries From 9180e4c74d86b86d6d37b84bf61451f675205d40 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 26 Jun 2025 16:31:42 +0000 Subject: [PATCH 4/4] Add deprecatrred warnings to event methods --- .../src/opentelemetry/_events/__init__.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/opentelemetry-api/src/opentelemetry/_events/__init__.py b/opentelemetry-api/src/opentelemetry/_events/__init__.py index b8db8477080..445d238d28b 100644 --- a/opentelemetry-api/src/opentelemetry/_events/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_events/__init__.py @@ -194,6 +194,9 @@ def get_event_logger( _PROXY_EVENT_LOGGER_PROVIDER = ProxyEventLoggerProvider() +@deprecated( + "You should use `get_logger_provider` instead. Deprecated since version 1.35.0." +) def get_event_logger_provider() -> EventLoggerProvider: global _EVENT_LOGGER_PROVIDER # pylint: disable=global-variable-not-assigned if _EVENT_LOGGER_PROVIDER is None: @@ -209,6 +212,9 @@ def get_event_logger_provider() -> EventLoggerProvider: return cast("EventLoggerProvider", _EVENT_LOGGER_PROVIDER) +@deprecated( + "You should use `_set_logger_provider` instead. Deprecated since version 1.35.0." +) def _set_event_logger_provider( event_logger_provider: EventLoggerProvider, log: bool ) -> None: @@ -224,12 +230,18 @@ def set_elp() -> None: ) +@deprecated( + "You should use `set_logger_provider` instead. Deprecated since version 1.35.0." +) def set_event_logger_provider( event_logger_provider: EventLoggerProvider, ) -> None: _set_event_logger_provider(event_logger_provider, log=True) +@deprecated( + "You should use `get_logger` instead. Deprecated since version 1.35.0." +) def get_event_logger( name: str, version: Optional[str] = None,