Initial: Standalone mixer app with MixerPage, scene management, WS proxy

This commit is contained in:
2026-06-21 00:03:42 -04:00
commit b8a9f06734
7146 changed files with 1684613 additions and 0 deletions
@@ -0,0 +1,27 @@
from __future__ import annotations
import shutil
import sys
from typing import TYPE_CHECKING, Any, Callable
if TYPE_CHECKING:
from _typeshed import ExcInfo, StrOrBytesPath
from typing_extensions import TypeAlias
# Same as shutil._OnExcCallback from typeshed
_OnExcCallback: TypeAlias = Callable[[Callable[..., Any], str, BaseException], object]
def shutil_rmtree(
path: StrOrBytesPath,
ignore_errors: bool = False,
onexc: _OnExcCallback | None = None,
) -> None:
if sys.version_info >= (3, 12):
return shutil.rmtree(path, ignore_errors, onexc=onexc)
def _handler(fn: Callable[..., Any], path: str, excinfo: ExcInfo) -> None:
if onexc:
onexc(fn, path, excinfo[1])
return shutil.rmtree(path, ignore_errors, onerror=_handler)