From 997a19c1ee4b8e00947515019f62065cc0e45f36 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 9 Nov 2024 01:29:54 +0000 Subject: [PATCH 01/34] feat: 3.13 testing --- .github/workflows/ci.yml | 2 +- .pre-commit-config.yaml | 4 ++-- pyproject.toml | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31b13153b4..fd9f9739e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,7 +96,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] uses: ./.github/workflows/test.yml with: coverage: ${{ (matrix.python-version == '3.12' || matrix.python-version == '3.8') }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8dcfdb3442..f77faed404 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,8 +23,8 @@ repos: hooks: - id: unasyncd additional_dependencies: ["ruff"] - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.8.1" + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: "v0.7.3" hooks: - id: ruff args: ["--fix"] diff --git a/pyproject.toml b/pyproject.toml index 98709540fa..45230f2b0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries", From 882cabb75b4396ba03f6ecaedc11e38f0c213164 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sat, 16 Nov 2024 23:15:56 +0000 Subject: [PATCH 02/34] feat: use alternate `msgspec` 3.13 package --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f77faed404..60f2b1e01c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - id: unasyncd additional_dependencies: ["ruff"] - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "v0.7.3" + rev: "v0.7.4" hooks: - id: ruff args: ["--fix"] From 5da2293b62d2b8e7dc655d36c47e8446a4db3fe8 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 17 Nov 2024 02:39:47 +0000 Subject: [PATCH 03/34] fix: updated lock --- pyproject.toml | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 45230f2b0a..868b0e6f9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,22 +32,24 @@ classifiers = [ "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ - "anyio>=3", - "httpx>=0.22", - "exceptiongroup; python_version < \"3.11\"", - "importlib-metadata; python_version < \"3.10\"", - "importlib-resources>=5.12.0; python_version < \"3.9\"", - "msgspec>=0.18.2", - "multidict>=6.0.2", - "polyfactory>=2.6.3", - "pyyaml", - "typing-extensions", - "click", - "rich>=13.0.0", - "rich-click", - "multipart>=1.2.0", - # default litestar plugins - "litestar-htmx>=0.4.0" + "anyio>=3.6.0 ; python_version ~= \"3.8\"", + "anyio>=4.0.0 ; python_version >= \"3.9\"", + "httpx>=0.22", + "exceptiongroup; python_version < \"3.11\"", + "eval_type_backport; python_version <= \"3.9\"", + "importlib-metadata; python_version < \"3.10\"", + "importlib-resources>=5.12.0; python_version < \"3.9\"", + "msgspec-python313-pre ; python_version >= \"3.9\"", + "msgspec>=0.18.2,<=0.18.6; python_version ~= \"3.8\"", + "multidict>=6.0.2", + "polyfactory>=2.6.3", + "pyyaml", + "typing-extensions", + "click", + "rich>=13.0.0", + "rich-click", + # default litestar plugins + "litestar-htmx>=0.3.0" ] description = "Litestar - A production-ready, highly performant, extensible ASGI API Framework" keywords = ["api", "rest", "asgi", "litestar", "starlite"] From 7654cd2a7fa01ce0bbc56088b40e02d23fe8c867 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 16:55:09 +0000 Subject: [PATCH 04/34] fix: updated packages --- .pre-commit-config.yaml | 4 +- pyproject.toml | 7 +- uv.lock | 493 ++++++++++++++++++++++++---------------- 3 files changed, 300 insertions(+), 204 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60f2b1e01c..fdad82dca0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,8 +23,8 @@ repos: hooks: - id: unasyncd additional_dependencies: ["ruff"] - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "v0.7.4" + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.8.3" hooks: - id: ruff args: ["--fix"] diff --git a/pyproject.toml b/pyproject.toml index 868b0e6f9a..aaea43bbf4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,14 +32,14 @@ classifiers = [ "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ - "anyio>=3.6.0 ; python_version ~= \"3.8\"", - "anyio>=4.0.0 ; python_version >= \"3.9\"", + "anyio>=3 ; python_version ~= \"3.8\"", + "anyio>=4 ; python_version >= \"3.9\"", "httpx>=0.22", "exceptiongroup; python_version < \"3.11\"", "eval_type_backport; python_version <= \"3.9\"", "importlib-metadata; python_version < \"3.10\"", "importlib-resources>=5.12.0; python_version < \"3.9\"", - "msgspec-python313-pre ; python_version >= \"3.9\"", + "litestar-msgspec; python_version >= \"3.9\"", "msgspec>=0.18.2,<=0.18.6; python_version ~= \"3.8\"", "multidict>=6.0.2", "polyfactory>=2.6.3", @@ -48,6 +48,7 @@ dependencies = [ "click", "rich>=13.0.0", "rich-click", + "multipart>=1.2.0", # default litestar plugins "litestar-htmx>=0.3.0" ] diff --git a/uv.lock b/uv.lock index 25bba1d003..967b857c1a 100644 --- a/uv.lock +++ b/uv.lock @@ -1,9 +1,13 @@ version = 1 requires-python = ">=3.8, <4.0" resolution-markers = [ - "python_full_version < '3.13' and sys_platform != 'win32'", + "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform != 'win32'", + "python_full_version < '3.8.1' and sys_platform != 'win32'", + "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", + "python_full_version < '3.8.1' and sys_platform == 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", "python_full_version >= '3.13' and sys_platform != 'win32'", - "python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", "python_full_version >= '3.13' and sys_platform == 'win32'", ] @@ -21,7 +25,7 @@ wheels = [ [[package]] name = "advanced-alchemy" -version = "0.25.0" +version = "0.26.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "alembic" }, @@ -30,9 +34,9 @@ dependencies = [ { name = "sqlalchemy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cc/61/5a9049b3300306b21344203243cd8103e8cc9d96747c76d7b9480f994965/advanced_alchemy-0.25.0.tar.gz", hash = "sha256:42cd1249e4f06568690af4183519d50a058cffb53104dda50b9e7ad1fc8b5844", size = 934683 } +sdist = { url = "https://files.pythonhosted.org/packages/03/a7/50e2ea5196a15b4fa3558c4cefd5991b18c984c4e1e4c0ef2ea71a7402cd/advanced_alchemy-0.26.1.tar.gz", hash = "sha256:09e5340ff4ec8e84752c98de51aa33910eadab0dbfb09ed79d82eab42ca8055a", size = 942602 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/2b/0d4705ed21912c508b5be22533003f3cc0b640e267210ce3d4612de58594/advanced_alchemy-0.25.0-py3-none-any.whl", hash = "sha256:c2783278fbe5a75c3eeba2ae041e9985e17ecaafb5d388ec9dd6d5765218428b", size = 142942 }, + { url = "https://files.pythonhosted.org/packages/f2/6e/df2431d8034e61b295d54f5a5263d606931f344c2270cbb691000ce37cf1/advanced_alchemy-0.26.1-py3-none-any.whl", hash = "sha256:04c786df9453676784f71dfc88b5dccce257f8939b8528d5e1f624d048ce081f", size = 147824 }, ] [[package]] @@ -309,7 +313,7 @@ wheels = [ [[package]] name = "beanie" -version = "1.27.0" +version = "1.28.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -319,9 +323,9 @@ dependencies = [ { name = "toml" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/d1/ebd474f9e552e32378bad032e2dcce9ba78473b488ef29c9295b1e8d5c23/beanie-1.27.0.tar.gz", hash = "sha256:a5eee40f1e52214afeb8558c0823d7504856884770c3d56fc3cd5765efb87314", size = 169370 } +sdist = { url = "https://files.pythonhosted.org/packages/dc/12/9f7b8600eb53b81dffd121d2ea5d6c3d9283f384926596c2212baf6ddd3a/beanie-1.28.0.tar.gz", hash = "sha256:6b7a221bc3cbf00d463252ed613e54934973917d978329c5cdd2ec629a1c8559", size = 170276 } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/4d/9b302c451625e3b570b0dcafd157d92b633f96b4b17eca1c88a081b1a7b9/beanie-1.27.0-py3-none-any.whl", hash = "sha256:2cc6762bdd59b9040dd004ecbc7d4fd5ddd22e52743915e38d1f0f92f276bcaf", size = 84066 }, + { url = "https://files.pythonhosted.org/packages/25/76/d06b9d07042bdfeefbf94adea4ffb09c94ed63bc1063fc2bed06d929a9f1/beanie-1.28.0-py3-none-any.whl", hash = "sha256:6dfc4caae2f5ea647d050a9259e222c55cfa6894ca625edf1c44c956548c2b21", size = 84331 }, ] [[package]] @@ -496,11 +500,11 @@ filecache = [ [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 }, + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, ] [[package]] @@ -851,7 +855,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/65/13d9e76ca19b0ba5603d71ac8424b5694415b348e719db277b5edc985ff5/cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", size = 3915420 }, { url = "https://files.pythonhosted.org/packages/b1/07/40fe09ce96b91fc9276a9ad272832ead0fddedcba87f1190372af8e3039c/cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", size = 4154498 }, { url = "https://files.pythonhosted.org/packages/75/ea/af65619c800ec0a7e4034207aec543acdf248d9bffba0533342d1bd435e1/cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", size = 3932569 }, - { url = "https://files.pythonhosted.org/packages/4e/d5/9cc182bf24c86f542129565976c21301d4ac397e74bf5a16e48241aab8a6/cryptography-44.0.0-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385", size = 4164756 }, { url = "https://files.pythonhosted.org/packages/c7/af/d1deb0c04d59612e3d5e54203159e284d3e7a6921e565bb0eeb6269bdd8a/cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", size = 4016721 }, { url = "https://files.pythonhosted.org/packages/bd/69/7ca326c55698d0688db867795134bdfac87136b80ef373aaa42b225d6dd5/cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", size = 4240915 }, { url = "https://files.pythonhosted.org/packages/ef/d4/cae11bf68c0f981e0413906c6dd03ae7fa864347ed5fac40021df1ef467c/cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", size = 2757925 }, @@ -862,7 +865,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d0/c7/c656eb08fd22255d21bc3129625ed9cd5ee305f33752ef2278711b3fa98b/cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", size = 3915417 }, { url = "https://files.pythonhosted.org/packages/ef/82/72403624f197af0db6bac4e58153bc9ac0e6020e57234115db9596eee85d/cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", size = 4155160 }, { url = "https://files.pythonhosted.org/packages/a2/cd/2f3c440913d4329ade49b146d74f2e9766422e1732613f57097fea61f344/cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", size = 3932331 }, - { url = "https://files.pythonhosted.org/packages/31/d9/90409720277f88eb3ab72f9a32bfa54acdd97e94225df699e7713e850bd4/cryptography-44.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba", size = 4165207 }, { url = "https://files.pythonhosted.org/packages/7f/df/8be88797f0a1cca6e255189a57bb49237402b1880d6e8721690c5603ac23/cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", size = 4017372 }, { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 }, { url = "https://files.pythonhosted.org/packages/46/b0/f4f7d0d0bcfbc8dd6296c1449be326d04217c57afb8b2594f017eed95533/cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", size = 2758672 }, @@ -979,9 +981,12 @@ wheels = [ [[package]] name = "editorconfig" -version = "0.12.4" +version = "0.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3d/85/7b5c2fac7fdc37d959fab714b13b9acb75884490dcc0e8b1dc5e64105084/EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80", size = 13278 } +sdist = { url = "https://files.pythonhosted.org/packages/b4/29/785595a0d8b30ab8d2486559cfba1d46487b8dcbd99f74960b6b4cca92a4/editorconfig-0.17.0.tar.gz", hash = "sha256:8739052279699840065d3a9f5c125d7d5a98daeefe53b0e5274261d77cb49aa2", size = 13369 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/e5/8dba39ea24ca3de0e954e668107692f4dfc13a85300a531fa9a39e83fde4/EditorConfig-0.17.0-py3-none-any.whl", hash = "sha256:fe491719c5f65959ec00b167d07740e7ffec9a3f362038c72b289330b9991dfc", size = 16276 }, +] [[package]] name = "email-validator" @@ -1172,103 +1177,118 @@ wheels = [ [[package]] name = "hiredis" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/80/740fb0dfa7a42416ce8376490f41dcdb1e5deed9c3739dfe4200fad865a9/hiredis-3.0.0.tar.gz", hash = "sha256:fed8581ae26345dea1f1e0d1a96e05041a727a45e7d8d459164583e23c6ac441", size = 87581 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/cc/41521d38c77f404c31e08a0118f369f37dc6a9e19cf315dbbc8b0b8afaba/hiredis-3.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:4b182791c41c5eb1d9ed736f0ff81694b06937ca14b0d4dadde5dadba7ff6dae", size = 81483 }, - { url = "https://files.pythonhosted.org/packages/99/35/0138fe68b0da01ea91ad67910577905b7f4a34b5c11e2f665d44067c52df/hiredis-3.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:13c275b483a052dd645eb2cb60d6380f1f5215e4c22d6207e17b86be6dd87ffa", size = 44763 }, - { url = "https://files.pythonhosted.org/packages/45/53/64fa74d43c17a406c2dc3cb4f1a3729ac00c5451f31f5940ca577b24afa9/hiredis-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1018cc7f12824506f165027eabb302735b49e63af73eb4d5450c66c88f47026", size = 42452 }, - { url = "https://files.pythonhosted.org/packages/af/b8/40c58b7db70e3850adeac85d5fca67e2fce6bf15c2705ca6af9c8bb32b5d/hiredis-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83a29cc7b21b746cb6a480189e49f49b2072812c445e66a9e38d2004d496b81c", size = 165712 }, - { url = "https://files.pythonhosted.org/packages/ff/8e/7afd36941d58cb0a7f0142ba3a043a5b3743dfff60596e98b355fb048113/hiredis-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e241fab6332e8fb5f14af00a4a9c6aefa22f19a336c069b7ddbf28ef8341e8d6", size = 176842 }, - { url = "https://files.pythonhosted.org/packages/ff/39/482970200e65cdcea037a595083e145fc089b8368312f6f2b0d3c5a7c266/hiredis-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1fb8de899f0145d6c4d5d4bd0ee88a78eb980a7ffabd51e9889251b8f58f1785", size = 166127 }, - { url = "https://files.pythonhosted.org/packages/3a/2b/655e8b4b54ff28c88e2ac536d4aa24c9119c6160169c043351a91db69bca/hiredis-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b23291951959141173eec10f8573538e9349fa27f47a0c34323d1970bf891ee5", size = 165983 }, - { url = "https://files.pythonhosted.org/packages/81/d8/bc917412f95da9904a83a04263aa2760051c118d0199eac7250623bfcf17/hiredis-3.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e421ac9e4b5efc11705a0d5149e641d4defdc07077f748667f359e60dc904420", size = 162249 }, - { url = "https://files.pythonhosted.org/packages/77/93/d6585264bb50f9f79537429fa90f4a2a5c29fd5e70d57dec7705ff161a7c/hiredis-3.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:77c8006c12154c37691b24ff293c077300c22944018c3ff70094a33e10c1d795", size = 160013 }, - { url = "https://files.pythonhosted.org/packages/48/a5/302868a60e963c1b768bd5622f125f5b38a3ea084bdcb374c9251dcc7c02/hiredis-3.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:41afc0d3c18b59eb50970479a9c0e5544fb4b95e3a79cf2fbaece6ddefb926fe", size = 159315 }, - { url = "https://files.pythonhosted.org/packages/82/77/c02d516ab8f31d85378916055dbf980ef7ca431d93ba1f7ac11ac4304863/hiredis-3.0.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:04ccae6dcd9647eae6025425ab64edb4d79fde8b9e6e115ebfabc6830170e3b2", size = 171008 }, - { url = "https://files.pythonhosted.org/packages/e1/28/c080805a340b418b1d022fa58465e365636c0ed201837e0fe70cc7beb0d3/hiredis-3.0.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fe91d62b0594db5ea7d23fc2192182b1a7b6973f628a9b8b2e0a42a2be721ac6", size = 163290 }, - { url = "https://files.pythonhosted.org/packages/6a/f9/caacca69987de597487360565e34dfd191ab23ce147144c13df1f2db6c8d/hiredis-3.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99516d99316062824a24d145d694f5b0d030c80da693ea6f8c4ecf71a251d8bb", size = 161037 }, - { url = "https://files.pythonhosted.org/packages/88/3a/0d560473ca21facc1de5ba538f655aeae71303afd71f2a5e35fadee0c698/hiredis-3.0.0-cp310-cp310-win32.whl", hash = "sha256:562eaf820de045eb487afaa37e6293fe7eceb5b25e158b5a1974b7e40bf04543", size = 20034 }, - { url = "https://files.pythonhosted.org/packages/9c/af/23c2ce80faffb0ceb1775fe4581829c229400d6faacc0e2567ae179e8bc2/hiredis-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a1c81c89ed765198da27412aa21478f30d54ef69bf5e4480089d9c3f77b8f882", size = 21863 }, - { url = "https://files.pythonhosted.org/packages/42/3e/502e2ce2487673214fbb4cc733b1a279bc71309a689803d9ba8ad6f2fa8f/hiredis-3.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:4664dedcd5933364756d7251a7ea86d60246ccf73a2e00912872dacbfcef8978", size = 81442 }, - { url = "https://files.pythonhosted.org/packages/18/0b/171d85b2ee0ac51f94e993a323beffdb6b273b838a4f86d9abaaca22e2f7/hiredis-3.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:47de0bbccf4c8a9f99d82d225f7672b9dd690d8fd872007b933ef51a302c9fa6", size = 44742 }, - { url = "https://files.pythonhosted.org/packages/6a/67/466e0b16caff07bc8df8f3ff8b0b279f81066e0fb6a201b0ec66288fe5a4/hiredis-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e43679eca508ba8240d016d8cca9d27342d70184773c15bea78a23c87a1922f1", size = 42424 }, - { url = "https://files.pythonhosted.org/packages/01/50/e1f21e1cc9426bdf62e9ca8106294fbc3e5d27ddbae2e85e47fb9f251d1b/hiredis-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13c345e7278c210317e77e1934b27b61394fee0dec2e8bd47e71570900f75823", size = 166331 }, - { url = "https://files.pythonhosted.org/packages/98/40/8d8e4e15045ce066570f82f49604c6273b186eda1e5c9b93b450dd25d7b9/hiredis-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00018f22f38530768b73ea86c11f47e8d4df65facd4e562bd78773bd1baef35e", size = 177350 }, - { url = "https://files.pythonhosted.org/packages/5d/9c/f7b6d7afa2bd9c6671de853069222d9d874725e387100dfb0f1a22aab122/hiredis-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ea3a86405baa8eb0d3639ced6926ad03e07113de54cb00fd7510cb0db76a89d", size = 166794 }, - { url = "https://files.pythonhosted.org/packages/53/0c/1076e0c045412081ec44dc81969373cda15c093a0692e10f2941e154e583/hiredis-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c073848d2b1d5561f3903879ccf4e1a70c9b1e7566c7bdcc98d082fa3e7f0a1d", size = 166566 }, - { url = "https://files.pythonhosted.org/packages/05/69/e081b023f86b0128fcf9f76c8ed5a5f9426895ad86de234b0332c18a57b8/hiredis-3.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a8dffb5f5b3415a4669d25de48b617fd9d44b0bccfc4c2ab24b06406ecc9ecb", size = 162561 }, - { url = "https://files.pythonhosted.org/packages/96/e0/7f957fb2158c6f6800b6faa2f90bedcc485ca038a2d42166761d400683a3/hiredis-3.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:22c17c96143c2a62dfd61b13803bc5de2ac526b8768d2141c018b965d0333b66", size = 160472 }, - { url = "https://files.pythonhosted.org/packages/5c/31/d68020aa6276bd1a7436ece96d540ad17c204d97285639e0757ef1c3d430/hiredis-3.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c3ece960008dab66c6b8bb3a1350764677ee7c74ccd6270aaf1b1caf9ccebb46", size = 159705 }, - { url = "https://files.pythonhosted.org/packages/f7/68/5d101f8ffd764a96c2b959815adebb1e4b7e06db68122f9d3dbbc19b81eb/hiredis-3.0.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f75999ae00a920f7dce6ecae76fa5e8674a3110e5a75f12c7a2c75ae1af53396", size = 171498 }, - { url = "https://files.pythonhosted.org/packages/83/86/66131743a2012f668f84aa2eddc07e7b2462b4a07a753b27125f14e4b8bc/hiredis-3.0.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e069967cbd5e1900aafc4b5943888f6d34937fc59bf8918a1a546cb729b4b1e4", size = 163951 }, - { url = "https://files.pythonhosted.org/packages/a5/ea/58976d9c21086975a90c7fa2337591ea3903eeb55083e366b5ea36b99ca5/hiredis-3.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0aacc0a78e1d94d843a6d191f224a35893e6bdfeb77a4a89264155015c65f126", size = 161566 }, - { url = "https://files.pythonhosted.org/packages/39/69/cdb255e3d37f82f31f4b7b2db5bbd8500eae8d22c0d7992fe474fd02babd/hiredis-3.0.0-cp311-cp311-win32.whl", hash = "sha256:719c32147ba29528cb451f037bf837dcdda4ff3ddb6cdb12c4216b0973174718", size = 20037 }, - { url = "https://files.pythonhosted.org/packages/9d/cf/40d209e0458ac28a26973d1449df2922c7b8259f7f88d7738d11c87f9ff6/hiredis-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:bdc144d56333c52c853c31b4e2e52cfbdb22d3da4374c00f5f3d67c42158970f", size = 21862 }, - { url = "https://files.pythonhosted.org/packages/ae/09/0a3eace00115d8c82a8e7d8e58e60aacec10334f4f1512f09ffbac3252e3/hiredis-3.0.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:484025d2eb8f6348f7876fc5a2ee742f568915039fcb31b478fd5c242bb0fe3a", size = 81540 }, - { url = "https://files.pythonhosted.org/packages/1c/e8/1a7a5ded4fb11e91aafc5ba5518392f22883d54e79c4b47f188fb712ea46/hiredis-3.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:fcdb552ffd97151dab8e7bc3ab556dfa1512556b48a367db94b5c20253a35ee1", size = 44814 }, - { url = "https://files.pythonhosted.org/packages/3b/f5/4e055dc9b55484644afb18063f28649cdbd19be4f15bc152bd633dccd6f7/hiredis-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bb6f9fd92f147ba11d338ef5c68af4fd2908739c09e51f186e1d90958c68cc1", size = 42478 }, - { url = "https://files.pythonhosted.org/packages/65/7b/e06f55b9dcdf10cb6b3f08d7917d3080096cd83deaef1bd4927720fbb280/hiredis-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa86bf9a0ed339ec9e8a9a9d0ae4dccd8671625c83f9f9f2640729b15e07fbfd", size = 168303 }, - { url = "https://files.pythonhosted.org/packages/f4/16/081e90137bb896acd9dc2e1e68480cc84d652af4d959e75e52d6ce9dd602/hiredis-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e194a0d5df9456995d8f510eab9f529213e7326af6b94770abf8f8b7952ddcaa", size = 179151 }, - { url = "https://files.pythonhosted.org/packages/1e/0f/f5aba1c82977f4b639e5b450c0d8685333f1200cd1972647eb3f4d972e55/hiredis-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a1df39d74ec507d79c7a82c8063eee60bf80537cdeee652f576059b9cdd15c", size = 168580 }, - { url = "https://files.pythonhosted.org/packages/60/86/aa24c20f6d3038bf244bc60a2fe8cde61fb3c0d6a82e2bed30b08d55f96c/hiredis-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f91456507427ba36fd81b2ca11053a8e112c775325acc74e993201ea912d63e9", size = 169147 }, - { url = "https://files.pythonhosted.org/packages/6e/03/a4c7a28b6320ef3e36062c1c51e9d66e889c9e09ee7d7ae38b8a2ffdb365/hiredis-3.0.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9862db92ef67a8a02e0d5370f07d380e14577ecb281b79720e0d7a89aedb9ee5", size = 164722 }, - { url = "https://files.pythonhosted.org/packages/cd/66/d60106b56ba0ddd9789656d204a577591ff0cd91ab94178bb96c84d0d918/hiredis-3.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d10fcd9e0eeab835f492832b2a6edb5940e2f1230155f33006a8dfd3bd2c94e4", size = 162561 }, - { url = "https://files.pythonhosted.org/packages/6a/30/f33f2b782096efe9fe6b24c67a4df13b5055d9c859f615a74fb4f18cce41/hiredis-3.0.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:48727d7d405d03977d01885f317328dc21d639096308de126c2c4e9950cbd3c9", size = 161388 }, - { url = "https://files.pythonhosted.org/packages/45/02/34d9b151f9ea4655bfe00e0230f7db8fd8a52c7b7bd728efdf1c17655860/hiredis-3.0.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e0bb6102ebe2efecf8a3292c6660a0e6fac98176af6de67f020bea1c2343717", size = 173561 }, - { url = "https://files.pythonhosted.org/packages/cf/54/68285d208918b6d83e32d872d8dcbf8d479ed2c74b863b836e48a2702a3f/hiredis-3.0.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:df274e3abb4df40f4c7274dd3e587dfbb25691826c948bc98d5fead019dfb001", size = 165914 }, - { url = "https://files.pythonhosted.org/packages/56/4f/5f36865f9f032caf00d603ff9cbde21506d2b1e0e0ce0b5d2ce2851411c9/hiredis-3.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:034925b5fb514f7b11aac38cd55b3fd7e9d3af23bd6497f3f20aa5b8ba58e232", size = 163968 }, - { url = "https://files.pythonhosted.org/packages/d3/ee/c38693bd1dbce34806ecc3536dc425e87e420030de7018194865511860c2/hiredis-3.0.0-cp312-cp312-win32.whl", hash = "sha256:120f2dda469b28d12ccff7c2230225162e174657b49cf4cd119db525414ae281", size = 20189 }, - { url = "https://files.pythonhosted.org/packages/4e/67/f50b45071bb8652fa9a28a84ee470a02042fb7a096a16f3c08842f2a5c2b/hiredis-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:e584fe5f4e6681d8762982be055f1534e0170f6308a7a90f58d737bab12ff6a8", size = 21971 }, - { url = "https://files.pythonhosted.org/packages/1a/f4/d0c39512eee1a4f3bd6b14bc0ab3f8e13b45a68be58b41916468ecffd2e4/hiredis-3.0.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:122171ff47d96ed8dd4bba6c0e41d8afaba3e8194949f7720431a62aa29d8895", size = 81496 }, - { url = "https://files.pythonhosted.org/packages/b7/57/1bf54704603c6edef75a1311b43468f01cd78908e2823c0646dbf08255ed/hiredis-3.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ba9fc605ac558f0de67463fb588722878641e6fa1dabcda979e8e69ff581d0bd", size = 44770 }, - { url = "https://files.pythonhosted.org/packages/e8/a4/7f4826236ff3cafd94aa2bdb31498f16949929adf05d56fe85cbc32abfc7/hiredis-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a631e2990b8be23178f655cae8ac6c7422af478c420dd54e25f2e26c29e766f1", size = 42459 }, - { url = "https://files.pythonhosted.org/packages/1a/92/bc29d66789c6cf6e3ba21589f0e918893feb9dc096fda0a6a8ac775db7cb/hiredis-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63482db3fadebadc1d01ad33afa6045ebe2ea528eb77ccaabd33ee7d9c2bad48", size = 166802 }, - { url = "https://files.pythonhosted.org/packages/eb/de/97204c87a023d0f6bdd25c65bb1b2c1ce69b96aeac16a810df068cd28cfb/hiredis-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f669212c390eebfbe03c4e20181f5970b82c5d0a0ad1df1785f7ffbe7d61150", size = 177667 }, - { url = "https://files.pythonhosted.org/packages/bb/fe/a421f3cf94099c5d0493dac1761506c9e4a6d7445021e5bd5b384a97109a/hiredis-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a49ef161739f8018c69b371528bdb47d7342edfdee9ddc75a4d8caddf45a6e", size = 167172 }, - { url = "https://files.pythonhosted.org/packages/98/7f/834353b508fd183d5440a812773d8695b2c6878fd4dbd87199d18a1b44a3/hiredis-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98a152052b8878e5e43a2e3a14075218adafc759547c98668a21e9485882696c", size = 166944 }, - { url = "https://files.pythonhosted.org/packages/ef/6f/afda01cad5d8f212b58445c4a21e1c87c634d6617e98e928e63ce8b340dd/hiredis-3.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50a196af0ce657fcde9bf8a0bbe1032e22c64d8fcec2bc926a35e7ff68b3a166", size = 162703 }, - { url = "https://files.pythonhosted.org/packages/86/b9/6dd603b027f5b1ce370b4179412ca8e1d2b1e5f61a9cb359981056215139/hiredis-3.0.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f2f312eef8aafc2255e3585dcf94d5da116c43ef837db91db9ecdc1bc930072d", size = 160278 }, - { url = "https://files.pythonhosted.org/packages/4c/9c/4444140eccbaddd77217657040d80056ee822917d67806884ac7bf776a16/hiredis-3.0.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:6ca41fa40fa019cde42c21add74aadd775e71458051a15a352eabeb12eb4d084", size = 159515 }, - { url = "https://files.pythonhosted.org/packages/da/b8/49d4685ba10e5d808b0736b5a478c50011590c23a8998f83219aa812d918/hiredis-3.0.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:6eecb343c70629f5af55a8b3e53264e44fa04e155ef7989de13668a0cb102a90", size = 171232 }, - { url = "https://files.pythonhosted.org/packages/1b/98/6864287631dd1e2acce42bae26c25ac58f9ff1874e460d825def4f550ebe/hiredis-3.0.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:c3fdad75e7837a475900a1d3a5cc09aa024293c3b0605155da2d42f41bc0e482", size = 163478 }, - { url = "https://files.pythonhosted.org/packages/33/31/7d75a335f4d744439c3c694c5aeb5e8257d846013aee5580f59633c2871b/hiredis-3.0.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8854969e7480e8d61ed7549eb232d95082a743e94138d98d7222ba4e9f7ecacd", size = 161171 }, - { url = "https://files.pythonhosted.org/packages/57/92/1a870e1fcab1e70221e4d47f0b26749760c4c9daebf825603544b8a56373/hiredis-3.0.0-cp38-cp38-win32.whl", hash = "sha256:f114a6c86edbf17554672b050cce72abf489fe58d583c7921904d5f1c9691605", size = 20022 }, - { url = "https://files.pythonhosted.org/packages/0d/6b/5d1853b9f6db1cf40c765930279a02e5a2536b1073a65395e752120981cc/hiredis-3.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:7d99b91e42217d7b4b63354b15b41ce960e27d216783e04c4a350224d55842a4", size = 21888 }, - { url = "https://files.pythonhosted.org/packages/d7/3b/d4719b058647b59d23962dc4de9fc4b4730101d5c3539606aafc827f965b/hiredis-3.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:4c6efcbb5687cf8d2aedcc2c3ed4ac6feae90b8547427d417111194873b66b06", size = 81465 }, - { url = "https://files.pythonhosted.org/packages/61/fe/472c2cfdcca138584dd49fa53e0a5cba03d90739d37582fb2303ca41066c/hiredis-3.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5b5cff42a522a0d81c2ae7eae5e56d0ee7365e0c4ad50c4de467d8957aff4414", size = 44756 }, - { url = "https://files.pythonhosted.org/packages/5b/fa/179e62c6c909fe23064769e3668cf4456b81091be7ad026d36c43b5851cb/hiredis-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:82f794d564f4bc76b80c50b03267fe5d6589e93f08e66b7a2f674faa2fa76ebc", size = 42439 }, - { url = "https://files.pythonhosted.org/packages/f9/c7/34e337f18ce599afc0fb26cc0200dfad4f83cdc9bed2f4c62002d8a5d34c/hiredis-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7a4c1791d7aa7e192f60fe028ae409f18ccdd540f8b1e6aeb0df7816c77e4a4", size = 164975 }, - { url = "https://files.pythonhosted.org/packages/cf/66/934e046ff490b87b77963cf8dfe50a3b40cea28dbb32254c768b0854f225/hiredis-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2537b2cd98192323fce4244c8edbf11f3cac548a9d633dbbb12b48702f379f4", size = 176144 }, - { url = "https://files.pythonhosted.org/packages/a9/5c/43ebeb2e58b655f8acee72a863cb151b46d1ae1a767b65da0f231cf54f97/hiredis-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fed69bbaa307040c62195a269f82fc3edf46b510a17abb6b30a15d7dab548df", size = 165549 }, - { url = "https://files.pythonhosted.org/packages/de/23/e4e372e6a1afa07db9d15b0baa264cc4e9e420e77e676cda8244aae0f4e5/hiredis-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869f6d5537d243080f44253491bb30aa1ec3c21754003b3bddeadedeb65842b0", size = 165333 }, - { url = "https://files.pythonhosted.org/packages/ee/01/7fa60640541d697f666b1fc71b5e5cd03999547a824036eb6f4b7fc7107f/hiredis-3.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d435ae89073d7cd51e6b6bf78369c412216261c9c01662e7008ff00978153729", size = 161659 }, - { url = "https://files.pythonhosted.org/packages/b6/15/c793034d32be8d135491ccd049e5441ff95f3e07d7e49045d2ef528b9fad/hiredis-3.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:204b79b30a0e6be0dc2301a4d385bb61472809f09c49f400497f1cdd5a165c66", size = 159668 }, - { url = "https://files.pythonhosted.org/packages/b2/8a/d9dfb08be4fae5e2226a3f0e9ad2f0d5be81d4b1dd8c8dcd06ac7290c325/hiredis-3.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3ea635101b739c12effd189cc19b2671c268abb03013fd1f6321ca29df3ca625", size = 158695 }, - { url = "https://files.pythonhosted.org/packages/dd/cd/32ca226e2452b62e3422956ba6fad6566182d91fd3fe74402e5e17923e84/hiredis-3.0.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:f359175197fd833c8dd7a8c288f1516be45415bb5c939862ab60c2918e1e1943", size = 170483 }, - { url = "https://files.pythonhosted.org/packages/12/0d/21002b893e9f5980b7de9afe35cd21653ae8aab2cb4cda1ba8a2d8380d97/hiredis-3.0.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ac6d929cb33dd12ad3424b75725975f0a54b5b12dbff95f2a2d660c510aa106d", size = 162768 }, - { url = "https://files.pythonhosted.org/packages/79/b9/ba7c9ae8711d54f34e6c35bcfc546fd44c77deb832b07a649397be6df88d/hiredis-3.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:100431e04d25a522ef2c3b94f294c4219c4de3bfc7d557b6253296145a144c11", size = 160452 }, - { url = "https://files.pythonhosted.org/packages/04/17/913e1f784bed3f144f546416d905aff36c2daf0cad875c2bf88187ffff29/hiredis-3.0.0-cp39-cp39-win32.whl", hash = "sha256:e1a9c14ae9573d172dc050a6f63a644457df5d01ec4d35a6a0f097f812930f83", size = 20020 }, - { url = "https://files.pythonhosted.org/packages/e5/09/e6590cfdaf8ef465570e16cd49fe1b5fa84d173b57d24fcc9efbaf166542/hiredis-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:54a6dd7b478e6eb01ce15b3bb5bf771e108c6c148315bf194eb2ab776a3cac4d", size = 21891 }, - { url = "https://files.pythonhosted.org/packages/6c/26/fee1a29d7d0cbb76e27ac0914bb17565b1d7cfa24d58922010a667190afc/hiredis-3.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:50da7a9edf371441dfcc56288d790985ee9840d982750580710a9789b8f4a290", size = 39805 }, - { url = "https://files.pythonhosted.org/packages/c7/da/4e9fadc0615958b58e6632d6e85375062f80b60b268b21fa3f449aeee02e/hiredis-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b285ef6bf1581310b0d5e8f6ce64f790a1c40e89c660e1320b35f7515433672", size = 36883 }, - { url = "https://files.pythonhosted.org/packages/cf/d5/cc88b23e466ee070e0109a3e7d7e7835608ad90f80d8415bf7c8c726e71d/hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dcfa684966f25b335072115de2f920228a3c2caf79d4bfa2b30f6e4f674a948", size = 47867 }, - { url = "https://files.pythonhosted.org/packages/09/5b/848006ee860cf543a8b964c17ef04a61ea16967c9b5f173557286ae1afd2/hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a41be8af1fd78ca97bc948d789a09b730d1e7587d07ca53af05758f31f4b985d", size = 48254 }, - { url = "https://files.pythonhosted.org/packages/91/41/ef57d7f6f324ea5052d707a510093ec61fde8c5f271029116490790168cf/hiredis-3.0.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:038756db735e417ab36ee6fd7725ce412385ed2bd0767e8179a4755ea11b804f", size = 55556 }, - { url = "https://files.pythonhosted.org/packages/81/52/150658b3006241f2de243e2ccb7f94cfeb74a855435e872dbde7d87f6842/hiredis-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fcecbd39bd42cef905c0b51c9689c39d0cc8b88b1671e7f40d4fb213423aef3a", size = 21938 }, - { url = "https://files.pythonhosted.org/packages/1a/d7/68088ce94cb4e346e4c0729788c9894238c27e8718283a21a4b76c6235bd/hiredis-3.0.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a131377493a59fb0f5eaeb2afd49c6540cafcfba5b0b3752bed707be9e7c4eaf", size = 39848 }, - { url = "https://files.pythonhosted.org/packages/97/dd/e25dcef9004eaf433575056bf555db12e70f96f3784acc1f38f20d9d8258/hiredis-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d22c53f0ec5c18ecb3d92aa9420563b1c5d657d53f01356114978107b00b860", size = 36899 }, - { url = "https://files.pythonhosted.org/packages/b9/0e/1b2e0cab33fbfbdb3a72aeec6e429252a87c6f5c3325fa55da090165a564/hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a91e9520fbc65a799943e5c970ffbcd67905744d8becf2e75f9f0a5e8414f0", size = 47971 }, - { url = "https://files.pythonhosted.org/packages/3d/03/04a2ceeb865e4a52a7ddf4e2f247aa0b17e2c94e82dba9af5786b655633d/hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3dc8043959b50141df58ab4f398e8ae84c6f9e673a2c9407be65fc789138f4a6", size = 48342 }, - { url = "https://files.pythonhosted.org/packages/7d/79/9e8f4da2541486d6c7912e4df374eaf15b7c186e46af54fea521c941c5e8/hiredis-3.0.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51b99cfac514173d7b8abdfe10338193e8a0eccdfe1870b646009d2fb7cbe4b5", size = 55646 }, - { url = "https://files.pythonhosted.org/packages/12/e8/af81ed090f44775917e65d648fbd07aeb8c734f0dcab8500f049e2a04772/hiredis-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:fa1fcad89d8a41d8dc10b1e54951ec1e161deabd84ed5a2c95c3c7213bdb3514", size = 21941 }, - { url = "https://files.pythonhosted.org/packages/14/98/dd848a92e3306be35cc8e868528b685b996c6dd02aa6f163c87325a5d061/hiredis-3.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:898636a06d9bf575d2c594129085ad6b713414038276a4bfc5db7646b8a5be78", size = 39797 }, - { url = "https://files.pythonhosted.org/packages/52/6c/2dc71e2af62d9405ce9bcfbab3bbaba626f90dbb7c56990e657cf829def2/hiredis-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:466f836dbcf86de3f9692097a7a01533dc9926986022c6617dc364a402b265c5", size = 36848 }, - { url = "https://files.pythonhosted.org/packages/56/9d/3e11b6167f792eb673c8ab9817fc55046ac4414f5339d81d9152f5c165cd/hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23142a8af92a13fc1e3f2ca1d940df3dcf2af1d176be41fe8d89e30a837a0b60", size = 47837 }, - { url = "https://files.pythonhosted.org/packages/52/b4/dce71d1528c03d731cbe55d6f4b5ea52020481c53fa5b0d92dc37d9c26c1/hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:793c80a3d6b0b0e8196a2d5de37a08330125668c8012922685e17aa9108c33ac", size = 48224 }, - { url = "https://files.pythonhosted.org/packages/61/0c/e17779b8789b35780054d76e0d1d2de043a02078be0996c9ff515e00be68/hiredis-3.0.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:467d28112c7faa29b7db743f40803d927c8591e9da02b6ce3d5fadc170a542a2", size = 55536 }, - { url = "https://files.pythonhosted.org/packages/da/a6/8e64ab752619273d65d7630fdfc29353e0a48fe4b19599d072533ff7997e/hiredis-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:dc384874a719c767b50a30750f937af18842ee5e288afba95a5a3ed703b1515a", size = 21917 }, +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/38/e5/789cfa8993ced0061a6ef7ea758302ef5cf3439629bf0d39c85a6ede4641/hiredis-3.1.0.tar.gz", hash = "sha256:51d40ac3611091020d7dea6b05ed62cb152bff595fa4f931e7b6479d777acf7c", size = 87616 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/13/636d4eedc20ac6962439f72b4dc7c2906e68c4f1df88cea5ebf916125cd5/hiredis-3.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:2892db9db21f0cf7cc298d09f85d3e1f6dc4c4c24463ab67f79bc7a006d51867", size = 81243 }, + { url = "https://files.pythonhosted.org/packages/18/99/af3f3720c769292d159b12684f867641a47331d918bc3b820162c50c1861/hiredis-3.1.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:93cfa6cc25ee2ceb0be81dc61eca9995160b9e16bdb7cca4a00607d57e998918", size = 44499 }, + { url = "https://files.pythonhosted.org/packages/e5/1a/bc12c0e7688f23c33baad05bbd6fd2b944a35c2d3adad59a794ce7e62d70/hiredis-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2af62070aa9433802cae7be7364d5e82f76462c6a2ae34e53008b637aaa9a156", size = 42446 }, + { url = "https://files.pythonhosted.org/packages/65/8c/95c95a2bd6fb04b549083530c08bb1004c4a18a870c2eb8ac0e7f5b37879/hiredis-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:072c162260ebb1d892683107da22d0d5da7a1414739eae4e185cac22fe89627f", size = 165614 }, + { url = "https://files.pythonhosted.org/packages/e0/34/88c4fafe7c6df13c81c02bc51bda9190830b2e7d0d51e685f054573a2caa/hiredis-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b232c43e89755ba332c2745ddab059c0bc1a0f01448a3a14d506f8448b1ce6", size = 176743 }, + { url = "https://files.pythonhosted.org/packages/ca/ae/f6fefb942ab27e33416b9734dc06995d4fd6f4daaf6855da520c851417c3/hiredis-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb5316c9a65c4dde80796aa245b76011bab64eb84461a77b0a61c1bf2970bcc9", size = 166029 }, + { url = "https://files.pythonhosted.org/packages/84/85/c77ff1a95318e12810f529abe08744c06137de84f17114297773b76825b8/hiredis-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e812a4e656bbd1c1c15c844b28259c49e26bb384837e44e8d2aa55412c91d2f7", size = 165884 }, + { url = "https://files.pythonhosted.org/packages/8b/a2/e98faec792f49361f2913d5b537270d180db67ec19be86324aa1610b1371/hiredis-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93a6c9230e5a5565847130c0e1005c8d3aa5ca681feb0ed542c4651323d32feb", size = 162150 }, + { url = "https://files.pythonhosted.org/packages/c4/30/242b5795025ecd89c8c14de0bd8da9057e9e31348e5d3e739b63aac37f3e/hiredis-3.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a5f65e89ce50a94d9490d5442a649c6116f53f216c8c14eb37cf9637956482b2", size = 159914 }, + { url = "https://files.pythonhosted.org/packages/06/46/e5539f1db6e88fa4ebcffc6691713ae45d6d764c7ef8600d943da75d6b6a/hiredis-3.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9b2d6e33601c67c074c367fdccdd6033e642284e7a56adc130f18f724c378ca8", size = 159216 }, + { url = "https://files.pythonhosted.org/packages/25/47/f60b4d488bfba93eeaade3c859733f073cde40305c96437ff466b303143a/hiredis-3.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:bad3b1e0c83849910f28c95953417106f539277035a4b515d1425f93947bc28f", size = 170914 }, + { url = "https://files.pythonhosted.org/packages/12/83/2ba481bb58b99a8e921289b1d57e69a4516b954bfd8aab00dd28749a2ed7/hiredis-3.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:9646de31f5994e6218311dcf216e971703dbf804c510fd3f84ddb9813c495824", size = 163194 }, + { url = "https://files.pythonhosted.org/packages/09/9d/e4f886d1db94f7cf0ccfc16e40da9a785fdd37cb6ba4d0b984477ff4d198/hiredis-3.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59a9230f3aa38a33d09d8171400de202f575d7a38869e5ce2947829bca6fe359", size = 160940 }, + { url = "https://files.pythonhosted.org/packages/35/f6/fee28cf6eb54ce5c3bd21e1f157c99f451e76e145ac7a9aa04f7df83097d/hiredis-3.1.0-cp310-cp310-win32.whl", hash = "sha256:0322d70f3328b97da14b6e98b18f0090a12ed8a8bf7ae20932e2eb9d1bb0aa2c", size = 20083 }, + { url = "https://files.pythonhosted.org/packages/75/8a/a86859e5bdef1cab3299bdaeb3facaead074f246383312305a62aa877e97/hiredis-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:802474c18e878b3f9905e160a8b7df87d57885758083eda76c5978265acb41aa", size = 21911 }, + { url = "https://files.pythonhosted.org/packages/7c/85/9f738bab9f446e40a3a29aff0aa7766568b2680407e862667eaa3ec78bfe/hiredis-3.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:c339ff4b4739b2a40da463763dd566129762f72926bca611ad9a457a9fe64abd", size = 81205 }, + { url = "https://files.pythonhosted.org/packages/ad/9c/c64ddce9768c3a95797db10f85ed80f80389693b558801a0256e7c8ea3db/hiredis-3.1.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:0ffa2552f704a45954627697a378fc2f559004e53055b82f00daf30bd4305330", size = 44479 }, + { url = "https://files.pythonhosted.org/packages/65/68/b0d0909f86b01bb7be738be306dc536431f2af90a42155a2fafa05d528b9/hiredis-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9acf7f0e7106f631cd618eb60ec9bbd6e43045addd5310f66ba1177209567e59", size = 42422 }, + { url = "https://files.pythonhosted.org/packages/20/3a/625227d3c26ee69ef0f5881c2e329f19d1d5fe6a880a0b5f7eaf2a1ae6ab/hiredis-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea4f5ecf9dbea93c827486f59c606684c3496ea71c7ba9a8131932780696e61a", size = 166230 }, + { url = "https://files.pythonhosted.org/packages/b9/e1/c14f3c66c42f5746cd54156584dcf60540a9063f351e101e99fd074e80ae/hiredis-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39efab176fca3d5111075f6ba56cd864f18db46d858289d39360c5672e0e5c3e", size = 177251 }, + { url = "https://files.pythonhosted.org/packages/1d/f4/a1d6972feb3be634ae7cdf719a56d5c7a8334f4202a05935b9c1b53d5ef6/hiredis-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1110eae007f30e70a058d743e369c24430327cd01fd97d99519d6794a58dd587", size = 166696 }, + { url = "https://files.pythonhosted.org/packages/87/6f/630581e3c62a4651cb914da1619ddeb7b07f182e74748277244df914c107/hiredis-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b390f63191bcccbb6044d4c118acdf4fa55f38e5658ac4cfd5a33a6f0c07659", size = 166463 }, + { url = "https://files.pythonhosted.org/packages/fd/7b/bcf5562fa50cdce19169d48bb3bc25690c27fde321f147b68781140c9d5d/hiredis-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72a98ccc7b8ec9ce0100ecf59f45f05d2023606e8e3676b07a316d1c1c364072", size = 162461 }, + { url = "https://files.pythonhosted.org/packages/f3/bd/902a6ad2832f6a517bc13b2fe30ee1f45714c4922faa6eb61c0113314dbc/hiredis-3.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7c76e751fd1e2f221dec09cdc24040ee486886e943d5d7ffc256e8cf15c75e51", size = 160376 }, + { url = "https://files.pythonhosted.org/packages/12/07/2f4be5e827d5c7d59061f2dfc882ceceb60eb9a263e8eebfbc0093b9c75d/hiredis-3.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7d3880f213b6f14e9c69ce52beffd1748eecc8669698c4782761887273b6e1bd", size = 159601 }, + { url = "https://files.pythonhosted.org/packages/2b/5e/ee606c694ac086ba28753b02d842868118830bcb1fb47e25091484677bec/hiredis-3.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:87c2b3fe7e7c96eba376506a76e11514e07e848f737b254e0973e4b5c3a491e9", size = 171404 }, + { url = "https://files.pythonhosted.org/packages/c3/1a/c2afd5ebb556ad06fe8ab99d1917709e3b0c4ee07f503ca31dab8d66ef1e/hiredis-3.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d3cfb4089e96f8f8ee9554da93148a9261aa6612ad2cc202c1a494c7b712e31f", size = 163846 }, + { url = "https://files.pythonhosted.org/packages/89/79/e1f0097a53110622c00c51f747f3edec69e24b74539ff23f68085dc547b4/hiredis-3.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f12018e5c5f866a1c3f7017cb2d88e5c6f9440df2281e48865a2b6c40f247f4", size = 161469 }, + { url = "https://files.pythonhosted.org/packages/aa/ca/531e287fc5c066d9f39bbc3a6a50ac34c84425c06bf2001af4bd2337037a/hiredis-3.1.0-cp311-cp311-win32.whl", hash = "sha256:107b66ce977bb2dff8f2239e68344360a75d05fed3d9fa0570ac4d3020ce2396", size = 20086 }, + { url = "https://files.pythonhosted.org/packages/b1/e1/c555f03a189624ed600118d39ab775e5d507e521a61db1a1dfa1c20f3d02/hiredis-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8f1240bde53d3d1676f0aba61b3661560dc9a681cae24d9de33e650864029aa4", size = 21915 }, + { url = "https://files.pythonhosted.org/packages/cc/64/9f9c1648853cd34e52b2af04c26cebb7f086cb4cd8ce056fecedd7664be9/hiredis-3.1.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:f7c7f89e0bc4246115754e2eda078a111282f6d6ecc6fb458557b724fe6f2aac", size = 81304 }, + { url = "https://files.pythonhosted.org/packages/42/18/f70f8366c4abcbb830480d72968502192e422ebd60b7ca5f7739872e78cd/hiredis-3.1.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:3dbf9163296fa45fbddcfc4c5900f10e9ddadda37117dbfb641e327e536b53e0", size = 44551 }, + { url = "https://files.pythonhosted.org/packages/a8/a0/bf584a34a8b8e7194c3386700113cd7380a585c3e37b57b45bcf036a3305/hiredis-3.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af46a4be0e82df470f68f35316fa16cd1e134d1c5092fc1082e1aad64cce716d", size = 42471 }, + { url = "https://files.pythonhosted.org/packages/97/90/a709dad5fcfa6a3d0480709fd9e24d1e0ba70cbe4b853a1fe63cf7026207/hiredis-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc63d698c43aea500a84d8b083f830c03808b6cf3933ae4d35a27f0a3d881652", size = 168205 }, + { url = "https://files.pythonhosted.org/packages/14/29/33f943cc874d4cc6269d472b2c8ebb7385008fbde192aa5108d617d99504/hiredis-3.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:676b3d88674134bfaaf70dac181d1790b0f33b3187bfb9da9221e17e0e624f83", size = 179055 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/a1315d474ec36c89e68ac8a3a258431b6f266af7bc4a31265a9527e494df/hiredis-3.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aed10d9df1e2fb0011db2713ac64497462e9c2c0208b648c97569da772b959ca", size = 168484 }, + { url = "https://files.pythonhosted.org/packages/a1/4f/14aca28a24463b92274464000691610eb41a9afab1e16a7a739be496f274/hiredis-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b5bd8adfe8742e331a94cccd782bffea251fa70d9a709e71f4510f50794d700", size = 169050 }, + { url = "https://files.pythonhosted.org/packages/77/8d/e5aa6857a70c0e3ca423973ea27065fa3cf2567d25cc397b649a1d45043e/hiredis-3.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9fc4e35b4afb0af6da55495dd0742ad32ab88150428a6ecdbb3085cbd60714e8", size = 164624 }, + { url = "https://files.pythonhosted.org/packages/62/5d/c167de0a8c841cb4ea0e25a8145bbdb7e33b5028eaf905cd0901381f0a83/hiredis-3.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89b83e76eb00ab0464e7b0752a3ffcb02626e742e9509bc141424a9c3202e8dc", size = 162461 }, + { url = "https://files.pythonhosted.org/packages/70/b8/fa7e9ae73237999a5c7eb9f59e6c2198ed65eca5cad948b85e2c82c12cc2/hiredis-3.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98ebf08c907836b70a8f40e030df8ab6f174dc7f6fa765251d813e89f14069d8", size = 161292 }, + { url = "https://files.pythonhosted.org/packages/04/af/6b6db2d29e2455e97cbf7e19bae0ef1a6e5b61c08d42377a3511ef9cc3bb/hiredis-3.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6c840b9cec086328f2ee2cfee0038b5d6bbb514bac7b5e579da6e346eaac056c", size = 173465 }, + { url = "https://files.pythonhosted.org/packages/dc/50/c49d53832d71e1fdb1fe7c91a99b2d47043655cb0d535437264dccc19e2e/hiredis-3.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:c5c44e9fa6f4462d0330cb5f5d46fa652512fc86b41d4d1974d0356f263e9105", size = 165818 }, + { url = "https://files.pythonhosted.org/packages/5f/47/81992b4b27b59152abf7e279c4adba7a5a0e1d99ccbee674a82c6e65b9bf/hiredis-3.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e665b14ab50aa175cfa306fcb00fffd4e3ff02ceb36ca6a4df00b1246d6a73c4", size = 163871 }, + { url = "https://files.pythonhosted.org/packages/dd/f6/1ee81c373a2087557c6020bf201b4d27d6aec173c8414c3d06900e91d9bd/hiredis-3.1.0-cp312-cp312-win32.whl", hash = "sha256:bd33db977ac7af97e8d035ffadb163b00546be22e5f1297b2123f5f9bf0f8a21", size = 20206 }, + { url = "https://files.pythonhosted.org/packages/b7/67/46d5a8d44812c6293c8088d642e473b0dd9e12478ef539eb4a77df643450/hiredis-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:37aed4aa9348600145e2d019c7be27855e503ecc4906c6976ff2f3b52e3d5d97", size = 21997 }, + { url = "https://files.pythonhosted.org/packages/7b/b0/0b4f96f537d259b818e4ee7657616eb6fabc0612eb4150d2253f84e33f8f/hiredis-3.1.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:b87cddd8107487863fed6994de51e5594a0be267b0b19e213694e99cdd614623", size = 81311 }, + { url = "https://files.pythonhosted.org/packages/79/85/bd6cb6f7645a3803111a4f07fb2b55a23b836725bc8ec74ac7623fe8bef4/hiredis-3.1.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:d302deff8cb63a7feffc1844e4dafc8076e566bbf10c5aaaf0f4fe791b8a6bd0", size = 44550 }, + { url = "https://files.pythonhosted.org/packages/13/48/b53c5d10d3fd073a2046d096d9d415d61b3564f74b0499ec757ddaf7cddc/hiredis-3.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a018340c073cf88cb635b2bedff96619df2f666018c655e7911f46fa2c1c178", size = 42471 }, + { url = "https://files.pythonhosted.org/packages/dd/a0/f9da8e920c1871edf703dfa05dd6781a3c53e5574cd2e4b38a438053a533/hiredis-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1e8ba6414ac1ae536129e18c069f3eb497df5a74e136e3566471620a4fa5f95", size = 168219 }, + { url = "https://files.pythonhosted.org/packages/42/59/82a3625dc9fc77f43b38d272eef8c731e359e535a13b29b83ce220d47f5d/hiredis-3.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a86b9fef256c2beb162244791fdc025aa55f936d6358e86e2020e512fe2e4972", size = 179065 }, + { url = "https://files.pythonhosted.org/packages/b2/aa/66933e4101198f2e2ae379c091fb9a8131cd3dce7a1e6d8fa5ff51244239/hiredis-3.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7acdc68e29a446ad17aadaff19c981a36b3bd8c894c3520412c8a7ab1c3e0de7", size = 168508 }, + { url = "https://files.pythonhosted.org/packages/7a/da/e1475f4d51225cbc4b04e3be22ecb6da80a536b747aa4bb263af318d8555/hiredis-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7e06baea05de57e1e7548064f505a6964e992674fe61b8f274afe2ac93b6371", size = 168989 }, + { url = "https://files.pythonhosted.org/packages/34/d7/52dd39b5abb81eb24726934c3b9138cc9a30231fb93da8a3e2f829e3598c/hiredis-3.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35b5fc061c8a0dbfdb440053280504d6aaa8d9726bd4d1d0e1cfcbbdf0d60b73", size = 164488 }, + { url = "https://files.pythonhosted.org/packages/13/dd/aecfd9f24015b7e892304d6feb888db25b01492f05730f8f45155887de1f/hiredis-3.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c89d2dcb271d24c44f02264233b75d5db8c58831190fa92456a90b87fa17b748", size = 162476 }, + { url = "https://files.pythonhosted.org/packages/ff/77/4a5357b29e4c9f573439246d27cabad470ea4367a60a86f01c2a31c7c63f/hiredis-3.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aa36688c10a08f626fddcf68c2b1b91b0e90b070c26e550a4151a877f5c2d431", size = 161380 }, + { url = "https://files.pythonhosted.org/packages/aa/5e/b357511490626e9c39b3148612bda945f2cd0c8dcd149f36fd7b9512bff4/hiredis-3.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3982a9c16c1c4bc05a00b65d01ffb8d80ea1a7b6b533be2f1a769d3e989d2c0", size = 173505 }, + { url = "https://files.pythonhosted.org/packages/3e/82/50c015dcf04ea85a89c4603684da9d95c7850931b5320c02c6f3d7ddd78f/hiredis-3.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d1a6f889514ee2452300c9a06862fceedef22a2891f1c421a27b1ba52ef130b2", size = 165928 }, + { url = "https://files.pythonhosted.org/packages/82/10/bd8f39423b0cb9624ccaf08d5e9c04f72dd46e9e9fc82e95cec42a42428d/hiredis-3.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8a45ff7915392a55d9386bb235ea1d1eb9960615f301979f02143fc20036b699", size = 163902 }, + { url = "https://files.pythonhosted.org/packages/0b/77/00b420ad567875e5a4b37a16f1a89fef1a22c6a9e1a12195c77bb5b101dd/hiredis-3.1.0-cp313-cp313-win32.whl", hash = "sha256:539e5bb725b62b76a5319a4e68fc7085f01349abc2316ef3df608ea0883c51d2", size = 20211 }, + { url = "https://files.pythonhosted.org/packages/cc/04/eaa88433249ddfc282018d3da4198d0b0018e48768e137bfad304aacb1ec/hiredis-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9020fd7e58f489fda6a928c31355add0e665fd6b87b21954e675cf9943eafa32", size = 22004 }, + { url = "https://files.pythonhosted.org/packages/a8/79/5fbcca252f7c1abec5542a30b7368938823c19ef8571ee11b5ce92181ecf/hiredis-3.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:b621a89fc29b3f4b01be6640ec81a6a94b5382bc78fecb876408d57a071e45aa", size = 81262 }, + { url = "https://files.pythonhosted.org/packages/6b/cd/112b38c3e15436b91ad987959934db885b7c8d506c14d3d676cdd2f19ceb/hiredis-3.1.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:363e21fba55e1a26349dc9ca7da6b14332123879b6359bcee4a9acecb40ca33b", size = 44509 }, + { url = "https://files.pythonhosted.org/packages/82/55/897f2893897a2733411b3cf2bbc02999e24e233601095615f5716ac154c5/hiredis-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c156156798729eadc9ab76ffee96c88b93cc1c3b493f4dd0a4341f53939194ee", size = 42460 }, + { url = "https://files.pythonhosted.org/packages/5f/5b/3be0789129c2b093bd074436dc5f66cbe34348ba2d59837bf5036786db78/hiredis-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e38d8a325f9a6afac1b1c72d996d1add9e1b99696ce9410538ba5e9aa8fdba02", size = 166705 }, + { url = "https://files.pythonhosted.org/packages/c6/72/87a7477a003d7dbf3d40114b2fb3c980e69dfc21d098d869727089aa5433/hiredis-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3004ef7436feb7bfa61c0b36d422b8fb8c29aaa1a514c9405f0fdee5e9694dd3", size = 177565 }, + { url = "https://files.pythonhosted.org/packages/c9/a1/598f6e2cd14d75c7697c5d3b65cc5f0fe149944e357f0fa57bf390d6e6d1/hiredis-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13f5b16f97d0bbd1c04ce367c49097d1214d60e11f9fee7ef2a9b54e0a6645c8", size = 167075 }, + { url = "https://files.pythonhosted.org/packages/e5/0e/15d55ce5ab78ecd0bb273f09380a20763e864ccb8e9e471104d33ead722f/hiredis-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:230dd0e77cb0f525f58a1306a7b4aaf078037fc5229110922332ca46f90821bb", size = 166847 }, + { url = "https://files.pythonhosted.org/packages/65/2a/104a3f90fb669ea2bc6678026f38f0aa18d3500ec90bd7176b121bbac09f/hiredis-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d968116caddd19d63120d1298e62b1bbc694db3360ed0d5df8c3a97edbc12552", size = 162602 }, + { url = "https://files.pythonhosted.org/packages/93/45/042b9c6a027849d8e7293f5b50816319a3c198a6684a8382e2fa90bbfdce/hiredis-3.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:511e36a6fa41d3efab3cd5cd70ac388ed825993b9e66fa3b0e47cf27a2f5ffee", size = 160181 }, + { url = "https://files.pythonhosted.org/packages/ee/1c/f2035856ae9061d2ee65e7c083d7698724ec1779da75dec440522a996bb2/hiredis-3.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c5cd20804e3cb0d31e7d899d8dd091f569c33fe40d4bade670a067ab7d31c2ac", size = 159418 }, + { url = "https://files.pythonhosted.org/packages/00/c8/4d5a898adc4d72bce2884bdf100edd9e91cc4a5f918792f2702e66b8fee7/hiredis-3.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:09e89e7d34cfe5ca8f7a869fca827d1af0afe8aaddb26b38c01058730edb79ad", size = 171133 }, + { url = "https://files.pythonhosted.org/packages/63/1a/c58d6c40282fe5726b2a6e930dfb5be162011414e8baaee26eaaa0833e64/hiredis-3.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:570cbf31413c77fe5e7c157f2943ca4400493ddd9cf2184731cfcafc753becd7", size = 163380 }, + { url = "https://files.pythonhosted.org/packages/1d/32/293991296ee11af983fde7c5856f2bd1d1cce3f20154cdf37b2812890ec2/hiredis-3.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b9b4da8162cf289781732d6a5ba01d820c42c05943fcdb7de307d03639961db3", size = 161072 }, + { url = "https://files.pythonhosted.org/packages/71/0c/eff8b203374bcb9cc62eee9768cefa53ba700c21cf2f48bdf39eb5ab74e1/hiredis-3.1.0-cp38-cp38-win32.whl", hash = "sha256:bc117a04bcb461d3bb1b2c5b417aee3442e1e8aa33ebc800481431f4c09fe0c5", size = 20073 }, + { url = "https://files.pythonhosted.org/packages/17/8b/f9bfb0891acf717bca1d62e63713ec45360db1b13a5fb86577f0b36e2c94/hiredis-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:34f3f5f0354db2d6797a6fb08d2c036a50af62a1d919d122c1c784304ef49347", size = 21928 }, + { url = "https://files.pythonhosted.org/packages/f1/5d/12ce85507c025ed685f583dade7ed1aee90d451de098b463441e4f76da89/hiredis-3.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:a26fa888025badb5563f283cc19594c215a413e905729e59a5f7cf3f46d66c32", size = 81236 }, + { url = "https://files.pythonhosted.org/packages/50/3b/e016ed691f24059aca9eab3a9c03bc72b8dcbe5f128b710124efcc4a8a54/hiredis-3.1.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f50763cd819d4a52a47b5966d4bb47dee34b637c5fa6402509800eee6ecb61e6", size = 44492 }, + { url = "https://files.pythonhosted.org/packages/08/9f/9cf4b72ae9567d65746574250a558445b667531b6716688815f05e4aa09f/hiredis-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b6d1c9e1fce5e0a94072667ae2bf0142b89ebbb1917d3531184e060a43f3ee11", size = 42441 }, + { url = "https://files.pythonhosted.org/packages/68/72/d7d96ae7cd5a6a5abc057c6596ee8b76621b6d49d40668f418658b404555/hiredis-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e38d7a56b1a79ed0bbb9e6fe376d82e3f4dcc646ae47472f2c858e19a597c112", size = 164880 }, + { url = "https://files.pythonhosted.org/packages/92/5d/077cdf38c979c15bfd1e44c0104bd719ab3e217da3f13f01e7f7ed37d280/hiredis-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ef5ad8b91530e4d10a68562b0a380ea22705a60e88cecee086d7c63a38564ce", size = 176048 }, + { url = "https://files.pythonhosted.org/packages/9d/83/2603691a8b6fdc29030c9954b9dcf934ab78d2f8152be88d7ee19c75bdaa/hiredis-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf3d2299b054e57a9f97ca08704c2843e44f29b57dc69b76a2592ecd212efe1a", size = 165448 }, + { url = "https://files.pythonhosted.org/packages/e3/a3/416029981647c08ae56d58d900e0a1b47f344ba05bbf087522656eba2044/hiredis-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93811d60b0f73d0f049c86f4373a3833b4a38fce374ab151074d929553eb4304", size = 165233 }, + { url = "https://files.pythonhosted.org/packages/b3/49/25499af7bfb5a736910a131ab0f7592cab72bebd5f3d85057bc527dd5eaa/hiredis-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e703ff860c1d83abbcf57012b309ead02b56b60e85150c6c3bfb37cbb16ebf", size = 161558 }, + { url = "https://files.pythonhosted.org/packages/45/9b/6b37534856f90e0f5c298200db327313558290086419c1fd667662c6952e/hiredis-3.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f9ea0678806c53d96758e74c6a898f9d506a2e3367a344757f768bef9e069366", size = 159571 }, + { url = "https://files.pythonhosted.org/packages/d6/99/f43db5f95e8591054efcb3c583175deebda5013bd1703ceb587e7e51efbb/hiredis-3.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cf6844035abf47d52a1c3f4257255af3bf3b0f14d559b08eaa45885418c6c55d", size = 158596 }, + { url = "https://files.pythonhosted.org/packages/c3/e1/7ad062b10aefe156981ed00f449f09eeceb96a83dcf7145d0f22d8726d09/hiredis-3.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7acf35cfa7ec9e1e7559c04e7095628f7d06049b5f24dcb58c1a55ef6dc689f8", size = 170387 }, + { url = "https://files.pythonhosted.org/packages/51/d9/15cdcf8c4d581b388e6e5a06b5cea4627dca722a06b621579c66d5f0bc62/hiredis-3.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b885695dce7a39b1fd9a609ed9c4cf312e53df2ec028d5a78af7a891b5fbea4d", size = 162670 }, + { url = "https://files.pythonhosted.org/packages/18/55/7dee03709eed445382017ee8bd6b61441eca914f7bc42551ce34a1e888c9/hiredis-3.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1c22fa74ddd063396b19fe8445a1ae8b4190eff755d5750dda48e860a45b2ee7", size = 160353 }, + { url = "https://files.pythonhosted.org/packages/bf/bf/cbe289fa2964487e24f22d22129617dc82943e95439c05b99c73452f1ad3/hiredis-3.1.0-cp39-cp39-win32.whl", hash = "sha256:0614e16339f1784df3bbd2800322e20b4127d3f3a3509f00a5562efddb2521aa", size = 20074 }, + { url = "https://files.pythonhosted.org/packages/07/b8/aaf8b940557c0fc5c07a177de3dfdc40bfe3f32902087b68008f7a7dd829/hiredis-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:c2bc713ee73ab9de4a0d68b0ab0f29612342b63173714742437b977584adb2d8", size = 21927 }, + { url = "https://files.pythonhosted.org/packages/dd/11/13f2af303ed3891ed459527b0183bb743c43eeffd22b8771e7260a0b0281/hiredis-3.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:07ab990d0835f36bf358dbb84db4541ac0a8f533128ec09af8f80a576eef2e88", size = 39509 }, + { url = "https://files.pythonhosted.org/packages/ba/3e/0938e733ad08b6cabd1c56d973207769278b9d971fe6d5ed6480232a7b37/hiredis-3.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c54a88eb9d8ebc4e5eefaadbe2102a4f7499f9e413654172f40aefd25350959", size = 36900 }, + { url = "https://files.pythonhosted.org/packages/a7/a7/39d9521519b69056365892a51e2614275f3ae1f149e2c5d9885a909586fe/hiredis-3.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8095ef159896e5999a795b0f80e4d64281301a109e442a8d29cd750ca6bd8303", size = 47771 }, + { url = "https://files.pythonhosted.org/packages/e5/0a/e82918ac75213a47d8fbdcf7f6e2d3fd09a1eeb4e253d6babe47c00602f7/hiredis-3.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f8ca13e2476ffd6d5be4763f5868133506ddcfa5ce54b4dac231ebdc19be6c6", size = 48160 }, + { url = "https://files.pythonhosted.org/packages/56/cf/8de09573adcaa0906dd689904e24250561bc792c7f9ae7910f154fbba9b0/hiredis-3.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d25aa25c10f966d5415795ed271da84605044dbf436c054966cea5442451b3", size = 55458 }, + { url = "https://files.pythonhosted.org/packages/5d/ff/e1603c3c6926c1fa6ae85595e983d7206def21e455ee6f4578bbf31c479f/hiredis-3.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4180dc5f646b426e5fa1212e1348c167ee2a864b3a70d56579163d64a847dd1e", size = 21976 }, + { url = "https://files.pythonhosted.org/packages/a1/59/03137f2348128fbba1708c2809dbaf9e3d41ce4ce9b2e36bc0bbf57164ca/hiredis-3.1.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d92144e0cd6e6e841a6ad343e9d58631626eeb4ac96b0322649379b5d4527447", size = 39551 }, + { url = "https://files.pythonhosted.org/packages/21/51/827d3e2ef723288e3a79a8643704724d8cf1d67f339bb3d693da9ff0b69c/hiredis-3.1.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fcb91ba42903de637b94a1b64477f381f94ad82c0742c264f9245be76a7a3cbc", size = 36912 }, + { url = "https://files.pythonhosted.org/packages/b0/98/34cbaa277d262470f546dece6799fba449d57a758545df1c8db9df41625a/hiredis-3.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ce71a797b5bc02c51da082428c00251ed6a7a67a03acbda5fbf9e8d028725f6", size = 47873 }, + { url = "https://files.pythonhosted.org/packages/1c/b8/7cfc265b8b86f6c778a1b205c6ef46815a5b757d58337bb6a1ae04fe50cc/hiredis-3.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e04c7feb9467e3170cd4d5bee381775783d81bbc45d6147c1c0ce3b50dc04f9", size = 48245 }, + { url = "https://files.pythonhosted.org/packages/3c/e1/c66ec496266d6ff8445d2bab260de23c475990ef9ccd94ea299e4c4b199c/hiredis-3.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a31806306a60f3565c04c964d6bee0e9d4a5120e1da589e41976b53972edf635", size = 55548 }, + { url = "https://files.pythonhosted.org/packages/6f/dd/5707ba0a1d08eac63359b66a192eae47b747bb8bf27874de5217e760c004/hiredis-3.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:bc51f594c2c0863ded6501642dc96701ca8bbea9ced4fa3af0a1aeda8aa634cb", size = 21979 }, + { url = "https://files.pythonhosted.org/packages/b5/f6/d00ce8575a2f7ff1cfb3f8ae49225a061ac7b0a3554bbbad7ef66d4f07b2/hiredis-3.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4663a319ab7d22c597b9421e5ea384fd583e044f2f1ca9a1b98d4fef8a0fea2f", size = 39506 }, + { url = "https://files.pythonhosted.org/packages/e1/b7/3fa0cd5fada761a0ae0eddf939cabf03b5c38503f2f28313bbe292a0fc5f/hiredis-3.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8060fa256862b0c3de64a73ab45bc1ccf381caca464f2647af9075b200828948", size = 36858 }, + { url = "https://files.pythonhosted.org/packages/30/c0/602207ece39e30bd65f59f51b85f185bf9a70cdb3a2586421eabee377634/hiredis-3.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e9445b7f117a9c8c8ccad97cb44daa55ddccff3cbc9079984eac56d982ba01f", size = 47746 }, + { url = "https://files.pythonhosted.org/packages/43/6b/649862029bc518d8103c81875633183244af77ba28d4a0166c60bd7b8ff3/hiredis-3.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:732cf1c5cf1324f7bf3b6086976fe62a2ca98f0bf6316f31063c2c67be8797bc", size = 48129 }, + { url = "https://files.pythonhosted.org/packages/32/c6/e120df272b4b94bd52d0eff8a5b53afffc8cd2b832704a961b5f077c72f1/hiredis-3.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2102a94063d878c40df92f55199637a74f535e3a0b79ceba4a00538853a21be3", size = 55442 }, + { url = "https://files.pythonhosted.org/packages/eb/ee/d21cbad5bf8f1ebaad9492174b5eb624712fc4b83b17fe5bf187c4199320/hiredis-3.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d968dde69e3fe903bf9ef00667669dcf04a3e096e33aaf138775106ead138bc8", size = 21965 }, ] [[package]] @@ -1358,7 +1378,7 @@ wheels = [ [[package]] name = "httpx" -version = "0.28.0" +version = "0.28.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1366,9 +1386,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/df/676b7cf674dd1bdc71a64ad393c89879f75e4a0ab8395165b498262ae106/httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0", size = 141307 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/fb/a19866137577ba60c6d8b69498dc36be479b13ba454f691348ddf428f185/httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc", size = 73551 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, ] [[package]] @@ -1556,7 +1576,7 @@ name = "importlib-resources" version = "6.4.5" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp", marker = "python_full_version < '3.10'" }, + { name = "zipp", marker = "python_full_version < '3.9'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } wheels = [ @@ -1635,11 +1655,13 @@ source = { editable = "." } dependencies = [ { name = "anyio" }, { name = "click" }, + { name = "eval-type-backport", marker = "python_full_version < '3.10'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "httpx" }, { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, { name = "importlib-resources", marker = "python_full_version < '3.9'" }, { name = "litestar-htmx" }, + { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, { name = "msgspec" }, { name = "multidict" }, { name = "multipart" }, @@ -1779,7 +1801,8 @@ linting = [ { name = "pre-commit" }, { name = "pyright" }, { name = "ruff" }, - { name = "slotscheck" }, + { name = "slotscheck", version = "0.16.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.8.1'" }, + { name = "slotscheck", version = "0.19.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.8.1'" }, { name = "types-beautifulsoup4" }, { name = "types-psutil" }, { name = "types-pyyaml" }, @@ -1802,13 +1825,15 @@ test = [ requires-dist = [ { name = "advanced-alchemy", marker = "extra == 'sqlalchemy'", specifier = ">=0.2.2" }, { name = "annotated-types", marker = "extra == 'annotated-types'" }, - { name = "anyio", specifier = ">=3" }, + { name = "anyio", marker = "python_full_version >= '3.8' and python_full_version < '4'", specifier = ">=3" }, + { name = "anyio", marker = "python_full_version >= '3.9'", specifier = ">=4" }, { name = "attrs", marker = "extra == 'attrs'" }, { name = "brotli", marker = "extra == 'brotli'" }, { name = "click" }, { name = "cryptography", marker = "extra == 'cryptography'" }, { name = "cryptography", marker = "extra == 'jwt'" }, { name = "email-validator", marker = "extra == 'pydantic'" }, + { name = "eval-type-backport", marker = "python_full_version < '3.10'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "fast-query-parsers", marker = "extra == 'standard'", specifier = ">=1.0.2" }, { name = "httpx", specifier = ">=0.22" }, @@ -1819,10 +1844,11 @@ requires-dist = [ { name = "jsbeautifier", marker = "extra == 'cli'" }, { name = "jsbeautifier", marker = "extra == 'standard'" }, { name = "litestar", extras = ["annotated-types", "attrs", "brotli", "cli", "cryptography", "jinja", "jwt", "mako", "minijinja", "opentelemetry", "piccolo", "picologging", "prometheus", "pydantic", "redis", "sqlalchemy", "standard", "structlog"], marker = "extra == 'full'" }, - { name = "litestar-htmx", specifier = ">=0.4.0" }, + { name = "litestar-htmx", specifier = ">=0.3.0" }, + { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, { name = "mako", marker = "extra == 'mako'", specifier = ">=1.2.4" }, { name = "minijinja", marker = "extra == 'minijinja'", specifier = ">=1.0.0" }, - { name = "msgspec", specifier = ">=0.18.2" }, + { name = "msgspec", marker = "python_full_version >= '3.8' and python_full_version < '4'", specifier = ">=0.18.2,<=0.18.6" }, { name = "multidict", specifier = ">=6.0.2" }, { name = "multipart", specifier = ">=1.2.0" }, { name = "opentelemetry-instrumentation-asgi", marker = "extra == 'opentelemetry'" }, @@ -1906,11 +1932,54 @@ test = [ [[package]] name = "litestar-htmx" -version = "0.4.0" +version = "0.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/bc/68dda03c35e5067a09a4e57f9b5af958d0718da00ae741483d8d95a8fb5a/litestar_htmx-0.4.0.tar.gz", hash = "sha256:b5f53aa25b665d673fe2e9d835ff711f7fe28fa8f57b87b61e4f6317b983632e", size = 101616 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/ea/e423f6dd967ae32157e2abc74bf4cd714adf94536ca9926358d4f59da175/litestar_htmx-0.4.0-py3-none-any.whl", hash = "sha256:81e784b91a5a5ca6061d86271e026de7d785d90a4367c6b9c8f0c724b26986c4", size = 9784 }, +sdist = { url = "https://files.pythonhosted.org/packages/c9/0c/06ab03ee497d207dd8cb7588d1940be0b373a8ffdc7be3ec6d7e91c17ae2/litestar_htmx-0.4.1.tar.gz", hash = "sha256:ba2537008eb8cc18bfc8bee5cecb280924c7818bb1c066d79eae4b221696ca08", size = 101877 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/99/3ea64a79a2f4fea5225ccd0128201a3b8eab5e216b8fba8b778b8c462f29/litestar_htmx-0.4.1-py3-none-any.whl", hash = "sha256:ba2a8ff1e210f21980735b9cde13d239a2b7c3627cb4aeb425d66f4a314d1a59", size = 9970 }, +] + +[[package]] +name = "litestar-msgspec" +version = "0.19.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/ef/028fa1a883718745587efb53ee639176ac4c0724ed38ea86cb2c6b8b0d96/litestar-msgspec-0.19.0.tar.gz", hash = "sha256:f4da35bcf59ede024ed65db774a30fd0f503f435f33b275abbdaf2f75b5fc88d", size = 214948 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/67/e0a577e0f76402e2a510ea8a817a745a57230a4bc405eb88e2fe993da20d/litestar_msgspec-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:677b0edca40dee67fa42c63b5771d631ccd15595795eec3a00df8e5b875003f5", size = 189884 }, + { url = "https://files.pythonhosted.org/packages/75/58/8fcca2d3af710899a23129ce9c422256c722f6021c4ee5bfcc4d6a11d392/litestar_msgspec-0.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffab8bfdd657f938476567cae7ddbcd15d17f568a72034763b4baef8acb57cf8", size = 183549 }, + { url = "https://files.pythonhosted.org/packages/ba/cc/0b1f5aba81421d764a5582f35b90e11f47a62796c847d5862ff1cc127132/litestar_msgspec-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63853a36e5708d09b8d923a6f3fbfd77dbaa114882e11e90ab2f23d68947a89b", size = 209202 }, + { url = "https://files.pythonhosted.org/packages/1b/ce/2d3f59dae93bd0464fb6edcf46b29175bf8eec11c0887f360bf33d12e044/litestar_msgspec-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d3c2c70a516c23be68e1f40b1b988424e646b84478a577104d6463c19083dd2", size = 211418 }, + { url = "https://files.pythonhosted.org/packages/e3/47/573727827721f71b13f2103dcad987bc726c8b7a1e1c4380060a612a8a1b/litestar_msgspec-0.19.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8947dcfccbd7d7ff7bdc14a917fa619e93cfe0afd971a28f82a212bb1993bfd8", size = 214996 }, + { url = "https://files.pythonhosted.org/packages/6b/8d/23ebf883c68d8a3338eddd0ec662fea076a6419099dbb724da07d5e76ee8/litestar_msgspec-0.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9812a03cf151a754cd0da8126a41e2bf6762e312c36a6677be4c8de0fc699aa3", size = 218104 }, + { url = "https://files.pythonhosted.org/packages/ee/03/81b19f44264b43c7ea5d3d5649a8eb833ea2c9bf39eac7c3960f973a2de2/litestar_msgspec-0.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:64cb18c857390c47cce339f713742fc7183732be1b8f76a9679b259e6fba9a14", size = 186013 }, + { url = "https://files.pythonhosted.org/packages/c6/66/f60f0661d80b0133dd0778a149863118bc0184d9be29b424dd457c29a58b/litestar_msgspec-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:742de2a703ec261e98846ee426fc8362bff3382399ceca4fb6064e32850d27d9", size = 187806 }, + { url = "https://files.pythonhosted.org/packages/e2/96/f63b1fb4b112adfca6f69428495d7cddcbcfe5b12a5e69b587795043d966/litestar_msgspec-0.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dd6289755bb26807b3cb914b3ac86d3850d406dccb4ef5b14203eac844ba20cc", size = 182071 }, + { url = "https://files.pythonhosted.org/packages/a3/e4/1e93e47c0619868a348e3b318d3252e4514086ddff71ae5701b9ca6e332c/litestar_msgspec-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85a463141ac322db32f42b4b213fd44ed74efd22fb8ad1dbdc9d96cb14320ecd", size = 208893 }, + { url = "https://files.pythonhosted.org/packages/99/d9/1545e1646294dfb2ce2f3802b4bfc66107f8e802e47590efdd0ead5963b1/litestar_msgspec-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:691dc06799c4756aa825bf076d42bdfb747d2f825d37c78d6853a072aacceb9d", size = 210547 }, + { url = "https://files.pythonhosted.org/packages/04/14/05d1c1ffa2bb7490d642fbc2aa50f571a1ddd042d6d81e5f9338830b931a/litestar_msgspec-0.19.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e0fd5d4de6e203c7fff27efe7e6a6f36ca3ddb249d80b54b072bb505d2fc5b3d", size = 213897 }, + { url = "https://files.pythonhosted.org/packages/f2/e5/fe57237ae73dd94dedce3887fcc4e6d4229ee22ef8bde32c5e5de58dee36/litestar_msgspec-0.19.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2bef1c7b8f80a14b8d346de1c16710ecd2d8d56264eda328802308ee0468f5bf", size = 216736 }, + { url = "https://files.pythonhosted.org/packages/36/94/1f8dcc592d259a9fec6e4d2258e6297957456e085a41eee161b32e7ed5f6/litestar_msgspec-0.19.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cedd10334a9fe3686b06e7a42ff74e0e7271812326da8b20e29dee98b74ad0f", size = 186025 }, + { url = "https://files.pythonhosted.org/packages/1c/11/3d7296fab23a3ef3c47b9089f973eab9b1254cb95cff3641dd516499391e/litestar_msgspec-0.19.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:76f39091e0c7ef1bcec23528552997e6cef691a960c8523ddde7488ba70da252", size = 190346 }, + { url = "https://files.pythonhosted.org/packages/89/7e/c57b9d17fa0c0fa28473a4c0016f8032c5a175b78a89b0ffbe36f72bc54d/litestar_msgspec-0.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a33b036d6fb26be255800df092dd77e7e44b9b45bb60ffc62491a8a49fbf70e6", size = 183773 }, + { url = "https://files.pythonhosted.org/packages/ca/d3/fc6de79d6753ca91c44363d7b5a4ddef73451789af4028fdd71f4d3a3087/litestar_msgspec-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:753f4cad61b525ada4b1bff2d875aa822f1acfd3bac9b24e9cc3554caf01e3a7", size = 210499 }, + { url = "https://files.pythonhosted.org/packages/6b/89/f9e0e2ba805f987230e3f3fd72f638d00dd7f7ca9a5a9a03d69b5dd60f2d/litestar_msgspec-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b134b1e5f1cd6e0c986ed6bb4d410a04a36bffdd53e74c4817bca2cd67290a58", size = 213457 }, + { url = "https://files.pythonhosted.org/packages/8c/3a/cf3722f5e1fd346a475f92c839bf5fcdcea89759a5df33da1b34ff30aad2/litestar_msgspec-0.19.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c0c67a4779a7e3b0215063da1c96a09c0f0595dae6fda1a64db8aecca9862ee", size = 213953 }, + { url = "https://files.pythonhosted.org/packages/8b/de/714235b338d5dafccb6e7dadee4c845af2b145c95a13d286e05bc3580c97/litestar_msgspec-0.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c7c413426d63c59876b3adbd9b402380893a73c1b427fec1ec621def0a7fe604", size = 218985 }, + { url = "https://files.pythonhosted.org/packages/e3/93/23f93c6be0871e6ab8acafd0b1d1752129af98b76cf52cd9a95a648c481c/litestar_msgspec-0.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:813a5b4509f70a7b4635b98d6f632ef7b6c2a84961edbedb9a2f89afb0851add", size = 187308 }, + { url = "https://files.pythonhosted.org/packages/c3/63/9b1fcc1c3e0f85a18df6b98ca7a4815d7eed904ef54052c1278e0619234a/litestar_msgspec-0.19.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:42a6378c80875bb96888f445c0d62017675630cb4334c523272f7094cb2c50a2", size = 190363 }, + { url = "https://files.pythonhosted.org/packages/53/e3/f94475705bf36ee3e02b95f611cc6b0c0b3d07e76d6b40be32b21d82bfa7/litestar_msgspec-0.19.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b80164da4fb8bfbdd0016925bbecf65ae25d37f602fc03bf079fe4d6f5040b1", size = 183815 }, + { url = "https://files.pythonhosted.org/packages/59/1f/be0daa3756ab9a96e8f0c64729e6918737f2977d366ba373751414a72f59/litestar_msgspec-0.19.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15232e2b3fb7f4e03797778b334c50f435c35226164b07313ebfda60c43cc164", size = 210514 }, + { url = "https://files.pythonhosted.org/packages/c1/a8/eaf7d0751b61d576ac16cffba5ad79a75c8705a20525a1eb8a3d69544af4/litestar_msgspec-0.19.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b77f5e98e0c97a7f1ec71bf067cc03e9a0749e7d0e7aba3c1dfa20807e9a96ee", size = 213429 }, + { url = "https://files.pythonhosted.org/packages/70/d5/3d4c185b6cfabcd5aaf75c099745203678d3dbf69b3d7f30c2f5cd9a7bc1/litestar_msgspec-0.19.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1cec352a363d078c71ff1deacfbfeb978d6d16ad781a4415d4283b6566294fae", size = 213891 }, + { url = "https://files.pythonhosted.org/packages/52/99/0b65d96a5a1281fd70ba97896f97e546d8aa757b3c2b9fd27cfa1cca8307/litestar_msgspec-0.19.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f5acb0f95e91739b163edf3e3d58c9c777b8f5d1c7069fcb59bd0ae945cc739f", size = 218991 }, + { url = "https://files.pythonhosted.org/packages/31/b5/c004eda2eaf423f60684c12fc7da178794ff6525c7dcb58801a866a353c3/litestar_msgspec-0.19.0-cp313-cp313-win_amd64.whl", hash = "sha256:26d680cd2a0924f3fda0cd90d77a6e6715fffc3da985e1ef7d53d5157940dece", size = 187272 }, + { url = "https://files.pythonhosted.org/packages/21/05/fc4489503fe1ccd42e29701cef51bec95c64a91bec252f26640aa784937e/litestar_msgspec-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6f946515a2939e0c9026b1cf8cf6da544d9f06b768b040f913a59a40f83777ed", size = 189789 }, + { url = "https://files.pythonhosted.org/packages/39/fa/e0afde3e987effeeaafcec8a48f3ee196558760b2a26c1f9c88810e12710/litestar_msgspec-0.19.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8e78b926904fafbf5bdf4aa7982447f8e25ef84ad6e2b3c2c989f6186eadfdb9", size = 183739 }, + { url = "https://files.pythonhosted.org/packages/b0/56/2fe8e69c806b1d1814d333ccc0dc7e10b34d524f601c876b24396ceb8d0e/litestar_msgspec-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9861fb12b337b739b3f6a7cc66ed8036949931d5e2982aa5fc9df622c7f49775", size = 209136 }, + { url = "https://files.pythonhosted.org/packages/f7/59/01b4b6a1f1ed913c7fefa793cc65224951cf3c6c9f3a2b951b6b3e37d812/litestar_msgspec-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c888b8d3ce8cdd6830e82cef37cebccff9e75069c8d788b15f4c31bcf46fa0cc", size = 211261 }, + { url = "https://files.pythonhosted.org/packages/f8/46/9fbd15a5b4ffb3c665ed17912cb6474021e1c1b2705cd236458c0cc5909f/litestar_msgspec-0.19.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ad63dbd26c672621ad7bc6c1b1b9033166c1116b01d2033e68eace0b6de66145", size = 214898 }, + { url = "https://files.pythonhosted.org/packages/41/87/541e85acfb893449df68e898fe817cb40a3f8fc4b368f6102c9eb0391682/litestar_msgspec-0.19.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d41167d16869ed47d08a314f3babb0fc7954cfe1c06ab061c9209600d5e7beec", size = 218032 }, + { url = "https://files.pythonhosted.org/packages/ef/4a/bbcc6ab7c77233ec28e813c9db4b05e3506dd8ed63385bfb9348b881a1c8/litestar_msgspec-0.19.0-cp39-cp39-win_amd64.whl", hash = "sha256:51c3b9938552349fa586ce8044b8c8357ef73e2e7f6430e62fdbde56d1b8cb98", size = 186142 }, ] [[package]] @@ -1936,14 +2005,14 @@ wheels = [ [[package]] name = "mako" -version = "1.3.6" +version = "1.3.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fa/0b/29bc5a230948bf209d3ed3165006d257e547c02c3c2a96f6286320dfe8dc/mako-1.3.6.tar.gz", hash = "sha256:9ec3a1583713479fae654f83ed9fa8c9a4c16b7bb0daba0e6bbebff50c0d983d", size = 390206 } +sdist = { url = "https://files.pythonhosted.org/packages/5f/d9/8518279534ed7dace1795d5a47e49d5299dd0994eed1053996402a8902f9/mako-1.3.8.tar.gz", hash = "sha256:577b97e414580d3e088d47c2dbbe9594aa7a5146ed2875d4dfa9075af2dd3cc8", size = 392069 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/22/bc14c6f02e6dccaafb3eba95764c8f096714260c2aa5f76f654fd16a23dd/Mako-1.3.6-py3-none-any.whl", hash = "sha256:a91198468092a2f1a0de86ca92690fb0cfc43ca90ee17e15d93662b4c04b241a", size = 78557 }, + { url = "https://files.pythonhosted.org/packages/1e/bf/7a6a36ce2e4cafdfb202752be68850e22607fccd692847c45c1ae3c17ba6/Mako-1.3.8-py3-none-any.whl", hash = "sha256:42f48953c7eb91332040ff567eb7eea69b22e7a4affbc5ba8e845e8f730f6627", size = 78569 }, ] [[package]] @@ -2359,20 +2428,20 @@ wheels = [ [[package]] name = "opentelemetry-api" -version = "1.28.2" +version = "1.29.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "deprecated" }, { name = "importlib-metadata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/34/e4e9245c868c6490a46ffedf6bd5b0f512bbc0a848b19e3a51f6bbad648c/opentelemetry_api-1.28.2.tar.gz", hash = "sha256:ecdc70c7139f17f9b0cf3742d57d7020e3e8315d6cffcdf1a12a905d45b19cc0", size = 62796 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/8e/b886a5e9861afa188d1fe671fb96ff9a1d90a23d57799331e137cc95d573/opentelemetry_api-1.29.0.tar.gz", hash = "sha256:d04a6cf78aad09614f52964ecb38021e248f5714dc32c2e0d8fd99517b4d69cf", size = 62900 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/58/b17393cdfc149e14ee84c662abf921993dcce8058628359ef1f49e2abb97/opentelemetry_api-1.28.2-py3-none-any.whl", hash = "sha256:6fcec89e265beb258fe6b1acaaa3c8c705a934bd977b9f534a2b7c0d2d4275a6", size = 64302 }, + { url = "https://files.pythonhosted.org/packages/43/53/5249ea860d417a26a3a6f1bdedfc0748c4f081a3adaec3d398bc0f7c6a71/opentelemetry_api-1.29.0-py3-none-any.whl", hash = "sha256:5fcd94c4141cc49c736271f3e1efb777bebe9cc535759c54c936cca4f1b312b8", size = 64304 }, ] [[package]] name = "opentelemetry-instrumentation" -version = "0.49b2" +version = "0.50b0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, @@ -2380,14 +2449,14 @@ dependencies = [ { name = "packaging" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6f/1f/9fa51f6f64f4d179f4e3370eb042176ff7717682428552f5e1f4c5efcc09/opentelemetry_instrumentation-0.49b2.tar.gz", hash = "sha256:8cf00cc8d9d479e4b72adb9bd267ec544308c602b7188598db5a687e77b298e2", size = 26480 } +sdist = { url = "https://files.pythonhosted.org/packages/79/2e/2e59a7cb636dc394bd7cf1758ada5e8ed87590458ca6bb2f9c26e0243847/opentelemetry_instrumentation-0.50b0.tar.gz", hash = "sha256:7d98af72de8dec5323e5202e46122e5f908592b22c6d24733aad619f07d82979", size = 26539 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/e3/ad23372525653b0221212d5e2a71bd97aae64cc35f90cbf0c70de57dfa4e/opentelemetry_instrumentation-0.49b2-py3-none-any.whl", hash = "sha256:f6d782b0ef9fef4a4c745298651c65f5c532c34cd4c40d230ab5b9f3b3b4d151", size = 30693 }, + { url = "https://files.pythonhosted.org/packages/ff/b1/55a77152a83ec8998e520a3a575f44af1020cfe4bdc000b7538583293b85/opentelemetry_instrumentation-0.50b0-py3-none-any.whl", hash = "sha256:b8f9fc8812de36e1c6dffa5bfc6224df258841fb387b6dfe5df15099daa10630", size = 30728 }, ] [[package]] name = "opentelemetry-instrumentation-asgi" -version = "0.49b2" +version = "0.50b0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, @@ -2396,45 +2465,45 @@ dependencies = [ { name = "opentelemetry-semantic-conventions" }, { name = "opentelemetry-util-http" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/42/079079bd7c0423bfab987a6457e34468b6ddccf501d3c91d2795c200d65d/opentelemetry_instrumentation_asgi-0.49b2.tar.gz", hash = "sha256:2af5faf062878330714efe700127b837038c4d9d3b70b451ab2424d5076d6c1c", size = 24106 } +sdist = { url = "https://files.pythonhosted.org/packages/49/cc/a7b2fd243c6d2621803092eba62e450071b6752dfe4f64f530bbfd91a328/opentelemetry_instrumentation_asgi-0.50b0.tar.gz", hash = "sha256:3ca4cb5616ae6a3e8ce86e7d5c360a8d8cc8ed722cf3dc8a5e44300774e87d49", size = 24105 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/82/06a56e786de3ea0ef4703ed313d9d8395fb4bc9ae740cc71415178ae8bff/opentelemetry_instrumentation_asgi-0.49b2-py3-none-any.whl", hash = "sha256:c8ede13ed781402458a800411cb7ec16a25386dc21de8e5b9a568b386a1dc5f4", size = 16305 }, + { url = "https://files.pythonhosted.org/packages/d2/81/0899c6b56b1023835f266d909250d439174afa0c34ed5944c5021d3da263/opentelemetry_instrumentation_asgi-0.50b0-py3-none-any.whl", hash = "sha256:2ba1297f746e55dec5a17fe825689da0613662fb25c004c3965a6c54b1d5be22", size = 16304 }, ] [[package]] name = "opentelemetry-sdk" -version = "1.28.2" +version = "1.29.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "opentelemetry-semantic-conventions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4b/f4/840a5af4efe48d7fb4c456ad60fd624673e871a60d6494f7ff8a934755d4/opentelemetry_sdk-1.28.2.tar.gz", hash = "sha256:5fed24c5497e10df30282456fe2910f83377797511de07d14cec0d3e0a1a3110", size = 157272 } +sdist = { url = "https://files.pythonhosted.org/packages/0c/5a/1ed4c3cf6c09f80565fc085f7e8efa0c222712fd2a9412d07424705dcf72/opentelemetry_sdk-1.29.0.tar.gz", hash = "sha256:b0787ce6aade6ab84315302e72bd7a7f2f014b0fb1b7c3295b88afe014ed0643", size = 157229 } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/8b/4f2b418496c08016d4384f9b1c4725a8af7faafa248d624be4bb95993ce1/opentelemetry_sdk-1.28.2-py3-none-any.whl", hash = "sha256:93336c129556f1e3ccd21442b94d3521759541521861b2214c499571b85cb71b", size = 118757 }, + { url = "https://files.pythonhosted.org/packages/d1/1d/512b86af21795fb463726665e2f61db77d384e8779fdcf4cb0ceec47866d/opentelemetry_sdk-1.29.0-py3-none-any.whl", hash = "sha256:173be3b5d3f8f7d671f20ea37056710217959e774e2749d984355d1f9391a30a", size = 118078 }, ] [[package]] name = "opentelemetry-semantic-conventions" -version = "0.49b2" +version = "0.50b0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "deprecated" }, { name = "opentelemetry-api" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/0a/e3b93f94aa3223c6fd8e743502a1fefd4fb3a753d8f501ce2a418f7c0bd4/opentelemetry_semantic_conventions-0.49b2.tar.gz", hash = "sha256:44e32ce6a5bb8d7c0c617f84b9dc1c8deda1045a07dc16a688cc7cbeab679997", size = 95213 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/4e/d7c7c91ff47cd96fe4095dd7231701aec7347426fd66872ff320d6cd1fcc/opentelemetry_semantic_conventions-0.50b0.tar.gz", hash = "sha256:02dc6dbcb62f082de9b877ff19a3f1ffaa3c306300fa53bfac761c4567c83d38", size = 100459 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/be/6661c8f76708bb3ba38c90be8fa8d7ffe17ccbc5cbbc229334f5535f6448/opentelemetry_semantic_conventions-0.49b2-py3-none-any.whl", hash = "sha256:51e7e1d0daa958782b6c2a8ed05e5f0e7dd0716fc327ac058777b8659649ee54", size = 159199 }, + { url = "https://files.pythonhosted.org/packages/da/fb/dc15fad105450a015e913cfa4f5c27b6a5f1bea8fb649f8cae11e699c8af/opentelemetry_semantic_conventions-0.50b0-py3-none-any.whl", hash = "sha256:e87efba8fdb67fb38113efea6a349531e75ed7ffc01562f65b802fcecb5e115e", size = 166602 }, ] [[package]] name = "opentelemetry-util-http" -version = "0.49b2" +version = "0.50b0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/28/ac5b1a0fd210ecb6c86c5e04256ba09c8308eb41e116097b9e2714d4b8dd/opentelemetry_util_http-0.49b2.tar.gz", hash = "sha256:5958c7009f79146bbe98b0fdb23d9d7bf1ea9cd154a1c199029b1a89e0557199", size = 7861 } +sdist = { url = "https://files.pythonhosted.org/packages/69/10/ce3f0d1157cedbd819194f0b27a6bbb7c19a8bceb3941e4a4775014076cf/opentelemetry_util_http-0.50b0.tar.gz", hash = "sha256:dc4606027e1bc02aabb9533cc330dd43f874fca492e4175c31d7154f341754af", size = 7859 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/22/9128f10d1c2868ee42df7e10937d00f154a69bee87c416ca9b20a6af6c54/opentelemetry_util_http-0.49b2-py3-none-any.whl", hash = "sha256:e325d6511c6bee7b43170eb0c93261a210ec57e20ab1d7a99838515ef6d2bf58", size = 6941 }, + { url = "https://files.pythonhosted.org/packages/64/8a/9e1b54f50d1fddebbeac9a9b0632f8db6ece7add904fb593ee2e268ee4de/opentelemetry_util_http-0.50b0-py3-none-any.whl", hash = "sha256:21f8aedac861ffa3b850f8c0a6c373026189eb8630ac6e14a2bf8c55695cc090", size = 6942 }, ] [[package]] @@ -2586,11 +2655,11 @@ wheels = [ [[package]] name = "prometheus-client" -version = "0.21.0" +version = "0.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/54/a369868ed7a7f1ea5163030f4fc07d85d22d7a1d270560dab675188fb612/prometheus_client-0.21.0.tar.gz", hash = "sha256:96c83c606b71ff2b0a433c98889d275f51ffec6c5e267de37c7a2b5c9aa9233e", size = 78634 } +sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/2d/46ed6436849c2c88228c3111865f44311cff784b4aabcdef4ea2545dbc3d/prometheus_client-0.21.0-py3-none-any.whl", hash = "sha256:4fa6b4dd0ac16d58bb587c04b1caae65b8c5043e85f778f42f5f632f6af2e166", size = 54686 }, + { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, ] [[package]] @@ -2808,16 +2877,16 @@ wheels = [ [[package]] name = "pydantic" -version = "2.10.2" +version = "2.10.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/86/a03390cb12cf64e2a8df07c267f3eb8d5035e0f9a04bb20fb79403d2a00e/pydantic-2.10.2.tar.gz", hash = "sha256:2bc2d7f17232e0841cbba4641e65ba1eb6fafb3a08de3a091ff3ce14a197c4fa", size = 785401 } +sdist = { url = "https://files.pythonhosted.org/packages/45/0f/27908242621b14e649a84e62b133de45f84c255eecb350ab02979844a788/pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9", size = 786486 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/74/da832196702d0c56eb86b75bfa346db9238617e29b0b7ee3b8b4eccfe654/pydantic-2.10.2-py3-none-any.whl", hash = "sha256:cfb96e45951117c3024e6b67b25cdc33a3cb7b2fa62e239f7af1378358a1d99e", size = 456364 }, + { url = "https://files.pythonhosted.org/packages/62/51/72c18c55cf2f46ff4f91ebcc8f75aa30f7305f3d726be3f4ebffb4ae972b/pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d", size = 456997 }, ] [package.optional-dependencies] @@ -2937,15 +3006,15 @@ wheels = [ [[package]] name = "pydantic-extra-types" -version = "2.10.0" +version = "2.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/92/8542f406466d11bf348b795d498906034f9bb9016f09e906ff7fee6444be/pydantic_extra_types-2.10.0.tar.gz", hash = "sha256:552c47dd18fe1d00cfed75d9981162a2f3203cf7e77e55a3d3e70936f59587b9", size = 44559 } +sdist = { url = "https://files.pythonhosted.org/packages/c3/12/844a4796dbbc814ef0a706f403cb0f3029bf324c2bca2bf0681f4f7d8618/pydantic_extra_types-2.10.1.tar.gz", hash = "sha256:e4f937af34a754b8f1fa228a2fac867091a51f56ed0e8a61d5b3a6719b13c923", size = 85694 } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/41/0b0cc8b59c31a04bdfde2ae71fccbb13c11fadafc8bd41a2af3e76db7e44/pydantic_extra_types-2.10.0-py3-none-any.whl", hash = "sha256:b19943914e6286548254f5079d1da094e9c0583ee91a8e611e9df24bfd07dbcd", size = 34185 }, + { url = "https://files.pythonhosted.org/packages/a8/f1/92f7b4711d3d0d08981c2677ec9cdde6cb114205a69814bf803e0be5ae9b/pydantic_extra_types-2.10.1-py3-none-any.whl", hash = "sha256:db2c86c04a837bbac0d2d79bbd6f5d46c4c9253db11ca3fdd36a2b282575f1e2", size = 35155 }, ] [[package]] @@ -3274,14 +3343,14 @@ wheels = [ [[package]] name = "redis" -version = "5.2.0" +version = "5.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-timeout", marker = "python_full_version < '3.11.3'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/53/17/2f4a87ffa4cd93714cf52edfa3ea94589e9de65f71e9f99cbcfa84347a53/redis-5.2.0.tar.gz", hash = "sha256:0b1087665a771b1ff2e003aa5bdd354f15a70c9e25d5a7dbf9c722c16528a7b0", size = 4607878 } +sdist = { url = "https://files.pythonhosted.org/packages/47/da/d283a37303a995cd36f8b92db85135153dc4f7a8e4441aa827721b442cfb/redis-5.2.1.tar.gz", hash = "sha256:16f2e22dff21d5125e8481515e386711a34cbec50f0e44413dd7d9c060a54e0f", size = 4608355 } wheels = [ - { url = "https://files.pythonhosted.org/packages/12/f5/ffa560ecc4bafbf25f7961c3d6f50d627a90186352e27e7d0ba5b1f6d87d/redis-5.2.0-py3-none-any.whl", hash = "sha256:ae174f2bb3b1bf2b09d54bf3e51fbc1469cf6c10aa03e21141f51969801a7897", size = 261428 }, + { url = "https://files.pythonhosted.org/packages/3c/5f/fa26b9b2672cbe30e07d9a5bdf39cf16e3b80b42916757c5f92bca88e4ba/redis-5.2.1-py3-none-any.whl", hash = "sha256:ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4", size = 261502 }, ] [package.optional-dependencies] @@ -3320,16 +3389,16 @@ wheels = [ [[package]] name = "rich-click" -version = "1.8.4" +version = "1.8.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/f4/e48dc2850662526a26fb0961aacb0162c6feab934312b109b748ae4efee2/rich_click-1.8.4.tar.gz", hash = "sha256:0f49471f04439269d0e66a6f43120f52d11d594869a2a0be600cfb12eb0616b9", size = 38247 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/31/103501e85e885e3e202c087fa612cfe450693210372766552ce1ab5b57b9/rich_click-1.8.5.tar.gz", hash = "sha256:a3eebe81da1c9da3c32f3810017c79bd687ff1b3fa35bfc9d8a3338797f1d1a1", size = 38229 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/f3/72f93d8494ee641bde76bfe1208cf4abc44c6f9448673762f6077bc162d6/rich_click-1.8.4-py3-none-any.whl", hash = "sha256:2d2841b3cebe610d5682baa1194beaf78ab00c4fa31931533261b5eba2ee80b7", size = 35071 }, + { url = "https://files.pythonhosted.org/packages/aa/0b/e2de98c538c0ee9336211d260f88b7e69affab44969750aaca0b48a697c8/rich_click-1.8.5-py3-none-any.whl", hash = "sha256:0fab7bb5b66c15da17c210b4104277cd45f3653a7322e0098820a169880baee0", size = 35081 }, ] [[package]] @@ -3394,27 +3463,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/d0/8ff5b189d125f4260f2255d143bf2fa413b69c2610c405ace7a0a8ec81ec/ruff-0.8.1.tar.gz", hash = "sha256:3583db9a6450364ed5ca3f3b4225958b24f78178908d5c4bc0f46251ccca898f", size = 3313222 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/d6/1a6314e568db88acdbb5121ed53e2c52cebf3720d3437a76f82f923bf171/ruff-0.8.1-py3-none-linux_armv6l.whl", hash = "sha256:fae0805bd514066f20309f6742f6ee7904a773eb9e6c17c45d6b1600ca65c9b5", size = 10532605 }, - { url = "https://files.pythonhosted.org/packages/89/a8/a957a8812e31facffb6a26a30be0b5b4af000a6e30c7d43a22a5232a3398/ruff-0.8.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b8a4f7385c2285c30f34b200ca5511fcc865f17578383db154e098150ce0a087", size = 10278243 }, - { url = "https://files.pythonhosted.org/packages/a8/23/9db40fa19c453fabf94f7a35c61c58f20e8200b4734a20839515a19da790/ruff-0.8.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:cd054486da0c53e41e0086e1730eb77d1f698154f910e0cd9e0d64274979a209", size = 9917739 }, - { url = "https://files.pythonhosted.org/packages/e2/a0/6ee2d949835d5701d832fc5acd05c0bfdad5e89cfdd074a171411f5ccad5/ruff-0.8.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2029b8c22da147c50ae577e621a5bfbc5d1fed75d86af53643d7a7aee1d23871", size = 10779153 }, - { url = "https://files.pythonhosted.org/packages/7a/25/9c11dca9404ef1eb24833f780146236131a3c7941de394bc356912ef1041/ruff-0.8.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2666520828dee7dfc7e47ee4ea0d928f40de72056d929a7c5292d95071d881d1", size = 10304387 }, - { url = "https://files.pythonhosted.org/packages/c8/b9/84c323780db1b06feae603a707d82dbbd85955c8c917738571c65d7d5aff/ruff-0.8.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:333c57013ef8c97a53892aa56042831c372e0bb1785ab7026187b7abd0135ad5", size = 11360351 }, - { url = "https://files.pythonhosted.org/packages/6b/e1/9d4bbb2ace7aad14ded20e4674a48cda5b902aed7a1b14e6b028067060c4/ruff-0.8.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:288326162804f34088ac007139488dcb43de590a5ccfec3166396530b58fb89d", size = 12022879 }, - { url = "https://files.pythonhosted.org/packages/75/28/752ff6120c0e7f9981bc4bc275d540c7f36db1379ba9db9142f69c88db21/ruff-0.8.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b12c39b9448632284561cbf4191aa1b005882acbc81900ffa9f9f471c8ff7e26", size = 11610354 }, - { url = "https://files.pythonhosted.org/packages/ba/8c/967b61c2cc8ebd1df877607fbe462bc1e1220b4a30ae3352648aec8c24bd/ruff-0.8.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:364e6674450cbac8e998f7b30639040c99d81dfb5bbc6dfad69bc7a8f916b3d1", size = 12813976 }, - { url = "https://files.pythonhosted.org/packages/7f/29/e059f945d6bd2d90213387b8c360187f2fefc989ddcee6bbf3c241329b92/ruff-0.8.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b22346f845fec132aa39cd29acb94451d030c10874408dbf776af3aaeb53284c", size = 11154564 }, - { url = "https://files.pythonhosted.org/packages/55/47/cbd05e5a62f3fb4c072bc65c1e8fd709924cad1c7ec60a1000d1e4ee8307/ruff-0.8.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b2f2f7a7e7648a2bfe6ead4e0a16745db956da0e3a231ad443d2a66a105c04fa", size = 10760604 }, - { url = "https://files.pythonhosted.org/packages/bb/ee/4c3981c47147c72647a198a94202633130cfda0fc95cd863a553b6f65c6a/ruff-0.8.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:adf314fc458374c25c5c4a4a9270c3e8a6a807b1bec018cfa2813d6546215540", size = 10391071 }, - { url = "https://files.pythonhosted.org/packages/6b/e6/083eb61300214590b188616a8ac6ae1ef5730a0974240fb4bec9c17de78b/ruff-0.8.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a885d68342a231b5ba4d30b8c6e1b1ee3a65cf37e3d29b3c74069cdf1ee1e3c9", size = 10896657 }, - { url = "https://files.pythonhosted.org/packages/77/bd/aacdb8285d10f1b943dbeb818968efca35459afc29f66ae3bd4596fbf954/ruff-0.8.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d2c16e3508c8cc73e96aa5127d0df8913d2290098f776416a4b157657bee44c5", size = 11228362 }, - { url = "https://files.pythonhosted.org/packages/39/72/fcb7ad41947f38b4eaa702aca0a361af0e9c2bf671d7fd964480670c297e/ruff-0.8.1-py3-none-win32.whl", hash = "sha256:93335cd7c0eaedb44882d75a7acb7df4b77cd7cd0d2255c93b28791716e81790", size = 8803476 }, - { url = "https://files.pythonhosted.org/packages/e4/ea/cae9aeb0f4822c44651c8407baacdb2e5b4dcd7b31a84e1c5df33aa2cc20/ruff-0.8.1-py3-none-win_amd64.whl", hash = "sha256:2954cdbe8dfd8ab359d4a30cd971b589d335a44d444b6ca2cb3d1da21b75e4b6", size = 9614463 }, - { url = "https://files.pythonhosted.org/packages/eb/76/fbb4bd23dfb48fa7758d35b744413b650a9fd2ddd93bca77e30376864414/ruff-0.8.1-py3-none-win_arm64.whl", hash = "sha256:55873cc1a473e5ac129d15eccb3c008c096b94809d693fc7053f588b67822737", size = 8959621 }, +version = "0.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/5e/683c7ef7a696923223e7d95ca06755d6e2acbc5fd8382b2912a28008137c/ruff-0.8.3.tar.gz", hash = "sha256:5e7558304353b84279042fc584a4f4cb8a07ae79b2bf3da1a7551d960b5626d3", size = 3378522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/c4/bfdbb8b9c419ff3b52479af8581026eeaac3764946fdb463dec043441b7d/ruff-0.8.3-py3-none-linux_armv6l.whl", hash = "sha256:8d5d273ffffff0acd3db5bf626d4b131aa5a5ada1276126231c4174543ce20d6", size = 10535860 }, + { url = "https://files.pythonhosted.org/packages/ef/c5/0aabdc9314b4b6f051168ac45227e2aa8e1c6d82718a547455e40c9c9faa/ruff-0.8.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e4d66a21de39f15c9757d00c50c8cdd20ac84f55684ca56def7891a025d7e939", size = 10346327 }, + { url = "https://files.pythonhosted.org/packages/1a/78/4843a59e7e7b398d6019cf91ab06502fd95397b99b2b858798fbab9151f5/ruff-0.8.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c356e770811858bd20832af696ff6c7e884701115094f427b64b25093d6d932d", size = 9942585 }, + { url = "https://files.pythonhosted.org/packages/91/5a/642ed8f1ba23ffc2dd347697e01eef3c42fad6ac76603be4a8c3a9d6311e/ruff-0.8.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c0a60a825e3e177116c84009d5ebaa90cf40dfab56e1358d1df4e29a9a14b13", size = 10797597 }, + { url = "https://files.pythonhosted.org/packages/30/25/2e654bc7226da09a49730a1a2ea6e89f843b362db80b4b2a7a4f948ac986/ruff-0.8.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:75fb782f4db39501210ac093c79c3de581d306624575eddd7e4e13747e61ba18", size = 10307244 }, + { url = "https://files.pythonhosted.org/packages/c0/2d/a224d56bcd4383583db53c2b8f410ebf1200866984aa6eb9b5a70f04e71f/ruff-0.8.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f26bc76a133ecb09a38b7868737eded6941b70a6d34ef53a4027e83913b6502", size = 11362439 }, + { url = "https://files.pythonhosted.org/packages/82/01/03e2857f9c371b8767d3e909f06a33bbdac880df17f17f93d6f6951c3381/ruff-0.8.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:01b14b2f72a37390c1b13477c1c02d53184f728be2f3ffc3ace5b44e9e87b90d", size = 12078538 }, + { url = "https://files.pythonhosted.org/packages/af/ae/ff7f97b355da16d748ceec50e1604a8215d3659b36b38025a922e0612e9b/ruff-0.8.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53babd6e63e31f4e96ec95ea0d962298f9f0d9cc5990a1bbb023a6baf2503a82", size = 11616172 }, + { url = "https://files.pythonhosted.org/packages/6a/d0/6156d4d1e53ebd17747049afe801c5d7e3014d9b2f398b9236fe36ba4320/ruff-0.8.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ae441ce4cf925b7f363d33cd6570c51435972d697e3e58928973994e56e1452", size = 12919886 }, + { url = "https://files.pythonhosted.org/packages/4e/84/affcb30bacb94f6036a128ad5de0e29f543d3f67ee42b490b17d68e44b8a/ruff-0.8.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7c65bc0cadce32255e93c57d57ecc2cca23149edd52714c0c5d6fa11ec328cd", size = 11212599 }, + { url = "https://files.pythonhosted.org/packages/60/b9/5694716bdefd8f73df7c0104334156c38fb0f77673d2966a5a1345bab94d/ruff-0.8.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5be450bb18f23f0edc5a4e5585c17a56ba88920d598f04a06bd9fd76d324cb20", size = 10784637 }, + { url = "https://files.pythonhosted.org/packages/24/7e/0e8f835103ac7da81c3663eedf79dec8359e9ae9a3b0d704bae50be59176/ruff-0.8.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8faeae3827eaa77f5721f09b9472a18c749139c891dbc17f45e72d8f2ca1f8fc", size = 10390591 }, + { url = "https://files.pythonhosted.org/packages/27/da/180ec771fc01c004045962ce017ca419a0281f4bfaf867ed0020f555b56e/ruff-0.8.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:db503486e1cf074b9808403991663e4277f5c664d3fe237ee0d994d1305bb060", size = 10894298 }, + { url = "https://files.pythonhosted.org/packages/6d/f8/29f241742ed3954eb2222314b02db29f531a15cab3238d1295e8657c5f18/ruff-0.8.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6567be9fb62fbd7a099209257fef4ad2c3153b60579818b31a23c886ed4147ea", size = 11275965 }, + { url = "https://files.pythonhosted.org/packages/79/e9/5b81dc9afc8a80884405b230b9429efeef76d04caead904bd213f453b973/ruff-0.8.3-py3-none-win32.whl", hash = "sha256:19048f2f878f3ee4583fc6cb23fb636e48c2635e30fb2022b3a1cd293402f964", size = 8807651 }, + { url = "https://files.pythonhosted.org/packages/ea/67/7291461066007617b59a707887b90e319b6a043c79b4d19979f86b7a20e7/ruff-0.8.3-py3-none-win_amd64.whl", hash = "sha256:f7df94f57d7418fa7c3ffb650757e0c2b96cf2501a0b192c18e4fb5571dfada9", size = 9625289 }, + { url = "https://files.pythonhosted.org/packages/03/8f/e4fa95288b81233356d9a9dcaed057e5b0adc6399aa8fd0f6d784041c9c3/ruff-0.8.3-py3-none-win_arm64.whl", hash = "sha256:fe2756edf68ea79707c8d68b78ca9a58ed9af22e430430491ee03e718b5e4936", size = 9078754 }, ] [[package]] @@ -3443,27 +3512,52 @@ wheels = [ [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] name = "slotscheck" version = "0.16.5" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.8.1' and sys_platform != 'win32'", + "python_full_version < '3.8.1' and sys_platform == 'win32'", +] dependencies = [ - { name = "click" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.10'" }, + { name = "click", marker = "python_full_version < '3.8.1'" }, + { name = "tomli", marker = "python_full_version < '3.8.1'" }, + { name = "typing-extensions", marker = "python_full_version < '3.8.1'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/27/d6/d94545d83dd2fd8d515c76461875d23ecf80b998d8c34963a2e850ef80ca/slotscheck-0.16.5.tar.gz", hash = "sha256:6cae3e73808121cf63c1bc638c3b5ae7e10f651323ad3cf38790ce005b77e221", size = 17073 } wheels = [ { url = "https://files.pythonhosted.org/packages/c0/49/826b5c7df3a908c79588f7bff560c93a1bd79b04034698433803f4d17400/slotscheck-0.16.5-py3-none-any.whl", hash = "sha256:b202def7a1d4559575a6a1926aabe461bf780c1584275eff2d3ee4465c52d8c6", size = 20273 }, ] +[[package]] +name = "slotscheck" +version = "0.19.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform != 'win32'", + "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", + "python_full_version >= '3.13' and sys_platform != 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.13' and sys_platform == 'win32'", +] +dependencies = [ + { name = "click", marker = "python_full_version >= '3.8.1'" }, + { name = "tomli", marker = "python_full_version >= '3.8.1' and python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/57/6fcb8df11e7c76eb87b23bfa931408e47f051c6161749c531b4060a45516/slotscheck-0.19.1.tar.gz", hash = "sha256:6146b7747f8db335a00a66b782f86011b74b995f61746dc5b36a9e77d5326013", size = 16050 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/32/bd569256267f80b76b87d21a09795741a175778b954bee1d7b1a89852b6f/slotscheck-0.19.1-py3-none-any.whl", hash = "sha256:bff9926f8d6408ea21b6c6bbaa4389cea1682962e73ee4f30084b6d2b89260ee", size = 16995 }, +] + [[package]] name = "smart-open" version = "7.0.5" @@ -3823,15 +3917,15 @@ wheels = [ [[package]] name = "starlette" -version = "0.41.3" +version = "0.42.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/4c/9b5764bd22eec91c4039ef4c55334e9187085da2d8a2df7bd570869aae18/starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835", size = 2574159 } +sdist = { url = "https://files.pythonhosted.org/packages/3e/ae/0c98794b248370ce30f71018d0f39889f1d90c73a631e68e2f47e5efda2f/starlette-0.42.0.tar.gz", hash = "sha256:91f1fbd612f3e3d821a8a5f46bf381afe2a9722a7b8bbde1c07fb83384c2882a", size = 2575136 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/00/2b325970b3060c7cecebab6d295afe763365822b1306a12eeab198f74323/starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7", size = 73225 }, + { url = "https://files.pythonhosted.org/packages/c0/38/f790c69b2cbfe9cd4a8a89db1ef50d0a10e5121c07ff8b1d7c16d7807f41/starlette-0.42.0-py3-none-any.whl", hash = "sha256:02f877201a3d6d301714b5c72f15cac305ea5cc9e213c4b46a5af7eecad0d625", size = 73356 }, ] [[package]] @@ -3867,14 +3961,15 @@ wheels = [ [[package]] name = "taskgroup" -version = "0.0.0a4" +version = "0.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/40/02753c40fa30dfdde7567c1daeefbf957dcf8c99e6534a80afb438adf07e/taskgroup-0.0.0a4.tar.gz", hash = "sha256:eb08902d221e27661950f2a0320ddf3f939f579279996f81fe30779bca3a159c", size = 8553 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/45/d35599738fd5e9fc587665e11a3e2192b3a5e67005a0005d972b40e06cb5/taskgroup-0.2.1.tar.gz", hash = "sha256:11fa9c2db1037188ac0b60c70fa979243d00b1fee1a6e61e3171c21c1af75f78", size = 11184 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e5/0f8dac3d9e6314f60a725cdc9ec01f45591ddd720e59f6a4ff8bdcdf82cd/taskgroup-0.0.0a4-py2.py3-none-any.whl", hash = "sha256:5c1bd0e4c06114e7a4128583ab75c987597d5378a33948a3b74c662b90f61277", size = 9109 }, + { url = "https://files.pythonhosted.org/packages/60/68/2512ef887f01cdea18f74ce5ebd83785ec4d031447ec821f4f664e8c3d8f/taskgroup-0.2.1-py2.py3-none-any.whl", hash = "sha256:bff020b6e63408d1bcf952486cce05ed4c4e0747743c4762eb10b35726c89ab3", size = 13961 }, ] [[package]] @@ -4083,7 +4178,7 @@ wheels = [ [[package]] name = "twisted" -version = "24.10.0" +version = "24.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -4094,9 +4189,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "zope-interface" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b2/0f/2d0b0dcd52a849db64ff63619aead94ae1091fe4d4d7e100371efe513585/twisted-24.10.0.tar.gz", hash = "sha256:02951299672595fea0f70fa2d5f7b5e3d56836157eda68859a6ad6492d36756e", size = 3525999 } +sdist = { url = "https://files.pythonhosted.org/packages/77/1c/e07af0df31229250ab58a943077e4adbd5e227d9f2ac826920416b3e5fa2/twisted-24.11.0.tar.gz", hash = "sha256:695d0556d5ec579dcc464d2856b634880ed1319f45b10d19043f2b57eb0115b5", size = 3526722 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/7c/f80f6853d702782edb357190c42c3973f13c547a5f68ab1b17e6415061b8/twisted-24.10.0-py3-none-any.whl", hash = "sha256:67aa7c8aa94387385302acf44ade12967c747858c8bcce0f11d38077a11c5326", size = 3188753 }, + { url = "https://files.pythonhosted.org/packages/70/53/a50654eb9c63da0df2b5dca8ec27656a88b7edd798de5ffad55353203874/twisted-24.11.0-py3-none-any.whl", hash = "sha256:fe403076c71f04d5d2d789a755b687c5637ec3bcd3b2b8252d76f2ba65f54261", size = 3188667 }, ] [package.optional-dependencies] @@ -4230,16 +4325,16 @@ wheels = [ [[package]] name = "uvicorn" -version = "0.32.1" +version = "0.33.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "h11" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6a/3c/21dba3e7d76138725ef307e3d7ddd29b763119b3aa459d02cc05fefcff75/uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175", size = 77630 } +sdist = { url = "https://files.pythonhosted.org/packages/cb/81/a083ae41716b00df56d45d4b5f6ca8e90fc233a62e6c04ab3ad3c476b6c4/uvicorn-0.33.0.tar.gz", hash = "sha256:3577119f82b7091cf4d3d4177bfda0bae4723ed92ab1439e8d779de880c9cc59", size = 76590 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c1/2d27b0a15826c2b71dcf6e2f5402181ef85acf439617bb2f1453125ce1f3/uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e", size = 63828 }, + { url = "https://files.pythonhosted.org/packages/98/79/2e2620337ef1e4ef7a058b351603b765f59ac28e6e3ac7c5e7cdee9ea1ab/uvicorn-0.33.0-py3-none-any.whl", hash = "sha256:2c30de4aeea83661a520abab179b24084a0019c0c1bbe137e5409f741cbde5f8", size = 62297 }, ] [package.optional-dependencies] From f7a3f8b216a1f7e85b10391b4342e535b923f7c1 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 17:21:04 +0000 Subject: [PATCH 05/34] chore(build): build postgres client --- .github/workflows/ci.yml | 9 +++++++++ .github/workflows/test.yml | 3 +++ pyproject.toml | 3 ++- uv.lock | 22 +++++++++++++++++----- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd9f9739e5..6dcd1fa670 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -123,6 +123,9 @@ jobs: version: "0.5.4" enable-cache: true + - name: Install Build Dependencies + run: sudo apt-get install build-essential libpq-dev python3-dev -y + - name: Install dependencies run: | uv sync @@ -190,6 +193,9 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Install Build Dependencies + run: sudo apt-get install build-essential libpq-dev python3-dev -y + - name: Set up Python uses: actions/setup-python@v5 with: @@ -260,6 +266,9 @@ jobs: - name: Check out repository uses: actions/checkout@v4 + - name: Install Build Dependencies + run: sudo apt-get install build-essential libpq-dev python3-dev -y + - name: Set up Python uses: actions/setup-python@v5 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 05ba777de9..dd062a6e90 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,6 +38,9 @@ jobs: with: python-version: ${{ inputs.python-version }} + - name: Install Build Dependencies + run: sudo apt-get install build-essential libpq-dev python3-dev -y + - name: Install uv uses: astral-sh/setup-uv@v4 with: diff --git a/pyproject.toml b/pyproject.toml index aaea43bbf4..a11a69ba81 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -133,7 +133,8 @@ dev = [ "trio", "aiosqlite", "asyncpg>=0.29.0", - "psycopg[pool,binary]>=3.1.10,<3.2", + "psycopg[pool,binary]>=3.1.10,<3.2; python_version < \"3.13\"", + "psycopg[pool,c]; python_version ~= \"3.13\"", "psycopg2-binary", "psutil>=5.9.8", "hypercorn>=0.16.0", diff --git a/uv.lock b/uv.lock index 967b857c1a..6e98051057 100644 --- a/uv.lock +++ b/uv.lock @@ -1776,7 +1776,9 @@ dev = [ { name = "litestar", extra = ["full"] }, { name = "opentelemetry-sdk" }, { name = "psutil" }, - { name = "psycopg", extra = ["binary", "pool"] }, + { name = "psycopg", extra = ["binary"], marker = "python_full_version < '3.13'" }, + { name = "psycopg", extra = ["c"], marker = "python_full_version >= '3.13'" }, + { name = "psycopg", extra = ["pool"] }, { name = "psycopg2-binary" }, { name = "python-dotenv" }, { name = "starlette" }, @@ -1886,7 +1888,8 @@ dev = [ { name = "litestar", extras = ["full"] }, { name = "opentelemetry-sdk" }, { name = "psutil", specifier = ">=5.9.8" }, - { name = "psycopg", extras = ["pool", "binary"], specifier = ">=3.1.10,<3.2" }, + { name = "psycopg", extras = ["pool", "binary"], marker = "python_full_version < '3.13'", specifier = ">=3.1.10,<3.2" }, + { name = "psycopg", extras = ["pool", "c"], marker = "python_full_version >= '3.13' and python_full_version < '4.0'" }, { name = "psycopg2-binary" }, { name = "python-dotenv" }, { name = "starlette" }, @@ -2693,7 +2696,10 @@ wheels = [ [package.optional-dependencies] binary = [ - { name = "psycopg-binary", marker = "implementation_name != 'pypy'" }, + { name = "psycopg-binary", marker = "python_full_version < '3.13' and implementation_name != 'pypy'" }, +] +c = [ + { name = "psycopg-c", marker = "python_full_version >= '3.13' and implementation_name != 'pypy'" }, ] pool = [ { name = "psycopg-pool" }, @@ -2759,6 +2765,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/01/10/01ec61e06f6bb2305ab66f05f0501431ce5edbb61700e1cd5fa73cf05884/psycopg_binary-3.1.20-cp39-cp39-win_amd64.whl", hash = "sha256:47dd369cb4b263d29aed12ee23b37c03e58bfe656843692d109896c258c554b0", size = 2896197 }, ] +[[package]] +name = "psycopg-c" +version = "3.1.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/49/6960b5e5fc82ab4dbde845bbd430d9f9e049847178b3bbe7f1c49c145667/psycopg_c-3.1.20.tar.gz", hash = "sha256:a8dadb012fce8918b0c35d9e5be3d6ba4495067117ee45fa49644e46be3c43c8", size = 562110 } + [[package]] name = "psycopg-pool" version = "3.2.4" @@ -3964,8 +3976,8 @@ name = "taskgroup" version = "0.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup" }, - { name = "typing-extensions" }, + { name = "exceptiongroup", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/45/d35599738fd5e9fc587665e11a3e2192b3a5e67005a0005d972b40e06cb5/taskgroup-0.2.1.tar.gz", hash = "sha256:11fa9c2db1037188ac0b60c70fa979243d00b1fee1a6e61e3171c21c1af75f78", size = 11184 } wheels = [ From bc23712dd3d65cd62ffb3af469df7a4c15d60a80 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 17:23:11 +0000 Subject: [PATCH 06/34] fix: deprecated warnings --- litestar/contrib/sqlalchemy/base.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/litestar/contrib/sqlalchemy/base.py b/litestar/contrib/sqlalchemy/base.py index 4cb13e0d7e..1a1e147eb1 100644 --- a/litestar/contrib/sqlalchemy/base.py +++ b/litestar/contrib/sqlalchemy/base.py @@ -43,18 +43,20 @@ def __getattr__(attr_name: str) -> object: value = globals()[attr_name] = locals()[attr_name] # pyright: ignore[reportUnknownVariableType] return value # pyright: ignore[reportUnknownVariableType] from advanced_alchemy.base import ( # pyright: ignore[reportMissingImports] - AuditColumns, BigIntAuditBase, BigIntBase, - BigIntPrimaryKey, CommonTableAttributes, ModelProtocol, UUIDAuditBase, UUIDBase, - UUIDPrimaryKey, create_registry, orm_registry, ) + from advanced_alchemy.mixins import ( # pyright: ignore[reportMissingImports] + AuditColumns, + BigIntPrimaryKey, + UUIDPrimaryKey, + ) warn_deprecation( deprecated_name=f"litestar.contrib.sqlalchemy.base.{attr_name}", @@ -78,15 +80,17 @@ def __getattr__(attr_name: str) -> object: from advanced_alchemy.base import touch_updated_timestamp # type: ignore[no-redef,attr-defined] from advanced_alchemy.base import ( # pyright: ignore[reportMissingImports] - AuditColumns, BigIntAuditBase, BigIntBase, - BigIntPrimaryKey, CommonTableAttributes, ModelProtocol, UUIDAuditBase, UUIDBase, - UUIDPrimaryKey, create_registry, orm_registry, ) + from advanced_alchemy.mixins import ( # pyright: ignore[reportMissingImports] + AuditColumns, + BigIntPrimaryKey, + UUIDPrimaryKey, + ) From 8d911efc7d5049277d46bc0b7c0f0b092224eb21 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 17:26:25 +0000 Subject: [PATCH 07/34] fix: deprecated tests --- tests/unit/test_plugins/test_sqlalchemy.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/unit/test_plugins/test_sqlalchemy.py b/tests/unit/test_plugins/test_sqlalchemy.py index 69512e1a9b..8100f8377d 100644 --- a/tests/unit/test_plugins/test_sqlalchemy.py +++ b/tests/unit/test_plugins/test_sqlalchemy.py @@ -1,3 +1,4 @@ +import pytest from advanced_alchemy.extensions import litestar as sa_litestar from advanced_alchemy.extensions.litestar import base as sa_base from advanced_alchemy.extensions.litestar import exceptions as sa_exceptions @@ -38,12 +39,13 @@ def test_re_exports() -> None: assert sqlalchemy.SyncSessionConfig is sa_litestar.SyncSessionConfig # deprecated, to be removed later - assert sqlalchemy.AuditColumns is sa_base.AuditColumns - assert sqlalchemy.BigIntAuditBase is sa_base.BigIntAuditBase - assert sqlalchemy.BigIntBase is sa_base.BigIntBase - assert sqlalchemy.BigIntPrimaryKey is sa_base.BigIntPrimaryKey - assert sqlalchemy.CommonTableAttributes is sa_base.CommonTableAttributes - assert sqlalchemy.UUIDAuditBase is sa_base.UUIDAuditBase - assert sqlalchemy.UUIDBase is sa_base.UUIDBase - assert sqlalchemy.UUIDPrimaryKey is sa_base.UUIDPrimaryKey - assert sqlalchemy.orm_registry is sa_base.orm_registry + with pytest.warns(DeprecationWarning): + assert sqlalchemy.AuditColumns is sa_base.AuditColumns + assert sqlalchemy.BigIntAuditBase is sa_base.BigIntAuditBase + assert sqlalchemy.BigIntBase is sa_base.BigIntBase + assert sqlalchemy.BigIntPrimaryKey is sa_base.BigIntPrimaryKey + assert sqlalchemy.CommonTableAttributes is sa_base.CommonTableAttributes + assert sqlalchemy.UUIDAuditBase is sa_base.UUIDAuditBase + assert sqlalchemy.UUIDBase is sa_base.UUIDBase + assert sqlalchemy.UUIDPrimaryKey is sa_base.UUIDPrimaryKey + assert sqlalchemy.orm_registry is sa_base.orm_registry From f0fb14674ac6186c8636f62f407e79b3f593a965 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 17:29:23 +0000 Subject: [PATCH 08/34] feat: updated deps --- pyproject.toml | 4 ++-- uv.lock | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a11a69ba81..5c08f5ab6b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ classifiers = [ "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ - "anyio>=3 ; python_version ~= \"3.8\"", + "anyio>=3 ; python_version < \"3.9\"", "anyio>=4 ; python_version >= \"3.9\"", "httpx>=0.22", "exceptiongroup; python_version < \"3.11\"", @@ -40,7 +40,7 @@ dependencies = [ "importlib-metadata; python_version < \"3.10\"", "importlib-resources>=5.12.0; python_version < \"3.9\"", "litestar-msgspec; python_version >= \"3.9\"", - "msgspec>=0.18.2,<=0.18.6; python_version ~= \"3.8\"", + "msgspec>=0.18.2,<=0.18.6; python_version < \"3.9\"", "multidict>=6.0.2", "polyfactory>=2.6.3", "pyyaml", diff --git a/uv.lock b/uv.lock index 6e98051057..3a6ec37afb 100644 --- a/uv.lock +++ b/uv.lock @@ -6,8 +6,8 @@ resolution-markers = [ "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", "python_full_version < '3.8.1' and sys_platform == 'win32'", "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", - "python_full_version >= '3.13' and sys_platform != 'win32'", "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.13' and sys_platform != 'win32'", "python_full_version >= '3.13' and sys_platform == 'win32'", ] @@ -1662,7 +1662,7 @@ dependencies = [ { name = "importlib-resources", marker = "python_full_version < '3.9'" }, { name = "litestar-htmx" }, { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, - { name = "msgspec" }, + { name = "msgspec", marker = "python_full_version < '3.9'" }, { name = "multidict" }, { name = "multipart" }, { name = "polyfactory" }, @@ -1827,7 +1827,7 @@ test = [ requires-dist = [ { name = "advanced-alchemy", marker = "extra == 'sqlalchemy'", specifier = ">=0.2.2" }, { name = "annotated-types", marker = "extra == 'annotated-types'" }, - { name = "anyio", marker = "python_full_version >= '3.8' and python_full_version < '4'", specifier = ">=3" }, + { name = "anyio", marker = "python_full_version < '3.9'", specifier = ">=3" }, { name = "anyio", marker = "python_full_version >= '3.9'", specifier = ">=4" }, { name = "attrs", marker = "extra == 'attrs'" }, { name = "brotli", marker = "extra == 'brotli'" }, @@ -1850,7 +1850,7 @@ requires-dist = [ { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, { name = "mako", marker = "extra == 'mako'", specifier = ">=1.2.4" }, { name = "minijinja", marker = "extra == 'minijinja'", specifier = ">=1.0.0" }, - { name = "msgspec", marker = "python_full_version >= '3.8' and python_full_version < '4'", specifier = ">=0.18.2,<=0.18.6" }, + { name = "msgspec", marker = "python_full_version < '3.9'", specifier = ">=0.18.2,<=0.18.6" }, { name = "multidict", specifier = ">=6.0.2" }, { name = "multipart", specifier = ">=1.2.0" }, { name = "opentelemetry-instrumentation-asgi", marker = "extra == 'opentelemetry'" }, @@ -1889,7 +1889,7 @@ dev = [ { name = "opentelemetry-sdk" }, { name = "psutil", specifier = ">=5.9.8" }, { name = "psycopg", extras = ["pool", "binary"], marker = "python_full_version < '3.13'", specifier = ">=3.1.10,<3.2" }, - { name = "psycopg", extras = ["pool", "c"], marker = "python_full_version >= '3.13' and python_full_version < '4.0'" }, + { name = "psycopg", extras = ["pool", "c"], marker = "python_full_version >= '3.13' and python_full_version < '4'" }, { name = "psycopg2-binary" }, { name = "python-dotenv" }, { name = "starlette" }, @@ -3557,8 +3557,8 @@ resolution-markers = [ "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform != 'win32'", "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", - "python_full_version >= '3.13' and sys_platform != 'win32'", "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.13' and sys_platform != 'win32'", "python_full_version >= '3.13' and sys_platform == 'win32'", ] dependencies = [ From 82e8166dea3320747a5db7855cebc56b03b99581 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 17:31:02 +0000 Subject: [PATCH 09/34] fix: adjusted deps --- pyproject.toml | 2 +- uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5c08f5ab6b..f85e64b208 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -134,7 +134,7 @@ dev = [ "aiosqlite", "asyncpg>=0.29.0", "psycopg[pool,binary]>=3.1.10,<3.2; python_version < \"3.13\"", - "psycopg[pool,c]; python_version ~= \"3.13\"", + "psycopg[pool,c]; python_version >= \"3.13\"", "psycopg2-binary", "psutil>=5.9.8", "hypercorn>=0.16.0", diff --git a/uv.lock b/uv.lock index 3a6ec37afb..f736e30aa1 100644 --- a/uv.lock +++ b/uv.lock @@ -1889,7 +1889,7 @@ dev = [ { name = "opentelemetry-sdk" }, { name = "psutil", specifier = ">=5.9.8" }, { name = "psycopg", extras = ["pool", "binary"], marker = "python_full_version < '3.13'", specifier = ">=3.1.10,<3.2" }, - { name = "psycopg", extras = ["pool", "c"], marker = "python_full_version >= '3.13' and python_full_version < '4'" }, + { name = "psycopg", extras = ["pool", "c"], marker = "python_full_version >= '3.13'" }, { name = "psycopg2-binary" }, { name = "python-dotenv" }, { name = "starlette" }, From 4aa8e03ac14e70cb1f34671d752a623d9da9bafc Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 18:00:27 +0000 Subject: [PATCH 10/34] fix: picologging for 3.13 --- pyproject.toml | 3 ++- uv.lock | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f85e64b208..b45e1b5c53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,7 +87,8 @@ brotli = ["brotli"] cli = ["jsbeautifier", "uvicorn[standard]", "uvloop>=0.18.0; sys_platform != 'win32'"] cryptography = ["cryptography"] full = [ - "litestar[annotated-types,attrs,brotli,cli,cryptography,jinja,jwt,mako,minijinja,opentelemetry,piccolo,picologging,prometheus,pydantic,redis,sqlalchemy,standard,structlog]", + "litestar[annotated-types,attrs,brotli,cli,cryptography,jinja,jwt,mako,minijinja,opentelemetry,piccolo,picologging,prometheus,pydantic,redis,sqlalchemy,standard,structlog]; python_version < \"3.13\"", + "litestar[annotated-types,attrs,brotli,cli,cryptography,jinja,jwt,mako,minijinja,opentelemetry,piccolo,prometheus,pydantic,redis,sqlalchemy,standard,structlog]; python_version >= \"3.13\"", ] jinja = ["jinja2>=3.1.2"] jwt = [ diff --git a/uv.lock b/uv.lock index f736e30aa1..28ccbb09fa 100644 --- a/uv.lock +++ b/uv.lock @@ -1704,7 +1704,7 @@ full = [ { name = "minijinja" }, { name = "opentelemetry-instrumentation-asgi" }, { name = "piccolo" }, - { name = "picologging" }, + { name = "picologging", marker = "python_full_version < '3.13'" }, { name = "prometheus-client" }, { name = "pydantic" }, { name = "pydantic-extra-types" }, @@ -1845,7 +1845,8 @@ requires-dist = [ { name = "jinja2", marker = "extra == 'standard'" }, { name = "jsbeautifier", marker = "extra == 'cli'" }, { name = "jsbeautifier", marker = "extra == 'standard'" }, - { name = "litestar", extras = ["annotated-types", "attrs", "brotli", "cli", "cryptography", "jinja", "jwt", "mako", "minijinja", "opentelemetry", "piccolo", "picologging", "prometheus", "pydantic", "redis", "sqlalchemy", "standard", "structlog"], marker = "extra == 'full'" }, + { name = "litestar", extras = ["annotated-types", "attrs", "brotli", "cli", "cryptography", "jinja", "jwt", "mako", "minijinja", "opentelemetry", "piccolo", "picologging", "prometheus", "pydantic", "redis", "sqlalchemy", "standard", "structlog"], marker = "python_full_version < '3.13' and extra == 'full'" }, + { name = "litestar", extras = ["annotated-types", "attrs", "brotli", "cli", "cryptography", "jinja", "jwt", "mako", "minijinja", "opentelemetry", "piccolo", "prometheus", "pydantic", "redis", "sqlalchemy", "standard", "structlog"], marker = "python_full_version >= '3.13' and extra == 'full'" }, { name = "litestar-htmx", specifier = ">=0.3.0" }, { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, { name = "mako", marker = "extra == 'mako'", specifier = ">=1.2.4" }, From 10df3f31f4b066a83302b01b7199da048abafdb0 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 18:06:34 +0000 Subject: [PATCH 11/34] fix: patch picologging tests --- tests/helpers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/helpers.py b/tests/helpers.py index b541ed28ec..97897b8e88 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -8,7 +8,11 @@ from contextlib import AbstractContextManager, contextmanager from typing import Any, AsyncContextManager, Awaitable, ContextManager, Generator, TypeVar, cast, overload -import picologging +try: + import picologging +except ImportError: + import logging as picologging + from _pytest.logging import LogCaptureHandler, _LiveLoggingNullHandler from litestar._openapi.schema_generation import SchemaCreator From e2e083908474b032dfdce1674112e08170c3e16e Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 18:28:21 +0000 Subject: [PATCH 12/34] fix: more cleanup for picologging --- .../sqlalchemy/sqlalchemy_declarative_models.py | 7 +++---- litestar/logging/config.py | 7 +++++-- litestar/logging/picologging.py | 12 ++++++------ pyproject.toml | 4 +++- tests/helpers.py | 6 +++--- tests/unit/test_logging/test_logging_config.py | 17 ++++++++++------- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py index 2a4f7e302c..a7ba930e9c 100644 --- a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py +++ b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py @@ -10,13 +10,12 @@ from sqlalchemy.orm import Mapped, mapped_column, relationship from litestar import Litestar, get -from litestar.contrib.sqlalchemy.base import UUIDAuditBase, UUIDBase -from litestar.contrib.sqlalchemy.plugins import AsyncSessionConfig, SQLAlchemyAsyncConfig, SQLAlchemyPlugin +from litestar.plugins.sqlalchemy import AsyncSessionConfig, SQLAlchemyAsyncConfig, SQLAlchemyPlugin, base # The SQLAlchemy base includes a declarative model for you to use in your models. # The `UUIDBase` class includes a `UUID` based primary key (`id`) -class Author(UUIDBase): +class Author(base.UUIDBase): name: Mapped[str] dob: Mapped[date] books: Mapped[List[Book]] = relationship(back_populates="author", lazy="selectin") @@ -25,7 +24,7 @@ class Author(UUIDBase): # The `UUIDAuditBase` class includes the same UUID` based primary key (`id`) and 2 # additional columns: `created_at` and `updated_at`. `created_at` is a timestamp of when the # record created, and `updated_at` is the last time the record was modified. -class Book(UUIDAuditBase): +class Book(base.UUIDAuditBase): title: Mapped[str] author_id: Mapped[UUID] = mapped_column(ForeignKey("author.id")) author: Mapped[Author] = relationship(lazy="joined", innerjoin=True, viewonly=True) diff --git a/litestar/logging/config.py b/litestar/logging/config.py index 19615a229f..1ca877939e 100644 --- a/litestar/logging/config.py +++ b/litestar/logging/config.py @@ -292,13 +292,16 @@ def configure(self) -> GetLogger: if self.logging_module == "picologging": try: - from picologging import config, getLogger + from picologging import ( # pyright: ignore[reportMissingImports,reportGeneralTypeIssues] + config, # pyright: ignore[reportMissingImports,reportGeneralTypeIssues] + getLogger, # pyright: ignore[reportMissingImports,reportGeneralTypeIssues] + ) except ImportError as e: raise MissingDependencyException("picologging") from e excluded_fields.add("incremental") else: - from logging import config, getLogger # type: ignore[no-redef, assignment] + from logging import config, getLogger values = { _field.name: getattr(self, _field.name) diff --git a/litestar/logging/picologging.py b/litestar/logging/picologging.py index 2cd599f463..e07c074283 100644 --- a/litestar/logging/picologging.py +++ b/litestar/logging/picologging.py @@ -11,15 +11,15 @@ try: - import picologging # noqa: F401 + import picologging # noqa: F401 # pyright: ignore[reportMissingImports] except ImportError as e: raise MissingDependencyException("picologging") from e -from picologging import StreamHandler -from picologging.handlers import QueueHandler, QueueListener +from picologging import StreamHandler # pyright: ignore[reportMissingImports] +from picologging.handlers import QueueHandler, QueueListener # pyright: ignore[reportMissingImports] -class QueueListenerHandler(QueueHandler): +class QueueListenerHandler(QueueHandler): # type: ignore[misc,unused-ignore] """Configure queue listener and handler to support non-blocking logging configuration.""" def __init__(self, handlers: list[Any] | None = None) -> None: @@ -32,8 +32,8 @@ def __init__(self, handlers: list[Any] | None = None) -> None: - Requires ``picologging`` to be installed. """ super().__init__(Queue(-1)) - handlers = resolve_handlers(handlers) if handlers else [StreamHandler()] - self.listener = QueueListener(self.queue, *handlers) + handlers = resolve_handlers(handlers) if handlers else [StreamHandler()] # pyright: ignore[reportGeneralTypeIssues] + self.listener = QueueListener(self.queue, *handlers) # pyright: ignore[reportGeneralTypeIssues] self.listener.start() atexit.register(self.listener.stop) diff --git a/pyproject.toml b/pyproject.toml index b45e1b5c53..1f7ca06ea6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -141,7 +141,7 @@ dev = [ "hypercorn>=0.16.0", "daphne>=4.0.0", "opentelemetry-sdk", - "httpx-sse" + "httpx-sse", ] docs = [ @@ -286,6 +286,8 @@ module = [ "pytimeparse.*", "importlib_resources", "exceptiongroup", + "picologging", + "picologging.*" ] [[tool.mypy.overrides]] diff --git a/tests/helpers.py b/tests/helpers.py index 97897b8e88..89ad8b5089 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -9,9 +9,9 @@ from typing import Any, AsyncContextManager, Awaitable, ContextManager, Generator, TypeVar, cast, overload try: - import picologging + import picologging # pyright: ignore[reportMissingImports] except ImportError: - import logging as picologging + import logging as picologging # type: ignore[no-redef,unused-ignore] from _pytest.logging import LogCaptureHandler, _LiveLoggingNullHandler @@ -96,7 +96,7 @@ def cleanup_logging_impl() -> Generator: std_root_logger.removeHandler(std_handler) # Reset root logger (`picologging` module) - pico_root_logger: picologging.Logger = picologging.getLogger() + pico_root_logger: picologging.Logger = picologging.getLogger() # pyright: ignore[reportPrivateUsage,reportGeneralTypeIssues,reportAssignmentType] for pico_handler in pico_root_logger.handlers: pico_root_logger.removeHandler(pico_handler) diff --git a/tests/unit/test_logging/test_logging_config.py b/tests/unit/test_logging/test_logging_config.py index c4b73d8994..ee81070f5c 100644 --- a/tests/unit/test_logging/test_logging_config.py +++ b/tests/unit/test_logging/test_logging_config.py @@ -8,7 +8,10 @@ from typing import TYPE_CHECKING, Any, Dict, Generator, Optional from unittest.mock import patch -import picologging +try: + import picologging # pyright: ignore[reportMissingImports] +except ImportError: + import logging as picologging # type: ignore[no-redef,unused-ignore] import pytest from _pytest.logging import LogCaptureHandler, _LiveLoggingNullHandler @@ -133,7 +136,7 @@ def test_dictconfig_on_startup(logging_module: str, dict_config_not_called: str) [ picologging, PicologgingQueueListenerHandler, - picologging.handlers.QueueListener, # pyright: ignore[reportGeneralTypeIssues] + picologging.handlers.QueueListener, # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] ], ], ) @@ -168,7 +171,7 @@ def assert_log(queue: Any, expected: str, count: Optional[int] = None) -> None: logger = get_logger("test_logger") assert type(logger) is logging_module.Logger - handler = logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues] + handler = logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] assert type(handler) is expected_handler_class assert type(handler.queue) is Queue @@ -279,7 +282,7 @@ def test_root_logger(logging_module: ModuleType, expected_handler_class: Any) -> root_logger = get_logger() assert root_logger.name == "root" # type: ignore[attr-defined] assert isinstance(root_logger, logging_module.Logger) - root_logger_handler = root_logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues] + root_logger_handler = root_logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] assert root_logger_handler.name == "queue_listener" assert isinstance(root_logger_handler, expected_handler_class) @@ -292,7 +295,7 @@ def test_root_logger_no_config(logging_module: ModuleType) -> None: assert isinstance(root_logger, logging_module.Logger) - handlers = root_logger.handlers # pyright: ignore[reportGeneralTypeIssues] + handlers = root_logger.handlers # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] if logging_module == logging: # pytest automatically configures some handlers for handler in handlers: @@ -356,9 +359,9 @@ def test_customizing_handler( if configure_root_logger is True: assert isinstance(root_logger, logging_module.Logger) - assert root_logger.level == logging_module.INFO # pyright: ignore[reportGeneralTypeIssues] + assert root_logger.level == logging_module.INFO # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] - root_logger_handler = root_logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues] + root_logger_handler = root_logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] assert root_logger_handler.name == "queue_listener" assert type(root_logger_handler) is expected_root_logger_handler_class From cda3f8677a284b10b0d581d64020f2a41cbf7411 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 18:30:54 +0000 Subject: [PATCH 13/34] fix: linting --- litestar/logging/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/litestar/logging/config.py b/litestar/logging/config.py index 1ca877939e..1edf357188 100644 --- a/litestar/logging/config.py +++ b/litestar/logging/config.py @@ -301,7 +301,7 @@ def configure(self) -> GetLogger: excluded_fields.add("incremental") else: - from logging import config, getLogger + from logging import config, getLogger # type: ignore[no-redef,assignment,unused-ignore] values = { _field.name: getattr(self, _field.name) From bfc24ec1930c581539d30d93bfc57075a3e35749 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 18:42:16 +0000 Subject: [PATCH 14/34] fix: test is async --- .../test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index 0aa531bd33..21f3606b83 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -5,7 +5,7 @@ pytestmark = pytest.mark.xdist_group("sqlalchemy_examples") -def test_sqlalchemy_declarative_models() -> None: +async def test_sqlalchemy_declarative_models() -> None: from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app with TestClient(app) as client: From 6f66d3ea3773aa8d13343bf35a21e97da5fbdd6d Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 19:19:46 +0000 Subject: [PATCH 15/34] feat: use import or skip --- .../test_sqlalchemy/test_sqlalchemy_examples.py | 2 +- tests/helpers.py | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index 21f3606b83..0aa531bd33 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -5,7 +5,7 @@ pytestmark = pytest.mark.xdist_group("sqlalchemy_examples") -async def test_sqlalchemy_declarative_models() -> None: +def test_sqlalchemy_declarative_models() -> None: from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app with TestClient(app) as client: diff --git a/tests/helpers.py b/tests/helpers.py index 89ad8b5089..d08c661e5c 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -8,11 +8,7 @@ from contextlib import AbstractContextManager, contextmanager from typing import Any, AsyncContextManager, Awaitable, ContextManager, Generator, TypeVar, cast, overload -try: - import picologging # pyright: ignore[reportMissingImports] -except ImportError: - import logging as picologging # type: ignore[no-redef,unused-ignore] - +import pytest from _pytest.logging import LogCaptureHandler, _LiveLoggingNullHandler from litestar._openapi.schema_generation import SchemaCreator @@ -94,9 +90,9 @@ def cleanup_logging_impl() -> Generator: # Don't interfere with PyTest handler config if not isinstance(std_handler, (_LiveLoggingNullHandler, LogCaptureHandler)): std_root_logger.removeHandler(std_handler) - + picologging = pytest.importorskip("picologging") # Reset root logger (`picologging` module) - pico_root_logger: picologging.Logger = picologging.getLogger() # pyright: ignore[reportPrivateUsage,reportGeneralTypeIssues,reportAssignmentType] + pico_root_logger: picologging.Logger = picologging.getLogger() # pyright: ignore[reportPrivateUsage,reportGeneralTypeIssues,reportAssignmentType,reportInvalidTypeForm] for pico_handler in pico_root_logger.handlers: pico_root_logger.removeHandler(pico_handler) From eed94c74e30f68c8cca35790cf87c4e46564d4fe Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 19:23:06 +0000 Subject: [PATCH 16/34] chore: lint --- tests/helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/helpers.py b/tests/helpers.py index d08c661e5c..82a639cd57 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -92,7 +92,7 @@ def cleanup_logging_impl() -> Generator: std_root_logger.removeHandler(std_handler) picologging = pytest.importorskip("picologging") # Reset root logger (`picologging` module) - pico_root_logger: picologging.Logger = picologging.getLogger() # pyright: ignore[reportPrivateUsage,reportGeneralTypeIssues,reportAssignmentType,reportInvalidTypeForm] + pico_root_logger: picologging.Logger = picologging.getLogger() # type: ignore[name-defined,unused-ignore] # pyright: ignore[reportPrivateUsage,reportGeneralTypeIssues,reportAssignmentType,reportInvalidTypeForm] for pico_handler in pico_root_logger.handlers: pico_root_logger.removeHandler(pico_handler) From f3e0dbfcdb7f8c8c9687e7dee95b4a50087f9180 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 19:28:04 +0000 Subject: [PATCH 17/34] fix: updated metadata creation process to prevent race condition --- .../contrib/sqlalchemy/sqlalchemy_declarative_models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py index a7ba930e9c..2810b1fc76 100644 --- a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py +++ b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py @@ -32,12 +32,13 @@ class Book(base.UUIDAuditBase): session_config = AsyncSessionConfig(expire_on_commit=False) sqlalchemy_config = SQLAlchemyAsyncConfig( - connection_string="sqlite+aiosqlite:///test.sqlite", session_config=session_config, create_all=True + connection_string="sqlite+aiosqlite:///test.sqlite", session_config=session_config ) # Create 'async_session' dependency. -async def on_startup() -> None: +async def on_startup(app: Litestar) -> None: """Adds some dummy data if no data is present.""" + await sqlalchemy_config.create_all_metadata(app) async with sqlalchemy_config.get_session() as session: statement = select(func.count()).select_from(Author) count = await session.execute(statement) From 837f2ca31eeb968967e0eef86a68a392d884f83b Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 19:50:08 +0000 Subject: [PATCH 18/34] fix: scope issues with locals --- tests/unit/test_kwargs/test_validations.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/unit/test_kwargs/test_validations.py b/tests/unit/test_kwargs/test_validations.py index f0d524b0ec..37ca305655 100644 --- a/tests/unit/test_kwargs/test_validations.py +++ b/tests/unit/test_kwargs/test_validations.py @@ -46,19 +46,19 @@ def handler(my_key: str = Parameter(**{param_field: "my_key"})) -> None: # type @pytest.mark.parametrize("reserved_kwarg", sorted(RESERVED_KWARGS)) def test_raises_when_reserved_kwargs_are_misused(reserved_kwarg: str) -> None: decorator = post if reserved_kwarg != "socket" else websocket - - exec(f"async def test_fn({reserved_kwarg}: int) -> None: pass") - handler_with_path_param = decorator("/{" + reserved_kwarg + ":int}")(locals()["test_fn"]) + local = dict(locals(), **globals()) + exec(f"async def test_fn({reserved_kwarg}: int) -> None: pass", local, local) + handler_with_path_param = decorator("/{" + reserved_kwarg + ":int}")(local["test_fn"]) with pytest.raises(ImproperlyConfiguredException): Litestar(route_handlers=[handler_with_path_param]) - exec(f"async def test_fn({reserved_kwarg}: int) -> None: pass") - handler_with_dependency = decorator("/", dependencies={reserved_kwarg: Provide(my_dependency)})(locals()["test_fn"]) + exec(f"async def test_fn({reserved_kwarg}: int) -> None: pass", local, local) + handler_with_dependency = decorator("/", dependencies={reserved_kwarg: Provide(my_dependency)})(local["test_fn"]) with pytest.raises(ImproperlyConfiguredException): Litestar(route_handlers=[handler_with_dependency]) - exec(f"async def test_fn({reserved_kwarg}: int = Parameter(query='my_param')) -> None: pass") - handler_with_aliased_param = decorator("/")(locals()["test_fn"]) + exec(f"async def test_fn({reserved_kwarg}: int = Parameter(query='my_param')) -> None: pass", local, local) + handler_with_aliased_param = decorator("/")(local["test_fn"]) with pytest.raises(ImproperlyConfiguredException): Litestar(route_handlers=[handler_with_aliased_param]) From 80f8e7dee5b4d2a32211c781e03b80be17fd822a Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 20:16:10 +0000 Subject: [PATCH 19/34] Feat: picologging skip if missing --- .../unit/test_logging/test_logging_config.py | 106 ++++++++++-------- 1 file changed, 60 insertions(+), 46 deletions(-) diff --git a/tests/unit/test_logging/test_logging_config.py b/tests/unit/test_logging/test_logging_config.py index ee81070f5c..e14d9446dd 100644 --- a/tests/unit/test_logging/test_logging_config.py +++ b/tests/unit/test_logging/test_logging_config.py @@ -1,3 +1,4 @@ +import importlib import logging import sys import time @@ -5,13 +6,9 @@ from logging.handlers import QueueHandler from queue import Queue from types import ModuleType -from typing import TYPE_CHECKING, Any, Dict, Generator, Optional +from typing import TYPE_CHECKING, Any, Dict, Generator, Optional, cast from unittest.mock import patch -try: - import picologging # pyright: ignore[reportMissingImports] -except ImportError: - import logging as picologging # type: ignore[no-redef,unused-ignore] import pytest from _pytest.logging import LogCaptureHandler, _LiveLoggingNullHandler @@ -24,9 +21,6 @@ default_handlers, default_picologging_handlers, ) -from litestar.logging.picologging import QueueListenerHandler as PicologgingQueueListenerHandler -from litestar.logging.standard import LoggingQueueListener -from litestar.logging.standard import QueueListenerHandler as StandardQueueListenerHandler from litestar.status_codes import HTTP_200_OK from litestar.testing import create_test_client from tests.helpers import cleanup_logging_impl @@ -37,6 +31,7 @@ @pytest.fixture(autouse=True) def cleanup_logging() -> Generator: + _ = pytest.importorskip("picologging") with cleanup_logging_impl(): yield @@ -126,23 +121,30 @@ def test_dictconfig_on_startup(logging_module: str, dict_config_not_called: str) @pytest.mark.parametrize( - "logging_module, expected_handler_class, expected_listener_class", + "logging_module_str, expected_handler_class_str, expected_listener_class_str", [ [ - logging, - QueueHandler if sys.version_info >= (3, 12, 0) else StandardQueueListenerHandler, - LoggingQueueListener, + "logging", + "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler", + "LoggingQueueListener", ], [ - picologging, - PicologgingQueueListenerHandler, - picologging.handlers.QueueListener, # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] + "picologging", + "PicologgingQueueListenerHandler", + "picologging.handlers.QueueListener", # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] ], ], ) def test_default_queue_listener_handler( - logging_module: ModuleType, expected_handler_class: Any, expected_listener_class: Any, capsys: "CaptureFixture[str]" + logging_module_str: str, + expected_handler_class_str: str, + expected_listener_class_str: str, + capsys: "CaptureFixture[str]", ) -> None: + logging_module = importlib.import_module(logging_module_str) + expected_handler_class = importlib.import_module(expected_handler_class_str) + expected_listener_class = importlib.import_module(expected_listener_class_str) + def wait_log_queue(queue: Any, sleep_time: float = 0.1, max_retries: int = 5) -> None: retry = 0 while queue.qsize() > 0 and retry < max_retries: @@ -196,14 +198,16 @@ def test_get_logger_without_logging_config() -> None: @pytest.mark.parametrize( - "logging_module, expected_handler_class", + "logging_module_str, expected_handler_class_str", [ - [logging, QueueHandler if sys.version_info >= (3, 12, 0) else StandardQueueListenerHandler], - [picologging, PicologgingQueueListenerHandler], + ["logging", "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], + ["picologging", "PicologgingQueueListenerHandler"], ], ) -def test_default_loggers(logging_module: ModuleType, expected_handler_class: Any) -> None: - with create_test_client(logging_config=LoggingConfig(logging_module=logging_module.__name__)) as client: +def test_default_loggers(logging_module_str: str, expected_handler_class_str: str) -> None: + logging_module = importlib.import_module(logging_module_str) + expected_handler_class = importlib.import_module(expected_handler_class_str) + with create_test_client(logging_config=LoggingConfig(logging_module=logging_module_str)) as client: root_logger = client.app.get_logger() assert isinstance(root_logger, logging_module.Logger) assert root_logger.name == "root" @@ -219,28 +223,32 @@ def test_default_loggers(logging_module: ModuleType, expected_handler_class: Any @pytest.mark.parametrize( - "logging_module, expected_handler_class", + "logging_module_str, expected_handler_class_str", [ - ["logging", QueueHandler if sys.version_info >= (3, 12, 0) else StandardQueueListenerHandler], - ["picologging", PicologgingQueueListenerHandler], + ["logging", "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], + ["picologging", "PicologgingQueueListenerHandler"], ], ) -def test_connection_logger(logging_module: str, expected_handler_class: Any) -> None: +def test_connection_logger(logging_module_str: str, expected_handler_class_str: str) -> None: + logging_module = importlib.import_module(logging_module_str) + expected_handler_class = importlib.import_module(expected_handler_class_str) + @get("/") def handler(request: Request) -> Dict[str, bool]: return {"isinstance": isinstance(request.logger.handlers[0], expected_handler_class)} # type: ignore[attr-defined] with create_test_client( route_handlers=[handler], - logging_config=LoggingConfig(logging_module=logging_module), + logging_config=LoggingConfig(logging_module=logging_module_str), ) as client: response = client.get("/") assert response.status_code == HTTP_200_OK assert response.json()["isinstance"] -@pytest.mark.parametrize("logging_module", [logging, picologging, None]) -def test_validation(logging_module: Optional[ModuleType]) -> None: +@pytest.mark.parametrize("logging_module_str", ["logging", "picologging", None]) +def test_validation(logging_module_str: Optional[str]) -> None: + logging_module = importlib.import_module(logging_module_str) if logging_module_str else None if logging_module is None: logging_config = LoggingConfig( formatters={}, @@ -270,26 +278,29 @@ def test_validation(logging_module: Optional[ModuleType]) -> None: @pytest.mark.parametrize( - "logging_module, expected_handler_class", + "logging_module_str, expected_handler_class_str", [ - [logging, QueueHandler if sys.version_info >= (3, 12, 0) else StandardQueueListenerHandler], - [picologging, PicologgingQueueListenerHandler], + ["logging", "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], + ["picologging", "PicologgingQueueListenerHandler"], ], ) -def test_root_logger(logging_module: ModuleType, expected_handler_class: Any) -> None: - logging_config = LoggingConfig(logging_module=logging_module.__name__) +def test_root_logger(logging_module_str: str, expected_handler_class_str: str) -> None: + logging_module = importlib.import_module(logging_module_str) + expected_handler_class = importlib.import_module(expected_handler_class_str) + logging_config = LoggingConfig(logging_module=logging_module_str) get_logger = logging_config.configure() root_logger = get_logger() assert root_logger.name == "root" # type: ignore[attr-defined] assert isinstance(root_logger, logging_module.Logger) root_logger_handler = root_logger.handlers[0] # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] assert root_logger_handler.name == "queue_listener" - assert isinstance(root_logger_handler, expected_handler_class) + assert isinstance(root_logger_handler, cast("Any", expected_handler_class)) -@pytest.mark.parametrize("logging_module", [logging, picologging]) -def test_root_logger_no_config(logging_module: ModuleType) -> None: - logging_config = LoggingConfig(logging_module=logging_module.__name__, configure_root_logger=False) +@pytest.mark.parametrize("logging_module_str", ["logging", "picologging"]) +def test_root_logger_no_config(logging_module_str: str) -> None: + logging_module = importlib.import_module(logging_module_str) + logging_config = LoggingConfig(logging_module=logging_module_str, configure_root_logger=False) get_logger = logging_config.configure() root_logger = get_logger() @@ -305,20 +316,23 @@ def test_root_logger_no_config(logging_module: ModuleType) -> None: @pytest.mark.parametrize( - "logging_module, configure_root_logger, expected_root_logger_handler_class", + "logging_module_str, configure_root_logger, expected_root_logger_handler_class_str", [ - [logging, True, QueueHandler if sys.version_info >= (3, 12, 0) else StandardQueueListenerHandler], - [logging, False, None], - [picologging, True, PicologgingQueueListenerHandler], - [picologging, False, None], + ["logging", True, "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], + ["logging", False, None], + ["picologging", True, "PicologgingQueueListenerHandler"], + ["picologging", False, None], ], ) def test_customizing_handler( - logging_module: ModuleType, + logging_module_str: str, configure_root_logger: bool, - expected_root_logger_handler_class: Any, + expected_root_logger_handler_class_str: str, capsys: "CaptureFixture[str]", ) -> None: + logging_module = importlib.import_module(logging_module_str) + expected_root_logger_handler_class = importlib.import_module(expected_root_logger_handler_class_str) + log_format = "%(levelname)s :: %(name)s :: %(message)s" logging_config = LoggingConfig( @@ -351,7 +365,7 @@ def test_customizing_handler( # picologging seems to be broken, cannot make it log on stdout? # https://github.com/microsoft/picologging/issues/205 - if logging_module == picologging: + if logging_module_str == "picologging": del logging_config.handlers["console_stdout"]["stream"] get_logger = logging_config.configure() @@ -384,7 +398,7 @@ def assert_logger(logger: Any) -> None: assert logger.handlers[0].formatter._fmt == log_format logger.info("Hello from '%s'", logging_module.__name__) - if logging_module == picologging: + if logging_module_str == "picologging": log_output = capsys.readouterr().err.strip() else: log_output = capsys.readouterr().out.strip() From 343c29ddaa0273f7998711a39440515441fb0e18 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 23:24:34 +0000 Subject: [PATCH 20/34] fix: additional test fixes --- pyproject.toml | 13 +- .../unit/test_logging/test_logging_config.py | 128 ++++++++++++++---- uv.lock | 39 +++++- 3 files changed, 147 insertions(+), 33 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1f7ca06ea6..4991b9334e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,8 +39,8 @@ dependencies = [ "eval_type_backport; python_version <= \"3.9\"", "importlib-metadata; python_version < \"3.10\"", "importlib-resources>=5.12.0; python_version < \"3.9\"", - "litestar-msgspec; python_version >= \"3.9\"", - "msgspec>=0.18.2,<=0.18.6; python_version < \"3.9\"", + "litestar-msgspec; python_version > \"3.8\"", + "msgspec>=0.18.2,<0.19.0; python_version < \"3.9\"", "multidict>=6.0.2", "polyfactory>=2.6.3", "pyyaml", @@ -101,7 +101,7 @@ opentelemetry = ["opentelemetry-instrumentation-asgi"] piccolo = ["piccolo"] picologging = ["picologging"] prometheus = ["prometheus-client"] -pydantic = ["pydantic", "email-validator", "pydantic-extra-types"] +pydantic = ["pydantic", "email-validator", "pydantic-extra-types<=2.9.0; python_version < \"3.9\"", "pydantic-extra-types>=2.9.0; python_version >= \"3.9\""] redis = ["redis[hiredis]>=4.4.4"] sqlalchemy = ["advanced-alchemy>=0.2.2"] standard = ["jinja2", "jsbeautifier", "uvicorn[standard]", "uvloop>=0.18.0; sys_platform != 'win32'", "fast-query-parsers>=1.0.2"] @@ -312,6 +312,13 @@ module = [ ] disable_error_code = "arg-type" +[[tool.mypy.overrides]] +warn_unused_ignores = false +module = [ + "tests.unit.test_logging.test_logging_config", +] +disable_error_code = "assignment" + [tool.pydantic-mypy] init_forbid_extra = true init_typed = true diff --git a/tests/unit/test_logging/test_logging_config.py b/tests/unit/test_logging/test_logging_config.py index e14d9446dd..d8934dc20b 100644 --- a/tests/unit/test_logging/test_logging_config.py +++ b/tests/unit/test_logging/test_logging_config.py @@ -5,8 +5,7 @@ from importlib.util import find_spec from logging.handlers import QueueHandler from queue import Queue -from types import ModuleType -from typing import TYPE_CHECKING, Any, Dict, Generator, Optional, cast +from typing import TYPE_CHECKING, Any, Dict, Generator, Optional, Union, cast from unittest.mock import patch import pytest @@ -125,25 +124,45 @@ def test_dictconfig_on_startup(logging_module: str, dict_config_not_called: str) [ [ "logging", - "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler", - "LoggingQueueListener", + "logging.QueueHandler" + if sys.version_info >= (3, 12, 0) + else "litestar.logging.standard.QueueListenerHandler", + "litestar.logging.standard.LoggingQueueListener", ], [ "picologging", - "PicologgingQueueListenerHandler", + "litestar.logging.picologging.QueueListenerHandler", "picologging.handlers.QueueListener", # pyright: ignore[reportGeneralTypeIssues,reportAttributeAccessIssue] ], ], ) def test_default_queue_listener_handler( logging_module_str: str, - expected_handler_class_str: str, + expected_handler_class_str: Union[str, Any], expected_listener_class_str: str, capsys: "CaptureFixture[str]", ) -> None: logging_module = importlib.import_module(logging_module_str) - expected_handler_class = importlib.import_module(expected_handler_class_str) - expected_listener_class = importlib.import_module(expected_listener_class_str) + if expected_handler_class_str == "litestar.logging.standard.QueueListenerHandler": + from litestar.logging.standard import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": + from litestar.logging.picologging import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + else: + expected_handler_class = importlib.import_module(expected_handler_class_str) + if expected_listener_class_str == "litestar.logging.standard.LoggingQueueListener": + from litestar.logging.standard import LoggingQueueListener + + expected_listener_class = LoggingQueueListener + elif expected_listener_class_str == "picologging.handlers.QueueListener": + from picologging.handlers import QueueListener + + expected_listener_class = QueueListener + else: + expected_listener_class = importlib.import_module(expected_listener_class_str) def wait_log_queue(queue: Any, sleep_time: float = 0.1, max_retries: int = 5) -> None: retry = 0 @@ -200,13 +219,27 @@ def test_get_logger_without_logging_config() -> None: @pytest.mark.parametrize( "logging_module_str, expected_handler_class_str", [ - ["logging", "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], - ["picologging", "PicologgingQueueListenerHandler"], + [ + "logging", + "logging.QueueHandler" + if sys.version_info >= (3, 12, 0) + else "litestar.logging.standard.QueueListenerHandler", + ], + ["picologging", "litestar.logging.picologging.QueueListenerHandler"], ], ) def test_default_loggers(logging_module_str: str, expected_handler_class_str: str) -> None: logging_module = importlib.import_module(logging_module_str) - expected_handler_class = importlib.import_module(expected_handler_class_str) + if expected_handler_class_str == "litestar.logging.standard.QueueListenerHandler": + from litestar.logging.standard import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": + from litestar.logging.picologging import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + else: + expected_handler_class = importlib.import_module(expected_handler_class_str) with create_test_client(logging_config=LoggingConfig(logging_module=logging_module_str)) as client: root_logger = client.app.get_logger() assert isinstance(root_logger, logging_module.Logger) @@ -225,13 +258,27 @@ def test_default_loggers(logging_module_str: str, expected_handler_class_str: st @pytest.mark.parametrize( "logging_module_str, expected_handler_class_str", [ - ["logging", "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], - ["picologging", "PicologgingQueueListenerHandler"], + [ + "logging", + "litestar.logging.standard.QueueListenerHandler" + if sys.version_info >= (3, 12, 0) + else "litestar.logging.standard.QueueListenerHandler", + ], + ["picologging", "litestar.logging.picologging.QueueListenerHandler"], ], ) def test_connection_logger(logging_module_str: str, expected_handler_class_str: str) -> None: logging_module = importlib.import_module(logging_module_str) - expected_handler_class = importlib.import_module(expected_handler_class_str) + if expected_handler_class_str == "litestar.logging.standard.QueueListenerHandler": + from litestar.logging.standard import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": + from litestar.logging.picologging import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + else: + expected_handler_class = importlib.import_module(expected_handler_class_str) @get("/") def handler(request: Request) -> Dict[str, bool]: @@ -239,7 +286,7 @@ def handler(request: Request) -> Dict[str, bool]: with create_test_client( route_handlers=[handler], - logging_config=LoggingConfig(logging_module=logging_module_str), + logging_config=LoggingConfig(logging_module=logging_module.__name__), ) as client: response = client.get("/") assert response.status_code == HTTP_200_OK @@ -280,14 +327,29 @@ def test_validation(logging_module_str: Optional[str]) -> None: @pytest.mark.parametrize( "logging_module_str, expected_handler_class_str", [ - ["logging", "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], - ["picologging", "PicologgingQueueListenerHandler"], + [ + "logging", + "logging.QueueHandler" + if sys.version_info >= (3, 12, 0) + else "litestar.logging.standard.QueueListenerHandler", + ], + ["picologging", "litestar.logging.picologging.QueueListenerHandler"], ], ) def test_root_logger(logging_module_str: str, expected_handler_class_str: str) -> None: logging_module = importlib.import_module(logging_module_str) - expected_handler_class = importlib.import_module(expected_handler_class_str) - logging_config = LoggingConfig(logging_module=logging_module_str) + if expected_handler_class_str == "litestar.logging.standard.QueueListenerHandler": + from litestar.logging.standard import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": + from litestar.logging.picologging import QueueListenerHandler + + expected_handler_class = QueueListenerHandler + else: + expected_handler_class = importlib.import_module(expected_handler_class_str) + + logging_config = LoggingConfig(logging_module=logging_module.__name__) get_logger = logging_config.configure() root_logger = get_logger() assert root_logger.name == "root" # type: ignore[attr-defined] @@ -318,20 +380,37 @@ def test_root_logger_no_config(logging_module_str: str) -> None: @pytest.mark.parametrize( "logging_module_str, configure_root_logger, expected_root_logger_handler_class_str", [ - ["logging", True, "QueueHandler" if sys.version_info >= (3, 12, 0) else "StandardQueueListenerHandler"], + [ + "logging", + True, + "logging.QueueHandler" + if sys.version_info >= (3, 12, 0) + else "litestar.logging.standard.QueueListenerHandler", + ], ["logging", False, None], - ["picologging", True, "PicologgingQueueListenerHandler"], + ["picologging", True, "litestar.logging.picologging.QueueListenerHandler"], ["picologging", False, None], ], ) def test_customizing_handler( logging_module_str: str, configure_root_logger: bool, - expected_root_logger_handler_class_str: str, + expected_root_logger_handler_class_str: "Optional[str]", capsys: "CaptureFixture[str]", ) -> None: logging_module = importlib.import_module(logging_module_str) - expected_root_logger_handler_class = importlib.import_module(expected_root_logger_handler_class_str) + if expected_root_logger_handler_class_str is None: + expected_root_logger_handler_class = None + elif expected_root_logger_handler_class_str == "litestar.logging.standard.QueueListenerHandler": + from litestar.logging.standard import QueueListenerHandler + + expected_root_logger_handler_class = QueueListenerHandler + elif expected_root_logger_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": + from litestar.logging.picologging import QueueListenerHandler + + expected_root_logger_handler_class = QueueListenerHandler + else: + expected_root_logger_handler_class = importlib.import_module(expected_root_logger_handler_class_str) log_format = "%(levelname)s :: %(name)s :: %(message)s" @@ -383,7 +462,8 @@ def test_customizing_handler( formatter = root_logger_handler.listener.handlers[0].formatter # type: ignore[attr-defined] else: formatter = root_logger_handler.formatter - assert formatter._fmt == log_format + if formatter is not None: + assert formatter._fmt == log_format else: # Root logger shouldn't be configured but pytest adds some handlers (for the standard `logging` module) for handler in root_logger.handlers: # type: ignore[attr-defined] diff --git a/uv.lock b/uv.lock index 28ccbb09fa..fc1cfe014e 100644 --- a/uv.lock +++ b/uv.lock @@ -1707,7 +1707,8 @@ full = [ { name = "picologging", marker = "python_full_version < '3.13'" }, { name = "prometheus-client" }, { name = "pydantic" }, - { name = "pydantic-extra-types" }, + { name = "pydantic-extra-types", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pydantic-extra-types", version = "2.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, { name = "pyjwt" }, { name = "redis", extra = ["hiredis"] }, { name = "structlog" }, @@ -1742,7 +1743,8 @@ prometheus = [ pydantic = [ { name = "email-validator" }, { name = "pydantic" }, - { name = "pydantic-extra-types" }, + { name = "pydantic-extra-types", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, + { name = "pydantic-extra-types", version = "2.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, ] redis = [ { name = "redis", extra = ["hiredis"] }, @@ -1851,7 +1853,7 @@ requires-dist = [ { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, { name = "mako", marker = "extra == 'mako'", specifier = ">=1.2.4" }, { name = "minijinja", marker = "extra == 'minijinja'", specifier = ">=1.0.0" }, - { name = "msgspec", marker = "python_full_version < '3.9'", specifier = ">=0.18.2,<=0.18.6" }, + { name = "msgspec", marker = "python_full_version < '3.9'", specifier = ">=0.18.2,<0.19.0" }, { name = "multidict", specifier = ">=6.0.2" }, { name = "multipart", specifier = ">=1.2.0" }, { name = "opentelemetry-instrumentation-asgi", marker = "extra == 'opentelemetry'" }, @@ -1860,7 +1862,8 @@ requires-dist = [ { name = "polyfactory", specifier = ">=2.6.3" }, { name = "prometheus-client", marker = "extra == 'prometheus'" }, { name = "pydantic", marker = "extra == 'pydantic'" }, - { name = "pydantic-extra-types", marker = "extra == 'pydantic'" }, + { name = "pydantic-extra-types", marker = "python_full_version >= '3.9' and extra == 'pydantic'", specifier = ">=2.9.0" }, + { name = "pydantic-extra-types", marker = "python_full_version < '3.9' and extra == 'pydantic'", specifier = "<=2.9.0" }, { name = "pyjwt", marker = "extra == 'jwt'", specifier = ">=2.9.0" }, { name = "pyyaml" }, { name = "redis", extras = ["hiredis"], marker = "extra == 'redis'", specifier = ">=4.4.4" }, @@ -3017,13 +3020,37 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/ab/718d9a1c41bb8d3e0e04d15b68b8afc135f8fcf552705b62f226225065c7/pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840", size = 2002035 }, ] +[[package]] +name = "pydantic-extra-types" +version = "2.9.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform != 'win32'", + "python_full_version < '3.8.1' and sys_platform != 'win32'", + "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", + "python_full_version < '3.8.1' and sys_platform == 'win32'", +] +dependencies = [ + { name = "pydantic", marker = "python_full_version < '3.9'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/95/d61dcadd933cb34461adc271c13bbe14a7080b9922b9e0dc3c1d18b421cb/pydantic_extra_types-2.9.0.tar.gz", hash = "sha256:e061c01636188743bb69f368dcd391f327b8cfbfede2fe1cbb1211b06601ba3b", size = 39578 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/2f/efc4877d1a1536ec76ca0114c3e9dee7d0a10a262c53d384d50163f5684c/pydantic_extra_types-2.9.0-py3-none-any.whl", hash = "sha256:f0bb975508572ba7bf3390b7337807588463b7248587e69f43b1ad7c797530d0", size = 30544 }, +] + [[package]] name = "pydantic-extra-types" version = "2.10.1" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.13' and sys_platform != 'win32'", + "python_full_version >= '3.13' and sys_platform == 'win32'", +] dependencies = [ - { name = "pydantic" }, - { name = "typing-extensions" }, + { name = "pydantic", marker = "python_full_version >= '3.9'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.9'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c3/12/844a4796dbbc814ef0a706f403cb0f3029bf324c2bca2bf0681f4f7d8618/pydantic_extra_types-2.10.1.tar.gz", hash = "sha256:e4f937af34a754b8f1fa228a2fac867091a51f56ed0e8a61d5b3a6719b13c923", size = 85694 } wheels = [ From 2e53fac1d89b15b4e19113520c3d56ee34b89c1b Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 23:29:23 +0000 Subject: [PATCH 21/34] chore: fix lock file --- uv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uv.lock b/uv.lock index 74918d339b..1f539da398 100644 --- a/uv.lock +++ b/uv.lock @@ -1969,8 +1969,8 @@ requires-dist = [ { name = "jsbeautifier", marker = "extra == 'standard'" }, { name = "litestar", extras = ["annotated-types", "attrs", "brotli", "cli", "cryptography", "jinja", "jwt", "mako", "minijinja", "opentelemetry", "piccolo", "picologging", "prometheus", "pydantic", "redis", "sqlalchemy", "standard", "structlog", "valkey"], marker = "python_full_version < '3.13' and extra == 'full'" }, { name = "litestar", extras = ["annotated-types", "attrs", "brotli", "cli", "cryptography", "jinja", "jwt", "mako", "minijinja", "opentelemetry", "piccolo", "prometheus", "pydantic", "redis", "sqlalchemy", "standard", "structlog", "valkey"], marker = "python_full_version >= '3.13' and extra == 'full'" }, + { name = "litestar-htmx", specifier = ">=0.3.0" }, { name = "litestar-msgspec", marker = "python_full_version >= '3.9'" }, - { name = "litestar-htmx", specifier = ">=0.4.0" }, { name = "mako", marker = "extra == 'mako'", specifier = ">=1.2.4" }, { name = "minijinja", marker = "extra == 'minijinja'", specifier = ">=1.0.0" }, { name = "msgspec", marker = "python_full_version < '3.9'", specifier = ">=0.18.2,<0.19.0" }, From 0d76eed1df36a514e5268fcc0e7ac58baea52c66 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 23:30:25 +0000 Subject: [PATCH 22/34] fix: add ignore --- tests/unit/test_logging/test_logging_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/test_logging/test_logging_config.py b/tests/unit/test_logging/test_logging_config.py index d8934dc20b..1eba43f0da 100644 --- a/tests/unit/test_logging/test_logging_config.py +++ b/tests/unit/test_logging/test_logging_config.py @@ -158,7 +158,7 @@ def test_default_queue_listener_handler( expected_listener_class = LoggingQueueListener elif expected_listener_class_str == "picologging.handlers.QueueListener": - from picologging.handlers import QueueListener + from picologging.handlers import QueueListener # pyright: ignore[reportMissingImports] expected_listener_class = QueueListener else: From 9fd31414ef4036c09eb359bd1fa1f1efbd091380 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Sun, 15 Dec 2024 23:39:21 +0000 Subject: [PATCH 23/34] fix: updated --- .../test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index 0aa531bd33..d1a501fef6 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -5,9 +5,10 @@ pytestmark = pytest.mark.xdist_group("sqlalchemy_examples") -def test_sqlalchemy_declarative_models() -> None: - from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app +async def test_sqlalchemy_declarative_models() -> None: + from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app, sqlalchemy_config + await sqlalchemy_config.create_all_metadata(app) with TestClient(app) as client: response = client.get("/authors") assert response.status_code == 200 From d83b5b9c8bad282691102c58090433d0986e0404 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 01:27:31 +0000 Subject: [PATCH 24/34] fix: testing --- .../contrib/sqlalchemy/sqlalchemy_declarative_models.py | 6 +++++- .../test_sqlalchemy/test_sqlalchemy_examples.py | 7 ++++--- tests/helpers.py | 9 +++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py index 2810b1fc76..5c180bab7d 100644 --- a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py +++ b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py @@ -16,6 +16,8 @@ # The SQLAlchemy base includes a declarative model for you to use in your models. # The `UUIDBase` class includes a `UUID` based primary key (`id`) class Author(base.UUIDBase): + __bind_key__ = "demo" # pyright: ignore[reportAssignmentType] + __tablename__ = "author" name: Mapped[str] dob: Mapped[date] books: Mapped[List[Book]] = relationship(back_populates="author", lazy="selectin") @@ -25,6 +27,8 @@ class Author(base.UUIDBase): # additional columns: `created_at` and `updated_at`. `created_at` is a timestamp of when the # record created, and `updated_at` is the last time the record was modified. class Book(base.UUIDAuditBase): + __bind_key__ = "demo" # pyright: ignore[reportAssignmentType] + __tablename__ = "book" title: Mapped[str] author_id: Mapped[UUID] = mapped_column(ForeignKey("author.id")) author: Mapped[Author] = relationship(lazy="joined", innerjoin=True, viewonly=True) @@ -32,7 +36,7 @@ class Book(base.UUIDAuditBase): session_config = AsyncSessionConfig(expire_on_commit=False) sqlalchemy_config = SQLAlchemyAsyncConfig( - connection_string="sqlite+aiosqlite:///test.sqlite", session_config=session_config + connection_string="sqlite+aiosqlite:///test.sqlite", session_config=session_config, create_all=True ) # Create 'async_session' dependency. diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index d1a501fef6..11ce8f312d 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -1,14 +1,15 @@ import pytest from litestar.testing import TestClient +from tests.helpers import purge_module pytestmark = pytest.mark.xdist_group("sqlalchemy_examples") -async def test_sqlalchemy_declarative_models() -> None: - from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app, sqlalchemy_config +def test_sqlalchemy_declarative_models() -> None: + purge_module(["docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models"], __file__) + from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app - await sqlalchemy_config.create_all_metadata(app) with TestClient(app) as client: response = client.get("/authors") assert response.status_code == 200 diff --git a/tests/helpers.py b/tests/helpers.py index 82a639cd57..757569ea79 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -2,7 +2,9 @@ import atexit import inspect +import importlib.util import logging +from pathlib import Path import random import sys from contextlib import AbstractContextManager, contextmanager @@ -111,3 +113,10 @@ def cleanup_logging_impl() -> Generator: def not_none(val: T | None) -> T: assert val is not None return val + + +def purge_module(module_names: list[str], path: str | Path) -> None: + for name in module_names: + if name in sys.modules: + del sys.modules[name] + Path(importlib.util.cache_from_source(path)).unlink(missing_ok=True) # type: ignore[arg-type] From 0c04845262baf19b4d49e5df1b962f71f70486ca Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 01:29:13 +0000 Subject: [PATCH 25/34] fix: formatting --- tests/helpers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/helpers.py b/tests/helpers.py index 757569ea79..353a592eb5 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,13 +1,13 @@ from __future__ import annotations import atexit -import inspect import importlib.util +import inspect import logging -from pathlib import Path import random import sys from contextlib import AbstractContextManager, contextmanager +from pathlib import Path from typing import Any, AsyncContextManager, Awaitable, ContextManager, Generator, TypeVar, cast, overload import pytest From 490ce3ffcbf7f25a029514c494a7daa184ad0da3 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 01:45:45 +0000 Subject: [PATCH 26/34] fix: monkeypatch --- .../sqlalchemy_declarative_models.py | 3 --- .../test_sqlalchemy_examples.py | 23 ++++++++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py index 5c180bab7d..251f98b63f 100644 --- a/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py +++ b/docs/examples/contrib/sqlalchemy/sqlalchemy_declarative_models.py @@ -16,7 +16,6 @@ # The SQLAlchemy base includes a declarative model for you to use in your models. # The `UUIDBase` class includes a `UUID` based primary key (`id`) class Author(base.UUIDBase): - __bind_key__ = "demo" # pyright: ignore[reportAssignmentType] __tablename__ = "author" name: Mapped[str] dob: Mapped[date] @@ -27,7 +26,6 @@ class Author(base.UUIDBase): # additional columns: `created_at` and `updated_at`. `created_at` is a timestamp of when the # record created, and `updated_at` is the last time the record was modified. class Book(base.UUIDAuditBase): - __bind_key__ = "demo" # pyright: ignore[reportAssignmentType] __tablename__ = "book" title: Mapped[str] author_id: Mapped[UUID] = mapped_column(ForeignKey("author.id")) @@ -42,7 +40,6 @@ class Book(base.UUIDAuditBase): async def on_startup(app: Litestar) -> None: """Adds some dummy data if no data is present.""" - await sqlalchemy_config.create_all_metadata(app) async with sqlalchemy_config.get_session() as session: statement = select(func.count()).select_from(Author) count = await session.execute(statement) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index 11ce8f312d..12f24740fc 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -1,16 +1,33 @@ +from pathlib import Path + import pytest +from pytest import MonkeyPatch +from sqlalchemy.ext.asyncio import create_async_engine +from sqlalchemy.pool import NullPool +from litestar.plugins.sqlalchemy import AsyncSessionConfig, SQLAlchemyAsyncConfig from litestar.testing import TestClient from tests.helpers import purge_module pytestmark = pytest.mark.xdist_group("sqlalchemy_examples") -def test_sqlalchemy_declarative_models() -> None: +async def test_sqlalchemy_declarative_models(tmp_path: Path, monkeypatch: MonkeyPatch) -> None: purge_module(["docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models"], __file__) - from docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models import app + engine = create_async_engine(f"sqlite+aiosqlite:///{tmp_path}/test.sqlite", poolclass=NullPool) + + session_config = AsyncSessionConfig(expire_on_commit=False) + sqlalchemy_config = SQLAlchemyAsyncConfig( + session_config=session_config, + create_all=True, + engine_instance=engine, + ) # Create 'async_session' dependency. + from docs.examples.contrib.sqlalchemy import sqlalchemy_declarative_models - with TestClient(app) as client: + monkeypatch.setattr(sqlalchemy_declarative_models, "sqlalchemy_config", sqlalchemy_config) + async with engine.begin() as connection: + await connection.run_sync(sqlalchemy_declarative_models.Author.metadata.create_all) + with TestClient(sqlalchemy_declarative_models.app) as client: response = client.get("/authors") assert response.status_code == 200 assert len(response.json()) > 0 From 1fe9e559109260248bf78051409a676992d4def4 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 01:48:46 +0000 Subject: [PATCH 27/34] fix: remove purge --- .../test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index 12f24740fc..ae4faec447 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -13,7 +13,6 @@ async def test_sqlalchemy_declarative_models(tmp_path: Path, monkeypatch: MonkeyPatch) -> None: - purge_module(["docs.examples.contrib.sqlalchemy.sqlalchemy_declarative_models"], __file__) engine = create_async_engine(f"sqlite+aiosqlite:///{tmp_path}/test.sqlite", poolclass=NullPool) session_config = AsyncSessionConfig(expire_on_commit=False) From 08d429d9c86477c7f7b2327d3a099f233092392e Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 01:49:41 +0000 Subject: [PATCH 28/34] fix: linting --- .../test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index ae4faec447..da2dcf88f5 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -7,7 +7,6 @@ from litestar.plugins.sqlalchemy import AsyncSessionConfig, SQLAlchemyAsyncConfig from litestar.testing import TestClient -from tests.helpers import purge_module pytestmark = pytest.mark.xdist_group("sqlalchemy_examples") From 0e110c6c955ca792c50bb8b0346bef8922ad2d62 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 01:56:22 +0000 Subject: [PATCH 29/34] fix: maybe? --- .../test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py index da2dcf88f5..55b48776c9 100644 --- a/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py +++ b/tests/examples/test_contrib/test_sqlalchemy/test_sqlalchemy_examples.py @@ -12,7 +12,7 @@ async def test_sqlalchemy_declarative_models(tmp_path: Path, monkeypatch: MonkeyPatch) -> None: - engine = create_async_engine(f"sqlite+aiosqlite:///{tmp_path}/test.sqlite", poolclass=NullPool) + engine = create_async_engine("sqlite+aiosqlite:///test.sqlite", poolclass=NullPool) session_config = AsyncSessionConfig(expire_on_commit=False) sqlalchemy_config = SQLAlchemyAsyncConfig( @@ -25,6 +25,7 @@ async def test_sqlalchemy_declarative_models(tmp_path: Path, monkeypatch: Monkey monkeypatch.setattr(sqlalchemy_declarative_models, "sqlalchemy_config", sqlalchemy_config) async with engine.begin() as connection: await connection.run_sync(sqlalchemy_declarative_models.Author.metadata.create_all) + await connection.commit() with TestClient(sqlalchemy_declarative_models.app) as client: response = client.get("/authors") assert response.status_code == 200 From 7cacc1073d4515f5db379e43fa6b19093bbf400b Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Mon, 16 Dec 2024 02:46:35 +0000 Subject: [PATCH 30/34] feat: finaly maybe --- .../unit/test_logging/test_logging_config.py | 30 ++++++++++++++--- uv.lock | 33 ++----------------- 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/tests/unit/test_logging/test_logging_config.py b/tests/unit/test_logging/test_logging_config.py index 1eba43f0da..3423184efc 100644 --- a/tests/unit/test_logging/test_logging_config.py +++ b/tests/unit/test_logging/test_logging_config.py @@ -124,7 +124,7 @@ def test_dictconfig_on_startup(logging_module: str, dict_config_not_called: str) [ [ "logging", - "logging.QueueHandler" + "logging.handlers.QueueHandler" if sys.version_info >= (3, 12, 0) else "litestar.logging.standard.QueueListenerHandler", "litestar.logging.standard.LoggingQueueListener", @@ -150,6 +150,10 @@ def test_default_queue_listener_handler( elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": from litestar.logging.picologging import QueueListenerHandler + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "logging.handlers.QueueHandler": + from logging.handlers import QueueHandler as QueueListenerHandler + expected_handler_class = QueueListenerHandler else: expected_handler_class = importlib.import_module(expected_handler_class_str) @@ -221,7 +225,7 @@ def test_get_logger_without_logging_config() -> None: [ [ "logging", - "logging.QueueHandler" + "logging.handlers.QueueHandler" if sys.version_info >= (3, 12, 0) else "litestar.logging.standard.QueueListenerHandler", ], @@ -237,6 +241,10 @@ def test_default_loggers(logging_module_str: str, expected_handler_class_str: st elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": from litestar.logging.picologging import QueueListenerHandler + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "logging.handlers.QueueHandler": + from logging.handlers import QueueHandler as QueueListenerHandler + expected_handler_class = QueueListenerHandler else: expected_handler_class = importlib.import_module(expected_handler_class_str) @@ -260,7 +268,7 @@ def test_default_loggers(logging_module_str: str, expected_handler_class_str: st [ [ "logging", - "litestar.logging.standard.QueueListenerHandler" + "logging.handlers.QueueHandler" if sys.version_info >= (3, 12, 0) else "litestar.logging.standard.QueueListenerHandler", ], @@ -276,6 +284,10 @@ def test_connection_logger(logging_module_str: str, expected_handler_class_str: elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": from litestar.logging.picologging import QueueListenerHandler + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "logging.handlers.QueueHandler": + from logging.handlers import QueueHandler as QueueListenerHandler + expected_handler_class = QueueListenerHandler else: expected_handler_class = importlib.import_module(expected_handler_class_str) @@ -329,7 +341,7 @@ def test_validation(logging_module_str: Optional[str]) -> None: [ [ "logging", - "logging.QueueHandler" + "logging.handlers.QueueHandler" if sys.version_info >= (3, 12, 0) else "litestar.logging.standard.QueueListenerHandler", ], @@ -345,6 +357,10 @@ def test_root_logger(logging_module_str: str, expected_handler_class_str: str) - elif expected_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": from litestar.logging.picologging import QueueListenerHandler + expected_handler_class = QueueListenerHandler + elif expected_handler_class_str == "logging.handlers.QueueHandler": + from logging.handlers import QueueHandler as QueueListenerHandler + expected_handler_class = QueueListenerHandler else: expected_handler_class = importlib.import_module(expected_handler_class_str) @@ -383,7 +399,7 @@ def test_root_logger_no_config(logging_module_str: str) -> None: [ "logging", True, - "logging.QueueHandler" + "logging.handlers.QueueHandler" if sys.version_info >= (3, 12, 0) else "litestar.logging.standard.QueueListenerHandler", ], @@ -408,6 +424,10 @@ def test_customizing_handler( elif expected_root_logger_handler_class_str == "litestar.logging.picologging.QueueListenerHandler": from litestar.logging.picologging import QueueListenerHandler + expected_root_logger_handler_class = QueueListenerHandler + elif expected_root_logger_handler_class_str == "logging.handlers.QueueHandler": + from logging.handlers import QueueHandler as QueueListenerHandler + expected_root_logger_handler_class = QueueListenerHandler else: expected_root_logger_handler_class = importlib.import_module(expected_root_logger_handler_class_str) diff --git a/uv.lock b/uv.lock index 1f539da398..100704f454 100644 --- a/uv.lock +++ b/uv.lock @@ -1823,8 +1823,7 @@ full = [ { name = "picologging", marker = "python_full_version < '3.13'" }, { name = "prometheus-client" }, { name = "pydantic" }, - { name = "pydantic-extra-types", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pydantic-extra-types", version = "2.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pydantic-extra-types" }, { name = "pyjwt" }, { name = "redis", extra = ["hiredis"] }, { name = "structlog" }, @@ -1860,8 +1859,7 @@ prometheus = [ pydantic = [ { name = "email-validator" }, { name = "pydantic" }, - { name = "pydantic-extra-types", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, - { name = "pydantic-extra-types", version = "2.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" }, + { name = "pydantic-extra-types" }, ] redis = [ { name = "redis", extra = ["hiredis"] }, @@ -3145,39 +3143,14 @@ wheels = [ name = "pydantic-extra-types" version = "2.9.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform != 'win32'", - "python_full_version < '3.8.1' and sys_platform != 'win32'", - "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", - "python_full_version < '3.8.1' and sys_platform == 'win32'", -] dependencies = [ - { name = "pydantic", marker = "python_full_version < '3.9'" }, + { name = "pydantic" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fb/95/d61dcadd933cb34461adc271c13bbe14a7080b9922b9e0dc3c1d18b421cb/pydantic_extra_types-2.9.0.tar.gz", hash = "sha256:e061c01636188743bb69f368dcd391f327b8cfbfede2fe1cbb1211b06601ba3b", size = 39578 } wheels = [ { url = "https://files.pythonhosted.org/packages/37/2f/efc4877d1a1536ec76ca0114c3e9dee7d0a10a262c53d384d50163f5684c/pydantic_extra_types-2.9.0-py3-none-any.whl", hash = "sha256:f0bb975508572ba7bf3390b7337807588463b7248587e69f43b1ad7c797530d0", size = 30544 }, ] -[[package]] -name = "pydantic-extra-types" -version = "2.10.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", - "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", - "python_full_version >= '3.13' and sys_platform != 'win32'", - "python_full_version >= '3.13' and sys_platform == 'win32'", -] -dependencies = [ - { name = "pydantic", marker = "python_full_version >= '3.9'" }, - { name = "typing-extensions", marker = "python_full_version >= '3.9'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c3/12/844a4796dbbc814ef0a706f403cb0f3029bf324c2bca2bf0681f4f7d8618/pydantic_extra_types-2.10.1.tar.gz", hash = "sha256:e4f937af34a754b8f1fa228a2fac867091a51f56ed0e8a61d5b3a6719b13c923", size = 85694 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/f1/92f7b4711d3d0d08981c2677ec9cdde6cb114205a69814bf803e0be5ae9b/pydantic_extra_types-2.10.1-py3-none-any.whl", hash = "sha256:db2c86c04a837bbac0d2d79bbd6f5d46c4c9253db11ca3fdd36a2b282575f1e2", size = 35155 }, -] - [[package]] name = "pydata-sphinx-theme" version = "0.14.4" From 0b57b7134c190bbc4f3078a204ba7d4a588b76da Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 18 Dec 2024 16:43:25 +0000 Subject: [PATCH 31/34] fix: flaky test tweak --- tests/unit/test_channels/test_plugin.py | 6 +++--- uv.lock | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/unit/test_channels/test_plugin.py b/tests/unit/test_channels/test_plugin.py index 3a75e4c482..fee8c541ba 100644 --- a/tests/unit/test_channels/test_plugin.py +++ b/tests/unit/test_channels/test_plugin.py @@ -96,7 +96,7 @@ async def test_pub_sub_non_blocking(channels_backend: ChannelsBackend, channel: subscriber = await plugin.subscribe(channel) plugin.publish(b"foo", channel) - await asyncio.sleep(0.1) # give the worker time to process things + await asyncio.sleep(0.5) # give the worker time to process things res = await get_from_stream(subscriber, 1) @@ -156,7 +156,7 @@ async def test_ws_route_handlers_receive_arbitrary_message(channels_backend: Cha @pytest.mark.flaky(reruns=15) -def test_create_ws_route_handlers_arbitrary_channels_allowed(channels_backend: ChannelsBackend) -> None: +async def test_create_ws_route_handlers_arbitrary_channels_allowed(channels_backend: ChannelsBackend) -> None: channels_plugin = ChannelsPlugin( backend=channels_backend, arbitrary_channels_allowed=True, @@ -171,7 +171,7 @@ def test_create_ws_route_handlers_arbitrary_channels_allowed(channels_backend: C channels_plugin.publish("something", "foo") assert ws.receive_text(timeout=2) == "something" - time.sleep(0.1) + time.sleep(0.5) with client.websocket_connect("/ws/bar") as ws: channels_plugin.publish("something else", "bar") diff --git a/uv.lock b/uv.lock index 100704f454..4be933bc87 100644 --- a/uv.lock +++ b/uv.lock @@ -25,7 +25,7 @@ wheels = [ [[package]] name = "advanced-alchemy" -version = "0.26.1" +version = "0.26.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "alembic" }, @@ -34,9 +34,9 @@ dependencies = [ { name = "sqlalchemy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/a7/50e2ea5196a15b4fa3558c4cefd5991b18c984c4e1e4c0ef2ea71a7402cd/advanced_alchemy-0.26.1.tar.gz", hash = "sha256:09e5340ff4ec8e84752c98de51aa33910eadab0dbfb09ed79d82eab42ca8055a", size = 942602 } +sdist = { url = "https://files.pythonhosted.org/packages/3e/94/8783c58213448ae3fe44615e3efd2eb5bfc3d90a8fe47d29f9e6164681f2/advanced_alchemy-0.26.2.tar.gz", hash = "sha256:b56a9c42b7c1b1ab322cccb39b5fd0601232850b10191337f0504debc71735d2", size = 983000 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/6e/df2431d8034e61b295d54f5a5263d606931f344c2270cbb691000ce37cf1/advanced_alchemy-0.26.1-py3-none-any.whl", hash = "sha256:04c786df9453676784f71dfc88b5dccce257f8939b8528d5e1f624d048ce081f", size = 147824 }, + { url = "https://files.pythonhosted.org/packages/9e/ef/35219f6be810e636fbe26e05af6c767d02de825075b7e633f49cf886b355/advanced_alchemy-0.26.2-py3-none-any.whl", hash = "sha256:1f9b1207e757076e13a41782e76ac32f50ab5851a88d40f27321005cd46b6b94", size = 147848 }, ] [[package]] @@ -226,11 +226,11 @@ wheels = [ [[package]] name = "attrs" -version = "24.2.0" +version = "24.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678 } +sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 }, + { url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 }, ] [[package]] From 4f6902ab5b4bbd6ff1666db3d68ee56fa1d0b801 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 18 Dec 2024 18:04:58 +0000 Subject: [PATCH 32/34] feat: set upper limit for picologging --- .pre-commit-config.yaml | 2 +- pyproject.toml | 2 +- uv.lock | 558 +++++++++++++++++++++++++++------------- 3 files changed, 383 insertions(+), 179 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fdad82dca0..92c3691d37 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ default_language_version: - python: "3" + python: "3.12" repos: - repo: https://github.com/compilerla/conventional-pre-commit rev: v3.6.0 diff --git a/pyproject.toml b/pyproject.toml index 5de3e53551..c1c1589c4f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -99,7 +99,7 @@ mako = ["mako>=1.2.4"] minijinja = ["minijinja>=1.0.0"] opentelemetry = ["opentelemetry-instrumentation-asgi"] piccolo = ["piccolo"] -picologging = ["picologging"] +picologging = ["picologging; python_version < \"3.13\""] prometheus = ["prometheus-client"] pydantic = ["pydantic", "email-validator", "pydantic-extra-types<=2.9.0; python_version < \"3.9\"", "pydantic-extra-types>=2.9.0; python_version >= \"3.9\""] redis = ["redis[hiredis]>=4.4.4"] diff --git a/uv.lock b/uv.lock index 4be933bc87..192afb127b 100644 --- a/uv.lock +++ b/uv.lock @@ -5,8 +5,10 @@ resolution-markers = [ "python_full_version < '3.8.1' and sys_platform != 'win32'", "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", "python_full_version < '3.8.1' and sys_platform == 'win32'", - "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", - "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.12' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and sys_platform != 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.12' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", "python_full_version >= '3.13' and sys_platform != 'win32'", "python_full_version >= '3.13' and sys_platform == 'win32'", ] @@ -706,24 +708,23 @@ wheels = [ [[package]] name = "codecov-cli" -version = "0.1.13" +version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "httpx" }, { name = "ijson" }, - { name = "pytest" }, - { name = "pytest-cov" }, { name = "pyyaml" }, - { name = "requests" }, - { name = "smart-open" }, + { name = "regex" }, + { name = "responses" }, + { name = "test-results-parser" }, { name = "tree-sitter" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/69/02/eb826787da15c87d970ac817ad4d97c61a80ee434cc2aac0ba25fce45ec4/codecov-cli-0.1.13.tar.gz", hash = "sha256:4f4dd59469f9324803f98bd8573ce78636e8802ffc99e967f0fb63ca30df028b", size = 261659 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/91/f173918549f01f0feb2d24fc799e19d4d4168a2e020076e58a6b33dc0899/codecov-cli-9.1.1.tar.gz", hash = "sha256:8da963600db1da76543a7f6fcbf09db717c68d0287b6bb58d775a605db080930", size = 280055 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/20/70dfcf53af8471404f571388accd02b9be7521e5354376ebc8a2799c588f/codecov_cli-0.1.13-cp310-cp310-macosx_12_6_x86_64.whl", hash = "sha256:13c87a1e55eab7bf981eac4bacafe5e06af7dc5aebe087de53981716b4da28df", size = 276278 }, - { url = "https://files.pythonhosted.org/packages/4b/3a/2f7526e8be590638701c1d3797835e30743914d0e80b63b56acd3c33a7cf/codecov_cli-0.1.13-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:6acd8bb8e34519f19b83c82bc216cafe06b1c086fd4f3f8f83f503a8b1f11aab", size = 276280 }, - { url = "https://files.pythonhosted.org/packages/9d/e9/d18725208ac8d2fdb0c158795b1a0f4c5d8a4f9f3a445cb8a07ae2615030/codecov_cli-0.1.13-cp310-cp310-win_amd64.whl", hash = "sha256:43239e136bc4b3ef4450c1d6c1976ab78de6d40ee4f16a23ea5d1eed2995a97b", size = 276271 }, + { url = "https://files.pythonhosted.org/packages/f4/17/3b6f60c43fca2799a08de38785cfe2efae6011b1b46fa5ab882ff764192e/codecov_cli-9.1.1-cp311-cp311-macosx_12_6_x86_64.whl", hash = "sha256:fc66dc1ce6675d01db0745712942e5d34771fdc0c45b624228b7e778aa6e0b45", size = 297466 }, + { url = "https://files.pythonhosted.org/packages/e0/87/0801d31fc1aa6e9fad5fc34901cafe25b78247cd65ced34b615cbb05137c/codecov_cli-9.1.1-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:b5ed1ffff406b7a177b570eab1b58b5e371922b30ad7729ae20631673a3338d0", size = 297467 }, + { url = "https://files.pythonhosted.org/packages/81/99/ad8c34710755735c72c4c8b9e639a679ca0e5649e122d1c3787536d2530f/codecov_cli-9.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:33ee4f28af4d57fe51e69502c02c498269989b8a3cdd9e5ead3ef0655723018d", size = 297455 }, ] [[package]] @@ -1378,17 +1379,18 @@ wheels = [ [[package]] name = "httpx" -version = "0.28.1" +version = "0.27.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "certifi" }, { name = "httpcore" }, { name = "idna" }, + { name = "sniffio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, + { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395 }, ] [[package]] @@ -1851,7 +1853,7 @@ piccolo = [ { name = "piccolo" }, ] picologging = [ - { name = "picologging" }, + { name = "picologging", marker = "python_full_version < '3.13'" }, ] prometheus = [ { name = "prometheus-client" }, @@ -1976,7 +1978,7 @@ requires-dist = [ { name = "multipart", specifier = ">=1.2.0" }, { name = "opentelemetry-instrumentation-asgi", marker = "extra == 'opentelemetry'" }, { name = "piccolo", marker = "extra == 'piccolo'" }, - { name = "picologging", marker = "extra == 'picologging'" }, + { name = "picologging", marker = "python_full_version < '3.13' and extra == 'picologging'" }, { name = "polyfactory", specifier = ">=2.6.3" }, { name = "prometheus-client", marker = "extra == 'prometheus'" }, { name = "pydantic", marker = "extra == 'pydantic'" }, @@ -2119,14 +2121,14 @@ dependencies = [ [[package]] name = "livereload" -version = "2.7.0" +version = "2.7.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/da/fa/049e6a4aa02c5fe21d053bafddb5c03a551f8c667c0a7399c3ef4aa42d36/livereload-2.7.0.tar.gz", hash = "sha256:f4ba199ef93248902841e298670eebfe1aa9e148e19b343bc57dbf1b74de0513", size = 22143 } +sdist = { url = "https://files.pythonhosted.org/packages/43/6e/f2748665839812a9bbe5c75d3f983edbf3ab05fa5cd2f7c2f36fffdf65bd/livereload-2.7.1.tar.gz", hash = "sha256:3d9bf7c05673df06e32bea23b494b8d36ca6d10f7d5c3c8a6989608c09c986a9", size = 22255 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/51/7a862d416ed2b4dc90ea272e96a439a430bb4ca74ebcccfcc8dab4bac7e3/livereload-2.7.0-py3-none-any.whl", hash = "sha256:19bee55aff51d5ade6ede0dc709189a0f904d3b906d3ea71641ed548acff3246", size = 22530 }, + { url = "https://files.pythonhosted.org/packages/e4/3e/de54dc7f199e85e6ca37e2e5dae2ec3bce2151e9e28f8eb9076d71e83d56/livereload-2.7.1-py3-none-any.whl", hash = "sha256:5201740078c1b9433f4b2ba22cd2729a39b9d0ec0a2cc6b4d3df257df5ad0564", size = 22657 }, ] [[package]] @@ -3012,16 +3014,16 @@ wheels = [ [[package]] name = "pydantic" -version = "2.10.3" +version = "2.10.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/0f/27908242621b14e649a84e62b133de45f84c255eecb350ab02979844a788/pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9", size = 786486 } +sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/51/72c18c55cf2f46ff4f91ebcc8f75aa30f7305f3d726be3f4ebffb4ae972b/pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d", size = 456997 }, + { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, ] [package.optional-dependencies] @@ -3031,112 +3033,112 @@ email = [ [[package]] name = "pydantic-core" -version = "2.27.1" +version = "2.27.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a6/9f/7de1f19b6aea45aeb441838782d68352e71bfa98ee6fa048d5041991b33e/pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235", size = 412785 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/ce/60fd96895c09738648c83f3f00f595c807cb6735c70d3306b548cc96dd49/pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a", size = 1897984 }, - { url = "https://files.pythonhosted.org/packages/fd/b9/84623d6b6be98cc209b06687d9bca5a7b966ffed008d15225dd0d20cce2e/pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b", size = 1807491 }, - { url = "https://files.pythonhosted.org/packages/01/72/59a70165eabbc93b1111d42df9ca016a4aa109409db04304829377947028/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278", size = 1831953 }, - { url = "https://files.pythonhosted.org/packages/7c/0c/24841136476adafd26f94b45bb718a78cb0500bd7b4f8d667b67c29d7b0d/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05", size = 1856071 }, - { url = "https://files.pythonhosted.org/packages/53/5e/c32957a09cceb2af10d7642df45d1e3dbd8596061f700eac93b801de53c0/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4", size = 2038439 }, - { url = "https://files.pythonhosted.org/packages/e4/8f/979ab3eccd118b638cd6d8f980fea8794f45018255a36044dea40fe579d4/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f", size = 2787416 }, - { url = "https://files.pythonhosted.org/packages/02/1d/00f2e4626565b3b6d3690dab4d4fe1a26edd6a20e53749eb21ca892ef2df/pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08", size = 2134548 }, - { url = "https://files.pythonhosted.org/packages/9d/46/3112621204128b90898adc2e721a3cd6cf5626504178d6f32c33b5a43b79/pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6", size = 1989882 }, - { url = "https://files.pythonhosted.org/packages/49/ec/557dd4ff5287ffffdf16a31d08d723de6762bb1b691879dc4423392309bc/pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807", size = 1995829 }, - { url = "https://files.pythonhosted.org/packages/6e/b2/610dbeb74d8d43921a7234555e4c091cb050a2bdb8cfea86d07791ce01c5/pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c", size = 2091257 }, - { url = "https://files.pythonhosted.org/packages/8c/7f/4bf8e9d26a9118521c80b229291fa9558a07cdd9a968ec2d5c1026f14fbc/pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206", size = 2143894 }, - { url = "https://files.pythonhosted.org/packages/1f/1c/875ac7139c958f4390f23656fe696d1acc8edf45fb81e4831960f12cd6e4/pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c", size = 1816081 }, - { url = "https://files.pythonhosted.org/packages/d7/41/55a117acaeda25ceae51030b518032934f251b1dac3704a53781383e3491/pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17", size = 1981109 }, - { url = "https://files.pythonhosted.org/packages/27/39/46fe47f2ad4746b478ba89c561cafe4428e02b3573df882334bd2964f9cb/pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8", size = 1895553 }, - { url = "https://files.pythonhosted.org/packages/1c/00/0804e84a78b7fdb394fff4c4f429815a10e5e0993e6ae0e0b27dd20379ee/pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330", size = 1807220 }, - { url = "https://files.pythonhosted.org/packages/01/de/df51b3bac9820d38371f5a261020f505025df732ce566c2a2e7970b84c8c/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52", size = 1829727 }, - { url = "https://files.pythonhosted.org/packages/5f/d9/c01d19da8f9e9fbdb2bf99f8358d145a312590374d0dc9dd8dbe484a9cde/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4", size = 1854282 }, - { url = "https://files.pythonhosted.org/packages/5f/84/7db66eb12a0dc88c006abd6f3cbbf4232d26adfd827a28638c540d8f871d/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c", size = 2037437 }, - { url = "https://files.pythonhosted.org/packages/34/ac/a2537958db8299fbabed81167d58cc1506049dba4163433524e06a7d9f4c/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de", size = 2780899 }, - { url = "https://files.pythonhosted.org/packages/4a/c1/3e38cd777ef832c4fdce11d204592e135ddeedb6c6f525478a53d1c7d3e5/pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025", size = 2135022 }, - { url = "https://files.pythonhosted.org/packages/7a/69/b9952829f80fd555fe04340539d90e000a146f2a003d3fcd1e7077c06c71/pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e", size = 1987969 }, - { url = "https://files.pythonhosted.org/packages/05/72/257b5824d7988af43460c4e22b63932ed651fe98804cc2793068de7ec554/pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919", size = 1994625 }, - { url = "https://files.pythonhosted.org/packages/73/c3/78ed6b7f3278a36589bcdd01243189ade7fc9b26852844938b4d7693895b/pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c", size = 2090089 }, - { url = "https://files.pythonhosted.org/packages/8d/c8/b4139b2f78579960353c4cd987e035108c93a78371bb19ba0dc1ac3b3220/pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc", size = 2142496 }, - { url = "https://files.pythonhosted.org/packages/3e/f8/171a03e97eb36c0b51981efe0f78460554a1d8311773d3d30e20c005164e/pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9", size = 1811758 }, - { url = "https://files.pythonhosted.org/packages/6a/fe/4e0e63c418c1c76e33974a05266e5633e879d4061f9533b1706a86f77d5b/pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5", size = 1980864 }, - { url = "https://files.pythonhosted.org/packages/50/fc/93f7238a514c155a8ec02fc7ac6376177d449848115e4519b853820436c5/pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89", size = 1864327 }, - { url = "https://files.pythonhosted.org/packages/be/51/2e9b3788feb2aebff2aa9dfbf060ec739b38c05c46847601134cc1fed2ea/pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f", size = 1895239 }, - { url = "https://files.pythonhosted.org/packages/7b/9e/f8063952e4a7d0127f5d1181addef9377505dcce3be224263b25c4f0bfd9/pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02", size = 1805070 }, - { url = "https://files.pythonhosted.org/packages/2c/9d/e1d6c4561d262b52e41b17a7ef8301e2ba80b61e32e94520271029feb5d8/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c", size = 1828096 }, - { url = "https://files.pythonhosted.org/packages/be/65/80ff46de4266560baa4332ae3181fffc4488ea7d37282da1a62d10ab89a4/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac", size = 1857708 }, - { url = "https://files.pythonhosted.org/packages/d5/ca/3370074ad758b04d9562b12ecdb088597f4d9d13893a48a583fb47682cdf/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb", size = 2037751 }, - { url = "https://files.pythonhosted.org/packages/b1/e2/4ab72d93367194317b99d051947c071aef6e3eb95f7553eaa4208ecf9ba4/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529", size = 2733863 }, - { url = "https://files.pythonhosted.org/packages/8a/c6/8ae0831bf77f356bb73127ce5a95fe115b10f820ea480abbd72d3cc7ccf3/pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35", size = 2161161 }, - { url = "https://files.pythonhosted.org/packages/f1/f4/b2fe73241da2429400fc27ddeaa43e35562f96cf5b67499b2de52b528cad/pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089", size = 1993294 }, - { url = "https://files.pythonhosted.org/packages/77/29/4bb008823a7f4cc05828198153f9753b3bd4c104d93b8e0b1bfe4e187540/pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381", size = 2001468 }, - { url = "https://files.pythonhosted.org/packages/f2/a9/0eaceeba41b9fad851a4107e0cf999a34ae8f0d0d1f829e2574f3d8897b0/pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb", size = 2091413 }, - { url = "https://files.pythonhosted.org/packages/d8/36/eb8697729725bc610fd73940f0d860d791dc2ad557faaefcbb3edbd2b349/pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae", size = 2154735 }, - { url = "https://files.pythonhosted.org/packages/52/e5/4f0fbd5c5995cc70d3afed1b5c754055bb67908f55b5cb8000f7112749bf/pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c", size = 1833633 }, - { url = "https://files.pythonhosted.org/packages/ee/f2/c61486eee27cae5ac781305658779b4a6b45f9cc9d02c90cb21b940e82cc/pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16", size = 1986973 }, - { url = "https://files.pythonhosted.org/packages/df/a6/e3f12ff25f250b02f7c51be89a294689d175ac76e1096c32bf278f29ca1e/pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e", size = 1883215 }, - { url = "https://files.pythonhosted.org/packages/0f/d6/91cb99a3c59d7b072bded9959fbeab0a9613d5a4935773c0801f1764c156/pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073", size = 1895033 }, - { url = "https://files.pythonhosted.org/packages/07/42/d35033f81a28b27dedcade9e967e8a40981a765795c9ebae2045bcef05d3/pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08", size = 1807542 }, - { url = "https://files.pythonhosted.org/packages/41/c2/491b59e222ec7e72236e512108ecad532c7f4391a14e971c963f624f7569/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf", size = 1827854 }, - { url = "https://files.pythonhosted.org/packages/e3/f3/363652651779113189cefdbbb619b7b07b7a67ebb6840325117cc8cc3460/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737", size = 1857389 }, - { url = "https://files.pythonhosted.org/packages/5f/97/be804aed6b479af5a945daec7538d8bf358d668bdadde4c7888a2506bdfb/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2", size = 2037934 }, - { url = "https://files.pythonhosted.org/packages/42/01/295f0bd4abf58902917e342ddfe5f76cf66ffabfc57c2e23c7681a1a1197/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107", size = 2735176 }, - { url = "https://files.pythonhosted.org/packages/9d/a0/cd8e9c940ead89cc37812a1a9f310fef59ba2f0b22b4e417d84ab09fa970/pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51", size = 2160720 }, - { url = "https://files.pythonhosted.org/packages/73/ae/9d0980e286627e0aeca4c352a60bd760331622c12d576e5ea4441ac7e15e/pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a", size = 1992972 }, - { url = "https://files.pythonhosted.org/packages/bf/ba/ae4480bc0292d54b85cfb954e9d6bd226982949f8316338677d56541b85f/pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc", size = 2001477 }, - { url = "https://files.pythonhosted.org/packages/55/b7/e26adf48c2f943092ce54ae14c3c08d0d221ad34ce80b18a50de8ed2cba8/pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960", size = 2091186 }, - { url = "https://files.pythonhosted.org/packages/ba/cc/8491fff5b608b3862eb36e7d29d36a1af1c945463ca4c5040bf46cc73f40/pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23", size = 2154429 }, - { url = "https://files.pythonhosted.org/packages/78/d8/c080592d80edd3441ab7f88f865f51dae94a157fc64283c680e9f32cf6da/pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05", size = 1833713 }, - { url = "https://files.pythonhosted.org/packages/83/84/5ab82a9ee2538ac95a66e51f6838d6aba6e0a03a42aa185ad2fe404a4e8f/pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337", size = 1987897 }, - { url = "https://files.pythonhosted.org/packages/df/c3/b15fb833926d91d982fde29c0624c9f225da743c7af801dace0d4e187e71/pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5", size = 1882983 }, - { url = "https://files.pythonhosted.org/packages/97/bb/c62074a65a32ed279bef44862e89fabb5ab1a81df8a9d383bddb4f49a1e0/pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62", size = 1901535 }, - { url = "https://files.pythonhosted.org/packages/9b/59/e224c93f95ffd4f5d37f1d148c569eda8ae23446ab8daf3a211ac0533e08/pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab", size = 1781287 }, - { url = "https://files.pythonhosted.org/packages/11/e2/33629134e577543b9335c5ca9bbfd2348f5023fda956737777a7a3b86788/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864", size = 1834575 }, - { url = "https://files.pythonhosted.org/packages/fe/16/82e0849b3c6deb0330c07f1a8d55708d003ec8b1fd38ac84c7a830e25252/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067", size = 1857948 }, - { url = "https://files.pythonhosted.org/packages/6b/4e/cdee588a7440bc58b6351e8b8dc2432e38b1144b5ae6625bfbdfb7fa76d9/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd", size = 2041138 }, - { url = "https://files.pythonhosted.org/packages/1d/0e/73e0d1dff37a29c31e5b3e8587d228ced736cc7af9f81f6d7d06aa47576c/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5", size = 2783820 }, - { url = "https://files.pythonhosted.org/packages/9a/b1/f164d05be347b99b91327ea9dd1118562951d2c86e1ea943ef73636b0810/pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78", size = 2138035 }, - { url = "https://files.pythonhosted.org/packages/72/44/cf1f20d3036d7e1545eafde0af4f3172075573a407a3a20313115c8990ff/pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f", size = 1991778 }, - { url = "https://files.pythonhosted.org/packages/5d/4c/486d8ddd595892e7d791f26dfd3e51bd8abea478eb7747fe2bbe890a2177/pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36", size = 1996644 }, - { url = "https://files.pythonhosted.org/packages/33/2a/9a1cd4c8aca242816be431583a3250797f2932fad32d35ad5aefcea179bc/pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a", size = 2091778 }, - { url = "https://files.pythonhosted.org/packages/8f/61/03576dac806c49e76a714c23f501420b0aeee80f97b995fc4b28fe63a010/pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b", size = 2146020 }, - { url = "https://files.pythonhosted.org/packages/72/82/e236d762052d24949aabad3952bc2c8635a470d6f3cbdd69498692afa679/pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618", size = 1819443 }, - { url = "https://files.pythonhosted.org/packages/6e/89/26816cad528ca5d4af9be33aa91507504c4576100e53b371b5bc6d3c797b/pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4", size = 1979478 }, - { url = "https://files.pythonhosted.org/packages/bc/6a/d741ce0c7da75ce9b394636a406aace00ad992ae417935ef2ad2e67fb970/pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967", size = 1898376 }, - { url = "https://files.pythonhosted.org/packages/bd/68/6ba18e30f10c7051bc55f1dffeadbee51454b381c91846104892a6d3b9cd/pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60", size = 1777246 }, - { url = "https://files.pythonhosted.org/packages/36/b8/6f1b7c5f068c00dfe179b8762bc1d32c75c0e9f62c9372174b1b64a74aa8/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854", size = 1832148 }, - { url = "https://files.pythonhosted.org/packages/d9/83/83ff64d599847f080a93df119e856e3bd93063cced04b9a27eb66d863831/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9", size = 1856371 }, - { url = "https://files.pythonhosted.org/packages/72/e9/974e6c73f59627c446833ecc306cadd199edab40abcfa093372a5a5c0156/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd", size = 2038686 }, - { url = "https://files.pythonhosted.org/packages/5e/bb/5e912d02dcf29aebb2da35e5a1a26088c39ffc0b1ea81242ee9db6f1f730/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be", size = 2785725 }, - { url = "https://files.pythonhosted.org/packages/85/d7/936846087424c882d89c853711687230cd60179a67c79c34c99b64f92625/pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e", size = 2135177 }, - { url = "https://files.pythonhosted.org/packages/82/72/5a386e5ce8d3e933c3f283e61357474181c39383f38afffc15a6152fa1c5/pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792", size = 1989877 }, - { url = "https://files.pythonhosted.org/packages/ce/5c/b1c417a5fd67ce132d78d16a6ba7629dc7f188dbd4f7c30ef58111ee5147/pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01", size = 1996006 }, - { url = "https://files.pythonhosted.org/packages/dd/04/4e18f2c42b29929882f30e4c09a3a039555158995a4ac730a73585198a66/pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9", size = 2091441 }, - { url = "https://files.pythonhosted.org/packages/06/84/5a332345b7efb5ab361f916eaf7316ef010e72417e8c7dd3d34462ee9840/pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131", size = 2144471 }, - { url = "https://files.pythonhosted.org/packages/54/58/23caa58c35d36627156789c0fb562264c12cfdb451c75eb275535188a96f/pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3", size = 1816563 }, - { url = "https://files.pythonhosted.org/packages/f7/9c/e83f08adc8e222b43c7f11d98b27eba08f21bcb259bcbf74743ce903c49c/pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c", size = 1983137 }, - { url = "https://files.pythonhosted.org/packages/7c/60/e5eb2d462595ba1f622edbe7b1d19531e510c05c405f0b87c80c1e89d5b1/pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6", size = 1894016 }, - { url = "https://files.pythonhosted.org/packages/61/20/da7059855225038c1c4326a840908cc7ca72c7198cb6addb8b92ec81c1d6/pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676", size = 1771648 }, - { url = "https://files.pythonhosted.org/packages/8f/fc/5485cf0b0bb38da31d1d292160a4d123b5977841ddc1122c671a30b76cfd/pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d", size = 1826929 }, - { url = "https://files.pythonhosted.org/packages/a1/ff/fb1284a210e13a5f34c639efc54d51da136074ffbe25ec0c279cf9fbb1c4/pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c", size = 1980591 }, - { url = "https://files.pythonhosted.org/packages/f1/14/77c1887a182d05af74f6aeac7b740da3a74155d3093ccc7ee10b900cc6b5/pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27", size = 1981326 }, - { url = "https://files.pythonhosted.org/packages/06/aa/6f1b2747f811a9c66b5ef39d7f02fbb200479784c75e98290d70004b1253/pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f", size = 1989205 }, - { url = "https://files.pythonhosted.org/packages/7a/d2/8ce2b074d6835f3c88d85f6d8a399790043e9fdb3d0e43455e72d19df8cc/pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed", size = 2079616 }, - { url = "https://files.pythonhosted.org/packages/65/71/af01033d4e58484c3db1e5d13e751ba5e3d6b87cc3368533df4c50932c8b/pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f", size = 2133265 }, - { url = "https://files.pythonhosted.org/packages/33/72/f881b5e18fbb67cf2fb4ab253660de3c6899dbb2dba409d0b757e3559e3d/pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c", size = 2001864 }, - { url = "https://files.pythonhosted.org/packages/85/3e/f6f75ba36678fee11dd07a7729e9ed172ecf31e3f50a5d636e9605eee2af/pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f", size = 1894250 }, - { url = "https://files.pythonhosted.org/packages/d3/2d/a40578918e2eb5b4ee0d206a4fb6c4040c2bf14e28d29fba9bd7e7659d16/pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31", size = 1772035 }, - { url = "https://files.pythonhosted.org/packages/7f/ee/0377e9f4ca5a47e8885f670a65c0a647ddf9ce98d50bf7547cf8e1ee5771/pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3", size = 1827025 }, - { url = "https://files.pythonhosted.org/packages/fe/0b/a24d9ef762d05bebdfafd6d5d176b990728fa9ec8ea7b6040d6fb5f3caaa/pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154", size = 1980927 }, - { url = "https://files.pythonhosted.org/packages/00/bd/deadc1722eb7dfdf787a3bbcd32eabbdcc36931fd48671a850e1b9f2cd77/pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd", size = 1980918 }, - { url = "https://files.pythonhosted.org/packages/f0/05/5d09d0b0e92053d538927308ea1d35cb25ab543d9c3e2eb2d7653bc73690/pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a", size = 1989990 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/f7191346d1c3ac66049f618ee331359f8552a8b68a2daf916003c30b6dc8/pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97", size = 2079871 }, - { url = "https://files.pythonhosted.org/packages/f3/65/2caf4f7ad65413a137d43cb9578c54d1abd3224be786ad840263c1bf9e0f/pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2", size = 2133569 }, - { url = "https://files.pythonhosted.org/packages/fd/ab/718d9a1c41bb8d3e0e04d15b68b8afc135f8fcf552705b62f226225065c7/pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840", size = 2002035 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 }, + { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 }, + { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 }, + { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 }, + { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 }, + { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 }, + { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 }, + { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 }, + { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 }, + { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 }, + { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 }, + { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 }, + { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 }, + { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, + { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, + { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, + { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, + { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, + { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, + { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, + { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, + { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, + { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, + { url = "https://files.pythonhosted.org/packages/43/53/13e9917fc69c0a4aea06fd63ed6a8d6cda9cf140ca9584d49c1650b0ef5e/pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506", size = 1899595 }, + { url = "https://files.pythonhosted.org/packages/f4/20/26c549249769ed84877f862f7bb93f89a6ee08b4bee1ed8781616b7fbb5e/pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320", size = 1775010 }, + { url = "https://files.pythonhosted.org/packages/35/eb/8234e05452d92d2b102ffa1b56d801c3567e628fdc63f02080fdfc68fd5e/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145", size = 1830727 }, + { url = "https://files.pythonhosted.org/packages/8f/df/59f915c8b929d5f61e5a46accf748a87110ba145156f9326d1a7d28912b2/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1", size = 1868393 }, + { url = "https://files.pythonhosted.org/packages/d5/52/81cf4071dca654d485c277c581db368b0c95b2b883f4d7b736ab54f72ddf/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228", size = 2040300 }, + { url = "https://files.pythonhosted.org/packages/9c/00/05197ce1614f5c08d7a06e1d39d5d8e704dc81971b2719af134b844e2eaf/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046", size = 2738785 }, + { url = "https://files.pythonhosted.org/packages/f7/a3/5f19bc495793546825ab160e530330c2afcee2281c02b5ffafd0b32ac05e/pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5", size = 1996493 }, + { url = "https://files.pythonhosted.org/packages/ed/e8/e0102c2ec153dc3eed88aea03990e1b06cfbca532916b8a48173245afe60/pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a", size = 1998544 }, + { url = "https://files.pythonhosted.org/packages/fb/a3/4be70845b555bd80aaee9f9812a7cf3df81550bce6dadb3cfee9c5d8421d/pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d", size = 2007449 }, + { url = "https://files.pythonhosted.org/packages/e3/9f/b779ed2480ba355c054e6d7ea77792467631d674b13d8257085a4bc7dcda/pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9", size = 2129460 }, + { url = "https://files.pythonhosted.org/packages/a0/f0/a6ab0681f6e95260c7fbf552874af7302f2ea37b459f9b7f00698f875492/pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da", size = 2159609 }, + { url = "https://files.pythonhosted.org/packages/8a/2b/e1059506795104349712fbca647b18b3f4a7fd541c099e6259717441e1e0/pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b", size = 1819886 }, + { url = "https://files.pythonhosted.org/packages/aa/6d/df49c17f024dfc58db0bacc7b03610058018dd2ea2eaf748ccbada4c3d06/pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad", size = 1980773 }, + { url = "https://files.pythonhosted.org/packages/27/97/3aef1ddb65c5ccd6eda9050036c956ff6ecbfe66cb7eb40f280f121a5bb0/pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993", size = 1896475 }, + { url = "https://files.pythonhosted.org/packages/ad/d3/5668da70e373c9904ed2f372cb52c0b996426f302e0dee2e65634c92007d/pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308", size = 1772279 }, + { url = "https://files.pythonhosted.org/packages/8a/9e/e44b8cb0edf04a2f0a1f6425a65ee089c1d6f9c4c2dcab0209127b6fdfc2/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4", size = 1829112 }, + { url = "https://files.pythonhosted.org/packages/1c/90/1160d7ac700102effe11616e8119e268770f2a2aa5afb935f3ee6832987d/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf", size = 1866780 }, + { url = "https://files.pythonhosted.org/packages/ee/33/13983426df09a36d22c15980008f8d9c77674fc319351813b5a2739b70f3/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76", size = 2037943 }, + { url = "https://files.pythonhosted.org/packages/01/d7/ced164e376f6747e9158c89988c293cd524ab8d215ae4e185e9929655d5c/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118", size = 2740492 }, + { url = "https://files.pythonhosted.org/packages/8b/1f/3dc6e769d5b7461040778816aab2b00422427bcaa4b56cc89e9c653b2605/pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630", size = 1995714 }, + { url = "https://files.pythonhosted.org/packages/07/d7/a0bd09bc39283530b3f7c27033a814ef254ba3bd0b5cfd040b7abf1fe5da/pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54", size = 1997163 }, + { url = "https://files.pythonhosted.org/packages/2d/bb/2db4ad1762e1c5699d9b857eeb41959191980de6feb054e70f93085e1bcd/pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f", size = 2005217 }, + { url = "https://files.pythonhosted.org/packages/53/5f/23a5a3e7b8403f8dd8fc8a6f8b49f6b55c7d715b77dcf1f8ae919eeb5628/pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362", size = 2127899 }, + { url = "https://files.pythonhosted.org/packages/c2/ae/aa38bb8dd3d89c2f1d8362dd890ee8f3b967330821d03bbe08fa01ce3766/pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96", size = 2155726 }, + { url = "https://files.pythonhosted.org/packages/98/61/4f784608cc9e98f70839187117ce840480f768fed5d386f924074bf6213c/pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e", size = 1817219 }, + { url = "https://files.pythonhosted.org/packages/57/82/bb16a68e4a1a858bb3768c2c8f1ff8d8978014e16598f001ea29a25bf1d1/pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67", size = 1985382 }, + { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, + { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, + { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 }, + { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 }, + { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 }, + { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 }, + { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 }, + { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, + { url = "https://files.pythonhosted.org/packages/29/0e/dcaea00c9dbd0348b723cae82b0e0c122e0fa2b43fa933e1622fd237a3ee/pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656", size = 1891733 }, + { url = "https://files.pythonhosted.org/packages/86/d3/e797bba8860ce650272bda6383a9d8cad1d1c9a75a640c9d0e848076f85e/pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278", size = 1768375 }, + { url = "https://files.pythonhosted.org/packages/41/f7/f847b15fb14978ca2b30262548f5fc4872b2724e90f116393eb69008299d/pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb", size = 1822307 }, + { url = "https://files.pythonhosted.org/packages/9c/63/ed80ec8255b587b2f108e514dc03eed1546cd00f0af281e699797f373f38/pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd", size = 1979971 }, + { url = "https://files.pythonhosted.org/packages/a9/6d/6d18308a45454a0de0e975d70171cadaf454bc7a0bf86b9c7688e313f0bb/pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc", size = 1987616 }, + { url = "https://files.pythonhosted.org/packages/82/8a/05f8780f2c1081b800a7ca54c1971e291c2d07d1a50fb23c7e4aef4ed403/pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b", size = 1998943 }, + { url = "https://files.pythonhosted.org/packages/5e/3e/fe5b6613d9e4c0038434396b46c5303f5ade871166900b357ada4766c5b7/pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b", size = 2116654 }, + { url = "https://files.pythonhosted.org/packages/db/ad/28869f58938fad8cc84739c4e592989730bfb69b7c90a8fff138dff18e1e/pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2", size = 2152292 }, + { url = "https://files.pythonhosted.org/packages/a1/0c/c5c5cd3689c32ed1fe8c5d234b079c12c281c051759770c05b8bed6412b5/pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35", size = 2004961 }, ] [[package]] @@ -3492,6 +3494,107 @@ hiredis = [ { name = "hiredis" }, ] +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674 }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511 }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149 }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707 }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702 }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976 }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397 }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726 }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098 }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325 }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277 }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197 }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714 }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042 }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669 }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121 }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275 }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257 }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727 }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667 }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963 }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700 }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592 }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929 }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213 }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734 }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052 }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, + { url = "https://files.pythonhosted.org/packages/44/0f/207b37e6e08d548fac0aa00bf0b7464126315d58ab5161216b8cb3abb2aa/regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b", size = 482777 }, + { url = "https://files.pythonhosted.org/packages/5a/5a/586bafa294c5d2451265d3685815606c61e620f469cac3b946fff0a4aa48/regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3", size = 287751 }, + { url = "https://files.pythonhosted.org/packages/08/92/9df786fad8a4e0766bfc9a2e334c5f0757356070c9639b2ec776b8cdef3d/regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467", size = 284552 }, + { url = "https://files.pythonhosted.org/packages/0a/27/0b3cf7d9fbe43301aa3473d54406019a7380abe4e3c9ae250bac13c4fdb3/regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd", size = 783587 }, + { url = "https://files.pythonhosted.org/packages/89/38/499b32cbb61163af60a5c5ff26aacea7836fe7e3d821e76af216e996088c/regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf", size = 822904 }, + { url = "https://files.pythonhosted.org/packages/3f/a4/e3b11c643e5ae1059a08aeef971973f0c803d2a9ae2e7a86f97c68146a6c/regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd", size = 809900 }, + { url = "https://files.pythonhosted.org/packages/5a/c8/dc7153ceb5bcc344f5c4f0291ea45925a5f00009afa3849e91561ac2e847/regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6", size = 785105 }, + { url = "https://files.pythonhosted.org/packages/2a/29/841489ea52013062b22625fbaf49b0916aeb62bae2e56425ac30f9dead46/regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f", size = 773033 }, + { url = "https://files.pythonhosted.org/packages/3e/4e/4a0da5e87f7c2dc73a8505785d5af2b1a19c66f4645b93caa50b7eb08242/regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5", size = 702374 }, + { url = "https://files.pythonhosted.org/packages/94/6e/444e66346600d11e8a0f4bb31611973cffa772d5033ba1cf1f15de8a0d52/regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df", size = 769990 }, + { url = "https://files.pythonhosted.org/packages/da/28/95c3ed6cd51b27f54e59940400e2a3ddd3f8bbbc3aaf947e57a67104ecbd/regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773", size = 775345 }, + { url = "https://files.pythonhosted.org/packages/07/5d/0cd19cf44d96a7aa31526611c24235d21d27c23b65201cb2c5cac508dd42/regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c", size = 840379 }, + { url = "https://files.pythonhosted.org/packages/2a/13/ec3f8d85b789ee1c6ffbdfd4092fd901416716317ee17bf51aa2890bac96/regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc", size = 845842 }, + { url = "https://files.pythonhosted.org/packages/50/cb/7170247e65afea2bf9204bcb2682f292b0a3a57d112478da199b84d59792/regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f", size = 775026 }, + { url = "https://files.pythonhosted.org/packages/cc/06/c817c9201f09b7d9dd033039ba90d8197c91e9fe2984141f2d1de270c159/regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4", size = 261738 }, + { url = "https://files.pythonhosted.org/packages/cf/69/c39e16320400842eb4358c982ef5fc680800866f35ebfd4dd38a22967ce0/regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001", size = 274094 }, + { url = "https://files.pythonhosted.org/packages/89/23/c4a86df398e57e26f93b13ae63acce58771e04bdde86092502496fa57f9c/regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839", size = 482682 }, + { url = "https://files.pythonhosted.org/packages/3c/8b/45c24ab7a51a1658441b961b86209c43e6bb9d39caf1e63f46ce6ea03bc7/regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e", size = 287679 }, + { url = "https://files.pythonhosted.org/packages/7a/d1/598de10b17fdafc452d11f7dada11c3be4e379a8671393e4e3da3c4070df/regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf", size = 284578 }, + { url = "https://files.pythonhosted.org/packages/49/70/c7eaa219efa67a215846766fde18d92d54cb590b6a04ffe43cef30057622/regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b", size = 782012 }, + { url = "https://files.pythonhosted.org/packages/89/e5/ef52c7eb117dd20ff1697968219971d052138965a4d3d9b95e92e549f505/regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0", size = 820580 }, + { url = "https://files.pythonhosted.org/packages/5f/3f/9f5da81aff1d4167ac52711acf789df13e789fe6ac9545552e49138e3282/regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b", size = 809110 }, + { url = "https://files.pythonhosted.org/packages/86/44/2101cc0890c3621b90365c9ee8d7291a597c0722ad66eccd6ffa7f1bcc09/regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef", size = 780919 }, + { url = "https://files.pythonhosted.org/packages/ce/2e/3e0668d8d1c7c3c0d397bf54d92fc182575b3a26939aed5000d3cc78760f/regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48", size = 771515 }, + { url = "https://files.pythonhosted.org/packages/a6/49/1bc4584254355e3dba930a3a2fd7ad26ccba3ebbab7d9100db0aff2eedb0/regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13", size = 696957 }, + { url = "https://files.pythonhosted.org/packages/c8/dd/42879c1fc8a37a887cd08e358af3d3ba9e23038cd77c7fe044a86d9450ba/regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2", size = 768088 }, + { url = "https://files.pythonhosted.org/packages/89/96/c05a0fe173cd2acd29d5e13c1adad8b706bcaa71b169e1ee57dcf2e74584/regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95", size = 774752 }, + { url = "https://files.pythonhosted.org/packages/b5/f3/a757748066255f97f14506483436c5f6aded7af9e37bca04ec30c90ca683/regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9", size = 838862 }, + { url = "https://files.pythonhosted.org/packages/5c/93/c6d2092fd479dcaeea40fc8fa673822829181ded77d294a7f950f1dda6e2/regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f", size = 842622 }, + { url = "https://files.pythonhosted.org/packages/ff/9c/daa99532c72f25051a90ef90e1413a8d54413a9e64614d9095b0c1c154d0/regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b", size = 772713 }, + { url = "https://files.pythonhosted.org/packages/13/5d/61a533ccb8c231b474ac8e3a7d70155b00dfc61af6cafdccd1947df6d735/regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57", size = 261756 }, + { url = "https://files.pythonhosted.org/packages/dc/7b/e59b7f7c91ae110d154370c24133f947262525b5d6406df65f23422acc17/regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983", size = 274110 }, +] + [[package]] name = "requests" version = "2.32.3" @@ -3507,6 +3610,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] +[[package]] +name = "responses" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/db/b949a6bf2a75c64caea0a6b39d05e433aa2e51bea78ae9d5dda1110b31a5/responses-0.21.0.tar.gz", hash = "sha256:b82502eb5f09a0289d8e209e7bad71ef3978334f56d09b444253d5ad67bf5253", size = 65501 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/ad/fdd56219f0e320293c513ef0b3cdd018802a1bcfdb29ed9bc0c3bcb97f31/responses-0.21.0-py3-none-any.whl", hash = "sha256:2dcc863ba63963c0c3d9ee3fa9507cbe36b7d7b0fccb4f0bdfd9e96c539b1487", size = 45987 }, +] + [[package]] name = "rich" version = "13.9.4" @@ -3678,8 +3794,10 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform != 'win32'", "python_full_version >= '3.8.1' and python_full_version < '3.9' and sys_platform == 'win32'", - "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform != 'win32'", - "python_full_version >= '3.9' and python_full_version < '3.13' and sys_platform == 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.12' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and sys_platform != 'win32'", + "python_full_version >= '3.9' and python_full_version < '3.12' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and sys_platform == 'win32'", "python_full_version >= '3.13' and sys_platform != 'win32'", "python_full_version >= '3.13' and sys_platform == 'win32'", ] @@ -3692,18 +3810,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/da/32/bd569256267f80b76b87d21a09795741a175778b954bee1d7b1a89852b6f/slotscheck-0.19.1-py3-none-any.whl", hash = "sha256:bff9926f8d6408ea21b6c6bbaa4389cea1682962e73ee4f30084b6d2b89260ee", size = 16995 }, ] -[[package]] -name = "smart-open" -version = "7.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/d8/1481294b2d110b805c0f5d23ef34158b7d5d4283633c0d34c69ea89bb76b/smart_open-7.0.5.tar.gz", hash = "sha256:d3672003b1dbc85e2013e4983b88eb9a5ccfd389b0d4e5015f39a9ee5620ec18", size = 71693 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/06/bc/706838af28a542458bffe74a5d0772ca7f207b5495cd9fccfce61ef71f2a/smart_open-7.0.5-py3-none-any.whl", hash = "sha256:8523ed805c12dff3eaa50e9c903a6cb0ae78800626631c5fe7ea073439847b89", size = 61387 }, -] - [[package]] name = "sniffio" version = "1.3.1" @@ -4106,6 +4212,79 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/68/2512ef887f01cdea18f74ce5ebd83785ec4d031447ec821f4f664e8c3d8f/taskgroup-0.2.1-py2.py3-none-any.whl", hash = "sha256:bff020b6e63408d1bcf952486cce05ed4c4e0747743c4762eb10b35726c89ab3", size = 13961 }, ] +[[package]] +name = "test-results-parser" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/4d/2df785a23ccec80f427a61e5dcb6ecde5884cdd57b964fafbfe90e40d741/test_results_parser-0.5.1.tar.gz", hash = "sha256:0da5124eee0783d49b27005ddcf94c708026fe8eb7435c8ce44edd5716cec0cf", size = 19069 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/55/a64e33c2ead9570a9f34cca608e8a2f6081020d4795dcfcedba39108c9c5/test_results_parser-0.5.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:4500bec02a625b4e620c1691b05fbb91417580cdd48716a86e5b0a18b111bc62", size = 1827404 }, + { url = "https://files.pythonhosted.org/packages/a3/7e/f1731206eadc29a8a77ef7d82f1b2cb580d84f57ca999dd5c48ef8798cd9/test_results_parser-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d508c22edcdbd19003d62eff758bf7b400e89b8fac8c472598de388efca2d1", size = 1041746 }, + { url = "https://files.pythonhosted.org/packages/f0/4c/e6486ebb585d9b3e8db1aecd56b243b3d0ae16904df18fb61114027294f7/test_results_parser-0.5.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbb368038846e6d029fd0fb2c839f6a018799963a84bd620752d7e0ce6551601", size = 985514 }, + { url = "https://files.pythonhosted.org/packages/82/e9/22860d637738b5bcf9c16be5486bd9b5c30ab245d8659f58ebac4b30967e/test_results_parser-0.5.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97e8e6eb9fb9f17da053eff10b5ae098d7a291b23efccba4c8530feb239b2065", size = 1101105 }, + { url = "https://files.pythonhosted.org/packages/ed/76/734fb262ef7d2f13fcded9469e6fddef909c9845974c9e46b2f28031eed8/test_results_parser-0.5.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:afae2025da71b9a8896a6be9ac266c1367346e35de89341f0b87565091aef775", size = 1170392 }, + { url = "https://files.pythonhosted.org/packages/ba/60/eae854f7770b443a7aacea46518895ea2dee47b4116768162251d9d1addc/test_results_parser-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fea31aeaddbe8c70d4a1d2a959a71ebc5afa68bc5f4ca032e91445fe987a7a8a", size = 1065336 }, + { url = "https://files.pythonhosted.org/packages/a7/d5/cb0decabccd692815ff51511084b74000c52cb9e1224f3a14ef25585d77c/test_results_parser-0.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ed2d9d4ff108354f24ee6dec35c21cf673f8ecefcc5f585391fac41cbb85b3e", size = 1058024 }, + { url = "https://files.pythonhosted.org/packages/4f/b8/fa5d56b232f7a434b500eed10ee08f9441a955010f0b523a9bd5899df602/test_results_parser-0.5.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1a8b746acb7e59db9335fb08a14558d62f968eb8c3a7fb5a696156682825caf2", size = 1192279 }, + { url = "https://files.pythonhosted.org/packages/9b/65/0d19d2509b9a520dd8cfe3ae58f1e07f37c11f8f3cadebce7b22e98db43b/test_results_parser-0.5.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0375acf2902379a35b79f9c1eae7fec43104e1c62de36b8e8611f5a6c051c2e6", size = 1219791 }, + { url = "https://files.pythonhosted.org/packages/61/a8/5ab5a8e3b2e202bd5f343fe0bbc9bbef5d78e52a78691b63302a80dd8294/test_results_parser-0.5.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6d9984769aaf7b56c7a926ababaf995f678e673fb74960ec632e1baf1030d659", size = 1169452 }, + { url = "https://files.pythonhosted.org/packages/11/23/e6f14e053abed69ded225dffcb3316c86d1d7b06f54d62674cf30b8d292d/test_results_parser-0.5.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8df70953ade97bd51445330ae4216e08b6ca68c5a6dd9788fa0c3f21d5cc03bf", size = 1210179 }, + { url = "https://files.pythonhosted.org/packages/60/dd/481afe46ee7d3030aa52c21a316377ce379f158cd155d49ae46f25b0a4fa/test_results_parser-0.5.1-cp310-none-win32.whl", hash = "sha256:4c8cd86d5a3e53fe3b7e92eba710a8e9e9f661b7f06623a299d5bf7677eed7f2", size = 716495 }, + { url = "https://files.pythonhosted.org/packages/aa/57/b37e2c5c776ed764ff7269d29cfb4f6c03e19ca129cf90e7e00d0a9debab/test_results_parser-0.5.1-cp310-none-win_amd64.whl", hash = "sha256:12d86428558b1641041bfbd20f32a4b33248c263a309113f2c03f91b7d74408a", size = 791755 }, + { url = "https://files.pythonhosted.org/packages/4f/4f/c0dee664e834bd8338511d2a60b4bd53b6ea9e3b4c390eef7b701770ba07/test_results_parser-0.5.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:d31b56f8dd757f78a1b50dbbfc5bbf953b63c30ac529d68c15d404f216851f01", size = 1826908 }, + { url = "https://files.pythonhosted.org/packages/f7/2a/addcdc4b4536ae7f77676ff673f27d6cafe5b2ac70c0859d1ad5cad0a437/test_results_parser-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f3977a7fbba8ef24a5334b882d5ff177d97452175daf701e1c12b6ce9fa6e1f", size = 1041529 }, + { url = "https://files.pythonhosted.org/packages/2a/b7/0982ae0402ae8b4486c2251641e8d689d3fd06feb11d442b026ae5635a5f/test_results_parser-0.5.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2fa603587c61b7d3f667808825f8ce50700c0b25865c873957163a4a9828af70", size = 985322 }, + { url = "https://files.pythonhosted.org/packages/03/fb/89cdfc67ec7c728df47c865f656d97891b3eaf62a2f867ec7fc46a8a2537/test_results_parser-0.5.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:029aab03f804f9a5bc94ea27713afff75ac1bca28e216b46ca6ae343bb9367e9", size = 1100810 }, + { url = "https://files.pythonhosted.org/packages/40/1d/8ecc50792408e4fbc280fca36e93dee4c61f27c8aa69aeb974e9d0b667a0/test_results_parser-0.5.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0e4f32a05eac9434d558336c4ffe6725483a7ff064d0ff3b80b593cde1c8a89", size = 1170027 }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b8042d79052f6ea9256092a2fcc0e8ee375950e0e47b7e42a9d3833d76e/test_results_parser-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b960d5f165d7812d476412746453e3c5c43457ee00ef0acc601e2c893aaf27", size = 1065038 }, + { url = "https://files.pythonhosted.org/packages/e9/b3/0b9850c3b89316db22089f9ecfe31fb1f26928bf36ae2fe1effb6e79051a/test_results_parser-0.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d7d0bbcdc024f640cf39196d3dc5b7b31f95449cd413a85d3dfd3f3f010af67d", size = 1057647 }, + { url = "https://files.pythonhosted.org/packages/80/27/a86e2a68ec45a73728d6f3dab8e6aa62136401673bbc01cc606a2ef66f80/test_results_parser-0.5.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:51d0474652a79226c36020d4d5feeda6830cccf13d3ae0613dbe07b3378e6ca2", size = 1191747 }, + { url = "https://files.pythonhosted.org/packages/26/ed/f8a9c85a19d8ebf204374b301f6d09034d9c62d2576b389370672fe13af3/test_results_parser-0.5.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:328a1fccc3e5b78ef97f3b1b416b98d4e7918d1673ae62e6904e1c3e142cf127", size = 1219577 }, + { url = "https://files.pythonhosted.org/packages/37/23/6184343d8bbf89a0a372f6f8cb6f47ba95d7a601abe64b16fcd7ffc5c1cf/test_results_parser-0.5.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:784f7325594453b5ccbb6cc73cedcbffeeb0241513594f7a2cc32c3632feda77", size = 1169162 }, + { url = "https://files.pythonhosted.org/packages/6a/d1/88bd926db8a173415f99e1136b83b12deaeded53859adf71474f5687ce2e/test_results_parser-0.5.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ccc6deede3b912a69529336a66d50d41d89efc167e86ee65d34d35aa0d1ff710", size = 1210060 }, + { url = "https://files.pythonhosted.org/packages/5b/18/e7a7a9163d41f1a5a947c33947c44ba61d92e738aeffb376fd014dcd63f2/test_results_parser-0.5.1-cp311-none-win32.whl", hash = "sha256:c875177286ec85a4c2243d9602177c95911e8979513f8165efa72d840e525e66", size = 716340 }, + { url = "https://files.pythonhosted.org/packages/2d/72/ab8db50114ff6cdb8efc9c62d7a3037b2dfc4ddfcba5c34bd665bdd73c9c/test_results_parser-0.5.1-cp311-none-win_amd64.whl", hash = "sha256:55b97d69a7b2ca99fdb0e377308cd0b5b7879e8054369e4f55afeb78315f3159", size = 791761 }, + { url = "https://files.pythonhosted.org/packages/8f/37/f86285208909cb3ff123e70d66f79c64de01e6e8c98d1379ed19626a2c8c/test_results_parser-0.5.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:ba9bbc1fff5ece1756b45439aa9b7dc7a2dd56f741ec259753c8be66188b852e", size = 1826995 }, + { url = "https://files.pythonhosted.org/packages/35/8b/ef52ef7995fb16da7095e040e739264bf3396222cc31e7aa6e9ad61d0e52/test_results_parser-0.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb2bf4c06d5908f45dee6d2e3e7d6618a30e06df22d961743383501a0d1246b4", size = 1041041 }, + { url = "https://files.pythonhosted.org/packages/1a/79/b91271004e2e61596b330926a041a6d028912d0d75f95c43cd398ac6b046/test_results_parser-0.5.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23e1aeb037fa830b7a795adc2ba526d8e9915fc56796c130eb430365547549a9", size = 985587 }, + { url = "https://files.pythonhosted.org/packages/be/69/8a805395425f15d491b935984157623607b73158b06d44f42bc052d7ccb0/test_results_parser-0.5.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2038fe9774cd93dcdc21e80593f93f4ff3013358cdd6fa1aad73ec3a0570007c", size = 1099957 }, + { url = "https://files.pythonhosted.org/packages/a5/3e/fd58eafacb9fabd6ed2997dae391bbe9f298a2c9e5c081c00d71cd45f886/test_results_parser-0.5.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d417e5887e96f4e9d239285594b94e18e19d21566ad37ae8f0c37bb571075e76", size = 1169892 }, + { url = "https://files.pythonhosted.org/packages/28/ee/7cda20c024db07f1b6512c5b7efceec25a4ad7ccb90597366b44c70f9ee0/test_results_parser-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb046178322b7a673d43920a310e0de6b68f52e651de720dc2c96ec6c49fa407", size = 1065303 }, + { url = "https://files.pythonhosted.org/packages/e3/fe/e6f72079f59457de68db63315fe3ae86b0e2f61460374f96464215b7f752/test_results_parser-0.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:49a6e8566f5e15dbad6d328c1a85b155cf91886e49c823e7c9843a3038af3bc0", size = 1058017 }, + { url = "https://files.pythonhosted.org/packages/1a/47/9a2bb385ccb4b53ef27e107dd14a2016dd4a47dd57160fb3a1b9d12a728c/test_results_parser-0.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b618d6069c2596eb446869b8adaf88725fa98cd3ae010272291f7491dfe8fd2c", size = 1190694 }, + { url = "https://files.pythonhosted.org/packages/ea/18/9cc3eae2b2f64bb07345676b38730d809c44b34da13517b809a0d8cffbce/test_results_parser-0.5.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:cf1cb2561f138ca62263a604a1f8dbf9d202ce331ffee983fe138e63f367199f", size = 1218810 }, + { url = "https://files.pythonhosted.org/packages/37/63/00287c717f92637ea5349a96e602f95a875913ecb9ef6c213bbe844c1c54/test_results_parser-0.5.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:32963396000dde8242fd01301a972227757f3523e04a578d42cbfc1ccd7f3396", size = 1168376 }, + { url = "https://files.pythonhosted.org/packages/43/84/5563acca5d0f8f6fd9e06d952ebe61791cf4f427c49f88bec4da92455ce7/test_results_parser-0.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:da865519cf577aa7fd900e4f42b4bfdaef25e91ca0ef889cf50a4ed5bab5db02", size = 1209821 }, + { url = "https://files.pythonhosted.org/packages/13/49/cd9c8252f0e7f96b3eb297223bce2adbcd4cfbc95884bdb49c6af5576b62/test_results_parser-0.5.1-cp312-none-win32.whl", hash = "sha256:204f29ddac9f0573130c71da9f5e0c992c16ebb9dac61482d1f38495bf6a0c65", size = 716346 }, + { url = "https://files.pythonhosted.org/packages/94/2e/2c9df60b077e072ca7e379f558bfdb88cfd4278809f8d1813779e7c0ad94/test_results_parser-0.5.1-cp312-none-win_amd64.whl", hash = "sha256:2b6ecb66679a49f8ead6d2dadf4bd7f31a50b7240fbe0cb91e6a6dbb8a0f0ab5", size = 791054 }, + { url = "https://files.pythonhosted.org/packages/9a/b1/a66bccbfeb4fb769202ddadf3c1fe02627a636098bce5dec4dde2d5119af/test_results_parser-0.5.1-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77982ab60c86c64c4db59869feb0791412698b1b7b3d10336c3bbaf07410cfba", size = 1829259 }, + { url = "https://files.pythonhosted.org/packages/d0/7e/dd446cd5b5f7be5f28106bf7e6de724a299c2309d5a205e56bcd63949f6d/test_results_parser-0.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716ae04d25fc7e93fe185858a6c8910a1f22bc6e31eb01891fadd8fa67e17bbc", size = 1041720 }, + { url = "https://files.pythonhosted.org/packages/74/a3/152cd33b3ef868d974b9c032ac2487ae4891cab8d3c74cf9ad7d561b1081/test_results_parser-0.5.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:121b620ebda57b5800b2f3dde63c2f129641a748aa92d0d1f5c0541da7ff2b6c", size = 986862 }, + { url = "https://files.pythonhosted.org/packages/2c/98/ce9b6e76b4e753b4b8a5d88559cb5afcf81bee86d8a2e8497ee92070ae6c/test_results_parser-0.5.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:669334cf3d0ef4c1319def5c1050676599ec4327ad530047b820cd81aa923718", size = 1102096 }, + { url = "https://files.pythonhosted.org/packages/53/7c/4e6e6a601c7d886bbc4d2aa47f2225daf95b89fa4aa4908e118bd7fe96ca/test_results_parser-0.5.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a864ad20a7b6060b9c066258b834a4be58d00cba19bfcd568a7fa24154aa6a12", size = 1170285 }, + { url = "https://files.pythonhosted.org/packages/12/aa/b6a2a1781ddac08caed45590c97630141d43399eb06c35fbf119fd29c827/test_results_parser-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d2c9ac44940962f125e1764b6b6953b8cbcf2c96740134e04c734ef6f3f0674", size = 1065924 }, + { url = "https://files.pythonhosted.org/packages/3c/b0/054609a9bf26dfdd32466e5f79d5796b7cb653422f7769d9dd15d0b50ee4/test_results_parser-0.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5aa5216b2cde12cc23ed02484f31cbdb1d90dc8ab4f87a1c72e91b7c4a72f70e", size = 1058514 }, + { url = "https://files.pythonhosted.org/packages/7d/e8/fc492323dc316fece37c002f3851666da6e36d62ce591c8ffcd91ea49522/test_results_parser-0.5.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6b6eb33e3df948d2e5872e709de7cf4df0dbd55fa1dfe818f7af8ee532adf0c0", size = 1194090 }, + { url = "https://files.pythonhosted.org/packages/42/b1/c184c0a99ff93f18ca9a4e682f4e00c382bf1a619e3efdf7bfdf47379a59/test_results_parser-0.5.1-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:f0f38f5940f43fbb05bf7413f59899b045ba0d5a64f2f1743ffcf66364ae7501", size = 1221008 }, + { url = "https://files.pythonhosted.org/packages/97/17/062d2e3530734c18782431a35f02a52a9bd7170ce9372263877740bf9e10/test_results_parser-0.5.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:1627c91a44e08fa1454cf241c24682ac0af71e12acca293acece49b1bdffc532", size = 1170356 }, + { url = "https://files.pythonhosted.org/packages/62/30/8440187e6f6eeb9eae873b3cc87c4c3d56f864585a6e67265c8e68f7e83b/test_results_parser-0.5.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:390dc5c4fa402e9084f39da7ff5b3c0e8424ba305bfcd5dbc6143b21b64cfd68", size = 1210902 }, + { url = "https://files.pythonhosted.org/packages/5d/e2/5adac65bccae4d54965c16252fc574048356539a2a6451edf52e3f053b9e/test_results_parser-0.5.1-cp38-none-win32.whl", hash = "sha256:f755e76f5c9056fad3d9a20f55b7059c6cb7ad9e534da6f5e68e15988bce35fd", size = 717202 }, + { url = "https://files.pythonhosted.org/packages/8b/45/18931930c0e25f2bf017e05bc7e98b61a14862e7735bfc2a2446372b0250/test_results_parser-0.5.1-cp38-none-win_amd64.whl", hash = "sha256:f365cb1acd86d7713266af2cc45094938fcc45c53322fac76ef27376e2546cf3", size = 792306 }, + { url = "https://files.pythonhosted.org/packages/7f/e7/08ccef1e07ec456bd9cb1bab417e94667ed7db0dae2a57d599079968ec6a/test_results_parser-0.5.1-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f614764db75e87b9ffdfa9edf45327b75096354fc1927cf9a2dcc7ba7f0eb10c", size = 1828748 }, + { url = "https://files.pythonhosted.org/packages/f9/74/93bba7f847e8e4906093c7d0d8817d6b163a19588dfa368cf1d95e6df587/test_results_parser-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf1c72010e7f2255116d3b8f182206829ff56587d447a896d0d3452330f6479c", size = 1041742 }, + { url = "https://files.pythonhosted.org/packages/f7/df/d129cd063895a88769c3a49e55a8f530dc013f744a267590b5b7c79a1235/test_results_parser-0.5.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5cc8614fca722de8dbb426d36aea77bb80e995692beee48947f3a2f1a314d5fe", size = 986924 }, + { url = "https://files.pythonhosted.org/packages/99/89/fa8d4c0dc36f77cb2374cb108a5c925754360f8d6181fcf5d4ed62c852ef/test_results_parser-0.5.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72d11c143e714060da377d4268f2fbd41582a7588eab195d30926004b1741009", size = 1102595 }, + { url = "https://files.pythonhosted.org/packages/3a/61/b96256345252d7204d72a0cc0dbc0542382b472b45c7eda562a1aaf09492/test_results_parser-0.5.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10aadf7ba1a3a1f0aeed5188475201825fa7b28b91448f322eb3d475288c4fdf", size = 1170403 }, + { url = "https://files.pythonhosted.org/packages/9c/4d/756c78478665e5604df0bfd0f00e0e42d0787aa25ea2c55fa6e66a950445/test_results_parser-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba83c336693157f5f13c0d42af93635bad33b878ac02661cbc1c46b2d19ba06", size = 1065856 }, + { url = "https://files.pythonhosted.org/packages/a2/ad/643ea83df65641f6665ba59d510fb3dac39ad5c8bb043f2a23167d36ab81/test_results_parser-0.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5326f4d37a95f481da80a32efcd52f5438a0a8b950b9421f6021b44aab5a90a7", size = 1058966 }, + { url = "https://files.pythonhosted.org/packages/9c/e4/66ae65de052744f0730f6c9743f70af0b19bfab4c819f9cc071680e9d5e3/test_results_parser-0.5.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:897f591075fc2cb209efca80241afb16774f18bd675cb0c444bd260e84f92f10", size = 1194330 }, + { url = "https://files.pythonhosted.org/packages/ea/ac/1bf09c540b3d35ba71f68c51c19fa2a3c3b150a5aff916e586aa8711cd32/test_results_parser-0.5.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:d8044c7312f6f2bdf4b6396a8ebac403d9cdd438bf183534cc77988f0bce5422", size = 1221088 }, + { url = "https://files.pythonhosted.org/packages/20/a6/e8e40b2fada69d4adad96ca4859500f776f4db65ae22f6c041fb676b253b/test_results_parser-0.5.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9fa60b3aeead1e1b6d007ffe4b9017585aed6411845eec9ad7f50aa827d4edc0", size = 1170962 }, + { url = "https://files.pythonhosted.org/packages/a0/18/ddfc010d51731f39202cedeb5a2ebcafca2a58a5bf913f983f070d415117/test_results_parser-0.5.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ec96e4cbce426f58221618c28cbab8941e0d73417125624c35a46ea27029d0d", size = 1211134 }, + { url = "https://files.pythonhosted.org/packages/3a/9a/4b5684d28faa1821e10ac5a53f8d8baae5c93abff0f50af31957502ac2b5/test_results_parser-0.5.1-cp39-none-win32.whl", hash = "sha256:b96c8aeaa5a4d53568bc3e28b1a36c18ecdbb9c3ff742238d49b65a911eae984", size = 717283 }, + { url = "https://files.pythonhosted.org/packages/0b/e5/f3e0947c3b4b01aa473a62b2f48b28983350819d4002885c0cd1575e36a4/test_results_parser-0.5.1-cp39-none-win_amd64.whl", hash = "sha256:d6410abe17af4de217556ca0a6df7139e57a8944fcb22bd1acca24af435e340c", size = 793215 }, +] + [[package]] name = "time-machine" version = "2.15.0" @@ -4251,45 +4430,70 @@ wheels = [ [[package]] name = "tree-sitter" -version = "0.21.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/39/9e/b7cb190aa08e4ea387f2b1531da03efb4b8b033426753c0b97e3698645f6/tree-sitter-0.21.3.tar.gz", hash = "sha256:b5de3028921522365aa864d95b3c41926e0ba6a85ee5bd000e10dc49b0766988", size = 155688 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/b3/5507348eee41af3abf537607779c87de9141fc41af5aa547ff5c1a87fcf6/tree_sitter-0.21.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:351f302b6615230c9dac9829f0ba20a94362cd658206ca9a7b2d58d73373dfb0", size = 133430 }, - { url = "https://files.pythonhosted.org/packages/a5/24/05a76f662445ebdebd00e12bc4c9ebf974a559bb7f4863dc1def775add39/tree_sitter-0.21.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:766e79ae1e61271e7fdfecf35b6401ad9b47fc07a0965ad78e7f97fddfdf47a6", size = 126087 }, - { url = "https://files.pythonhosted.org/packages/64/74/2c9dc1acb4c43b9c15765ab0fb4babb76e49e8198889dfc730bc1e906a82/tree_sitter-0.21.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c4d3d4d4b44857e87de55302af7f2d051c912c466ef20e8f18158e64df3542a", size = 485385 }, - { url = "https://files.pythonhosted.org/packages/06/a3/9f65bcb73947bf4d16e816fa547e1edfe411a530ff3370c1ae10c5bc21d8/tree_sitter-0.21.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84eedb06615461b9e2847be7c47b9c5f2195d7d66d31b33c0a227eff4e0a0199", size = 496711 }, - { url = "https://files.pythonhosted.org/packages/88/68/c916a2669ff92f8e66d519d5df20d36e0eac0dd178a77169ae8c8a7c3e08/tree_sitter-0.21.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9d33ea425df8c3d6436926fe2991429d59c335431bf4e3c71e77c17eb508be5a", size = 481965 }, - { url = "https://files.pythonhosted.org/packages/42/6e/b8bf5f75fc6485a429e2b6f71aaed2666dba483b875fbd76a7b007f85073/tree_sitter-0.21.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fae1ee0ff6d85e2fd5cd8ceb9fe4af4012220ee1e4cbe813305a316caf7a6f63", size = 492782 }, - { url = "https://files.pythonhosted.org/packages/16/bf/c6ee8d9287846912f427e1d8f1f7266e612a1d6ba161517c793e83f620cf/tree_sitter-0.21.3-cp310-cp310-win_amd64.whl", hash = "sha256:bb41be86a987391f9970571aebe005ccd10222f39c25efd15826583c761a37e5", size = 109732 }, - { url = "https://files.pythonhosted.org/packages/63/b5/72657d5874d7f0a722c0288f04e5e2bc33d7715b13a858885b6593047dce/tree_sitter-0.21.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:54b22c3c2aab3e3639a4b255d9df8455da2921d050c4829b6a5663b057f10db5", size = 133429 }, - { url = "https://files.pythonhosted.org/packages/d3/64/c5d397efbb6d0dbed4254cd2ca389ed186a2e1e7e32661059f6eeaaf6424/tree_sitter-0.21.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ab6e88c1e2d5e84ff0f9e5cd83f21b8e5074ad292a2cf19df3ba31d94fbcecd4", size = 126088 }, - { url = "https://files.pythonhosted.org/packages/ba/88/941669acc140f94e6c6196d6d8676ac4cd57c3b3fbc1ee61bb11c1b2da71/tree_sitter-0.21.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3fd34ed4cd5db445bc448361b5da46a2a781c648328dc5879d768f16a46771", size = 487879 }, - { url = "https://files.pythonhosted.org/packages/29/4e/798154f2846d620bf9fa3bc244e056d4858f2108f834656bf9f1219d4f30/tree_sitter-0.21.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fabc7182f6083269ce3cfcad202fe01516aa80df64573b390af6cd853e8444a1", size = 498776 }, - { url = "https://files.pythonhosted.org/packages/6e/d1/05ea77487bc7a3946d0e80fb6c5cb61515953f5e7a4f6804b98e113ed4b0/tree_sitter-0.21.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f874c3f7d2a2faf5c91982dc7d88ff2a8f183a21fe475c29bee3009773b0558", size = 483348 }, - { url = "https://files.pythonhosted.org/packages/42/fa/bf938e7c6afbc368d503deeda060891c3dba57e2d1166e4b884271f55616/tree_sitter-0.21.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ee61ee3b7a4eedf9d8f1635c68ba4a6fa8c46929601fc48a907c6cfef0cfbcb2", size = 493757 }, - { url = "https://files.pythonhosted.org/packages/1d/a7/98da36a6eab22f5729989c9e0137b1b04cbe368d1e024fccd72c0b00719b/tree_sitter-0.21.3-cp311-cp311-win_amd64.whl", hash = "sha256:0b7256c723642de1c05fbb776b27742204a2382e337af22f4d9e279d77df7aa2", size = 109735 }, - { url = "https://files.pythonhosted.org/packages/81/e1/cceb06eae617a6bf5eeeefa9813d9fd57d89b50f526ce02486a336bcd2a9/tree_sitter-0.21.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:669b3e5a52cb1e37d60c7b16cc2221c76520445bb4f12dd17fd7220217f5abf3", size = 133640 }, - { url = "https://files.pythonhosted.org/packages/f6/ce/ac14e5cbb0f30b7bd338122491ee2b8e6c0408cfe26741cbd66fa9b53d35/tree_sitter-0.21.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2aa2a5099a9f667730ff26d57533cc893d766667f4d8a9877e76a9e74f48f0d3", size = 125954 }, - { url = "https://files.pythonhosted.org/packages/c2/df/76dbf830126e566c48db0d1bf2bef3f9d8cac938302a9b0f762ded8206c2/tree_sitter-0.21.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3e06ae2a517cf6f1abb682974f76fa760298e6d5a3ecf2cf140c70f898adf0", size = 490092 }, - { url = "https://files.pythonhosted.org/packages/ec/87/0c3593552cb0d09ab6271d37fc0e6a9476919d2a975661d709d4b3289fc7/tree_sitter-0.21.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af992dfe08b4fefcfcdb40548d0d26d5d2e0a0f2d833487372f3728cd0772b48", size = 502155 }, - { url = "https://files.pythonhosted.org/packages/05/92/b2cb22cf52c18fcc95662897f380cf230c443dfc9196b872aad5948b7bb3/tree_sitter-0.21.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c7cbab1dd9765138505c4a55e2aa857575bac4f1f8a8b0457744a4fefa1288e6", size = 486020 }, - { url = "https://files.pythonhosted.org/packages/4a/ea/69b543538a46d763f3e787234d1617b718ab90f32ffa676ca856f1d9540e/tree_sitter-0.21.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e1e66aeb457d1529370fcb0997ae5584c6879e0e662f1b11b2f295ea57e22f54", size = 496348 }, - { url = "https://files.pythonhosted.org/packages/eb/4f/df4ea84476443021707b537217c32147ccccbc3e10c17b216a969991e1b3/tree_sitter-0.21.3-cp312-cp312-win_amd64.whl", hash = "sha256:013c750252dc3bd0e069d82e9658de35ed50eecf31c6586d0de7f942546824c5", size = 109771 }, - { url = "https://files.pythonhosted.org/packages/a9/08/3a2faaca576eca4ba9d25ff54f5e3c9fe7bdde7b748208dad7c033106f77/tree_sitter-0.21.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4986a8cb4acebd168474ec2e5db440e59c7888819b3449a43ce8b17ed0331b07", size = 133680 }, - { url = "https://files.pythonhosted.org/packages/d4/9c/0465da56c8ca82a366d08f62be21df61f86116fd63dd70fb9bb94c67b21c/tree_sitter-0.21.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6e217fee2e7be7dbce4496caa3d1c466977d7e81277b677f954d3c90e3272ec2", size = 126286 }, - { url = "https://files.pythonhosted.org/packages/81/aa/28c6e2ee7506b6627ba5a35dcfa9042043a32d14cecb5bc7d8fa6f0a1441/tree_sitter-0.21.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f32a88afff4f2bc0f20632b0a2aa35fa9ae7d518f083409eca253518e0950929", size = 493104 }, - { url = "https://files.pythonhosted.org/packages/ec/19/5e964315acf83dc84ddf7d1abadda3d7950a743247cb331c6dea0664fd9f/tree_sitter-0.21.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3652ac9e47cdddf213c5d5d6854194469097e62f7181c0a9aa8435449a163a9", size = 503895 }, - { url = "https://files.pythonhosted.org/packages/55/fe/bb1ef3feb6e11ff7feefe423fbb833ede7b42f20dd7742cfa7b163d6127a/tree_sitter-0.21.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:60b4df3298ff467bc01e2c0f6c2fb43aca088038202304bf8e41edd9fa348f45", size = 490926 }, - { url = "https://files.pythonhosted.org/packages/b8/05/dffdba16b6d2295c24e51a812481fe27907213415b306f99b84c1b518506/tree_sitter-0.21.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:00e4d0c99dff595398ef5e88a1b1ddd53adb13233fb677c1fd8e497fb2361629", size = 499248 }, - { url = "https://files.pythonhosted.org/packages/cf/67/8a83076e07e57f809bf308973aac5c21f8a2e5757ddd3429a14986a76405/tree_sitter-0.21.3-cp38-cp38-win_amd64.whl", hash = "sha256:50c91353a26946e4dd6779837ecaf8aa123aafa2d3209f261ab5280daf0962f5", size = 110055 }, - { url = "https://files.pythonhosted.org/packages/29/ea/2f848cf720dce4835388f30dca377bee9054461c51cdd0340c82e2d2fe32/tree_sitter-0.21.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b17b8648b296ccc21a88d72ca054b809ee82d4b14483e419474e7216240ea278", size = 133664 }, - { url = "https://files.pythonhosted.org/packages/9e/33/db09a0b0f7ca96bbf53e2a5c024bc1f0a138babb2f4472b4954627778d79/tree_sitter-0.21.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f2f057fd01d3a95cbce6794c6e9f6db3d376cb3bb14e5b0528d77f0ec21d6478", size = 126419 }, - { url = "https://files.pythonhosted.org/packages/4f/22/e01759e2303dc9db719f9985d6e980ddd24ac2a9136d5d06ee7c7e13f25a/tree_sitter-0.21.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:839759de30230ffd60687edbb119b31521d5ac016749358e5285816798bb804a", size = 487811 }, - { url = "https://files.pythonhosted.org/packages/0a/5d/afef7068b7eb3f5b50b4c0ae0fff43511f37263876dbb487158b22f89bfb/tree_sitter-0.21.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df40aa29cb7e323898194246df7a03b9676955a0ac1f6bce06bc4903a70b5f7", size = 498473 }, - { url = "https://files.pythonhosted.org/packages/44/f1/18534c57d8e0bbaae6fe0d00d7e4ae3394b0be0b2b94b6aba370cdbd3be6/tree_sitter-0.21.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1d9be27dde007b569fa78ff9af5fe40d2532c998add9997a9729e348bb78fa59", size = 484418 }, - { url = "https://files.pythonhosted.org/packages/b0/57/f2b16d902e808ccf99740da2cf199043e12783692fe631e857259fbe279f/tree_sitter-0.21.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4ac87735e6f98fe085244c7c020f0177d13d4c117db72ba041faa980d25d69d", size = 494421 }, - { url = "https://files.pythonhosted.org/packages/44/cc/ceef3adeeb998578eaf199632b64e34a6cb2f8186e3856c9796d4671a84e/tree_sitter-0.21.3-cp39-cp39-win_amd64.whl", hash = "sha256:fbbd137f7d9a5309fb4cb82e2c3250ba101b0dd08a8abdce815661e6cf2cbc19", size = 110032 }, +version = "0.20.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools", marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/64/71b3a0ff7d0d89cb333caeca01992099c165bdd663e7990ea723615e60f4/tree_sitter-0.20.4.tar.gz", hash = "sha256:6adb123e2f3e56399bbf2359924633c882cc40ee8344885200bca0922f713be5", size = 140726 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/05/56d53a682a9a00874a7d6985fc37d872238b154e19263c15a638698784d8/tree_sitter-0.20.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c259b9bcb596e54f54713eb3951226fc834d65289940f4bfdcdf519f08e8e876", size = 257465 }, + { url = "https://files.pythonhosted.org/packages/73/83/721fc2b95a03b88248cd3c1d5d12688c4119c66937a28f8c791b350d561f/tree_sitter-0.20.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88da7e2e4c69881cd63916cc24ae0b809f96aae331da45b418ae6b2d1ed2ca19", size = 137996 }, + { url = "https://files.pythonhosted.org/packages/7a/1f/bfa3b262b336f69559711a658bbea28fc8b70d1a2136307ef82f72f07eb4/tree_sitter-0.20.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66a68b156ba131e9d8dff4a1f72037f4b368cc50c58f18905a91743ae1d1c795", size = 128706 }, + { url = "https://files.pythonhosted.org/packages/7d/67/091589b7c40fafb3990db35d32129071631915bf5f48dcdd8ce70fe3c74d/tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae28e25d551f406807011487bdfb9728041e656b30b554fa7f3391ab64ed69f9", size = 477118 }, + { url = "https://files.pythonhosted.org/packages/64/16/8a4b1f8884967be6e9c68dd1019a1809acc6339a60b84d179ed0bd707d14/tree_sitter-0.20.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b10c9c69e825ba65cf9b0f77668bf33e70d2a5764b64ad6f133f8cc9220f09", size = 488233 }, + { url = "https://files.pythonhosted.org/packages/62/4c/38914d44c4ef1625de248812363c198623502d08e71feeedf182ce814362/tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7c18c64ddd44b75b7e1660b9793753eda427e4b145b6216d4b2d2e9b200c74f2", size = 472289 }, + { url = "https://files.pythonhosted.org/packages/1b/47/6fc30db3ede826301117eae5347a9f5ee9d21f685678868fab050f3c88a1/tree_sitter-0.20.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9e9e594bbefb76ad9ea256f5c87eba7591b4758854d3df83ce4df415933a006", size = 483107 }, + { url = "https://files.pythonhosted.org/packages/1c/14/209398d8932083171b72ab1cb094ce42beea60da0ea08622f90aee033600/tree_sitter-0.20.4-cp310-cp310-win32.whl", hash = "sha256:b4755229dc18644fe48bcab974bde09b171fcb6ef625d3cb5ece5c6198f4223e", size = 95127 }, + { url = "https://files.pythonhosted.org/packages/91/dd/b10f5ad674a61d557883997ca8db641a3be2325831c36d6c2d44b15a6610/tree_sitter-0.20.4-cp310-cp310-win_amd64.whl", hash = "sha256:f792684cee8a46d9194d9f4223810e54ccc704470c5777538d59fbde0a4c91bf", size = 107615 }, + { url = "https://files.pythonhosted.org/packages/ab/a7/ec261bea29ca9078759253cb352ef5f6e559b8a23a4ae7330f6c40082807/tree_sitter-0.20.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9d22ee75f45836554ee6a11e50dd8f9827941e67c49fce9a0790245b899811a9", size = 257466 }, + { url = "https://files.pythonhosted.org/packages/af/0a/a6e47c589b671ea1b48c314ca5fe9f40a77d0c3054d5117435fa8c15f372/tree_sitter-0.20.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a0ffd76dd991ba745bb5d0ba1d583bec85726d3ddef8c9685dc8636a619adde", size = 137996 }, + { url = "https://files.pythonhosted.org/packages/f4/5b/7a060f566389ea65614ae40464ff275473282cefb316b3c1865b4c684af8/tree_sitter-0.20.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:060d4e5b803be0975f1ac46e54a292eab0701296ccd912f6cdac3f7331e29143", size = 128706 }, + { url = "https://files.pythonhosted.org/packages/7b/c6/36a6a08eaef5cf7f8beef91666c9f1f45ec0771fa5f9a67f1de86f2d0ec8/tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:822e02366dbf223697b2b56b8f91aa5b60571f9fe7c998988a381db1c69604e9", size = 479509 }, + { url = "https://files.pythonhosted.org/packages/3f/ce/80b12e0e470bf939dd57507fedad5cdc30e92391703031561e829d6a1819/tree_sitter-0.20.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:527ca72c6a8f60fa719af37fa86f58b7ad0e07b8f74d1c1c7e926c5c888a7e6b", size = 490490 }, + { url = "https://files.pythonhosted.org/packages/98/a4/61236fe6303890ff7a2d23f8e05eb4aa372741de2e0bd65baa4f2961c359/tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a418ca71309ea7052e076f08d623f33f58eae01a8e8cdc1e6d3a01b5b8ddebfe", size = 473500 }, + { url = "https://files.pythonhosted.org/packages/91/48/b3a8e2566256e18da3094b42288cb3e00ed5f6e2078aff04bfaba85776f6/tree_sitter-0.20.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c3ba2561b61a83c28ca06a0bce2a5ffcfb6b39f9d27a45e5ebd9cad2bedb7f", size = 484353 }, + { url = "https://files.pythonhosted.org/packages/bf/14/fd7302314acd1fdc38ffb19fa5d0779ff53a333cf4e5226fab36eaba4cce/tree_sitter-0.20.4-cp311-cp311-win32.whl", hash = "sha256:8d04c75a389b2de94952d602264852acff8cd3ed1ccf8a2492a080973d5ddd58", size = 95127 }, + { url = "https://files.pythonhosted.org/packages/2e/41/3c1534be0d0fce9ea6ccebd1855ef500afa05c54bbbce397988c6b592fb8/tree_sitter-0.20.4-cp311-cp311-win_amd64.whl", hash = "sha256:ba9215c0e7529d9eb370528e5d99b7389d14a7eae94f07d14fa9dab18f267c62", size = 107617 }, + { url = "https://files.pythonhosted.org/packages/ac/17/cd3fe4ea74a33a1737e42cab20dc48f13b7fc855af99301d43679bc124ac/tree_sitter-0.20.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4c1af5ed4306071d30970c83ec882520a7bf5d8053996dbc4aa5c59238d4990", size = 257380 }, + { url = "https://files.pythonhosted.org/packages/dd/e3/e028aab9e571646f1e8b5b4297f41a90d88f2b6c275989053d2d73a588aa/tree_sitter-0.20.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9d70bfa550cf22c9cea9b3c0d18b889fc4f2a7e9dcf1d6cc93f49fa9d4a94954", size = 138063 }, + { url = "https://files.pythonhosted.org/packages/20/81/a908c7acf36fdd01cd7277e34d7e26c72252cd99eacb84123824a52d1267/tree_sitter-0.20.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6de537bca0641775d8d175d37303d54998980fc0d997dd9aa89e16b415bf0cc3", size = 128574 }, + { url = "https://files.pythonhosted.org/packages/04/a5/a49254e0314df03d1c368ac80bff8f1307a41844ee0d55161ab68862ea93/tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1c0f8c0e3e50267566f5116cdceedf4e23e8c08b55ef3becbe954a11b16e84", size = 481940 }, + { url = "https://files.pythonhosted.org/packages/ea/2e/82c394b3fb46ca0879a66837c917b0856c612c71ea0d8301a2cd659498bb/tree_sitter-0.20.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef2ee6d9bb8e21713949e5ff769ed670fe1217f95b7eeb6c675788438c1e6e", size = 493851 }, + { url = "https://files.pythonhosted.org/packages/10/28/a6ccb6484ee7af1587f82e91a94dc2d9502108b43a7a51b8ab19d9d603fb/tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b6fd1c881ab0de5faa67168db2d001eee32be5482cb4e0b21b217689a05b6fe4", size = 476635 }, + { url = "https://files.pythonhosted.org/packages/5b/4d/9ca258188c19e5588e30c2862879c6a061d17a33cd1c24321d3d9b029591/tree_sitter-0.20.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf47047420021d50aec529cb66387c90562350b499ddf56ecef1fc8255439e30", size = 487905 }, + { url = "https://files.pythonhosted.org/packages/ba/e9/4797c420e71946040f44a88e095f2dbd2c20cf517eca59a3c79a0e10adf6/tree_sitter-0.20.4-cp312-cp312-win32.whl", hash = "sha256:c16b48378041fc9702b6aa3480f2ffa49ca8ea58141a862acd569e5a0679655f", size = 95293 }, + { url = "https://files.pythonhosted.org/packages/7a/47/3e8491b14d0b6aa671a34a60c9347702f276fc4967e4c92273d5bcfd5c2e/tree_sitter-0.20.4-cp312-cp312-win_amd64.whl", hash = "sha256:973e871167079a1b1d7304d361449253efbe2a6974728ad563cf407bd02ddccb", size = 107456 }, + { url = "https://files.pythonhosted.org/packages/17/86/2f9da3757ca7cc4919f244a273e6cee5cb138233644f43699ce7db31aac3/tree_sitter-0.20.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f42fd1104efaad8151370f1936e2a488b7337a5d24544a9ab59ba4c4010b1272", size = 257444 }, + { url = "https://files.pythonhosted.org/packages/be/79/08b08e1a82d9e5f78d2b7598c3f246aa0643299377a94e4139d0acf08c35/tree_sitter-0.20.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7859717c5d62ee386b3d036cab8ed0f88f8c027b6b4ae476a55a8c5fb8aab713", size = 137984 }, + { url = "https://files.pythonhosted.org/packages/e9/c7/441229a9f90614b042e4d5a2a1bb5986aea0b98e495ddb9dbbdae3ee8dd2/tree_sitter-0.20.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdd361fe1cc68db68b4d85165641275e34b86cc26b2bab932790204fa14824dc", size = 128658 }, + { url = "https://files.pythonhosted.org/packages/77/9e/cb46b11abb6f8786cd554f496000c12d2446445046b138e6049f0ff16140/tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b8d7539075606027b67764543463ff2bc4e52f4158ef6dc419c9f5625aa5383", size = 482336 }, + { url = "https://files.pythonhosted.org/packages/65/0b/9fc79b4df91a4afcc6ba2829bc7f1cd48c194cce8f6ad52cd3987f3bb127/tree_sitter-0.20.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78e76307f05aca6cde72f3307b4d53701f34ae45f2248ceb83d1626051e201fd", size = 492362 }, + { url = "https://files.pythonhosted.org/packages/26/aa/1cb203cdbf0798151811812a9857853ac109f1fce9eaf3efa240321e3f97/tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd8c352f4577f61098d06cf3feb7fd214259f41b5036b81003860ed54d16b448", size = 478523 }, + { url = "https://files.pythonhosted.org/packages/c0/1b/9c01dfc19c87101e8ddde99ee001fbdbf0a7033bad801eee4d243849d49f/tree_sitter-0.20.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:281f3e5382d1bd7fccc88d1afe68c915565bc24f8b8dd4844079d46c7815b8a7", size = 487739 }, + { url = "https://files.pythonhosted.org/packages/31/2e/4aba9c2ce846354033ddad44fc86ac3dcb58d57eaaf3fa93d9080fad28dd/tree_sitter-0.20.4-cp38-cp38-win32.whl", hash = "sha256:6a77ac3cdcddd80cdd1fd394318bff99f94f37e08d235aaefccb87e1224946e5", size = 95146 }, + { url = "https://files.pythonhosted.org/packages/9a/57/2f1295482ab62c0f3e680c92d73a9dccf41975220518ecf93ebdba0d795b/tree_sitter-0.20.4-cp38-cp38-win_amd64.whl", hash = "sha256:8eee8adf54033dc48eab84b040f4d7b32355a964c4ae0aae5dfbdc4dbc3364ca", size = 107802 }, + { url = "https://files.pythonhosted.org/packages/d8/f5/955c42068c00064cf9dea44e82332920304a26ce8e50973be35bfd07a078/tree_sitter-0.20.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e89f6508e30fce05e2c724725d022db30d877817b9d64f933506ffb3a3f4a2c2", size = 257489 }, + { url = "https://files.pythonhosted.org/packages/15/b8/c376e34b956067ae7a6e21bdd0fbd451db0cc1154d3246e9f38238ef06b7/tree_sitter-0.20.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7fb6286bb1fae663c45ff0700ec88fb9b50a81eed2bae8a291f95fcf8cc19547", size = 138000 }, + { url = "https://files.pythonhosted.org/packages/ed/71/8aaa4e1921875d15cf1b00558f05bba01bcb40737452d2be972cd90291fa/tree_sitter-0.20.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11e93f8b4bbae04070416a82257a7ab2eb0afb76e093ae3ea73bd63b792f6846", size = 128702 }, + { url = "https://files.pythonhosted.org/packages/46/01/1da76434037cdf05148ebd08dd08454589f59fdb5ec9a98b7fed1bff71a7/tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8250725c5f78929aeb2c71db5dca76f1ef448389ca16f9439161f90978bb8478", size = 476427 }, + { url = "https://files.pythonhosted.org/packages/90/05/0d5c894daf7136c333518919e485501ded65ddbd7dea30aa97076286bcf0/tree_sitter-0.20.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d404a8ca9de9b0843844f0cd4d423f46bc46375ab8afb63b1d8ec01201457ac8", size = 487589 }, + { url = "https://files.pythonhosted.org/packages/43/17/fbb1bc611e258f547c04725e69f0aeefa1f2664be481b0a82aa2c4468854/tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0f2422c9ee70ba972dfc3943746e6cf7fc03725a866908950245bda9ccfc7301", size = 471810 }, + { url = "https://files.pythonhosted.org/packages/78/4f/a9aedcaa6472d529081cd08a470cc28f1d73fc7266e5b2f806126972fabe/tree_sitter-0.20.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21a937942e4729abbe778a609d2c218574436cb351c36fba89ef3c8c6066ec78", size = 482378 }, + { url = "https://files.pythonhosted.org/packages/e6/b4/fae0ddd75a342024d81deb35ab7f2f32983d24e05a5b7a42c88e3fcd4322/tree_sitter-0.20.4-cp39-cp39-win32.whl", hash = "sha256:427a9a39360cc1816e28f8182550e478e4ba983595a2565ab9dfe32ea1b03fd7", size = 95207 }, + { url = "https://files.pythonhosted.org/packages/d0/17/0195323d376bf23e43377c210b445a60c46c83313709e471abded59972eb/tree_sitter-0.20.4-cp39-cp39-win_amd64.whl", hash = "sha256:7095bb9aff297fa9c6026bf8914fd295997d714d1a6ee9a1edf7282c772f9f64", size = 107753 }, + { url = "https://files.pythonhosted.org/packages/11/fe/1e6e9118384cf70bfc9e69bf36dc79c64731da2e532c640b37ba4d0387bb/tree_sitter-0.20.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:859260b90f0e3867ae840e39f54e830f607b3bc531bc21deeeeaa8a30cbb89ad", size = 126585 }, + { url = "https://files.pythonhosted.org/packages/9e/23/e68cb8b65f1e058922c8bae777042b5e43041ef58ebd20c850e98c1d6e9d/tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dfc14be73cf46126660a3aecdd0396e69562ad1a902245225ca7bd29649594e", size = 124555 }, + { url = "https://files.pythonhosted.org/packages/2f/f1/e7014276dce702ccfa20dc122bd2772dcaf614d63ea42699214cb3f0b11d/tree_sitter-0.20.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ec46355bf3ff23f54d5e365871ffd3e05cfbc65d1b36a8be7c0bcbda30a1d43", size = 127110 }, + { url = "https://files.pythonhosted.org/packages/3d/d5/e7cc0077647855708d50e8edb780330bcc7c429ce4da031e23ba570248c9/tree_sitter-0.20.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d933a942fde39876b99c36f12aa3764e4a555ae9366c10ce6cca8c16341c1bbf", size = 107683 }, + { url = "https://files.pythonhosted.org/packages/7d/cd/c6a0fc2c9817fdffdb271933cff266711cbecd45d1aea00e2ac9da61ecb6/tree_sitter-0.20.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:36f8adf2126f496cf376b6e4b707cba061c25beb17841727eef6f0e083e53e1f", size = 126639 }, + { url = "https://files.pythonhosted.org/packages/be/f5/7af3a567ef7d8088cd7c4051672297868df7d0e9a42e2694197214e7694e/tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841efb40c116ab0a066924925409a8a4dcffeb39a151c0b2a1c2abe56ad4fb42", size = 124598 }, + { url = "https://files.pythonhosted.org/packages/82/8f/bb22c9fdd95b2b4967d6b94902f559645792151138827f4046cbcf8b72d8/tree_sitter-0.20.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2051e8a70fd8426f27a43dad71d11929a62ce30a9b1eb65bba0ed79e82481592", size = 127120 }, + { url = "https://files.pythonhosted.org/packages/ec/e0/3f12d8e9f2d49ed1d40bc1a9645714c521b512dfd4322298044a760fdf10/tree_sitter-0.20.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:99a3c2824d4cfcffd9f961176891426bde2cb36ece5280c61480be93319c23c4", size = 107845 }, + { url = "https://files.pythonhosted.org/packages/5c/2b/d226a6b7e68cdb684601ee69deaf33d4596cfe86966b1f4ee6119c69ce70/tree_sitter-0.20.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:72830dc85a10430eca3d56739b7efcd7a05459c8d425f08c1aee6179ab7f13a9", size = 126584 }, + { url = "https://files.pythonhosted.org/packages/4e/be/a2afacde7f846c74a811282cdd8c0fdc2bf52265682121a73ed72b21703e/tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4992dd226055b6cd0a4f5661c66b799a73d3eff716302e0f7ab06594ee12d49f", size = 124558 }, + { url = "https://files.pythonhosted.org/packages/18/97/77cec95a2294b536f930565ad333a1562aecfe8382e7dd503472bd2e250e/tree_sitter-0.20.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d95bbf92175cdc295d6d77f330942811f02e3aaf3fc64431cb749683b2f7d", size = 127113 }, + { url = "https://files.pythonhosted.org/packages/0b/29/3b86bfa49d16a89e2408d835dab06a0a3f8b570e83787d6f16f7af9c38a5/tree_sitter-0.20.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a25b1087e4f7825b2458dacf5f4b0be2938f78e850e822edca1ff4994b56081a", size = 107780 }, ] [[package]] From 182437930d55e2d9303515e58132919590ce6c28 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 18 Dec 2024 19:03:40 +0000 Subject: [PATCH 33/34] fix: revert string updates --- tests/unit/test_connection/test_request.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_connection/test_request.py b/tests/unit/test_connection/test_request.py index 688f5250a7..930df71f34 100644 --- a/tests/unit/test_connection/test_request.py +++ b/tests/unit/test_connection/test_request.py @@ -241,7 +241,7 @@ async def handler(request: Request) -> bytes: assert response.json() == {"body": ""} response = client.post("/", json={"a": "123"}) - assert response.json() == {"body": '{"a":"123"}'} + assert response.json() == {"body": '{"a": "123"}'} response = client.post("/", content="abc") assert response.json() == {"body": "abc"} @@ -260,7 +260,7 @@ async def handler(request: Request) -> bytes: assert response.json() == {"body": ""} response = client.post("/", json={"a": "123"}) - assert response.json() == {"body": '{"a":"123"}'} + assert response.json() == {"body": '{"a": "123"}'} response = client.post("/", content="abc") assert response.json() == {"body": "abc"} From 0d3e6f6b8646c19470993c6f32897ab97b4a2493 Mon Sep 17 00:00:00 2001 From: Cody Fincher Date: Wed, 18 Dec 2024 19:08:09 +0000 Subject: [PATCH 34/34] feat: bump deps --- uv.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uv.lock b/uv.lock index 192afb127b..8d4fc65424 100644 --- a/uv.lock +++ b/uv.lock @@ -4204,8 +4204,8 @@ name = "taskgroup" version = "0.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.13'" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.12'" }, + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/45/d35599738fd5e9fc587665e11a3e2192b3a5e67005a0005d972b40e06cb5/taskgroup-0.2.1.tar.gz", hash = "sha256:11fa9c2db1037188ac0b60c70fa979243d00b1fee1a6e61e3171c21c1af75f78", size = 11184 } wheels = [