diff --git a/.ruff.toml b/.ruff.toml index cd21d1db..fa3f5008 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -62,6 +62,8 @@ ignore = [ "**/tests/*" = ["S101"] "libs/**/*.py" = ["C901"] "libs/arcade-mcp-server/docs/**" = ["TRY400"] +# E402: warnings.filterwarnings must run before opentelemetry imports (which pull in requests) +"libs/arcade-serve/arcade_serve/fastapi/telemetry.py" = ["E402"] [format] preview = true diff --git a/libs/arcade-serve/arcade_serve/fastapi/telemetry.py b/libs/arcade-serve/arcade_serve/fastapi/telemetry.py index d77793a4..1dc3e066 100644 --- a/libs/arcade-serve/arcade_serve/fastapi/telemetry.py +++ b/libs/arcade-serve/arcade_serve/fastapi/telemetry.py @@ -1,10 +1,21 @@ import logging import os import urllib.parse +import warnings from typing import Literal, Optional +# requests scans the environment for chardet at import time and emits a +# RequestsDependencyWarning when chardet>=6 is present (e.g. pulled in by tox). +# The warning is noise: requests uses charset-normalizer regardless of chardet. +warnings.filterwarnings( + "ignore", + message="urllib3.*chardet.*", + module="requests", +) + from fastapi import FastAPI -from opentelemetry import _logs, trace +from opentelemetry import trace +from opentelemetry._logs import set_logger_provider from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter @@ -102,7 +113,7 @@ class OTELHandler: otlp_log_exporter = OTLPLogExporter() self._logger_provider = LoggerProvider(resource=self.resource) - _logs.set_logger_provider(self._logger_provider) + set_logger_provider(self._logger_provider) # Create a batch span processor and add the exporter self._log_processor = BatchLogRecordProcessor(otlp_log_exporter) diff --git a/libs/arcade-serve/pyproject.toml b/libs/arcade-serve/pyproject.toml index e945326c..e72b95e8 100644 --- a/libs/arcade-serve/pyproject.toml +++ b/libs/arcade-serve/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "arcade-serve" -version = "3.2.1" +version = "3.2.2" description = "Arcade Serve - Serving infrastructure for Arcade tools and workers" readme = "README.md" license = {text = "MIT"}