Update uvloop to 0.22.1 (#6705)

This commit is contained in:
Jakub Kuczys
2026-05-10 21:46:57 +02:00
committed by GitHub
parent 169d0eed49
commit 99babf9ad3
7 changed files with 44 additions and 28 deletions
+33 -1
View File
@@ -3,13 +3,15 @@ import asyncio
import logging
import sys
from enum import IntEnum
from typing import Optional
from typing import Any, Coroutine, Optional, TypeVar
import discord
from discord import __version__ as discord_version
from redbot.core.utils._internal_utils import cli_level_to_log_level
_T = TypeVar("_T")
# This needs to be an int enum to be used
# with sys.exit
@@ -368,3 +370,33 @@ def parse_cli_flags(args):
args.logging_level = cli_level_to_log_level(args.logging_level)
return args
def asyncio_run(coro: Coroutine[Any, Any, _T]) -> _T:
if sys.version_info >= (3, 11):
with asyncio.Runner(loop_factory=new_event_loop) as runner:
return runner.run(coro)
if sys.implementation.name == "cpython":
# Let's not force this dependency, uvloop is much faster on cpython
try:
import uvloop
except ImportError:
pass
else:
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
return asyncio.run(coro)
def new_event_loop() -> asyncio.AbstractEventLoop:
if sys.implementation.name == "cpython":
# Let's not force this dependency, uvloop is much faster on cpython
try:
import uvloop
except ImportError:
pass
else:
return uvloop.new_event_loop()
return asyncio.new_event_loop()