Mypy: Got passing on macos (#34591)

* Mypy: Got mypy passing on macos

* common/realtime.py refactor

* Mypy: mypy passing on darwin

* Refactor: Removed else: pass statement

* Refactor: Removed unnecessary check

* added xattr to pyproject

* loggerd: switched to xatter module

* loggerd: removed unused module in xattr_cache.py

* UV: update uv.lock

* Update system/athena/athenad.py

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>

* athenad: fixed blank lines

* loggerd: refactor of xattr_cache

* cleanup

---------

Co-authored-by: Maxime Desroches <desroches.maxime@gmail.com>
This commit is contained in:
BrainLess
2025-02-16 13:35:52 +05:30
committed by GitHub
parent 917b45afd0
commit b09b48130e
5 changed files with 594 additions and 557 deletions
+3 -2
View File
@@ -1,6 +1,7 @@
"""Utilities for reading real time clocks and keeping soft real time constraints.""" """Utilities for reading real time clocks and keeping soft real time constraints."""
import gc import gc
import os import os
import sys
import time import time
from collections import deque from collections import deque
@@ -28,13 +29,13 @@ class Priority:
def set_core_affinity(cores: list[int]) -> None: def set_core_affinity(cores: list[int]) -> None:
if not PC: if sys.platform == 'linux' and not PC:
os.sched_setaffinity(0, cores) os.sched_setaffinity(0, cores)
def config_realtime_process(cores: int | list[int], priority: int) -> None: def config_realtime_process(cores: int | list[int], priority: int) -> None:
gc.disable() gc.disable()
if not PC: if sys.platform == 'linux' and not PC:
os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(priority)) os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(priority))
c = cores if isinstance(cores, list) else [cores, ] c = cores if isinstance(cores, list) else [cores, ]
set_core_affinity(c) set_core_affinity(c)
+1
View File
@@ -64,6 +64,7 @@ dependencies = [
"psutil", "psutil",
"pycryptodome", # used in updated/casync, panda, body, and a test "pycryptodome", # used in updated/casync, panda, body, and a test
"setproctitle", "setproctitle",
"xattr",
# logreader # logreader
"zstandard", "zstandard",
+5 -2
View File
@@ -765,8 +765,11 @@ def ws_manage(ws: WebSocket, end_event: threading.Event) -> None:
# While not sending data, onroad, we can expect to time out in 7 + (7 * 2) = 21s # While not sending data, onroad, we can expect to time out in 7 + (7 * 2) = 21s
# offroad, we can expect to time out in 30 + (10 * 3) = 60s # offroad, we can expect to time out in 30 + (10 * 3) = 60s
# FIXME: TCP_USER_TIMEOUT is effectively 2x for some reason (32s), so it's mostly unused # FIXME: TCP_USER_TIMEOUT is effectively 2x for some reason (32s), so it's mostly unused
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT, 16000 if onroad else 0) if sys.platform == 'linux':
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 7 if onroad else 30) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT, 16000 if onroad else 0)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 7 if onroad else 30)
elif sys.platform == 'darwin':
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPALIVE, 7 if onroad else 30)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 7 if onroad else 10) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 7 if onroad else 10)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 2 if onroad else 3) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 2 if onroad else 3)
+4 -3
View File
@@ -1,13 +1,14 @@
import os
import errno import errno
import xattr
_cached_attributes: dict[tuple, bytes | None] = {} _cached_attributes: dict[tuple, bytes | None] = {}
def getxattr(path: str, attr_name: str) -> bytes | None: def getxattr(path: str, attr_name: str) -> bytes | None:
key = (path, attr_name) key = (path, attr_name)
if key not in _cached_attributes: if key not in _cached_attributes:
try: try:
response = os.getxattr(path, attr_name) response = xattr.getxattr(path, attr_name)
except OSError as e: except OSError as e:
# ENODATA means attribute hasn't been set # ENODATA means attribute hasn't been set
if e.errno == errno.ENODATA: if e.errno == errno.ENODATA:
@@ -19,4 +20,4 @@ def getxattr(path: str, attr_name: str) -> bytes | None:
def setxattr(path: str, attr_name: str, attr_value: bytes) -> None: def setxattr(path: str, attr_name: str, attr_value: bytes) -> None:
_cached_attributes.pop((path, attr_name), None) _cached_attributes.pop((path, attr_name), None)
return os.setxattr(path, attr_name, attr_value) xattr.setxattr(path, attr_name, attr_value)
Generated
+581 -550
View File
File diff suppressed because it is too large Load Diff