mirror of
https://github.com/crewAIInc/crewAI.git
synced 2025-12-16 04:18:35 +00:00
fix: suppress Pydantic deprecation warnings in initialization (#3443)
* fix: suppress Pydantic deprecation warnings in initialization - Implemented a function to filter out Pydantic deprecation warnings, enhancing the user experience by preventing unnecessary warning messages during execution. - Removed the previous warning filter setup to streamline the warning suppression process. - Updated the User-Agent header formatting for consistency. * fix type check * dropped * fix: update type-checker workflow and suppress warnings - Updated the Python version matrix in the type-checker workflow to use double quotes for consistency. - Added the `# type: ignore[assignment]` comment to the warning suppression assignment in `__init__.py` to address type checking issues. - Ensured that the mypy command in the workflow allows for untyped calls and generics, enhancing type checking flexibility. * better
This commit is contained in:
8
.github/workflows/type-checker.yml
vendored
8
.github/workflows/type-checker.yml
vendored
@@ -12,13 +12,13 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ['3.10', '3.11', '3.12', '3.13']
|
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # Fetch all history for proper diff
|
fetch-depth: 0 # Fetch all history for proper diff
|
||||||
|
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@v6
|
uses: astral-sh/setup-uv@v6
|
||||||
@@ -40,10 +40,10 @@ jobs:
|
|||||||
# Get the list of changed Python files compared to the base branch
|
# Get the list of changed Python files compared to the base branch
|
||||||
echo "Fetching changed files..."
|
echo "Fetching changed files..."
|
||||||
git diff --name-only --diff-filter=ACMRT origin/${{ github.base_ref }}...HEAD -- '*.py' > changed_files.txt
|
git diff --name-only --diff-filter=ACMRT origin/${{ github.base_ref }}...HEAD -- '*.py' > changed_files.txt
|
||||||
|
|
||||||
# Filter for files in src/ and tests/ directories
|
# Filter for files in src/ and tests/ directories
|
||||||
grep -E "^(src/|tests/)" changed_files.txt > filtered_changed_files.txt || true
|
grep -E "^(src/|tests/)" changed_files.txt > filtered_changed_files.txt || true
|
||||||
|
|
||||||
# Check if there are any changed files
|
# Check if there are any changed files
|
||||||
if [ -s filtered_changed_files.txt ]; then
|
if [ -s filtered_changed_files.txt ]; then
|
||||||
echo "Changed Python files in src/ and tests/:"
|
echo "Changed Python files in src/ and tests/:"
|
||||||
|
|||||||
@@ -1,4 +1,30 @@
|
|||||||
import warnings
|
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 threading
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
@@ -15,17 +41,10 @@ from crewai.tasks.llm_guardrail import LLMGuardrail
|
|||||||
from crewai.tasks.task_output import TaskOutput
|
from crewai.tasks.task_output import TaskOutput
|
||||||
from crewai.telemetry.telemetry import Telemetry
|
from crewai.telemetry.telemetry import Telemetry
|
||||||
|
|
||||||
warnings.filterwarnings(
|
|
||||||
"ignore",
|
|
||||||
message="Pydantic serializer warnings:",
|
|
||||||
category=UserWarning,
|
|
||||||
module="pydantic.main",
|
|
||||||
)
|
|
||||||
|
|
||||||
_telemetry_submitted = False
|
_telemetry_submitted = False
|
||||||
|
|
||||||
|
|
||||||
def _track_install():
|
def _track_install() -> None:
|
||||||
"""Track package installation/first-use via Scarf analytics."""
|
"""Track package installation/first-use via Scarf analytics."""
|
||||||
global _telemetry_submitted
|
global _telemetry_submitted
|
||||||
|
|
||||||
@@ -36,7 +55,7 @@ def _track_install():
|
|||||||
pixel_url = "https://api.scarf.sh/v2/packages/CrewAI/crewai/docs/00f2dad1-8334-4a39-934e-003b2e1146db"
|
pixel_url = "https://api.scarf.sh/v2/packages/CrewAI/crewai/docs/00f2dad1-8334-4a39-934e-003b2e1146db"
|
||||||
|
|
||||||
req = urllib.request.Request(pixel_url)
|
req = urllib.request.Request(pixel_url)
|
||||||
req.add_header('User-Agent', f'CrewAI-Python/{__version__}')
|
req.add_header("User-Agent", f"CrewAI-Python/{__version__}")
|
||||||
|
|
||||||
with urllib.request.urlopen(req, timeout=2): # nosec B310
|
with urllib.request.urlopen(req, timeout=2): # nosec B310
|
||||||
_telemetry_submitted = True
|
_telemetry_submitted = True
|
||||||
@@ -45,7 +64,7 @@ def _track_install():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _track_install_async():
|
def _track_install_async() -> None:
|
||||||
"""Track installation in background thread to avoid blocking imports."""
|
"""Track installation in background thread to avoid blocking imports."""
|
||||||
if not Telemetry._is_telemetry_disabled():
|
if not Telemetry._is_telemetry_disabled():
|
||||||
thread = threading.Thread(target=_track_install, daemon=True)
|
thread = threading.Thread(target=_track_install, daemon=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user