From 3942b34f6c7020ceb6f7e3e5f4502676f7cb0709 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Tue, 24 Jun 2025 13:20:39 +0000 Subject: [PATCH 1/8] 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/8] 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/8] 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/8] 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, From 7c09e3fd3f9d320986a0d1c28bce541d4b3f6d75 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 25 Nov 2025 17:18:16 +0100 Subject: [PATCH 5/8] Update CHANGELOG.md --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93b717b32cd..b74a8dc1b45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,7 +77,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#4755](https://github.com/open-telemetry/opentelemetry-python/pull/4755)) - logs: extend Logger.emit to accept separated keyword arguments ([#4737](https://github.com/open-telemetry/opentelemetry-python/pull/4737)) - +- logs: add warnings for classes that would be deprecated and renamed in 1.39.0 + ([#4771](https://github.com/open-telemetry/opentelemetry-python/pull/4771)) ## Version 1.37.0/0.58b0 (2025-09-11) From 9565c798775ae4c04a114b657483fefe3011304c Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 25 Nov 2025 17:38:00 +0100 Subject: [PATCH 6/8] Update __init__.py --- .../src/opentelemetry/_events/__init__.py | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/opentelemetry-api/src/opentelemetry/_events/__init__.py b/opentelemetry-api/src/opentelemetry/_events/__init__.py index 445d238d28b..8260ca7a43a 100644 --- a/opentelemetry-api/src/opentelemetry/_events/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_events/__init__.py @@ -33,7 +33,7 @@ @deprecated( - "You should use `LogRecord` with the `event_name` field set instead. Deprecated since version 1.35.0." + "You should use `LogRecord` with the `event_name` field set instead. Deprecated since version 1.39.0." ) class Event(LogRecord): def __init__( @@ -65,7 +65,7 @@ def __init__( @deprecated( - "You should use `Logger` instead. Deprecated since version 1.35.0." + "You should use `Logger` instead. Deprecated since version 1.39.0." ) class EventLogger(ABC): def __init__( @@ -86,7 +86,7 @@ def emit(self, event: "Event") -> None: @deprecated( - "You should use `NoOpLogger` instead. Deprecated since version 1.35.0." + "You should use `NoOpLogger` instead. Deprecated since version 1.39.0." ) class NoOpEventLogger(EventLogger): def emit(self, event: Event) -> None: @@ -94,7 +94,7 @@ def emit(self, event: Event) -> None: @deprecated( - "You should use `ProxyLogger` instead. Deprecated since version 1.35.0." + "You should use `ProxyLogger` instead. Deprecated since version 1.39.0." ) class ProxyEventLogger(EventLogger): def __init__( @@ -133,7 +133,7 @@ def emit(self, event: Event) -> None: @deprecated( - "You should use `LoggerProvider` instead. Deprecated since version 1.35.0." + "You should use `LoggerProvider` instead. Deprecated since version 1.39.0." ) class EventLoggerProvider(ABC): @abstractmethod @@ -148,7 +148,7 @@ def get_event_logger( @deprecated( - "You should use `NoOpLoggerProvider` instead. Deprecated since version 1.35.0." + "You should use `NoOpLoggerProvider` instead. Deprecated since version 1.39.0." ) class NoOpEventLoggerProvider(EventLoggerProvider): def get_event_logger( @@ -164,7 +164,7 @@ def get_event_logger( @deprecated( - "You should use `ProxyLoggerProvider` instead. Deprecated since version 1.35.0." + "You should use `ProxyLoggerProvider` instead. Deprecated since version 1.39.0." ) class ProxyEventLoggerProvider(EventLoggerProvider): def get_event_logger( @@ -195,7 +195,7 @@ def get_event_logger( @deprecated( - "You should use `get_logger_provider` instead. Deprecated since version 1.35.0." + "You should use `get_logger_provider` instead. Deprecated since version 1.39.0." ) def get_event_logger_provider() -> EventLoggerProvider: global _EVENT_LOGGER_PROVIDER # pylint: disable=global-variable-not-assigned @@ -212,9 +212,6 @@ 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: @@ -231,7 +228,7 @@ def set_elp() -> None: @deprecated( - "You should use `set_logger_provider` instead. Deprecated since version 1.35.0." + "You should use `set_logger_provider` instead. Deprecated since version 1.39.0." ) def set_event_logger_provider( event_logger_provider: EventLoggerProvider, @@ -240,7 +237,7 @@ def set_event_logger_provider( @deprecated( - "You should use `get_logger` instead. Deprecated since version 1.35.0." + "You should use `get_logger` instead. Deprecated since version 1.39.0." ) def get_event_logger( name: str, From f370431c86c52552612c92061d1ed6a83abadd41 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 25 Nov 2025 17:38:45 +0100 Subject: [PATCH 7/8] Update __init__.py --- opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py index 598c9a4eee2..700bbf1f89d 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py @@ -35,7 +35,7 @@ @deprecated( - "You should use `Logger` instead. Deprecated since version 1.35.0." + "You should use `Logger` instead. Deprecated since version 1.39.0." ) class EventLogger(APIEventLogger): def __init__( @@ -77,7 +77,7 @@ def emit(self, event: Event) -> None: @deprecated( - "You should use `LoggerProvider` instead. Deprecated since version 1.35.0." + "You should use `LoggerProvider` instead. Deprecated since version 1.39.0." ) class EventLoggerProvider(APIEventLoggerProvider): def __init__(self, logger_provider: Optional[LoggerProvider] = None): From 5d0173411d4a12ba33145700ba6c72fa0828267b Mon Sep 17 00:00:00 2001 From: aaronabbott Date: Wed, 3 Dec 2025 05:12:10 +0000 Subject: [PATCH 8/8] Add to deprecation that this will be removed in the future --- .../src/opentelemetry/_events/__init__.py | 30 ++++++++++++------- .../src/opentelemetry/sdk/_events/__init__.py | 6 ++-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/opentelemetry-api/src/opentelemetry/_events/__init__.py b/opentelemetry-api/src/opentelemetry/_events/__init__.py index 8260ca7a43a..d86fd12721d 100644 --- a/opentelemetry-api/src/opentelemetry/_events/__init__.py +++ b/opentelemetry-api/src/opentelemetry/_events/__init__.py @@ -33,7 +33,8 @@ @deprecated( - "You should use `LogRecord` with the `event_name` field set instead. Deprecated since version 1.39.0." + "You should use `LogRecord` with the `event_name` field set instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class Event(LogRecord): def __init__( @@ -65,7 +66,8 @@ def __init__( @deprecated( - "You should use `Logger` instead. Deprecated since version 1.39.0." + "You should use `Logger` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class EventLogger(ABC): def __init__( @@ -86,7 +88,8 @@ def emit(self, event: "Event") -> None: @deprecated( - "You should use `NoOpLogger` instead. Deprecated since version 1.39.0." + "You should use `NoOpLogger` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class NoOpEventLogger(EventLogger): def emit(self, event: Event) -> None: @@ -94,7 +97,8 @@ def emit(self, event: Event) -> None: @deprecated( - "You should use `ProxyLogger` instead. Deprecated since version 1.39.0." + "You should use `ProxyLogger` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class ProxyEventLogger(EventLogger): def __init__( @@ -133,7 +137,8 @@ def emit(self, event: Event) -> None: @deprecated( - "You should use `LoggerProvider` instead. Deprecated since version 1.39.0." + "You should use `LoggerProvider` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class EventLoggerProvider(ABC): @abstractmethod @@ -148,7 +153,8 @@ def get_event_logger( @deprecated( - "You should use `NoOpLoggerProvider` instead. Deprecated since version 1.39.0." + "You should use `NoOpLoggerProvider` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class NoOpEventLoggerProvider(EventLoggerProvider): def get_event_logger( @@ -164,7 +170,8 @@ def get_event_logger( @deprecated( - "You should use `ProxyLoggerProvider` instead. Deprecated since version 1.39.0." + "You should use `ProxyLoggerProvider` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class ProxyEventLoggerProvider(EventLoggerProvider): def get_event_logger( @@ -195,7 +202,8 @@ def get_event_logger( @deprecated( - "You should use `get_logger_provider` instead. Deprecated since version 1.39.0." + "You should use `get_logger_provider` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) def get_event_logger_provider() -> EventLoggerProvider: global _EVENT_LOGGER_PROVIDER # pylint: disable=global-variable-not-assigned @@ -228,7 +236,8 @@ def set_elp() -> None: @deprecated( - "You should use `set_logger_provider` instead. Deprecated since version 1.39.0." + "You should use `set_logger_provider` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) def set_event_logger_provider( event_logger_provider: EventLoggerProvider, @@ -237,7 +246,8 @@ def set_event_logger_provider( @deprecated( - "You should use `get_logger` instead. Deprecated since version 1.39.0." + "You should use `get_logger` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) def get_event_logger( name: str, diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py index 700bbf1f89d..ca90e9b1522 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_events/__init__.py @@ -35,7 +35,8 @@ @deprecated( - "You should use `Logger` instead. Deprecated since version 1.39.0." + "You should use `Logger` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class EventLogger(APIEventLogger): def __init__( @@ -77,7 +78,8 @@ def emit(self, event: Event) -> None: @deprecated( - "You should use `LoggerProvider` instead. Deprecated since version 1.39.0." + "You should use `LoggerProvider` instead. " + "Deprecated since version 1.39.0 and will be removed in a future release." ) class EventLoggerProvider(APIEventLoggerProvider): def __init__(self, logger_provider: Optional[LoggerProvider] = None):