Skip to content

Commit

Permalink
Remove unnecessary asyncio EventLoopPolicy init_watcher backport (hom…
Browse files Browse the repository at this point in the history
  • Loading branch information
cdce8p authored Nov 1, 2024
1 parent ab5b9db commit 5ed7d32
Showing 1 changed file with 0 additions and 35 deletions.
35 changes: 0 additions & 35 deletions homeassistant/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
from __future__ import annotations

import asyncio
from asyncio import events
import dataclasses
import logging
import os
import subprocess
import threading
from time import monotonic
Expand Down Expand Up @@ -58,46 +56,13 @@ class RuntimeConfig:
safe_mode: bool = False


def can_use_pidfd() -> bool:
"""Check if pidfd_open is available.
Back ported from cpython 3.12
"""
if not hasattr(os, "pidfd_open"):
return False
try:
pid = os.getpid()
os.close(os.pidfd_open(pid, 0))
except OSError:
# blocked by security policy like SECCOMP
return False
return True


class HassEventLoopPolicy(asyncio.DefaultEventLoopPolicy):
"""Event loop policy for Home Assistant."""

def __init__(self, debug: bool) -> None:
"""Init the event loop policy."""
super().__init__()
self.debug = debug
self._watcher: asyncio.AbstractChildWatcher | None = None

def _init_watcher(self) -> None:
"""Initialize the watcher for child processes.
Back ported from cpython 3.12
"""
with events._lock: # type: ignore[attr-defined] # noqa: SLF001
if self._watcher is None: # pragma: no branch
if can_use_pidfd():
self._watcher = asyncio.PidfdChildWatcher()
else:
self._watcher = asyncio.ThreadedChildWatcher()
if threading.current_thread() is threading.main_thread():
self._watcher.attach_loop(
self._local._loop # type: ignore[attr-defined] # noqa: SLF001
)

@property
def loop_name(self) -> str:
Expand Down

0 comments on commit 5ed7d32

Please sign in to comment.