Adapted from commit 6bf706c - dependecies set to 6.1.19 values From 6bf706c9b09ba41beb245b608e63e52578f83c06 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 11 Jun 2026 14:05:43 +0300 Subject: [PATCH] Add support for stable Starlette 1.0 // Resolve #5350 , Resolve #5423 --- a/platformio/dependencies.py +++ b/platformio/dependencies.py @@ -42,8 +42,8 @@ def get_pip_dependencies(): home = [ # PIO Home requirements "ajsonrpc == 1.2.*", - "starlette >=0.19, <0.53", - "uvicorn >=0.16, <0.41", + "starlette < 2", + "uvicorn < 1", "wsproto == 1.*", ] --- a/platformio/home/run.py +++ b/platformio/home/run.py @@ -14,6 +14,7 @@ import asyncio import os +from contextlib import asynccontextmanager from urllib.parse import urlparse import click @@ -86,16 +87,18 @@ def run_server(host, port, no_open, shutdown_timeout, home_url): if path != "/": routes.append(Route("/", protected_page)) + @asynccontextmanager + async def app_lifespan(_): + click.echo("PIO Home has been started. Press Ctrl+C to shutdown.") + if not no_open: + click.launch(home_url) + yield + uvicorn.run( Starlette( middleware=[Middleware(ShutdownMiddleware)], routes=routes, - on_startup=[ - lambda: click.echo( - "PIO Home has been started. Press Ctrl+C to shutdown." - ), - lambda: None if no_open else click.launch(home_url), - ], + lifespan=app_lifespan, ), host=host, port=port,