diff --git a/tortoise_cli/cli.py b/tortoise_cli/cli.py index e5a3a41..8bcb830 100644 --- a/tortoise_cli/cli.py +++ b/tortoise_cli/cli.py @@ -1,6 +1,7 @@ from __future__ import annotations import contextlib +import platform import sys from collections.abc import AsyncGenerator @@ -11,6 +12,22 @@ from tortoise_cli import __version__, utils +def _patch_loop_factory_for_ptpython() -> None: + # This patch can be removed when [prompt-toolkit/ptpython#582](https://github.com/prompt-toolkit/ptpython/issues/582) fixed + from asyncio import get_event_loop_policy + + def do_nothing(*args, **kw) -> None: ... + + policy = get_event_loop_policy() + if loop_factory := getattr(policy, "_loop_factory", None): + for attr in ("add_signal_handler", "remove_signal_handler"): + setattr(loop_factory, attr, do_nothing) + + +if platform.system() == "Windows": + _patch_loop_factory_for_ptpython() + + @contextlib.asynccontextmanager async def aclose_tortoise() -> AsyncGenerator[None]: try: