1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
Adapted from commit 6bf706c
- dependecies set to 6.1.19 values
From 6bf706c9b09ba41beb245b608e63e52578f83c06 Mon Sep 17 00:00:00 2001
From: Ivan Kravets <me@ikravets.com>
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,
|