From 7f55f830a019739187904e852a2c215ddab74e72 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 14 Mar 2025 10:27:58 +0000 Subject: [PATCH] Fix #2372: Update OpenTelemetry version constraints for compatibility with newer versions Co-Authored-By: Joe Moura --- pyproject.toml | 6 ++-- tests/telemetry/__init__.py | 0 .../test_opentelemetry_compatibility.py | 36 +++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 tests/telemetry/__init__.py create mode 100644 tests/telemetry/test_opentelemetry_compatibility.py diff --git a/pyproject.toml b/pyproject.toml index ba6bdcccc..7279a4f14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,9 +17,9 @@ dependencies = [ "pdfplumber>=0.11.4", "regex>=2024.9.11", # Telemetry and Monitoring - "opentelemetry-api>=1.22.0", - "opentelemetry-sdk>=1.22.0", - "opentelemetry-exporter-otlp-proto-http>=1.22.0", + "opentelemetry-api>=1.22.0,<2.0.0", + "opentelemetry-sdk>=1.22.0,<2.0.0", + "opentelemetry-exporter-otlp-proto-http>=1.22.0,<2.0.0", # Data Handling "chromadb>=0.5.23", "openpyxl>=3.1.5", diff --git a/tests/telemetry/__init__.py b/tests/telemetry/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/telemetry/test_opentelemetry_compatibility.py b/tests/telemetry/test_opentelemetry_compatibility.py new file mode 100644 index 000000000..6b64492e4 --- /dev/null +++ b/tests/telemetry/test_opentelemetry_compatibility.py @@ -0,0 +1,36 @@ +import pytest +from importlib import import_module + +def test_opentelemetry_imports(): + """Test that all required OpenTelemetry modules can be imported.""" + # Test basic imports + from opentelemetry import trace + from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter + from opentelemetry.sdk.resources import SERVICE_NAME, Resource + from opentelemetry.sdk.trace import TracerProvider + from opentelemetry.sdk.trace.export import BatchSpanProcessor + from opentelemetry.trace import Span, Status, StatusCode + + # Verify that the imports are from the expected modules + assert trace.__name__ == 'opentelemetry.trace' + assert OTLPSpanExporter.__module__ == 'opentelemetry.exporter.otlp.proto.http.trace_exporter' + assert Resource.__module__ == 'opentelemetry.sdk.resources' + assert TracerProvider.__module__ == 'opentelemetry.sdk.trace' + assert BatchSpanProcessor.__module__ == 'opentelemetry.sdk.trace.export' + assert Span.__module__ == 'opentelemetry.trace.span' + assert Status.__module__ == 'opentelemetry.trace.status' + assert StatusCode.__module__ == 'opentelemetry.trace.status' + +def test_telemetry_class_initialization(): + """Test that the Telemetry class can be initialized with current OpenTelemetry versions.""" + from src.crewai.telemetry.telemetry import Telemetry + + # Create an instance of the Telemetry class + telemetry = Telemetry() + + # Check if the telemetry instance is initialized correctly + assert hasattr(telemetry, 'ready') + assert hasattr(telemetry, 'trace_set') + + # Try to set the tracer + telemetry.set_tracer()