From d5b05717bc8748910117c1135171b2c3eb846aa6 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Tue, 18 Nov 2025 16:27:27 +0900 Subject: [PATCH 1/4] Enable wsgi streaming conformance tests with pyvoy Signed-off-by: Anuraag Agrawal --- conformance/test/server.py | 2 +- conformance/test/test_server.py | 6 +----- pyproject.toml | 2 +- uv.lock | 34 ++++++++++++++++----------------- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/conformance/test/server.py b/conformance/test/server.py index f663161..dd59113 100644 --- a/conformance/test/server.py +++ b/conformance/test/server.py @@ -531,7 +531,7 @@ async def serve_gunicorn( cafile: str | None, port_future: asyncio.Future[int], ): - args = ["--bind=127.0.0.1:0", "--threads=40", "--reuse-port"] + args = ["--bind=127.0.0.1:0", "--workers=8", "--reuse-port"] if certfile: args.append(f"--certfile={certfile}") if keyfile: diff --git a/conformance/test/test_server.py b/conformance/test/test_server.py index 3b6cd20..52ac777 100644 --- a/conformance/test/test_server.py +++ b/conformance/test/test_server.py @@ -45,11 +45,7 @@ def test_server_sync(server: str) -> None: args = maybe_patch_args_with_debug( [sys.executable, _server_py_path, "--mode", "sync", "--server", server] ) - opts = [ - # TODO: Enable full-duplex in pyvoy - "--skip", - "**/bidi-stream/full-duplex/**", - ] + opts = [] match server: case "gunicorn": # gunicorn doesn't support HTTP/2 diff --git a/pyproject.toml b/pyproject.toml index 29bb339..d8d7f3c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ dev = [ "pytest-asyncio==1.2.0", "pytest-cov==7.0.0", "pytest-timeout==2.4.0", - "pyvoy==0.1.1; sys_platform != 'win32'", + "pyvoy==0.1.2; sys_platform != 'win32'", "ruff~=0.13.2", "uvicorn==0.37.0", # Needed to enable HTTP/2 in daphne diff --git a/uv.lock b/uv.lock index ec1df5a..35cf6a1 100644 --- a/uv.lock +++ b/uv.lock @@ -459,7 +459,7 @@ dev = [ { name = "pytest-asyncio", specifier = "==1.2.0" }, { name = "pytest-cov", specifier = "==7.0.0" }, { name = "pytest-timeout", specifier = "==2.4.0" }, - { name = "pyvoy", marker = "sys_platform != 'win32'", specifier = "==0.1.1" }, + { name = "pyvoy", marker = "sys_platform != 'win32'", specifier = "==0.1.2" }, { name = "ruff", specifier = "~=0.13.2" }, { name = "twisted", extras = ["tls", "http2"], specifier = "==25.5.0" }, { name = "typing-extensions", specifier = "==4.15.0" }, @@ -1465,7 +1465,7 @@ wheels = [ [[package]] name = "pyvoy" -version = "0.1.1" +version = "0.1.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "find-libpython" }, @@ -1473,21 +1473,21 @@ dependencies = [ { name = "uvloop" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/ee/29423d825b9cdbf53cb3d24e9215015d9813add7d428f4cb6c2a5938bec5/pyvoy-0.1.1-cp310-cp310-macosx_15_0_arm64.whl", hash = "sha256:bb49d21db16e4e0f8891a98fea5cb0265994e1fed1d969bb66af20bf92613536", size = 32563489, upload-time = "2025-11-14T10:16:47.156Z" }, - { url = "https://files.pythonhosted.org/packages/31/a1/42cfc60d6493675a7c8892130ef168d68b0384848ad99f1045834c0877d2/pyvoy-0.1.1-cp310-cp310-manylinux_2_31_aarch64.whl", hash = "sha256:ac1ef45c47b821b161d39d69fd9940859d2bde332ef7b346a02d49e235aadf83", size = 28525979, upload-time = "2025-11-14T10:16:49.826Z" }, - { url = "https://files.pythonhosted.org/packages/f4/1e/33b305a187ca7d8540c16d6f028133bb7f88106c14e10b445d4b96d67eae/pyvoy-0.1.1-cp310-cp310-manylinux_2_31_x86_64.whl", hash = "sha256:f2c76d8cf5b82467da25922acbab4185ae9dcd9f90636cd05ec8c8d2ed8e30dd", size = 30173067, upload-time = "2025-11-14T10:16:52.486Z" }, - { url = "https://files.pythonhosted.org/packages/d8/92/30fb684bebaabb2562358dc5ba5f5446a5c0fc3f4ea30192694b7a18847f/pyvoy-0.1.1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:bd4257f36aed121c6bae661e98d8c0cc36de17ddfe768885d1a317170c34127a", size = 32563899, upload-time = "2025-11-14T10:16:54.995Z" }, - { url = "https://files.pythonhosted.org/packages/db/ec/f1fdc9a0653752eaa6579ad94a92f1681c0a806b3b253bf2d670856b6bd7/pyvoy-0.1.1-cp311-cp311-manylinux_2_31_aarch64.whl", hash = "sha256:797fc8be156911b7c6f67c144907ac861caf8c92b3163529f0a4769fae0d1fc8", size = 28524990, upload-time = "2025-11-14T10:16:57.761Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ea/e586a7363b22bbdacca6ef45ae5f790fe1b80ef9845efbf9f6cdc39617e9/pyvoy-0.1.1-cp311-cp311-manylinux_2_31_x86_64.whl", hash = "sha256:7e6bc1a00af4e3b8f6488f80dfdbe1ffae6fbf36d10c2f976d8422e10ebbd269", size = 30171869, upload-time = "2025-11-14T10:17:00.336Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b9/8c0a4ecea4e8f92718df413f8dac8c33b164b4128983294168176fbf7078/pyvoy-0.1.1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:6e714b70ef9c6e5375a3bfd0fac4bba4235df08ac90654ec5ba8a29faee629c6", size = 32559840, upload-time = "2025-11-14T10:17:03.369Z" }, - { url = "https://files.pythonhosted.org/packages/e7/ab/2a954859148fb09088af111947135d42922473dafc909c512a96f6b89896/pyvoy-0.1.1-cp312-cp312-manylinux_2_31_aarch64.whl", hash = "sha256:31950bc4e33f1918f57a88b6c42b99cac88ac098699b9c9384a24fdf44621668", size = 28521334, upload-time = "2025-11-14T10:17:06.635Z" }, - { url = "https://files.pythonhosted.org/packages/eb/17/5562985594785bf63e3a14e51665ce24831e8a1b32791cd9edc8bb928926/pyvoy-0.1.1-cp312-cp312-manylinux_2_31_x86_64.whl", hash = "sha256:ea4705a57fb54b07a73fd061094fcba20c56c644e67789d82c939c72d1f50a62", size = 30168042, upload-time = "2025-11-14T10:17:11.458Z" }, - { url = "https://files.pythonhosted.org/packages/07/9a/2e5a0d02b1b1d53fc8e1abbc43890145017503b71af9423048f298139d3f/pyvoy-0.1.1-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:846a5cb4b5fb23d358d6e4694c358046a73966e1df5d16bddd5304a034e23ced", size = 32559880, upload-time = "2025-11-14T10:17:16.761Z" }, - { url = "https://files.pythonhosted.org/packages/52/60/f93e7fdaf31a81ddc5a7d586c6e5fd17315e7392b2affce352282dfa69e6/pyvoy-0.1.1-cp313-cp313-manylinux_2_31_aarch64.whl", hash = "sha256:71a42e9903204a9b626ad5ff9baabc556673092d299c26508f9bb6707f1cf4d0", size = 28519383, upload-time = "2025-11-14T10:17:21.127Z" }, - { url = "https://files.pythonhosted.org/packages/77/61/8bcfb263f703f02f2698d6b50c53e63d9e87f65beae1ad21c918a16adf82/pyvoy-0.1.1-cp313-cp313-manylinux_2_31_x86_64.whl", hash = "sha256:316e26e732e4718b9345c9e27914ffb0a72ea25a894bcff9c1690a4b244b905a", size = 30167090, upload-time = "2025-11-14T10:17:23.584Z" }, - { url = "https://files.pythonhosted.org/packages/03/92/b44d292d55d26512cc7af2e403b0615bd55837709ed30bca5e6f266ca5c9/pyvoy-0.1.1-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:768af0d632edbafc8cf200541f3c805ac4604c74b01cb7c367698684b9850b71", size = 32560382, upload-time = "2025-11-14T10:17:26.194Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/0cee6a14ecfc1751cc1569e5f3471cde2688b95ee2ee5dd1e86a58aa8262/pyvoy-0.1.1-cp314-cp314-manylinux_2_31_aarch64.whl", hash = "sha256:f4309ef1b8add370f6c4762033a32ad18baffbba913a448885af6b712049161c", size = 28518147, upload-time = "2025-11-14T10:17:28.733Z" }, - { url = "https://files.pythonhosted.org/packages/f4/8f/1873c4323f94ff88edc80e1a15f633168926e95a407f075da14afc835c77/pyvoy-0.1.1-cp314-cp314-manylinux_2_31_x86_64.whl", hash = "sha256:d23b0c0067123b623ca50af1e7d10ebf770bf794d3552c1b329e299cd375cc27", size = 30166324, upload-time = "2025-11-14T10:17:31.859Z" }, + { url = "https://files.pythonhosted.org/packages/d3/af/bfb318526b6d86c1cb1c8437b5ec5d751467397a0c233ec8d03ccaee43a4/pyvoy-0.1.2-cp310-cp310-macosx_15_0_arm64.whl", hash = "sha256:8d449ee02cf1fe1c0f5858ac3c81e39d9ffb5033a03f07ecec4948295f6fae89", size = 32565596, upload-time = "2025-11-18T06:48:22.18Z" }, + { url = "https://files.pythonhosted.org/packages/19/ea/060de57934ee2ce0ea23db830cf400c4786056505103def9d9d1255ce59c/pyvoy-0.1.2-cp310-cp310-manylinux_2_31_aarch64.whl", hash = "sha256:d12939bdd01f45f64c9757eafcc6dbbffee0b5cd5d69a41982237763ff4c8908", size = 28528062, upload-time = "2025-11-18T06:48:25.739Z" }, + { url = "https://files.pythonhosted.org/packages/c8/f1/d962f4d77ab40e75ad069d8c861f94a32c988732de19db6737e7155d6811/pyvoy-0.1.2-cp310-cp310-manylinux_2_31_x86_64.whl", hash = "sha256:cc7eb5dea99f267bb1796bd63d3439ebcebf9df4acdf133dfaf4b66257907003", size = 30174575, upload-time = "2025-11-18T06:48:28.593Z" }, + { url = "https://files.pythonhosted.org/packages/df/89/03aa01547af96dd7aa9be359a572b924e1f688c074ef45e553dbc0f2db3d/pyvoy-0.1.2-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:8b0fef26ca9d380c3ea52c5236df29e8f98600a10fe56ae7c6377b92da68456d", size = 32565143, upload-time = "2025-11-18T06:48:31.15Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e4/be897bfe763bbff972e77780d1f203edc2c9a3410a38aeb811eb9ba064cc/pyvoy-0.1.2-cp311-cp311-manylinux_2_31_aarch64.whl", hash = "sha256:d099e4124aa90c1ef4b24c53e8024f948c29d5a99d924740e0181ab14e8022c5", size = 28528042, upload-time = "2025-11-18T06:48:33.665Z" }, + { url = "https://files.pythonhosted.org/packages/22/50/b99b6b4e6f5cf6b69449b7f305fcb83dc92da63143bbbff6bcdda81f0633/pyvoy-0.1.2-cp311-cp311-manylinux_2_31_x86_64.whl", hash = "sha256:8489b03ae6b0dc833d09997ec960dfff6afbfee891c60a42d21342dbe8016dde", size = 30174054, upload-time = "2025-11-18T06:48:36.578Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b3/48e54808f68efd4641aad5dec361b2119754f7ad8c95ae18a7f1027c4005/pyvoy-0.1.2-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:82f6db5874a104b4dc058f5998ab4b7b8dd5d2158b3fe1812447141df3bcf0af", size = 32562089, upload-time = "2025-11-18T06:48:39.23Z" }, + { url = "https://files.pythonhosted.org/packages/72/f9/ddb769f361a7644aec083cadc180d6d963fdf3e0838a993c4c5a67573a4e/pyvoy-0.1.2-cp312-cp312-manylinux_2_31_aarch64.whl", hash = "sha256:773c9c13a3b0d13b7bddc3b3f6c93fd5298e792269bec6a21a3801b940c418af", size = 28526360, upload-time = "2025-11-18T06:48:42.018Z" }, + { url = "https://files.pythonhosted.org/packages/a8/cf/f52e33f141da7c026c0dfc922178b0a902f5e5486cffd5da1ba23796feaf/pyvoy-0.1.2-cp312-cp312-manylinux_2_31_x86_64.whl", hash = "sha256:3437e4bcbc3f9c230ed974f0506e1d507c61385ba49def114eff52f12ce088d3", size = 30172731, upload-time = "2025-11-18T06:48:44.878Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d5/d16ff5de8f1372f2ba0170ffcace1a79482dcfdfdd64f625d3e959cb3699/pyvoy-0.1.2-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:04c2654124c8097dc0a904c8cd1896ef072c23e1e40997501c39a29074b9f16f", size = 32562083, upload-time = "2025-11-18T06:48:47.786Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d3/cc2b423945ccf79ea9a6550aada535d655f32939bcbb69a594ad43e6f791/pyvoy-0.1.2-cp313-cp313-manylinux_2_31_aarch64.whl", hash = "sha256:3cf86b31e007e8a2483c92ede7bc9c959600eebbfd1ac1254ddabce119333360", size = 28523951, upload-time = "2025-11-18T06:48:50.761Z" }, + { url = "https://files.pythonhosted.org/packages/97/e3/7a24e69471f3a400f39f82e5195af765ef124339b9d7a98620c27658312c/pyvoy-0.1.2-cp313-cp313-manylinux_2_31_x86_64.whl", hash = "sha256:1caa920cee4b8a79ca3bb4e4788b0cfc7005dab396b2d892819c7e50f918d670", size = 30172138, upload-time = "2025-11-18T06:48:53.525Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c0/731370402d774b41b786638d15a3378a5c1e2fe482032b7b40df6c90dadf/pyvoy-0.1.2-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:57bff2093d4d2958c9f2b50f67cc2e6ae9d53adc6de3d0a7a2c9d3d36f6f5b53", size = 32561464, upload-time = "2025-11-18T06:48:56.297Z" }, + { url = "https://files.pythonhosted.org/packages/58/67/1777827471efa575ae9586dc3b7ab4b331a15dbccf3d40f2c05311700574/pyvoy-0.1.2-cp314-cp314-manylinux_2_31_aarch64.whl", hash = "sha256:aef91cc81a7a584d937e12b2fa2baae451913a642c44eb8d771008da233b8e40", size = 28523669, upload-time = "2025-11-18T06:48:59.363Z" }, + { url = "https://files.pythonhosted.org/packages/2d/3a/2b8a0300e6bba250f724186f5eacd11e34afe69a358a91333ed4b274b4e6/pyvoy-0.1.2-cp314-cp314-manylinux_2_31_x86_64.whl", hash = "sha256:17606c3d7c5b9adffb7b4833772c1656924414685ea26747751c3a666b2ef15f", size = 30171296, upload-time = "2025-11-18T06:49:02.275Z" }, ] [[package]] From 3709f9ae892beec98a7acf7f1d2e19a9613d5fba Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Tue, 18 Nov 2025 18:15:54 +0900 Subject: [PATCH 2/4] Tweak gunicorn Signed-off-by: Anuraag Agrawal --- conformance/test/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformance/test/server.py b/conformance/test/server.py index dd59113..67c06df 100644 --- a/conformance/test/server.py +++ b/conformance/test/server.py @@ -531,7 +531,7 @@ async def serve_gunicorn( cafile: str | None, port_future: asyncio.Future[int], ): - args = ["--bind=127.0.0.1:0", "--workers=8", "--reuse-port"] + args = ["--bind=127.0.0.1:0", "--threads=40", "--reuse-port", "--keepalive=30"] if certfile: args.append(f"--certfile={certfile}") if keyfile: From 356f7a84ec1ba0c56b11509865612182be3c82f6 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Tue, 18 Nov 2025 19:06:40 +0900 Subject: [PATCH 3/4] Tweak gunicorn Signed-off-by: Anuraag Agrawal --- conformance/test/server.py | 7 +- pyproject.toml | 2 +- uv.lock | 131 ++++++++++++++++++++++++++++++++++++- 3 files changed, 136 insertions(+), 4 deletions(-) diff --git a/conformance/test/server.py b/conformance/test/server.py index 67c06df..18b548d 100644 --- a/conformance/test/server.py +++ b/conformance/test/server.py @@ -531,7 +531,12 @@ async def serve_gunicorn( cafile: str | None, port_future: asyncio.Future[int], ): - args = ["--bind=127.0.0.1:0", "--threads=40", "--reuse-port", "--keepalive=30"] + args = [ + "--bind=127.0.0.1:0", + "--workers=8", + "--worker-class=gevent", + "--reuse-port", + ] if certfile: args.append(f"--certfile={certfile}") if keyfile: diff --git a/pyproject.toml b/pyproject.toml index d8d7f3c..1518c9f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ dev = [ "httpx[http2]==0.28.1", "hypercorn==0.17.3", "granian==2.5.7", - "gunicorn==23.0.0", + "gunicorn[gevent]==23.0.0", "just-bin==1.42.4; sys_platform != 'win32'", "mkdocs==1.6.1", "mkdocs-material==9.6.20", diff --git a/uv.lock b/uv.lock index 35cf6a1..dccea94 100644 --- a/uv.lock +++ b/uv.lock @@ -414,7 +414,7 @@ dev = [ { name = "connect-python-example" }, { name = "daphne" }, { name = "granian" }, - { name = "gunicorn" }, + { name = "gunicorn", extra = ["gevent"] }, { name = "httpx", extra = ["http2"] }, { name = "hypercorn" }, { name = "just-bin", marker = "sys_platform != 'win32'" }, @@ -447,7 +447,7 @@ dev = [ { name = "connect-python-example", editable = "example" }, { name = "daphne", specifier = "==4.2.1" }, { name = "granian", specifier = "==2.5.7" }, - { name = "gunicorn", specifier = "==23.0.0" }, + { name = "gunicorn", extras = ["gevent"], specifier = "==23.0.0" }, { name = "httpx", extras = ["http2"], specifier = "==0.28.1" }, { name = "hypercorn", specifier = "==0.17.3" }, { name = "just-bin", marker = "sys_platform != 'win32'", specifier = "==1.42.4" }, @@ -724,6 +724,58 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" }, ] +[[package]] +name = "gevent" +version = "25.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'CPython' and sys_platform == 'win32'" }, + { name = "greenlet", marker = "platform_python_implementation == 'CPython'" }, + { name = "zope-event" }, + { name = "zope-interface" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/48/b3ef2673ffb940f980966694e40d6d32560f3ffa284ecaeb5ea3a90a6d3f/gevent-25.9.1.tar.gz", hash = "sha256:adf9cd552de44a4e6754c51ff2e78d9193b7fa6eab123db9578a210e657235dd", size = 5059025, upload-time = "2025-09-17T16:15:34.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/c7/2c60fc4e5c9144f2b91e23af8d87c626870ad3183cfd09d2b3ba6d699178/gevent-25.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:856b990be5590e44c3a3dc6c8d48a40eaccbb42e99d2b791d11d1e7711a4297e", size = 1831980, upload-time = "2025-09-17T15:41:22.597Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ae/49bf0a01f95a1c92c001d7b3f482a2301626b8a0617f448c4cd14ca9b5d4/gevent-25.9.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:fe1599d0b30e6093eb3213551751b24feeb43db79f07e89d98dd2f3330c9063e", size = 1918777, upload-time = "2025-09-17T15:48:57.223Z" }, + { url = "https://files.pythonhosted.org/packages/88/3f/266d2eb9f5d75c184a55a39e886b53a4ea7f42ff31f195220a363f0e3f9e/gevent-25.9.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:f0d8b64057b4bf1529b9ef9bd2259495747fba93d1f836c77bfeaacfec373fd0", size = 1869235, upload-time = "2025-09-17T15:49:18.255Z" }, + { url = "https://files.pythonhosted.org/packages/76/24/c0c7c7db70ca74c7b1918388ebda7c8c2a3c3bff0bbfbaa9280ed04b3340/gevent-25.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b56cbc820e3136ba52cd690bdf77e47a4c239964d5f80dc657c1068e0fe9521c", size = 2177334, upload-time = "2025-09-17T15:15:10.073Z" }, + { url = "https://files.pythonhosted.org/packages/4c/1e/de96bd033c03955f54c455b51a5127b1d540afcfc97838d1801fafce6d2e/gevent-25.9.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c5fa9ce5122c085983e33e0dc058f81f5264cebe746de5c401654ab96dddfca8", size = 1847708, upload-time = "2025-09-17T15:52:38.475Z" }, + { url = "https://files.pythonhosted.org/packages/26/8b/6851e9cd3e4f322fa15c1d196cbf1a8a123da69788b078227dd13dd4208f/gevent-25.9.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:03c74fec58eda4b4edc043311fca8ba4f8744ad1632eb0a41d5ec25413581975", size = 2234274, upload-time = "2025-09-17T15:24:07.797Z" }, + { url = "https://files.pythonhosted.org/packages/0f/d8/b1178b70538c91493bec283018b47c16eab4bac9ddf5a3d4b7dd905dab60/gevent-25.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:a8ae9f895e8651d10b0a8328a61c9c53da11ea51b666388aa99b0ce90f9fdc27", size = 1695326, upload-time = "2025-09-17T20:10:25.455Z" }, + { url = "https://files.pythonhosted.org/packages/81/86/03f8db0704fed41b0fa830425845f1eb4e20c92efa3f18751ee17809e9c6/gevent-25.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:18e5aff9e8342dc954adb9c9c524db56c2f3557999463445ba3d9cbe3dada7b7", size = 1792418, upload-time = "2025-09-17T15:41:24.384Z" }, + { url = "https://files.pythonhosted.org/packages/5f/35/f6b3a31f0849a62cfa2c64574bcc68a781d5499c3195e296e892a121a3cf/gevent-25.9.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1cdf6db28f050ee103441caa8b0448ace545364f775059d5e2de089da975c457", size = 1875700, upload-time = "2025-09-17T15:48:59.652Z" }, + { url = "https://files.pythonhosted.org/packages/66/1e/75055950aa9b48f553e061afa9e3728061b5ccecca358cef19166e4ab74a/gevent-25.9.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:812debe235a8295be3b2a63b136c2474241fa5c58af55e6a0f8cfc29d4936235", size = 1831365, upload-time = "2025-09-17T15:49:19.426Z" }, + { url = "https://files.pythonhosted.org/packages/31/e8/5c1f6968e5547e501cfa03dcb0239dff55e44c3660a37ec534e32a0c008f/gevent-25.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b28b61ff9216a3d73fe8f35669eefcafa957f143ac534faf77e8a19eb9e6883a", size = 2122087, upload-time = "2025-09-17T15:15:12.329Z" }, + { url = "https://files.pythonhosted.org/packages/c0/2c/ebc5d38a7542af9fb7657bfe10932a558bb98c8a94e4748e827d3823fced/gevent-25.9.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5e4b6278b37373306fc6b1e5f0f1cf56339a1377f67c35972775143d8d7776ff", size = 1808776, upload-time = "2025-09-17T15:52:40.16Z" }, + { url = "https://files.pythonhosted.org/packages/e6/26/e1d7d6c8ffbf76fe1fbb4e77bdb7f47d419206adc391ec40a8ace6ebbbf0/gevent-25.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d99f0cb2ce43c2e8305bf75bee61a8bde06619d21b9d0316ea190fc7a0620a56", size = 2179141, upload-time = "2025-09-17T15:24:09.895Z" }, + { url = "https://files.pythonhosted.org/packages/1d/6c/bb21fd9c095506aeeaa616579a356aa50935165cc0f1e250e1e0575620a7/gevent-25.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:72152517ecf548e2f838c61b4be76637d99279dbaa7e01b3924df040aa996586", size = 1677941, upload-time = "2025-09-17T19:59:50.185Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/e55930ba5259629eb28ac7ee1abbca971996a9165f902f0249b561602f24/gevent-25.9.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:46b188248c84ffdec18a686fcac5dbb32365d76912e14fda350db5dc0bfd4f86", size = 2955991, upload-time = "2025-09-17T14:52:30.568Z" }, + { url = "https://files.pythonhosted.org/packages/aa/88/63dc9e903980e1da1e16541ec5c70f2b224ec0a8e34088cb42794f1c7f52/gevent-25.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f2b54ea3ca6f0c763281cd3f96010ac7e98c2e267feb1221b5a26e2ca0b9a692", size = 1808503, upload-time = "2025-09-17T15:41:25.59Z" }, + { url = "https://files.pythonhosted.org/packages/7a/8d/7236c3a8f6ef7e94c22e658397009596fa90f24c7d19da11ad7ab3a9248e/gevent-25.9.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7a834804ac00ed8a92a69d3826342c677be651b1c3cd66cc35df8bc711057aa2", size = 1890001, upload-time = "2025-09-17T15:49:01.227Z" }, + { url = "https://files.pythonhosted.org/packages/4f/63/0d7f38c4a2085ecce26b50492fc6161aa67250d381e26d6a7322c309b00f/gevent-25.9.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:323a27192ec4da6b22a9e51c3d9d896ff20bc53fdc9e45e56eaab76d1c39dd74", size = 1855335, upload-time = "2025-09-17T15:49:20.582Z" }, + { url = "https://files.pythonhosted.org/packages/95/18/da5211dfc54c7a57e7432fd9a6ffeae1ce36fe5a313fa782b1c96529ea3d/gevent-25.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6ea78b39a2c51d47ff0f130f4c755a9a4bbb2dd9721149420ad4712743911a51", size = 2109046, upload-time = "2025-09-17T15:15:13.817Z" }, + { url = "https://files.pythonhosted.org/packages/a6/5a/7bb5ec8e43a2c6444853c4a9f955f3e72f479d7c24ea86c95fb264a2de65/gevent-25.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:dc45cd3e1cc07514a419960af932a62eb8515552ed004e56755e4bf20bad30c5", size = 1827099, upload-time = "2025-09-17T15:52:41.384Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d4/b63a0a60635470d7d986ef19897e893c15326dd69e8fb342c76a4f07fe9e/gevent-25.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:34e01e50c71eaf67e92c186ee0196a039d6e4f4b35670396baed4a2d8f1b347f", size = 2172623, upload-time = "2025-09-17T15:24:12.03Z" }, + { url = "https://files.pythonhosted.org/packages/d5/98/caf06d5d22a7c129c1fb2fc1477306902a2c8ddfd399cd26bbbd4caf2141/gevent-25.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acd6bcd5feabf22c7c5174bd3b9535ee9f088d2bbce789f740ad8d6554b18f3", size = 1682837, upload-time = "2025-09-17T19:48:47.318Z" }, + { url = "https://files.pythonhosted.org/packages/5a/77/b97f086388f87f8ad3e01364f845004aef0123d4430241c7c9b1f9bde742/gevent-25.9.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:4f84591d13845ee31c13f44bdf6bd6c3dbf385b5af98b2f25ec328213775f2ed", size = 2973739, upload-time = "2025-09-17T14:53:30.279Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/9d5f204ead343e5b27bbb2fedaec7cd0009d50696b2266f590ae845d0331/gevent-25.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9cdbb24c276a2d0110ad5c978e49daf620b153719ac8a548ce1250a7eb1b9245", size = 1809165, upload-time = "2025-09-17T15:41:27.193Z" }, + { url = "https://files.pythonhosted.org/packages/10/3e/791d1bf1eb47748606d5f2c2aa66571f474d63e0176228b1f1fd7b77ab37/gevent-25.9.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:88b6c07169468af631dcf0fdd3658f9246d6822cc51461d43f7c44f28b0abb82", size = 1890638, upload-time = "2025-09-17T15:49:02.45Z" }, + { url = "https://files.pythonhosted.org/packages/f2/5c/9ad0229b2b4d81249ca41e4f91dd8057deaa0da6d4fbe40bf13cdc5f7a47/gevent-25.9.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b7bb0e29a7b3e6ca9bed2394aa820244069982c36dc30b70eb1004dd67851a48", size = 1857118, upload-time = "2025-09-17T15:49:22.125Z" }, + { url = "https://files.pythonhosted.org/packages/49/2a/3010ed6c44179a3a5c5c152e6de43a30ff8bc2c8de3115ad8733533a018f/gevent-25.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2951bb070c0ee37b632ac9134e4fdaad70d2e660c931bb792983a0837fe5b7d7", size = 2111598, upload-time = "2025-09-17T15:15:15.226Z" }, + { url = "https://files.pythonhosted.org/packages/08/75/6bbe57c19a7aa4527cc0f9afcdf5a5f2aed2603b08aadbccb5bf7f607ff4/gevent-25.9.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e4e17c2d57e9a42e25f2a73d297b22b60b2470a74be5a515b36c984e1a246d47", size = 1829059, upload-time = "2025-09-17T15:52:42.596Z" }, + { url = "https://files.pythonhosted.org/packages/06/6e/19a9bee9092be45679cb69e4dd2e0bf5f897b7140b4b39c57cc123d24829/gevent-25.9.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d94936f8f8b23d9de2251798fcb603b84f083fdf0d7f427183c1828fb64f117", size = 2173529, upload-time = "2025-09-17T15:24:13.897Z" }, + { url = "https://files.pythonhosted.org/packages/ca/4f/50de9afd879440e25737e63f5ba6ee764b75a3abe17376496ab57f432546/gevent-25.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:eb51c5f9537b07da673258b4832f6635014fee31690c3f0944d34741b69f92fa", size = 1681518, upload-time = "2025-09-17T19:39:47.488Z" }, + { url = "https://files.pythonhosted.org/packages/15/1a/948f8167b2cdce573cf01cec07afc64d0456dc134b07900b26ac7018b37e/gevent-25.9.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:1a3fe4ea1c312dbf6b375b416925036fe79a40054e6bf6248ee46526ea628be1", size = 2982934, upload-time = "2025-09-17T14:54:11.302Z" }, + { url = "https://files.pythonhosted.org/packages/9b/ec/726b146d1d3aad82e03d2e1e1507048ab6072f906e83f97f40667866e582/gevent-25.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0adb937f13e5fb90cca2edf66d8d7e99d62a299687400ce2edee3f3504009356", size = 1813982, upload-time = "2025-09-17T15:41:28.506Z" }, + { url = "https://files.pythonhosted.org/packages/35/5d/5f83f17162301662bd1ce702f8a736a8a8cac7b7a35e1d8b9866938d1f9d/gevent-25.9.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:427f869a2050a4202d93cf7fd6ab5cffb06d3e9113c10c967b6e2a0d45237cb8", size = 1894902, upload-time = "2025-09-17T15:49:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/83/cd/cf5e74e353f60dab357829069ffc300a7bb414c761f52cf8c0c6e9728b8d/gevent-25.9.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c049880175e8c93124188f9d926af0a62826a3b81aa6d3074928345f8238279e", size = 1861792, upload-time = "2025-09-17T15:49:23.279Z" }, + { url = "https://files.pythonhosted.org/packages/dd/65/b9a4526d4a4edce26fe4b3b993914ec9dc64baabad625a3101e51adb17f3/gevent-25.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b5a67a0974ad9f24721034d1e008856111e0535f1541499f72a733a73d658d1c", size = 2113215, upload-time = "2025-09-17T15:15:16.34Z" }, + { url = "https://files.pythonhosted.org/packages/e5/be/7d35731dfaf8370795b606e515d964a0967e129db76ea7873f552045dd39/gevent-25.9.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1d0f5d8d73f97e24ea8d24d8be0f51e0cf7c54b8021c1fddb580bf239474690f", size = 1833449, upload-time = "2025-09-17T15:52:43.75Z" }, + { url = "https://files.pythonhosted.org/packages/65/58/7bc52544ea5e63af88c4a26c90776feb42551b7555a1c89c20069c168a3f/gevent-25.9.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ddd3ff26e5c4240d3fbf5516c2d9d5f2a998ef87cfb73e1429cfaeaaec860fa6", size = 2176034, upload-time = "2025-09-17T15:24:15.676Z" }, + { url = "https://files.pythonhosted.org/packages/c2/69/a7c4ba2ffbc7c7dbf6d8b4f5d0f0a421f7815d229f4909854266c445a3d4/gevent-25.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:bb63c0d6cb9950cc94036a4995b9cc4667b8915366613449236970f4394f94d7", size = 1703019, upload-time = "2025-09-17T19:30:55.272Z" }, +] + [[package]] name = "ghp-import" version = "2.1.0" @@ -829,6 +881,67 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f3/0a/5a95a3889532bc5a5f652cdc78dae8ffa16d4228b4d35256a98be89e33ef/granian-2.5.7-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c3942d08af2c8b67d0ef569b6c567284433ebf09b4af3ea68388abb7caccad2b", size = 2175240, upload-time = "2025-11-05T12:18:12.956Z" }, ] +[[package]] +name = "greenlet" +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/b8/704d753a5a45507a7aab61f18db9509302ed3d0a27ac7e0359ec2905b1a6/greenlet-3.2.4.tar.gz", hash = "sha256:0dca0d95ff849f9a364385f36ab49f50065d76964944638be9691e1832e9f86d", size = 188260, upload-time = "2025-08-07T13:24:33.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ed/6bfa4109fcb23a58819600392564fea69cdc6551ffd5e69ccf1d52a40cbc/greenlet-3.2.4-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:8c68325b0d0acf8d91dde4e6f930967dd52a5302cd4062932a6b2e7c2969f47c", size = 271061, upload-time = "2025-08-07T13:17:15.373Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fc/102ec1a2fc015b3a7652abab7acf3541d58c04d3d17a8d3d6a44adae1eb1/greenlet-3.2.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:94385f101946790ae13da500603491f04a76b6e4c059dab271b3ce2e283b2590", size = 629475, upload-time = "2025-08-07T13:42:54.009Z" }, + { url = "https://files.pythonhosted.org/packages/c5/26/80383131d55a4ac0fb08d71660fd77e7660b9db6bdb4e8884f46d9f2cc04/greenlet-3.2.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f10fd42b5ee276335863712fa3da6608e93f70629c631bf77145021600abc23c", size = 640802, upload-time = "2025-08-07T13:45:25.52Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7c/e7833dbcd8f376f3326bd728c845d31dcde4c84268d3921afcae77d90d08/greenlet-3.2.4-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c8c9e331e58180d0d83c5b7999255721b725913ff6bc6cf39fa2a45841a4fd4b", size = 636703, upload-time = "2025-08-07T13:53:12.622Z" }, + { url = "https://files.pythonhosted.org/packages/e9/49/547b93b7c0428ede7b3f309bc965986874759f7d89e4e04aeddbc9699acb/greenlet-3.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:58b97143c9cc7b86fc458f215bd0932f1757ce649e05b640fea2e79b54cedb31", size = 635417, upload-time = "2025-08-07T13:18:25.189Z" }, + { url = "https://files.pythonhosted.org/packages/7f/91/ae2eb6b7979e2f9b035a9f612cf70f1bf54aad4e1d125129bef1eae96f19/greenlet-3.2.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c2ca18a03a8cfb5b25bc1cbe20f3d9a4c80d8c3b13ba3df49ac3961af0b1018d", size = 584358, upload-time = "2025-08-07T13:18:23.708Z" }, + { url = "https://files.pythonhosted.org/packages/f7/85/433de0c9c0252b22b16d413c9407e6cb3b41df7389afc366ca204dbc1393/greenlet-3.2.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9fe0a28a7b952a21e2c062cd5756d34354117796c6d9215a87f55e38d15402c5", size = 1113550, upload-time = "2025-08-07T13:42:37.467Z" }, + { url = "https://files.pythonhosted.org/packages/a1/8d/88f3ebd2bc96bf7747093696f4335a0a8a4c5acfcf1b757717c0d2474ba3/greenlet-3.2.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8854167e06950ca75b898b104b63cc646573aa5fef1353d4508ecdd1ee76254f", size = 1137126, upload-time = "2025-08-07T13:18:20.239Z" }, + { url = "https://files.pythonhosted.org/packages/f1/29/74242b7d72385e29bcc5563fba67dad94943d7cd03552bac320d597f29b2/greenlet-3.2.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f47617f698838ba98f4ff4189aef02e7343952df3a615f847bb575c3feb177a7", size = 1544904, upload-time = "2025-11-04T12:42:04.763Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e2/1572b8eeab0f77df5f6729d6ab6b141e4a84ee8eb9bc8c1e7918f94eda6d/greenlet-3.2.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:af41be48a4f60429d5cad9d22175217805098a9ef7c40bfef44f7669fb9d74d8", size = 1611228, upload-time = "2025-11-04T12:42:08.423Z" }, + { url = "https://files.pythonhosted.org/packages/d6/6f/b60b0291d9623c496638c582297ead61f43c4b72eef5e9c926ef4565ec13/greenlet-3.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:73f49b5368b5359d04e18d15828eecc1806033db5233397748f4ca813ff1056c", size = 298654, upload-time = "2025-08-07T13:50:00.469Z" }, + { url = "https://files.pythonhosted.org/packages/a4/de/f28ced0a67749cac23fecb02b694f6473f47686dff6afaa211d186e2ef9c/greenlet-3.2.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:96378df1de302bc38e99c3a9aa311967b7dc80ced1dcc6f171e99842987882a2", size = 272305, upload-time = "2025-08-07T13:15:41.288Z" }, + { url = "https://files.pythonhosted.org/packages/09/16/2c3792cba130000bf2a31c5272999113f4764fd9d874fb257ff588ac779a/greenlet-3.2.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1ee8fae0519a337f2329cb78bd7a8e128ec0f881073d43f023c7b8d4831d5246", size = 632472, upload-time = "2025-08-07T13:42:55.044Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/95d48d7e3d433e6dae5b1682e4292242a53f22df82e6d3dda81b1701a960/greenlet-3.2.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:94abf90142c2a18151632371140b3dba4dee031633fe614cb592dbb6c9e17bc3", size = 644646, upload-time = "2025-08-07T13:45:26.523Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5e/405965351aef8c76b8ef7ad370e5da58d57ef6068df197548b015464001a/greenlet-3.2.4-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:4d1378601b85e2e5171b99be8d2dc85f594c79967599328f95c1dc1a40f1c633", size = 640519, upload-time = "2025-08-07T13:53:13.928Z" }, + { url = "https://files.pythonhosted.org/packages/25/5d/382753b52006ce0218297ec1b628e048c4e64b155379331f25a7316eb749/greenlet-3.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0db5594dce18db94f7d1650d7489909b57afde4c580806b8d9203b6e79cdc079", size = 639707, upload-time = "2025-08-07T13:18:27.146Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, + { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, + { url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073, upload-time = "2025-08-07T13:18:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/67/24/28a5b2fa42d12b3d7e5614145f0bd89714c34c08be6aabe39c14dd52db34/greenlet-3.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9c6de1940a7d828635fbd254d69db79e54619f165ee7ce32fda763a9cb6a58c", size = 1548385, upload-time = "2025-11-04T12:42:11.067Z" }, + { url = "https://files.pythonhosted.org/packages/6a/05/03f2f0bdd0b0ff9a4f7b99333d57b53a7709c27723ec8123056b084e69cd/greenlet-3.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03c5136e7be905045160b1b9fdca93dd6727b180feeafda6818e6496434ed8c5", size = 1613329, upload-time = "2025-11-04T12:42:12.928Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0f/30aef242fcab550b0b3520b8e3561156857c94288f0332a79928c31a52cf/greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9", size = 299100, upload-time = "2025-08-07T13:44:12.287Z" }, + { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, + { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, + { url = "https://files.pythonhosted.org/packages/3b/16/035dcfcc48715ccd345f3a93183267167cdd162ad123cd93067d86f27ce4/greenlet-3.2.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f28588772bb5fb869a8eb331374ec06f24a83a9c25bfa1f38b6993afe9c1e968", size = 655185, upload-time = "2025-08-07T13:45:27.624Z" }, + { url = "https://files.pythonhosted.org/packages/31/da/0386695eef69ffae1ad726881571dfe28b41970173947e7c558d9998de0f/greenlet-3.2.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5c9320971821a7cb77cfab8d956fa8e39cd07ca44b6070db358ceb7f8797c8c9", size = 649926, upload-time = "2025-08-07T13:53:15.251Z" }, + { url = "https://files.pythonhosted.org/packages/68/88/69bf19fd4dc19981928ceacbc5fd4bb6bc2215d53199e367832e98d1d8fe/greenlet-3.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c60a6d84229b271d44b70fb6e5fa23781abb5d742af7b808ae3f6efd7c9c60f6", size = 651839, upload-time = "2025-08-07T13:18:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142, upload-time = "2025-08-07T13:18:22.981Z" }, + { url = "https://files.pythonhosted.org/packages/27/45/80935968b53cfd3f33cf99ea5f08227f2646e044568c9b1555b58ffd61c2/greenlet-3.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee7a6ec486883397d70eec05059353b8e83eca9168b9f3f9a361971e77e0bcd0", size = 1564846, upload-time = "2025-11-04T12:42:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/69/02/b7c30e5e04752cb4db6202a3858b149c0710e5453b71a3b2aec5d78a1aab/greenlet-3.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:326d234cbf337c9c3def0676412eb7040a35a768efc92504b947b3e9cfc7543d", size = 1633814, upload-time = "2025-11-04T12:42:17.175Z" }, + { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899, upload-time = "2025-08-07T13:38:53.448Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, + { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, + { url = "https://files.pythonhosted.org/packages/f7/0b/bc13f787394920b23073ca3b6c4a7a21396301ed75a655bcb47196b50e6e/greenlet-3.2.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:710638eb93b1fa52823aa91bf75326f9ecdfd5e0466f00789246a5280f4ba0fc", size = 655191, upload-time = "2025-08-07T13:45:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d6/6adde57d1345a8d0f14d31e4ab9c23cfe8e2cd39c3baf7674b4b0338d266/greenlet-3.2.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c5111ccdc9c88f423426df3fd1811bfc40ed66264d35aa373420a34377efc98a", size = 649516, upload-time = "2025-08-07T13:53:16.314Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3b/3a3328a788d4a473889a2d403199932be55b1b0060f4ddd96ee7cdfcad10/greenlet-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d76383238584e9711e20ebe14db6c88ddcedc1829a9ad31a584389463b5aa504", size = 652169, upload-time = "2025-08-07T13:18:32.861Z" }, + { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, + { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, + { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759, upload-time = "2025-11-04T12:42:19.395Z" }, + { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288, upload-time = "2025-11-04T12:42:21.174Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, + { url = "https://files.pythonhosted.org/packages/22/5c/85273fd7cc388285632b0498dbbab97596e04b154933dfe0f3e68156c68c/greenlet-3.2.4-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:49a30d5fda2507ae77be16479bdb62a660fa51b1eb4928b524975b3bde77b3c0", size = 273586, upload-time = "2025-08-07T13:16:08.004Z" }, + { url = "https://files.pythonhosted.org/packages/d1/75/10aeeaa3da9332c2e761e4c50d4c3556c21113ee3f0afa2cf5769946f7a3/greenlet-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:299fd615cd8fc86267b47597123e3f43ad79c9d8a22bebdce535e53550763e2f", size = 686346, upload-time = "2025-08-07T13:42:59.944Z" }, + { url = "https://files.pythonhosted.org/packages/c0/aa/687d6b12ffb505a4447567d1f3abea23bd20e73a5bed63871178e0831b7a/greenlet-3.2.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:c17b6b34111ea72fc5a4e4beec9711d2226285f0386ea83477cbb97c30a3f3a5", size = 699218, upload-time = "2025-08-07T13:45:30.969Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8b/29aae55436521f1d6f8ff4e12fb676f3400de7fcf27fccd1d4d17fd8fecd/greenlet-3.2.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b4a1870c51720687af7fa3e7cda6d08d801dae660f75a76f3845b642b4da6ee1", size = 694659, upload-time = "2025-08-07T13:53:17.759Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/ea25914b1ebfde93b6fc4ff46d6864564fba59024e928bdc7de475affc25/greenlet-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:061dc4cf2c34852b052a8620d40f36324554bc192be474b9e9770e8c042fd735", size = 695355, upload-time = "2025-08-07T13:18:34.517Z" }, + { url = "https://files.pythonhosted.org/packages/72/60/fc56c62046ec17f6b0d3060564562c64c862948c9d4bc8aa807cf5bd74f4/greenlet-3.2.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44358b9bf66c8576a9f57a590d5f5d6e72fa4228b763d0e43fee6d3b06d3a337", size = 657512, upload-time = "2025-08-07T13:18:33.969Z" }, + { url = "https://files.pythonhosted.org/packages/23/6e/74407aed965a4ab6ddd93a7ded3180b730d281c77b765788419484cdfeef/greenlet-3.2.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2917bdf657f5859fbf3386b12d68ede4cf1f04c90c3a6bc1f013dd68a22e2269", size = 1612508, upload-time = "2025-11-04T12:42:23.427Z" }, + { url = "https://files.pythonhosted.org/packages/0d/da/343cd760ab2f92bac1845ca07ee3faea9fe52bee65f7bcb19f16ad7de08b/greenlet-3.2.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:015d48959d4add5d6c9f6c5210ee3803a830dce46356e3bc326d6776bde54681", size = 1680760, upload-time = "2025-11-04T12:42:25.341Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a5/6ddab2b4c112be95601c13428db1d8b6608a8b6039816f2ba09c346c08fc/greenlet-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:e37ab26028f12dbb0ff65f29a8d3d44a765c61e729647bf2ddfbbed621726f01", size = 303425, upload-time = "2025-08-07T13:32:27.59Z" }, +] + [[package]] name = "griffe" version = "1.14.0" @@ -853,6 +966,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029, upload-time = "2024-08-10T20:25:24.996Z" }, ] +[package.optional-dependencies] +gevent = [ + { name = "gevent" }, +] + [[package]] name = "h11" version = "0.16.0" @@ -1884,6 +2002,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/58/e860788190eba3bcce367f74d29c4675466ce8dddfba85f7827588416f01/wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736", size = 24226, upload-time = "2022-08-23T19:58:19.96Z" }, ] +[[package]] +name = "zope-event" +version = "6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/33/d3eeac228fc14de76615612ee208be2d8a5b5b0fada36bf9b62d6b40600c/zope_event-6.1.tar.gz", hash = "sha256:6052a3e0cb8565d3d4ef1a3a7809336ac519bc4fe38398cb8d466db09adef4f0", size = 18739, upload-time = "2025-11-07T08:05:49.934Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/b0/956902e5e1302f8c5d124e219c6bf214e2649f92ad5fce85b05c039a04c9/zope_event-6.1-py3-none-any.whl", hash = "sha256:0ca78b6391b694272b23ec1335c0294cc471065ed10f7f606858fc54566c25a0", size = 6414, upload-time = "2025-11-07T08:05:48.874Z" }, +] + [[package]] name = "zope-interface" version = "8.0.1" From a907549603706e28530252b0bf7404286ad25ad4 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Tue, 18 Nov 2025 19:17:09 +0900 Subject: [PATCH 4/4] Tweak gunicorn Signed-off-by: Anuraag Agrawal --- conformance/test/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conformance/test/server.py b/conformance/test/server.py index 18b548d..b996341 100644 --- a/conformance/test/server.py +++ b/conformance/test/server.py @@ -533,7 +533,7 @@ async def serve_gunicorn( ): args = [ "--bind=127.0.0.1:0", - "--workers=8", + "--workers=4", "--worker-class=gevent", "--reuse-port", ]