From 11308e4833518d4a785dcd508f9835e506449fc6 Mon Sep 17 00:00:00 2001 From: Arnav Naval Date: Fri, 24 Apr 2026 00:10:19 -0500 Subject: [PATCH] fix windows eventloop --- backend/pyproject.toml | 3 ++- backend/run.sh | 10 +++++++++- backend/uv.lock | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index cf2bde59..ef5f4b04 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -12,7 +12,8 @@ dependencies = [ "posthog", "pydantic==2.10.5", "watchfiles", - "swarm-debug" + "swarm-debug", + "winloop; sys_platform == 'win32'", ] [dependency-groups] diff --git a/backend/run.sh b/backend/run.sh index d556bda4..11d8dd7c 100755 --- a/backend/run.sh +++ b/backend/run.sh @@ -37,7 +37,15 @@ BACKEND_PORT=$("$PY" -c "import json,sys; print(json.load(open(sys.argv[1], enco # --- Start the backend server --- echo "Starting backend server on http://0.0.0.0:${BACKEND_PORT} ..." cd "$PROJECT_ROOT_ABSPATH" + +# Windows needs winloop for subprocess support with --reload +if [[ "$IS_WINDOWS" == "true" ]]; then + LOOP_ARG="--loop winloop:new_event_loop" +else + LOOP_ARG="" +fi + WATCHFILES_FORCE_POLLING=true "$UV_BIN" run --project "$BACKEND_DIR_ABSPATH" python -m uvicorn backend.main:app \ --host 0.0.0.0 --port "$BACKEND_PORT" --reload \ --reload-dir "$BACKEND_DIR_ABSPATH" \ - --reload-exclude '*.pyc' + --reload-exclude '*.pyc' $LOOP_ARG diff --git a/backend/uv.lock b/backend/uv.lock index b20d2690..9cd2e821 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -887,6 +887,7 @@ dependencies = [ { name = "pydantic" }, { name = "swarm-debug" }, { name = "watchfiles" }, + { name = "winloop", marker = "sys_platform == 'win32'" }, ] [package.dev-dependencies] @@ -910,6 +911,7 @@ requires-dist = [ { name = "pydantic", specifier = "==2.10.5" }, { name = "swarm-debug" }, { name = "watchfiles" }, + { name = "winloop", marker = "sys_platform == 'win32'" }, ] [package.metadata.requires-dev] @@ -2086,3 +2088,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9a/3f/f70e03f40ffc9a30d817eef7da1be72ee4956ba8d7255c399a01b135902a/websockets-16.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a653aea902e0324b52f1613332ddf50b00c06fdaf7e92624fbf8c77c78fa5767", size = 178735, upload-time = "2026-01-10T09:23:42.259Z" }, { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, ] + +[[package]] +name = "winloop" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/63/e99dd93ab2a7084606cd4deb403c4b87351579e55c28fab3f4861e3de3f7/winloop-0.6.2.tar.gz", hash = "sha256:8768fb27c692eb92b2c6921d630bbf1f835738003cd429c0db459fea2d48ce10", size = 2560282, upload-time = "2026-04-10T20:42:48.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/9d/5fbabb936de1fe42bf318c0e1f471445cb7dad1efc38b562d9de8ebaa02d/winloop-0.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:1226c10c17d792f7bdc66d34ff7cadca35a92eb1b1297c1979b0336e3d980f27", size = 640345, upload-time = "2026-04-10T20:42:27.723Z" }, + { url = "https://files.pythonhosted.org/packages/1d/76/d9a5680c59f74659cce71fdffcb3d95397a0c796fb59da04fd615ed37d1c/winloop-0.6.2-cp310-cp310-win_arm64.whl", hash = "sha256:2fe075ee5f9f7d28f637414e1060a583e5be38a7f569aeb6f163287f9453f65b", size = 528657, upload-time = "2026-04-10T20:42:29.049Z" }, + { url = "https://files.pythonhosted.org/packages/dc/78/9f1db86b3261bffbc1a2245d685dcf690e2f4532c3437382925012b5ead8/winloop-0.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:d7b82ac0897d5e82ee4b3def3bebdff238181bf9ab33b3a8c61cf8744ee137cd", size = 647407, upload-time = "2026-04-10T20:42:30.572Z" }, + { url = "https://files.pythonhosted.org/packages/97/ce/2ab0671cd9b26caebf036a11054a72b559ca4e04006ff627068302410543/winloop-0.6.2-cp311-cp311-win_arm64.whl", hash = "sha256:9302bee43708cd44d4eb93bb6a53d6990f48c6ce942d26f0f5cfae421d9f9882", size = 530526, upload-time = "2026-04-10T20:42:32.233Z" }, + { url = "https://files.pythonhosted.org/packages/37/d7/36c5a5c544fa49efbe3dc6d938fb30ff69765d49daf5427f12c90d5e4ca4/winloop-0.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:90aebf99b34fe20840a26b54ab92ca9a9cb1ab8da278a6c791f83f40a6bfc393", size = 644942, upload-time = "2026-04-10T20:42:33.639Z" }, + { url = "https://files.pythonhosted.org/packages/e2/38/dca4ae9bba44d98516e0ff46e7598af7a4a03b0fcf1a2c898ab681fd7ab3/winloop-0.6.2-cp312-cp312-win_arm64.whl", hash = "sha256:78a907cc3d4ac247bce89bf4b6e70d132679428eae725b9f4b92cb7e09aba53e", size = 529151, upload-time = "2026-04-10T20:42:35.112Z" }, + { url = "https://files.pythonhosted.org/packages/3e/06/7a15598ea0ed176d8c7ee9aab460b310a7c372768c158c3d5d6b2720a0af/winloop-0.6.2-cp313-cp313-win_amd64.whl", hash = "sha256:a41d070bbaae29f61f13656d9445c8781eaaa17b15ea8cb047e0ed739a4a53ce", size = 644477, upload-time = "2026-04-10T20:42:36.441Z" }, + { url = "https://files.pythonhosted.org/packages/a2/37/9c087a730c5e2637dc7524471a2aa03bda2d0d2d2c99ad269dda4d9ea465/winloop-0.6.2-cp313-cp313-win_arm64.whl", hash = "sha256:c961b75d7ff315f70f0a22d7bcb2ced0ce5ab781c6546bb6224a7f9082f13fda", size = 528441, upload-time = "2026-04-10T20:42:37.803Z" }, + { url = "https://files.pythonhosted.org/packages/a7/48/04f0907048b6b36a2a0ed768cb7913d30b4d3040d2d6207b9a002ef1168c/winloop-0.6.2-cp314-cp314-win_amd64.whl", hash = "sha256:2db55a8b3d69fc4a14d58acdc1caa371f76fb424f1923ef573b458dc95b94ac0", size = 655544, upload-time = "2026-04-10T20:42:38.881Z" }, + { url = "https://files.pythonhosted.org/packages/6e/16/e9ca3ba79ee826db8f740dff643ee6550de25c49f473946eaee9e5e70fbe/winloop-0.6.2-cp314-cp314-win_arm64.whl", hash = "sha256:d529dd253fd70534b7533aa2fbe5914d18ce868e0dc62e68c36fde7b9141b1ad", size = 547182, upload-time = "2026-04-10T20:42:40.529Z" }, + { url = "https://files.pythonhosted.org/packages/51/73/225f62296a50ecfb245d7d3d4edc765a8866c9e8cede81a27a55c67cb323/winloop-0.6.2-cp314-cp314t-win_amd64.whl", hash = "sha256:9d5460ecade933f50952a6fa172cd447ffdc73180b3762856e0397497fcbc0f3", size = 805005, upload-time = "2026-04-10T20:42:42.085Z" }, + { url = "https://files.pythonhosted.org/packages/41/7c/9fac9570a8b8db79dc548225123099bb1ed4673b13a13a5468fc12469cf5/winloop-0.6.2-cp314-cp314t-win_arm64.whl", hash = "sha256:91217902254ab08ccb093eeb2e25bd5ae85c33c57d0e8708d841ffce5eecc6d6", size = 576217, upload-time = "2026-04-10T20:42:43.598Z" }, +]