diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py index 37d47045c1..c0798cc2cc 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py @@ -2,6 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 from opentelemetry.sdk._logs._internal import ( + ConcurrentMultiLogRecordProcessor, LogDroppedAttributesWarning, Logger, LoggerProvider, @@ -12,9 +13,11 @@ LogRecordProcessor, ReadableLogRecord, ReadWriteLogRecord, + SynchronousMultiLogRecordProcessor, ) __all__ = [ + "ConcurrentMultiLogRecordProcessor", "Logger", "LoggerProvider", "LoggingHandler", @@ -25,4 +28,5 @@ "LogRecordDroppedAttributesWarning", "ReadableLogRecord", "ReadWriteLogRecord", + "SynchronousMultiLogRecordProcessor", ] diff --git a/opentelemetry-sdk/tests/logs/test_multi_log_processor.py b/opentelemetry-sdk/tests/logs/test_multi_log_processor.py index 1bc1d4faae..f0a8e6e6fa 100644 --- a/opentelemetry-sdk/tests/logs/test_multi_log_processor.py +++ b/opentelemetry-sdk/tests/logs/test_multi_log_processor.py @@ -46,6 +46,18 @@ def force_flush(self, timeout_millis=30000): return True +class TestPublicApi(unittest.TestCase): + def test_synchronous_multi_log_record_processor_is_public(self): + from opentelemetry.sdk._logs import ( # noqa: F401 + SynchronousMultiLogRecordProcessor, + ) + + def test_concurrent_multi_log_record_processor_is_public(self): + from opentelemetry.sdk._logs import ( # noqa: F401 + ConcurrentMultiLogRecordProcessor, + ) + + class TestLogRecordProcessor(unittest.TestCase): def test_log_record_processor(self): provider = LoggerProvider() diff --git a/tests/opentelemetry-test-utils/test-requirements.txt b/tests/opentelemetry-test-utils/test-requirements.txt index 7cb9414f47..d7a3264c49 100644 --- a/tests/opentelemetry-test-utils/test-requirements.txt +++ b/tests/opentelemetry-test-utils/test-requirements.txt @@ -11,8 +11,9 @@ wrapt==1.16.0 -e opentelemetry-sdk -e opentelemetry-semantic-conventions -e tests/opentelemetry-test-utils -# these are required for weaver integration tests, we're running that only on linux / CPython -# because of lack of support for gRPC wheels on some platforms -./opentelemetry-proto ; platform_python_implementation != 'PyPy' -./exporter/opentelemetry-exporter-otlp-proto-common ; platform_python_implementation != 'PyPy' -./exporter/opentelemetry-exporter-otlp-proto-grpc ; platform_python_implementation != 'PyPy' +# these are required for weaver integration tests +# excluded on PyPy + Windows: there's no grpcio PyPy wheel and the gRPC C core +# fails to build from source with MSVC (test skips via _HAS_GRPC guard) +./opentelemetry-proto ; platform_python_implementation != 'PyPy' or platform_system != 'Windows' +./exporter/opentelemetry-exporter-otlp-proto-common ; platform_python_implementation != 'PyPy' or platform_system != 'Windows' +./exporter/opentelemetry-exporter-otlp-proto-grpc ; platform_python_implementation != 'PyPy' or platform_system != 'Windows' diff --git a/tox.ini b/tox.ini index 5476de0cde..857bb82120 100644 --- a/tox.ini +++ b/tox.ini @@ -106,6 +106,9 @@ envlist = lint-opentelemetry-propagator-jaeger ; skip py314t until grpc gets wheels for it or we stop using grpc exporter in weaver tests + ; pypy3 runs the weaver tests on Linux only: weaver now uses tonic (pure Rust), so the + ; grpc C core crash is gone (see issue #5176), but grpcio still has no PyPy wheel and won't + ; build from source on Windows — there the weaver tests skip via the _HAS_GRPC guard py3{10,11,12,13,14}-test-opentelemetry-test-utils pypy3-test-opentelemetry-test-utils lint-opentelemetry-test-utils