import warnings from typing import Any def _suppress_pydantic_deprecation_warnings() -> None: """Suppress Pydantic deprecation warnings using targeted monkey patch.""" original_warn = warnings.warn def filtered_warn( message: Any, category: type | None = None, stacklevel: int = 1, source: Any = None, ) -> Any: if ( category and hasattr(category, "__module__") and category.__module__ == "pydantic.warnings" ): return None return original_warn(message, category, stacklevel + 1, source) setattr(warnings, "warn", filtered_warn) _suppress_pydantic_deprecation_warnings() import threading import urllib.request from crewai.agent import Agent from crewai.crew import Crew from crewai.crews.crew_output import CrewOutput from crewai.flow.flow import Flow from crewai.knowledge.knowledge import Knowledge from crewai.llm import LLM from crewai.llms.base_llm import BaseLLM from crewai.process import Process from crewai.task import Task from crewai.tasks.llm_guardrail import LLMGuardrail from crewai.tasks.task_output import TaskOutput from crewai.telemetry.telemetry import Telemetry _telemetry_submitted = False def _track_install() -> None: """Track package installation/first-use via Scarf analytics.""" global _telemetry_submitted if _telemetry_submitted or Telemetry._is_telemetry_disabled(): return try: pixel_url = "https://api.scarf.sh/v2/packages/CrewAI/crewai/docs/00f2dad1-8334-4a39-934e-003b2e1146db" req = urllib.request.Request(pixel_url) req.add_header("User-Agent", f"CrewAI-Python/{__version__}") with urllib.request.urlopen(req, timeout=2): # nosec B310 _telemetry_submitted = True except Exception: pass def _track_install_async() -> None: """Track installation in background thread to avoid blocking imports.""" if not Telemetry._is_telemetry_disabled(): thread = threading.Thread(target=_track_install, daemon=True) thread.start() _track_install_async() __version__ = "0.177.0" __all__ = [ "Agent", "Crew", "CrewOutput", "Process", "Task", "LLM", "BaseLLM", "Flow", "Knowledge", "TaskOutput", "LLMGuardrail", "__version__", ]