Increase ruff coverage (#23644)
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
CI / Jetson Jetpack 6 (push) Waiting to run

* Pin ruff

* Add python upgrade fixes

This enables python upgrade checks in ruff to look for deprecated types and patterns. This namely fixes:
- usage of deprecated `Typing` which is now built in
- some specific exceptions which are caught and have new aliases

Some specific UP checks were also ignored as they are stylistic / unimportant and likely to cause bugs

* Remove async blocking calls

Use asyncio.to_thread on two remaining blocking calls to fix hanging event thread loop. Enable this specific rule to block it in the future.

* Use proper logging mechanism

* Correctly format logs

* Raise with context

When raising an exception include the from context to improve debugging

* Cleanup
This commit is contained in:
Nicolas Mowen
2026-07-06 12:28:02 -05:00
committed by GitHub
parent 455b8687e8
commit 4ee12e6237
169 changed files with 1053 additions and 1150 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
from abc import ABC, abstractmethod
from typing import Any, Callable
from collections.abc import Callable
from typing import Any
class Communicator(ABC):
+4 -4
View File
@@ -3,8 +3,8 @@
import datetime
import json
import logging
from collections.abc import Iterable
from typing import Any, Callable, Optional, cast
from collections.abc import Callable, Iterable
from typing import Any, cast
from frigate.camera import PTZMetrics
from frigate.camera.activity_manager import AudioActivityManager, CameraActivityManager
@@ -97,7 +97,7 @@ class Dispatcher:
"notifications": self._on_global_notification_command,
"profile": self._on_profile_command,
}
self.profile_manager: Optional[ProfileManager] = None
self.profile_manager: ProfileManager | None = None
for comm in self.comms:
comm.subscribe(self._receive)
@@ -106,7 +106,7 @@ class Dispatcher:
(comm for comm in communicators if isinstance(comm, WebPushClient)), None
)
def _receive(self, topic: str, payload: Any) -> Optional[Any]:
def _receive(self, topic: str, payload: Any) -> Any | None:
"""Handle receiving of payload from communicators."""
def handle_camera_command(
+2 -1
View File
@@ -1,8 +1,9 @@
"""Facilitates communication between processes."""
import logging
from collections.abc import Callable
from enum import Enum
from typing import Any, Callable
from typing import Any
import zmq
+2 -1
View File
@@ -3,8 +3,9 @@
import logging
import multiprocessing as mp
import threading
from collections.abc import Callable
from multiprocessing.synchronize import Event as MpEvent
from typing import Any, Callable
from typing import Any
import zmq
+4 -3
View File
@@ -1,6 +1,7 @@
import logging
import threading
from typing import Any, Callable
from collections.abc import Callable
from typing import Any
import paho.mqtt.client as mqtt
from paho.mqtt.enums import CallbackAPIVersion
@@ -214,8 +215,8 @@ class MqttClient(Communicator):
logger.error("Unable to connect to MQTT server: MQTT Not authorized")
else:
logger.error(
"Unable to connect to MQTT server: Connection refused. Error code: "
+ reason_code.getName()
"Unable to connect to MQTT server: Connection refused. Error code: %s",
reason_code.getName(),
)
self.connected = True
+1 -1
View File
@@ -146,7 +146,7 @@ class RuntimeStatePersistence:
if not os.path.exists(self._path):
return {}
try:
with open(self._path, "r") as f:
with open(self._path) as f:
data = json.load(f)
except (OSError, json.JSONDecodeError):
logger.exception(
+2 -1
View File
@@ -6,9 +6,10 @@ import logging
import os
import queue
import threading
from collections.abc import Callable
from dataclasses import dataclass
from multiprocessing.synchronize import Event as MpEvent
from typing import Any, Callable
from typing import Any
from py_vapid import Vapid01
from pywebpush import WebPusher
+2 -1
View File
@@ -4,7 +4,8 @@ import errno
import json
import logging
import threading
from typing import Any, Callable
from collections.abc import Callable
from typing import Any
from wsgiref.simple_server import make_server
from ws4py.server.wsgirefserver import (