Compare commits

...

4 Commits

Author SHA1 Message Date
Devin AI
2c0c96b428 Fix import sorting in backward compatibility test
Co-Authored-By: Joe Moura <joao@crewai.com>
2025-05-07 08:15:42 +00:00
Devin AI
38f61d937a Fix test_deprecation_warning to reliably detect warnings in CI
Co-Authored-By: Joe Moura <joao@crewai.com>
2025-05-07 08:12:02 +00:00
Devin AI
3348fff123 Address PR feedback: Add deprecation warning and expand test coverage
Co-Authored-By: Joe Moura <joao@crewai.com>
2025-05-07 08:05:23 +00:00
Devin AI
71cb398e88 Fix #2771: Add backward compatibility for misspelled telemetry import
Co-Authored-By: Joe Moura <joao@crewai.com>
2025-05-07 07:56:58 +00:00
2 changed files with 68 additions and 0 deletions

19
src/crewai/telemtry.py Normal file
View File

@@ -0,0 +1,19 @@
"""
Backward compatibility module for crewai.telemtry to handle typo in import statements.
This module allows older code that imports from `crewai.telemtry` (misspelled)
to continue working by re-exporting the Telemetry class from the correctly
spelled `crewai.telemetry` module.
"""
import warnings
from crewai.telemetry import Telemetry
warnings.warn(
"Importing from 'crewai.telemtry' is deprecated due to spelling issues. "
"Please use 'from crewai.telemetry import Telemetry' instead.",
DeprecationWarning,
stacklevel=2
)
__all__ = ["Telemetry"]

View File

@@ -0,0 +1,49 @@
import sys
import unittest
import warnings
class BackwardCompatibilityTest(unittest.TestCase):
def setUp(self):
if "crewai.telemtry" in sys.modules:
del sys.modules["crewai.telemtry"]
warnings.resetwarnings()
def test_deprecation_warning(self):
"""Test that importing from the misspelled module raises a deprecation warning."""
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always", DeprecationWarning)
import importlib
import crewai.telemtry
importlib.reload(crewai.telemtry)
self.assertGreaterEqual(len(w), 1)
warning_messages = [str(warning.message) for warning in w]
warning_categories = [warning.category for warning in w]
has_deprecation_warning = False
for msg, cat in zip(warning_messages, warning_categories):
if (issubclass(cat, DeprecationWarning) and
"crewai.telemtry" in msg and
"crewai.telemetry" in msg):
has_deprecation_warning = True
break
self.assertTrue(has_deprecation_warning,
f"No matching deprecation warning found. Warnings: {warning_messages}")
def test_telemtry_typo_compatibility(self):
"""Test that the backward compatibility for the telemtry typo works."""
from crewai.telemetry import Telemetry
from crewai.telemtry import Telemetry as MisspelledTelemetry
self.assertIs(MisspelledTelemetry, Telemetry)
def test_functionality_preservation(self):
"""Test that the re-exported Telemetry class preserves all functionality."""
from crewai.telemetry import Telemetry
from crewai.telemtry import Telemetry as MisspelledTelemetry
self.assertEqual(dir(MisspelledTelemetry), dir(Telemetry))