make uvloop optional

This commit is contained in:
Will McGugan
2023-08-22 14:19:19 +01:00
parent 2e7135b8a4
commit bc6fda28d3
2 changed files with 11 additions and 7 deletions

View File

@@ -11,7 +11,7 @@ readme = "README.md"
python = "^3.7"
textual = { version = ">=0.13.0", extras = ["dev"] }
aiohttp = "^3.8.4"
uvloop = "^0.17.0"
uvloop = { version = "^0.17.0", platform = "windows" }
click = "^8.1.3"
aiohttp-jinja2 = "^1.5.1"
pydantic = "^2.1.1"

View File

@@ -16,7 +16,6 @@ from .ganglion_client import GanglionClient
from rich.console import Console
from rich.logging import RichHandler
from rich.text import Text
import uvloop
from importlib_metadata import version
@@ -150,9 +149,14 @@ def app(
if not ganglion_client.app_count:
ganglion_client.add_app("Welcome", "textual-web --welcome", "welcome")
if sys.version_info >= (3, 11):
with asyncio.Runner(loop_factory=uvloop.new_event_loop) as runner:
runner.run(ganglion_client.run())
else:
uvloop.install()
try:
import uvloop
except ImportError:
asyncio.run(ganglion_client.run())
else:
if sys.version_info >= (3, 11):
with asyncio.Runner(loop_factory=uvloop.new_event_loop) as runner:
runner.run(ganglion_client.run())
else:
uvloop.install()
asyncio.run(ganglion_client.run())