diff --git a/CHANGELOG.md b/CHANGELOG.md index 737834d0c74..30d60c1fafa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > [!IMPORTANT] > We are working on stabilizing the Log signal that would require making deprecations and breaking changes. We will try to reduce the releases that may require an update to your code, especially for instrumentations or for sdk developers. +## Unreleased + +- Silence events API warnings for internal users + ([#4847](https://github.com/open-telemetry/opentelemetry-python/pull/4847)) + ## Version 1.39.0/0.60b0 (2025-12-03) - `opentelemetry-api`: Convert objects of any type other than AnyValue in attributes to string to be exportable diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py index 59fa1ce43dd..7c0d0468f80 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py @@ -22,13 +22,13 @@ import logging import logging.config import os +import warnings from abc import ABC, abstractmethod from os import environ from typing import Any, Callable, Mapping, Sequence, Type, Union from typing_extensions import Literal -from opentelemetry._events import set_event_logger_provider from opentelemetry._logs import set_logger_provider from opentelemetry.environment_variables import ( OTEL_LOGS_EXPORTER, @@ -37,7 +37,6 @@ OTEL_TRACES_EXPORTER, ) from opentelemetry.metrics import set_meter_provider -from opentelemetry.sdk._events import EventLoggerProvider from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import ( BatchLogRecordProcessor, @@ -268,8 +267,19 @@ def _init_logging( BatchLogRecordProcessor(exporter_class(**exporter_args)) ) - event_logger_provider = EventLoggerProvider(logger_provider=provider) - set_event_logger_provider(event_logger_provider) + # silence warnings from internal users until we drop the deprecated Events API + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=DeprecationWarning) + # pylint: disable=import-outside-toplevel + from opentelemetry._events import ( # noqa: PLC0415 + set_event_logger_provider, + ) + from opentelemetry.sdk._events import ( # noqa: PLC0415 + EventLoggerProvider, + ) + + event_logger_provider = EventLoggerProvider(logger_provider=provider) + set_event_logger_provider(event_logger_provider) if setup_logging_handler: # Add OTel handler diff --git a/opentelemetry-sdk/tests/test_configurator.py b/opentelemetry-sdk/tests/test_configurator.py index ec42cda6f6b..8edc9190dac 100644 --- a/opentelemetry-sdk/tests/test_configurator.py +++ b/opentelemetry-sdk/tests/test_configurator.py @@ -614,11 +614,11 @@ def setUp(self): self.event_logger_provider_instance_mock = Mock() self.event_logger_provider_patch = patch( - "opentelemetry.sdk._configuration.EventLoggerProvider", + "opentelemetry.sdk._events.EventLoggerProvider", return_value=self.event_logger_provider_instance_mock, ) self.set_event_logger_provider_patch = patch( - "opentelemetry.sdk._configuration.set_event_logger_provider" + "opentelemetry._events.set_event_logger_provider" ) self.processor_mock = self.processor_patch.start() diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py index c373658222b..aead8362a8b 100644 --- a/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py +++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py @@ -14,7 +14,6 @@ import unittest -from opentelemetry import _events as events_api from opentelemetry import trace as trace_api from opentelemetry._logs import _internal as logging_api from opentelemetry.metrics import _internal as metrics_api @@ -49,6 +48,10 @@ def reset_logging_globals() -> None: # pylint: disable=protected-access def reset_event_globals() -> None: """WARNING: only use this for tests.""" + from opentelemetry import ( # pylint: disable=import-outside-toplevel # noqa: PLC0415 + _events as events_api, + ) + events_api._EVENT_LOGGER_PROVIDER_SET_ONCE = Once() # type: ignore[attr-defined] events_api._EVENT_LOGGER_PROVIDER = None # type: ignore[attr-defined] events_api._PROXY_EVENT_LOGGER_PROVIDER = (