From 64fd8e113578aec8735c7c303b7335e5d6e7ffcc Mon Sep 17 00:00:00 2001 From: Anfimov Dima Date: Sat, 6 Dec 2025 20:40:13 +0100 Subject: [PATCH 1/6] chore: update package versions --- .pre-commit-config.yaml | 2 +- pyproject.toml | 30 +- uv.lock | 702 +++++++++++++++++++++++----------------- 3 files changed, 423 insertions(+), 311 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a4c34f5..047d681 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ repos: - id: end-of-file-fixer - repo: https://github.com/crate-ci/typos - rev: v1.38.1 + rev: v1.40.0 hooks: - id: typos diff --git a/pyproject.toml b/pyproject.toml index 5fcacbc..cae898b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,13 +46,13 @@ aiopg = [ "aiopg>=1.4.0", ] asyncpg = [ - "asyncpg>=0.30.0", + "asyncpg>=0.31.0", ] psqlpy = [ - "psqlpy>=0.11.6", + "psqlpy>=0.11.11", ] psycopg = [ - "psycopg[binary,pool]>=3.2.10", + "psycopg[binary,pool]>=3.3.2", ] [dependency-groups] @@ -60,21 +60,21 @@ dev = [ {include-group = "lint"}, {include-group = "test"}, {include-group = "docs"}, - "prek>=0.2.8", + "prek>=0.2.19", ] lint = [ - "ruff>=0.14.0", - "bandit>=1.8.6", + "ruff>=0.14.8", + "bandit>=1.9.2", "codespell>=2.4.1", - "zizmor>=1.15.2", + "zizmor>=1.18.0", # type check - "mypy>=1.18.1", - "asyncpg-stubs>=0.30.2", + "mypy>=1.19.0", + "asyncpg-stubs>=0.31.0", ] test = [ - "polyfactory>=2.22.2", - "pytest>=8.4.2", - "pytest-asyncio>=1.1.0", + "polyfactory>=3.1.0", + "pytest>=9.0.1", + "pytest-asyncio>=1.3.0", "pytest-cov>=7.0.0", # for database in tests "sqlalchemy-utils>=0.42.0", @@ -82,12 +82,12 @@ test = [ "uvloop>=0.22.1", ] docs = [ - "mkdocs-material>=9.6.22", - "mkdocstrings-python>=1.18.2", + "mkdocs-material>=9.7.0", + "mkdocstrings-python>=2.0.1", ] [build-system] -requires = ["uv_build>=0.8.14,<0.9.0"] +requires = ["uv_build>=0.9,<0.10"] build-backend = "uv_build" [tool.uv.build-backend] diff --git a/uv.lock b/uv.lock index d48f82a..4f0a866 100644 --- a/uv.lock +++ b/uv.lock @@ -192,58 +192,74 @@ wheels = [ [[package]] name = "asyncpg" -version = "0.30.0" +version = "0.31.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-timeout", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/4c/7c991e080e106d854809030d8584e15b2e996e26f16aee6d757e387bc17d/asyncpg-0.30.0.tar.gz", hash = "sha256:c551e9928ab6707602f44811817f82ba3c446e018bfe1d3abecc8ba5f3eac851", size = 957746, upload-time = "2024-10-20T00:30:41.127Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/07/1650a8c30e3a5c625478fa8aafd89a8dd7d85999bf7169b16f54973ebf2c/asyncpg-0.30.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bfb4dd5ae0699bad2b233672c8fc5ccbd9ad24b89afded02341786887e37927e", size = 673143, upload-time = "2024-10-20T00:29:08.846Z" }, - { url = "https://files.pythonhosted.org/packages/a0/9a/568ff9b590d0954553c56806766914c149609b828c426c5118d4869111d3/asyncpg-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc1f62c792752a49f88b7e6f774c26077091b44caceb1983509edc18a2222ec0", size = 645035, upload-time = "2024-10-20T00:29:12.02Z" }, - { url = "https://files.pythonhosted.org/packages/de/11/6f2fa6c902f341ca10403743701ea952bca896fc5b07cc1f4705d2bb0593/asyncpg-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3152fef2e265c9c24eec4ee3d22b4f4d2703d30614b0b6753e9ed4115c8a146f", size = 2912384, upload-time = "2024-10-20T00:29:13.644Z" }, - { url = "https://files.pythonhosted.org/packages/83/83/44bd393919c504ffe4a82d0aed8ea0e55eb1571a1dea6a4922b723f0a03b/asyncpg-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7255812ac85099a0e1ffb81b10dc477b9973345793776b128a23e60148dd1af", size = 2947526, upload-time = "2024-10-20T00:29:15.871Z" }, - { url = "https://files.pythonhosted.org/packages/08/85/e23dd3a2b55536eb0ded80c457b0693352262dc70426ef4d4a6fc994fa51/asyncpg-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:578445f09f45d1ad7abddbff2a3c7f7c291738fdae0abffbeb737d3fc3ab8b75", size = 2895390, upload-time = "2024-10-20T00:29:19.346Z" }, - { url = "https://files.pythonhosted.org/packages/9b/26/fa96c8f4877d47dc6c1864fef5500b446522365da3d3d0ee89a5cce71a3f/asyncpg-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c42f6bb65a277ce4d93f3fba46b91a265631c8df7250592dd4f11f8b0152150f", size = 3015630, upload-time = "2024-10-20T00:29:21.186Z" }, - { url = "https://files.pythonhosted.org/packages/34/00/814514eb9287614188a5179a8b6e588a3611ca47d41937af0f3a844b1b4b/asyncpg-0.30.0-cp310-cp310-win32.whl", hash = "sha256:aa403147d3e07a267ada2ae34dfc9324e67ccc4cdca35261c8c22792ba2b10cf", size = 568760, upload-time = "2024-10-20T00:29:22.769Z" }, - { url = "https://files.pythonhosted.org/packages/f0/28/869a7a279400f8b06dd237266fdd7220bc5f7c975348fea5d1e6909588e9/asyncpg-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb622c94db4e13137c4c7f98834185049cc50ee01d8f657ef898b6407c7b9c50", size = 625764, upload-time = "2024-10-20T00:29:25.882Z" }, - { url = "https://files.pythonhosted.org/packages/4c/0e/f5d708add0d0b97446c402db7e8dd4c4183c13edaabe8a8500b411e7b495/asyncpg-0.30.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5e0511ad3dec5f6b4f7a9e063591d407eee66b88c14e2ea636f187da1dcfff6a", size = 674506, upload-time = "2024-10-20T00:29:27.988Z" }, - { url = "https://files.pythonhosted.org/packages/6a/a0/67ec9a75cb24a1d99f97b8437c8d56da40e6f6bd23b04e2f4ea5d5ad82ac/asyncpg-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:915aeb9f79316b43c3207363af12d0e6fd10776641a7de8a01212afd95bdf0ed", size = 645922, upload-time = "2024-10-20T00:29:29.391Z" }, - { url = "https://files.pythonhosted.org/packages/5c/d9/a7584f24174bd86ff1053b14bb841f9e714380c672f61c906eb01d8ec433/asyncpg-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c198a00cce9506fcd0bf219a799f38ac7a237745e1d27f0e1f66d3707c84a5a", size = 3079565, upload-time = "2024-10-20T00:29:30.832Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d7/a4c0f9660e333114bdb04d1a9ac70db690dd4ae003f34f691139a5cbdae3/asyncpg-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3326e6d7381799e9735ca2ec9fd7be4d5fef5dcbc3cb555d8a463d8460607956", size = 3109962, upload-time = "2024-10-20T00:29:33.114Z" }, - { url = "https://files.pythonhosted.org/packages/3c/21/199fd16b5a981b1575923cbb5d9cf916fdc936b377e0423099f209e7e73d/asyncpg-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:51da377487e249e35bd0859661f6ee2b81db11ad1f4fc036194bc9cb2ead5056", size = 3064791, upload-time = "2024-10-20T00:29:34.677Z" }, - { url = "https://files.pythonhosted.org/packages/77/52/0004809b3427534a0c9139c08c87b515f1c77a8376a50ae29f001e53962f/asyncpg-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc6d84136f9c4d24d358f3b02be4b6ba358abd09f80737d1ac7c444f36108454", size = 3188696, upload-time = "2024-10-20T00:29:36.389Z" }, - { url = "https://files.pythonhosted.org/packages/52/cb/fbad941cd466117be58b774a3f1cc9ecc659af625f028b163b1e646a55fe/asyncpg-0.30.0-cp311-cp311-win32.whl", hash = "sha256:574156480df14f64c2d76450a3f3aaaf26105869cad3865041156b38459e935d", size = 567358, upload-time = "2024-10-20T00:29:37.915Z" }, - { url = "https://files.pythonhosted.org/packages/3c/0a/0a32307cf166d50e1ad120d9b81a33a948a1a5463ebfa5a96cc5606c0863/asyncpg-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:3356637f0bd830407b5597317b3cb3571387ae52ddc3bca6233682be88bbbc1f", size = 629375, upload-time = "2024-10-20T00:29:39.987Z" }, - { url = "https://files.pythonhosted.org/packages/4b/64/9d3e887bb7b01535fdbc45fbd5f0a8447539833b97ee69ecdbb7a79d0cb4/asyncpg-0.30.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c902a60b52e506d38d7e80e0dd5399f657220f24635fee368117b8b5fce1142e", size = 673162, upload-time = "2024-10-20T00:29:41.88Z" }, - { url = "https://files.pythonhosted.org/packages/6e/eb/8b236663f06984f212a087b3e849731f917ab80f84450e943900e8ca4052/asyncpg-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aca1548e43bbb9f0f627a04666fedaca23db0a31a84136ad1f868cb15deb6e3a", size = 637025, upload-time = "2024-10-20T00:29:43.352Z" }, - { url = "https://files.pythonhosted.org/packages/cc/57/2dc240bb263d58786cfaa60920779af6e8d32da63ab9ffc09f8312bd7a14/asyncpg-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c2a2ef565400234a633da0eafdce27e843836256d40705d83ab7ec42074efb3", size = 3496243, upload-time = "2024-10-20T00:29:44.922Z" }, - { url = "https://files.pythonhosted.org/packages/f4/40/0ae9d061d278b10713ea9021ef6b703ec44698fe32178715a501ac696c6b/asyncpg-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1292b84ee06ac8a2ad8e51c7475aa309245874b61333d97411aab835c4a2f737", size = 3575059, upload-time = "2024-10-20T00:29:46.891Z" }, - { url = "https://files.pythonhosted.org/packages/c3/75/d6b895a35a2c6506952247640178e5f768eeb28b2e20299b6a6f1d743ba0/asyncpg-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5712350388d0cd0615caec629ad53c81e506b1abaaf8d14c93f54b35e3595a", size = 3473596, upload-time = "2024-10-20T00:29:49.201Z" }, - { url = "https://files.pythonhosted.org/packages/c8/e7/3693392d3e168ab0aebb2d361431375bd22ffc7b4a586a0fc060d519fae7/asyncpg-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:db9891e2d76e6f425746c5d2da01921e9a16b5a71a1c905b13f30e12a257c4af", size = 3641632, upload-time = "2024-10-20T00:29:50.768Z" }, - { url = "https://files.pythonhosted.org/packages/32/ea/15670cea95745bba3f0352341db55f506a820b21c619ee66b7d12ea7867d/asyncpg-0.30.0-cp312-cp312-win32.whl", hash = "sha256:68d71a1be3d83d0570049cd1654a9bdfe506e794ecc98ad0873304a9f35e411e", size = 560186, upload-time = "2024-10-20T00:29:52.394Z" }, - { url = "https://files.pythonhosted.org/packages/7e/6b/fe1fad5cee79ca5f5c27aed7bd95baee529c1bf8a387435c8ba4fe53d5c1/asyncpg-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a0292c6af5c500523949155ec17b7fe01a00ace33b68a476d6b5059f9630305", size = 621064, upload-time = "2024-10-20T00:29:53.757Z" }, - { url = "https://files.pythonhosted.org/packages/3a/22/e20602e1218dc07692acf70d5b902be820168d6282e69ef0d3cb920dc36f/asyncpg-0.30.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05b185ebb8083c8568ea8a40e896d5f7af4b8554b64d7719c0eaa1eb5a5c3a70", size = 670373, upload-time = "2024-10-20T00:29:55.165Z" }, - { url = "https://files.pythonhosted.org/packages/3d/b3/0cf269a9d647852a95c06eb00b815d0b95a4eb4b55aa2d6ba680971733b9/asyncpg-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c47806b1a8cbb0a0db896f4cd34d89942effe353a5035c62734ab13b9f938da3", size = 634745, upload-time = "2024-10-20T00:29:57.14Z" }, - { url = "https://files.pythonhosted.org/packages/8e/6d/a4f31bf358ce8491d2a31bfe0d7bcf25269e80481e49de4d8616c4295a34/asyncpg-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b6fde867a74e8c76c71e2f64f80c64c0f3163e687f1763cfaf21633ec24ec33", size = 3512103, upload-time = "2024-10-20T00:29:58.499Z" }, - { url = "https://files.pythonhosted.org/packages/96/19/139227a6e67f407b9c386cb594d9628c6c78c9024f26df87c912fabd4368/asyncpg-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46973045b567972128a27d40001124fbc821c87a6cade040cfcd4fa8a30bcdc4", size = 3592471, upload-time = "2024-10-20T00:30:00.354Z" }, - { url = "https://files.pythonhosted.org/packages/67/e4/ab3ca38f628f53f0fd28d3ff20edff1c975dd1cb22482e0061916b4b9a74/asyncpg-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9110df111cabc2ed81aad2f35394a00cadf4f2e0635603db6ebbd0fc896f46a4", size = 3496253, upload-time = "2024-10-20T00:30:02.794Z" }, - { url = "https://files.pythonhosted.org/packages/ef/5f/0bf65511d4eeac3a1f41c54034a492515a707c6edbc642174ae79034d3ba/asyncpg-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04ff0785ae7eed6cc138e73fc67b8e51d54ee7a3ce9b63666ce55a0bf095f7ba", size = 3662720, upload-time = "2024-10-20T00:30:04.501Z" }, - { url = "https://files.pythonhosted.org/packages/e7/31/1513d5a6412b98052c3ed9158d783b1e09d0910f51fbe0e05f56cc370bc4/asyncpg-0.30.0-cp313-cp313-win32.whl", hash = "sha256:ae374585f51c2b444510cdf3595b97ece4f233fde739aa14b50e0d64e8a7a590", size = 560404, upload-time = "2024-10-20T00:30:06.537Z" }, - { url = "https://files.pythonhosted.org/packages/c8/a4/cec76b3389c4c5ff66301cd100fe88c318563ec8a520e0b2e792b5b84972/asyncpg-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:f59b430b8e27557c3fb9869222559f7417ced18688375825f8f12302c34e915e", size = 621623, upload-time = "2024-10-20T00:30:09.024Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/fe/cc/d18065ce2380d80b1bcce927c24a2642efd38918e33fd724bc4bca904877/asyncpg-0.31.0.tar.gz", hash = "sha256:c989386c83940bfbd787180f2b1519415e2d3d6277a70d9d0f0145ac73500735", size = 993667, upload-time = "2025-11-24T23:27:00.812Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/d9/507c80bdac2e95e5a525644af94b03fa7f9a44596a84bd48a6e80f854f92/asyncpg-0.31.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:831712dd3cf117eec68575a9b50da711893fd63ebe277fc155ecae1c6c9f0f61", size = 644865, upload-time = "2025-11-24T23:25:23.527Z" }, + { url = "https://files.pythonhosted.org/packages/ea/03/f93b5e543f65c5f504e91405e8d21bb9e600548be95032951a754781a41d/asyncpg-0.31.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b17c89312c2f4ccea222a3a6571f7df65d4ba2c0e803339bfc7bed46a96d3be", size = 639297, upload-time = "2025-11-24T23:25:25.192Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1e/de2177e57e03a06e697f6c1ddf2a9a7fcfdc236ce69966f54ffc830fd481/asyncpg-0.31.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3faa62f997db0c9add34504a68ac2c342cfee4d57a0c3062fcf0d86c7f9cb1e8", size = 2816679, upload-time = "2025-11-24T23:25:26.718Z" }, + { url = "https://files.pythonhosted.org/packages/d0/98/1a853f6870ac7ad48383a948c8ff3c85dc278066a4d69fc9af7d3d4b1106/asyncpg-0.31.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ea599d45c361dfbf398cb67da7fd052affa556a401482d3ff1ee99bd68808a1", size = 2867087, upload-time = "2025-11-24T23:25:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/11/29/7e76f2a51f2360a7c90d2cf6d0d9b210c8bb0ae342edebd16173611a55c2/asyncpg-0.31.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:795416369c3d284e1837461909f58418ad22b305f955e625a4b3a2521d80a5f3", size = 2747631, upload-time = "2025-11-24T23:25:30.154Z" }, + { url = "https://files.pythonhosted.org/packages/5d/3f/716e10cb57c4f388248db46555e9226901688fbfabd0afb85b5e1d65d5a7/asyncpg-0.31.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a8d758dac9d2e723e173d286ef5e574f0b350ec00e9186fce84d0fc5f6a8e6b8", size = 2855107, upload-time = "2025-11-24T23:25:31.888Z" }, + { url = "https://files.pythonhosted.org/packages/7e/ec/3ebae9dfb23a1bd3f68acfd4f795983b65b413291c0e2b0d982d6ae6c920/asyncpg-0.31.0-cp310-cp310-win32.whl", hash = "sha256:2d076d42eb583601179efa246c5d7ae44614b4144bc1c7a683ad1222814ed095", size = 521990, upload-time = "2025-11-24T23:25:33.402Z" }, + { url = "https://files.pythonhosted.org/packages/20/b4/9fbb4b0af4e36d96a61d026dd37acab3cf521a70290a09640b215da5ab7c/asyncpg-0.31.0-cp310-cp310-win_amd64.whl", hash = "sha256:9ea33213ac044171f4cac23740bed9a3805abae10e7025314cfbd725ec670540", size = 581629, upload-time = "2025-11-24T23:25:34.846Z" }, + { url = "https://files.pythonhosted.org/packages/08/17/cc02bc49bc350623d050fa139e34ea512cd6e020562f2a7312a7bcae4bc9/asyncpg-0.31.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eee690960e8ab85063ba93af2ce128c0f52fd655fdff9fdb1a28df01329f031d", size = 643159, upload-time = "2025-11-24T23:25:36.443Z" }, + { url = "https://files.pythonhosted.org/packages/a4/62/4ded7d400a7b651adf06f49ea8f73100cca07c6df012119594d1e3447aa6/asyncpg-0.31.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2657204552b75f8288de08ca60faf4a99a65deef3a71d1467454123205a88fab", size = 638157, upload-time = "2025-11-24T23:25:37.89Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5b/4179538a9a72166a0bf60ad783b1ef16efb7960e4d7b9afe9f77a5551680/asyncpg-0.31.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a429e842a3a4b4ea240ea52d7fe3f82d5149853249306f7ff166cb9948faa46c", size = 2918051, upload-time = "2025-11-24T23:25:39.461Z" }, + { url = "https://files.pythonhosted.org/packages/e6/35/c27719ae0536c5b6e61e4701391ffe435ef59539e9360959240d6e47c8c8/asyncpg-0.31.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0807be46c32c963ae40d329b3a686356e417f674c976c07fa49f1b30303f109", size = 2972640, upload-time = "2025-11-24T23:25:41.512Z" }, + { url = "https://files.pythonhosted.org/packages/43/f4/01ebb9207f29e645a64699b9ce0eefeff8e7a33494e1d29bb53736f7766b/asyncpg-0.31.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e5d5098f63beeae93512ee513d4c0c53dc12e9aa2b7a1af5a81cddf93fe4e4da", size = 2851050, upload-time = "2025-11-24T23:25:43.153Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f4/03ff1426acc87be0f4e8d40fa2bff5c3952bef0080062af9efc2212e3be8/asyncpg-0.31.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37fc6c00a814e18eef51833545d1891cac9aa69140598bb076b4cd29b3e010b9", size = 2962574, upload-time = "2025-11-24T23:25:44.942Z" }, + { url = "https://files.pythonhosted.org/packages/c7/39/cc788dfca3d4060f9d93e67be396ceec458dfc429e26139059e58c2c244d/asyncpg-0.31.0-cp311-cp311-win32.whl", hash = "sha256:5a4af56edf82a701aece93190cc4e094d2df7d33f6e915c222fb09efbb5afc24", size = 521076, upload-time = "2025-11-24T23:25:46.486Z" }, + { url = "https://files.pythonhosted.org/packages/28/fc/735af5384c029eb7f1ca60ccb8fa95521dbdaeef788edf4cecfc604c3cab/asyncpg-0.31.0-cp311-cp311-win_amd64.whl", hash = "sha256:480c4befbdf079c14c9ca43c8c5e1fe8b6296c96f1f927158d4f1e750aacc047", size = 584980, upload-time = "2025-11-24T23:25:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/a6/59d0a146e61d20e18db7396583242e32e0f120693b67a8de43f1557033e2/asyncpg-0.31.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b44c31e1efc1c15188ef183f287c728e2046abb1d26af4d20858215d50d91fad", size = 662042, upload-time = "2025-11-24T23:25:49.578Z" }, + { url = "https://files.pythonhosted.org/packages/36/01/ffaa189dcb63a2471720615e60185c3f6327716fdc0fc04334436fbb7c65/asyncpg-0.31.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0c89ccf741c067614c9b5fc7f1fc6f3b61ab05ae4aaa966e6fd6b93097c7d20d", size = 638504, upload-time = "2025-11-24T23:25:51.501Z" }, + { url = "https://files.pythonhosted.org/packages/9f/62/3f699ba45d8bd24c5d65392190d19656d74ff0185f42e19d0bbd973bb371/asyncpg-0.31.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:12b3b2e39dc5470abd5e98c8d3373e4b1d1234d9fbdedf538798b2c13c64460a", size = 3426241, upload-time = "2025-11-24T23:25:53.278Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d1/a867c2150f9c6e7af6462637f613ba67f78a314b00db220cd26ff559d532/asyncpg-0.31.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:aad7a33913fb8bcb5454313377cc330fbb19a0cd5faa7272407d8a0c4257b671", size = 3520321, upload-time = "2025-11-24T23:25:54.982Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1a/cce4c3f246805ecd285a3591222a2611141f1669d002163abef999b60f98/asyncpg-0.31.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3df118d94f46d85b2e434fd62c84cb66d5834d5a890725fe625f498e72e4d5ec", size = 3316685, upload-time = "2025-11-24T23:25:57.43Z" }, + { url = "https://files.pythonhosted.org/packages/40/ae/0fc961179e78cc579e138fad6eb580448ecae64908f95b8cb8ee2f241f67/asyncpg-0.31.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd5b6efff3c17c3202d4b37189969acf8927438a238c6257f66be3c426beba20", size = 3471858, upload-time = "2025-11-24T23:25:59.636Z" }, + { url = "https://files.pythonhosted.org/packages/52/b2/b20e09670be031afa4cbfabd645caece7f85ec62d69c312239de568e058e/asyncpg-0.31.0-cp312-cp312-win32.whl", hash = "sha256:027eaa61361ec735926566f995d959ade4796f6a49d3bde17e5134b9964f9ba8", size = 527852, upload-time = "2025-11-24T23:26:01.084Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f0/f2ed1de154e15b107dc692262395b3c17fc34eafe2a78fc2115931561730/asyncpg-0.31.0-cp312-cp312-win_amd64.whl", hash = "sha256:72d6bdcbc93d608a1158f17932de2321f68b1a967a13e014998db87a72ed3186", size = 597175, upload-time = "2025-11-24T23:26:02.564Z" }, + { url = "https://files.pythonhosted.org/packages/95/11/97b5c2af72a5d0b9bc3fa30cd4b9ce22284a9a943a150fdc768763caf035/asyncpg-0.31.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c204fab1b91e08b0f47e90a75d1b3c62174dab21f670ad6c5d0f243a228f015b", size = 661111, upload-time = "2025-11-24T23:26:04.467Z" }, + { url = "https://files.pythonhosted.org/packages/1b/71/157d611c791a5e2d0423f09f027bd499935f0906e0c2a416ce712ba51ef3/asyncpg-0.31.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:54a64f91839ba59008eccf7aad2e93d6e3de688d796f35803235ea1c4898ae1e", size = 636928, upload-time = "2025-11-24T23:26:05.944Z" }, + { url = "https://files.pythonhosted.org/packages/2e/fc/9e3486fb2bbe69d4a867c0b76d68542650a7ff1574ca40e84c3111bb0c6e/asyncpg-0.31.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0e0822b1038dc7253b337b0f3f676cadc4ac31b126c5d42691c39691962e403", size = 3424067, upload-time = "2025-11-24T23:26:07.957Z" }, + { url = "https://files.pythonhosted.org/packages/12/c6/8c9d076f73f07f995013c791e018a1cd5f31823c2a3187fc8581706aa00f/asyncpg-0.31.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bef056aa502ee34204c161c72ca1f3c274917596877f825968368b2c33f585f4", size = 3518156, upload-time = "2025-11-24T23:26:09.591Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3b/60683a0baf50fbc546499cfb53132cb6835b92b529a05f6a81471ab60d0c/asyncpg-0.31.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0bfbcc5b7ffcd9b75ab1558f00db2ae07db9c80637ad1b2469c43df79d7a5ae2", size = 3319636, upload-time = "2025-11-24T23:26:11.168Z" }, + { url = "https://files.pythonhosted.org/packages/50/dc/8487df0f69bd398a61e1792b3cba0e47477f214eff085ba0efa7eac9ce87/asyncpg-0.31.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:22bc525ebbdc24d1261ecbf6f504998244d4e3be1721784b5f64664d61fbe602", size = 3472079, upload-time = "2025-11-24T23:26:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/13/a1/c5bbeeb8531c05c89135cb8b28575ac2fac618bcb60119ee9696c3faf71c/asyncpg-0.31.0-cp313-cp313-win32.whl", hash = "sha256:f890de5e1e4f7e14023619399a471ce4b71f5418cd67a51853b9910fdfa73696", size = 527606, upload-time = "2025-11-24T23:26:14.78Z" }, + { url = "https://files.pythonhosted.org/packages/91/66/b25ccb84a246b470eb943b0107c07edcae51804912b824054b3413995a10/asyncpg-0.31.0-cp313-cp313-win_amd64.whl", hash = "sha256:dc5f2fa9916f292e5c5c8b2ac2813763bcd7f58e130055b4ad8a0531314201ab", size = 596569, upload-time = "2025-11-24T23:26:16.189Z" }, + { url = "https://files.pythonhosted.org/packages/3c/36/e9450d62e84a13aea6580c83a47a437f26c7ca6fa0f0fd40b6670793ea30/asyncpg-0.31.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f6b56b91bb0ffc328c4e3ed113136cddd9deefdf5f79ab448598b9772831df44", size = 660867, upload-time = "2025-11-24T23:26:17.631Z" }, + { url = "https://files.pythonhosted.org/packages/82/4b/1d0a2b33b3102d210439338e1beea616a6122267c0df459ff0265cd5807a/asyncpg-0.31.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:334dec28cf20d7f5bb9e45b39546ddf247f8042a690bff9b9573d00086e69cb5", size = 638349, upload-time = "2025-11-24T23:26:19.689Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/e7f7ac9a7974f08eff9183e392b2d62516f90412686532d27e196c0f0eeb/asyncpg-0.31.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98cc158c53f46de7bb677fd20c417e264fc02b36d901cc2a43bd6cb0dc6dbfd2", size = 3410428, upload-time = "2025-11-24T23:26:21.275Z" }, + { url = "https://files.pythonhosted.org/packages/6f/de/bf1b60de3dede5c2731e6788617a512bc0ebd9693eac297ee74086f101d7/asyncpg-0.31.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9322b563e2661a52e3cdbc93eed3be7748b289f792e0011cb2720d278b366ce2", size = 3471678, upload-time = "2025-11-24T23:26:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/46/78/fc3ade003e22d8bd53aaf8f75f4be48f0b460fa73738f0391b9c856a9147/asyncpg-0.31.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19857a358fc811d82227449b7ca40afb46e75b33eb8897240c3839dd8b744218", size = 3313505, upload-time = "2025-11-24T23:26:25.235Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e9/73eb8a6789e927816f4705291be21f2225687bfa97321e40cd23055e903a/asyncpg-0.31.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ba5f8886e850882ff2c2ace5732300e99193823e8107e2c53ef01c1ebfa1e85d", size = 3434744, upload-time = "2025-11-24T23:26:26.944Z" }, + { url = "https://files.pythonhosted.org/packages/08/4b/f10b880534413c65c5b5862f79b8e81553a8f364e5238832ad4c0af71b7f/asyncpg-0.31.0-cp314-cp314-win32.whl", hash = "sha256:cea3a0b2a14f95834cee29432e4ddc399b95700eb1d51bbc5bfee8f31fa07b2b", size = 532251, upload-time = "2025-11-24T23:26:28.404Z" }, + { url = "https://files.pythonhosted.org/packages/d3/2d/7aa40750b7a19efa5d66e67fc06008ca0f27ba1bd082e457ad82f59aba49/asyncpg-0.31.0-cp314-cp314-win_amd64.whl", hash = "sha256:04d19392716af6b029411a0264d92093b6e5e8285ae97a39957b9a9c14ea72be", size = 604901, upload-time = "2025-11-24T23:26:30.34Z" }, + { url = "https://files.pythonhosted.org/packages/ce/fe/b9dfe349b83b9dee28cc42360d2c86b2cdce4cb551a2c2d27e156bcac84d/asyncpg-0.31.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bdb957706da132e982cc6856bb2f7b740603472b54c3ebc77fe60ea3e57e1bd2", size = 702280, upload-time = "2025-11-24T23:26:32Z" }, + { url = "https://files.pythonhosted.org/packages/6a/81/e6be6e37e560bd91e6c23ea8a6138a04fd057b08cf63d3c5055c98e81c1d/asyncpg-0.31.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6d11b198111a72f47154fa03b85799f9be63701e068b43f84ac25da0bda9cb31", size = 682931, upload-time = "2025-11-24T23:26:33.572Z" }, + { url = "https://files.pythonhosted.org/packages/a6/45/6009040da85a1648dd5bc75b3b0a062081c483e75a1a29041ae63a0bf0dc/asyncpg-0.31.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18c83b03bc0d1b23e6230f5bf8d4f217dc9bc08644ce0502a9d91dc9e634a9c7", size = 3581608, upload-time = "2025-11-24T23:26:35.638Z" }, + { url = "https://files.pythonhosted.org/packages/7e/06/2e3d4d7608b0b2b3adbee0d0bd6a2d29ca0fc4d8a78f8277df04e2d1fd7b/asyncpg-0.31.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e009abc333464ff18b8f6fd146addffd9aaf63e79aa3bb40ab7a4c332d0c5e9e", size = 3498738, upload-time = "2025-11-24T23:26:37.275Z" }, + { url = "https://files.pythonhosted.org/packages/7d/aa/7d75ede780033141c51d83577ea23236ba7d3a23593929b32b49db8ed36e/asyncpg-0.31.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3b1fbcb0e396a5ca435a8826a87e5c2c2cc0c8c68eb6fadf82168056b0e53a8c", size = 3401026, upload-time = "2025-11-24T23:26:39.423Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7a/15e37d45e7f7c94facc1e9148c0e455e8f33c08f0b8a0b1deb2c5171771b/asyncpg-0.31.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8df714dba348efcc162d2adf02d213e5fab1bd9f557e1305633e851a61814a7a", size = 3429426, upload-time = "2025-11-24T23:26:41.032Z" }, + { url = "https://files.pythonhosted.org/packages/13/d5/71437c5f6ae5f307828710efbe62163974e71237d5d46ebd2869ea052d10/asyncpg-0.31.0-cp314-cp314t-win32.whl", hash = "sha256:1b41f1afb1033f2b44f3234993b15096ddc9cd71b21a42dbd87fc6a57b43d65d", size = 614495, upload-time = "2025-11-24T23:26:42.659Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d7/8fb3044eaef08a310acfe23dae9a8e2e07d305edc29a53497e52bc76eca7/asyncpg-0.31.0-cp314-cp314t-win_amd64.whl", hash = "sha256:bd4107bb7cdd0e9e65fae66a62afd3a249663b844fa34d479f6d5b3bef9c04c3", size = 706062, upload-time = "2025-11-24T23:26:44.086Z" }, ] [[package]] name = "asyncpg-stubs" -version = "0.30.2" +version = "0.31.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asyncpg" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/e5/1a06ecec2a77a75974ba6b22d3bed697193177c0ed7595cce4dd2362735d/asyncpg_stubs-0.30.2.tar.gz", hash = "sha256:b8a1b7cb790a7b8a0e4e64e438a97c3fac77ea02441b563b1975748f18af33ab", size = 20250, upload-time = "2025-06-27T20:03:15.712Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/46/9b001f9cc3eb04e8c77c54181065107bb5448c8658a0097117206da611d4/asyncpg_stubs-0.31.0.tar.gz", hash = "sha256:43a1665dbe3e6596c16d9d083d568604bec2babf1e18fcb8950041674c0cac60", size = 20592, upload-time = "2025-12-01T22:33:23.939Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/22/77a4a08cc9ef4f8bbb5e7ffbf4be008e596b535a3533a28c3465e9400d75/asyncpg_stubs-0.30.2-py3-none-any.whl", hash = "sha256:e57818bbaf10945a60ff3219da3c5ce97e1b424503b6a6f0a18db99797397cbb", size = 26929, upload-time = "2025-06-27T20:03:14.847Z" }, + { url = "https://files.pythonhosted.org/packages/15/68/f9f5c2e52f84dfda0c30ca3b6f252c4df632d942d0e0af9da77b9de7a223/asyncpg_stubs-0.31.0-py3-none-any.whl", hash = "sha256:1aab612494c21aa9965238bba3892d9e7378c311561102b2bcf90a72b5afddb5", size = 27645, upload-time = "2025-12-01T22:33:22.743Z" }, ] [[package]] @@ -289,7 +305,7 @@ wheels = [ [[package]] name = "bandit" -version = "1.8.6" +version = "1.9.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -297,9 +313,9 @@ dependencies = [ { name = "rich" }, { name = "stevedore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/b5/7eb834e213d6f73aace21938e5e90425c92e5f42abafaf8a6d5d21beed51/bandit-1.8.6.tar.gz", hash = "sha256:dbfe9c25fc6961c2078593de55fd19f2559f9e45b99f1272341f5b95dea4e56b", size = 4240271, upload-time = "2025-07-06T03:10:50.9Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/72/f704a97aac430aeb704fa16435dfa24fbeaf087d46724d0965eb1f756a2c/bandit-1.9.2.tar.gz", hash = "sha256:32410415cd93bf9c8b91972159d5cf1e7f063a9146d70345641cd3877de348ce", size = 4241659, upload-time = "2025-11-23T21:36:18.722Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/ca/ba5f909b40ea12ec542d5d7bdd13ee31c4d65f3beed20211ef81c18fa1f3/bandit-1.8.6-py3-none-any.whl", hash = "sha256:3348e934d736fcdb68b6aa4030487097e23a501adf3e7827b63658df464dddd0", size = 133808, upload-time = "2025-07-06T03:10:49.134Z" }, + { url = "https://files.pythonhosted.org/packages/55/1a/5b0320642cca53a473e79c7d273071b5a9a8578f9e370b74da5daa2768d7/bandit-1.9.2-py3-none-any.whl", hash = "sha256:bda8d68610fc33a6e10b7a8f1d61d92c8f6c004051d5e946406be1fb1b16a868", size = 134377, upload-time = "2025-11-23T21:36:17.39Z" }, ] [[package]] @@ -800,6 +816,79 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] +[[package]] +name = "librt" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/1a/38eea84b96d964bf9756d16f20534c4442103345719f600b1b267233b7bb/librt-0.7.2.tar.gz", hash = "sha256:48aa0f311bdf90ec9a63e3669b6aff04967f24f2f67fe9372c570a21dc9ae873", size = 144193, upload-time = "2025-12-06T12:04:43.486Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/6d/c03e987d605fa690845847c4d334e20cf66a071f90d42df07b82aa863200/librt-0.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0090f146caa593f47e641307bd0bef778b76629b1d7a5bec95d3a83ed49d49de", size = 54706, upload-time = "2025-12-06T12:02:59.756Z" }, + { url = "https://files.pythonhosted.org/packages/8f/17/9d2e52b9aabdb0492b2659f8c3de6c5b7eb834909d6461284a65decc1768/librt-0.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c44321bc013cf4b41169e463a2c441412497cea44dbf79eee0ccad8104d05b7b", size = 56660, upload-time = "2025-12-06T12:03:00.994Z" }, + { url = "https://files.pythonhosted.org/packages/d2/fd/7c517ce71f8df2cacc981496665f18f54d9673538190ed21a48fab658ea5/librt-0.7.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8913d92224da3e0ef54e40cdc36f1c0789f375349aa36f7fd44c89dfda1e6d24", size = 161045, upload-time = "2025-12-06T12:03:02.468Z" }, + { url = "https://files.pythonhosted.org/packages/98/1b/054199fb94beb488c560450012fdfe8e69ae3ed7a78f5f2e1a44053cb26a/librt-0.7.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f968b951f0713b15ad56090c5499bc63e4718e7636d698e1e1fc2eb66c855f97", size = 169534, upload-time = "2025-12-06T12:03:03.785Z" }, + { url = "https://files.pythonhosted.org/packages/cf/66/584bb0f39f98101a93ba1df115237465c6a20f53047a49d0535f5609f01f/librt-0.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85e8801d41dcfbb76407daa5e35e69ebe7b0fc826b7c63d462cbbab530b5672b", size = 183277, upload-time = "2025-12-06T12:03:05.315Z" }, + { url = "https://files.pythonhosted.org/packages/6f/17/4ce7d95fa3e7eeda3134921b4e185c1ed190f027c2a8008fc8a60d3e70b3/librt-0.7.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9672ee71a08c5b1cb5bb92fc5cc07f88c947716ff3c6b8c3bc0f57ee7ddc12fa", size = 179045, upload-time = "2025-12-06T12:03:06.917Z" }, + { url = "https://files.pythonhosted.org/packages/ea/c8/bfb44d75eaaae5d9bdebc08e156faf535adc942704463673384ef52cb869/librt-0.7.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9786b621b5c7e6e2aaab0cacf118c1c3af5f70b9c0e3fe614734b1d9fbc37cd3", size = 173519, upload-time = "2025-12-06T12:03:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/a3/6b/748d14d54c5b2b1bfc80f208d25b265b6c6d23cdb05f70a981da2585b66a/librt-0.7.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:332bd6505e345c0d92ad5ede7419bdd2c96ad7526681be5feb2bb26667819c4f", size = 193591, upload-time = "2025-12-06T12:03:09.789Z" }, + { url = "https://files.pythonhosted.org/packages/17/46/ae2d81b8cdc285a0e7f6c7868c258fdfcd1b468eaee99590a4edacf21424/librt-0.7.2-cp310-cp310-win32.whl", hash = "sha256:0ca4ff852be76094074bede6fcd1fc75374962ec365aceb396fa7aa3bc733c12", size = 47204, upload-time = "2025-12-06T12:03:11.313Z" }, + { url = "https://files.pythonhosted.org/packages/5a/b9/99ecc8f07f9979cd3e6535727b17465ca478ab98b23eed49bb1e66ed8fd2/librt-0.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:dd2b75815270534c62e203ee5755ae1f66540ce4ee08432d4b1e623ddb2fa175", size = 54372, upload-time = "2025-12-06T12:03:12.459Z" }, + { url = "https://files.pythonhosted.org/packages/aa/66/a425c03e074915306c19b791622d7f2f1940aa3db2fee15671a420fb0849/librt-0.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f8f02d40621f55c659ff1ed7ea91320f8bc16e75fe67f822445cd0e9b5fa1d1", size = 54712, upload-time = "2025-12-06T12:03:13.937Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fc/25a895beec5619b65e156ff913004af355322bb83e424fec3633bef281cf/librt-0.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0bc8425c7f9e9bfc16fae651b56b402b11e25c223a90353fb71fa47ed3e1c048", size = 56659, upload-time = "2025-12-06T12:03:15.13Z" }, + { url = "https://files.pythonhosted.org/packages/0b/6c/dd3ed2b6572efe6a2da6b48c8fb94fa965e1a70da67716060de2909e6526/librt-0.7.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f9a8a6e3cea9c01d2d9c55cf81ab68580b10d01c54b82cab89e85ba036e1d272", size = 161702, upload-time = "2025-12-06T12:03:16.652Z" }, + { url = "https://files.pythonhosted.org/packages/55/47/397b6735d7027e1ee1b1db91d63d354151f797af8d9e3c8f6635e847dbbe/librt-0.7.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de0aceb7d19f6dd4aa6594be45f82af19c74bd0fcf2fa2d42c116d25826f1625", size = 171039, upload-time = "2025-12-06T12:03:18.344Z" }, + { url = "https://files.pythonhosted.org/packages/96/21/c0f0a0397a084f4e0647d1365cb5d1060725d1b77645b7d5a8cd96b22c96/librt-0.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d29bb29aba2a849ea8255744655b359ce420ab55018c31a9b58c103415e47918", size = 184718, upload-time = "2025-12-06T12:03:19.696Z" }, + { url = "https://files.pythonhosted.org/packages/6d/36/d8fd4c8bdad854ba258fff9f2573f4fe6c662bee38e53f1bf64c7b4c921d/librt-0.7.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f172088974eac0101ecbe460d89411c945fa57601e4fc3dc461e718991322e00", size = 180732, upload-time = "2025-12-06T12:03:21.211Z" }, + { url = "https://files.pythonhosted.org/packages/f9/83/5293405e85142a03b4c0c15147d31616035c0d8aae9e20308d2facba7d6f/librt-0.7.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab4ca61a3b774d3b1886b26f7cc295e75a42ebc26c7a1a04e11c427e5313922f", size = 174564, upload-time = "2025-12-06T12:03:22.49Z" }, + { url = "https://files.pythonhosted.org/packages/ff/92/7be3ad4403d5b0e955abefc2508a7f942057f70d0edc197dafd1b1e6c2a0/librt-0.7.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d891fb657a14d8d77e3b565332e064fbcd67741e99043634e5b7cbded88d9d8e", size = 195247, upload-time = "2025-12-06T12:03:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/72/90/c18575def44c6fcc1d0d39e249fc7df68b596618d675ff9d3fb1138e4fac/librt-0.7.2-cp311-cp311-win32.whl", hash = "sha256:2272e1a4752ad0b9f59793f63ffce06178fbe15a1fd4d2d8ad9ea2fe026d9912", size = 47516, upload-time = "2025-12-06T12:03:25.299Z" }, + { url = "https://files.pythonhosted.org/packages/bf/75/92cb954c36ea687f3cbf418ee7b8634c97d48e45e3b28c8031e87ee0b8f4/librt-0.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:eab548b8c771a1846d328a01e83c14ed0414853bf9a91fe7c692f74de513238f", size = 54698, upload-time = "2025-12-06T12:03:26.422Z" }, + { url = "https://files.pythonhosted.org/packages/26/8e/b1258d866521e5ae70dc91e98062ae86fc64270c9fc4256cafe0307a0717/librt-0.7.2-cp311-cp311-win_arm64.whl", hash = "sha256:0259a726416369e22306177be3404cc29b88fc806d31100802c816fd29f58873", size = 48148, upload-time = "2025-12-06T12:03:27.884Z" }, + { url = "https://files.pythonhosted.org/packages/50/7a/7b41d6f27bdbbd4146ee3905b5f65ab400d5562819173c3ffdea8349dc86/librt-0.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:18d56630bd5793ca860f148cfa6d79a81b3d9c7d5544991c906a8f412eecce63", size = 55693, upload-time = "2025-12-06T12:03:28.995Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fb/c6f0ac08e479cf18e1dab20f7e983494a4e08570f05caea8cdbdf78f9fee/librt-0.7.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4076beec27478116ff276731daf676ecd03ceae03fabdefdca400f7e837f477a", size = 57123, upload-time = "2025-12-06T12:03:30.441Z" }, + { url = "https://files.pythonhosted.org/packages/74/99/d0ab1adcabdc5b12207c3132f13bb32a59f5bebc3a3b5f9baf3c17f29806/librt-0.7.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7698a3b75f0aa004fa089410b44088628851b3c62c9044822c61a8367fc8caea", size = 165336, upload-time = "2025-12-06T12:03:31.683Z" }, + { url = "https://files.pythonhosted.org/packages/de/27/3a6f0d3541db87c4ffdffdbf76b200855f4e567f4e9ecc09ad449c0432d9/librt-0.7.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e706fdfef8692ee82ac5464c822800d99b436511a9bba402a88e878751b342a9", size = 174235, upload-time = "2025-12-06T12:03:32.991Z" }, + { url = "https://files.pythonhosted.org/packages/90/f3/ae8c1f537741dbdf13b1112f611bc19053970e42bc6da34801f0624131df/librt-0.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39d2b8df134910a2c58d91fbf50cd6ea0b815a50fcdf45de1e21af0a10fcb606", size = 189020, upload-time = "2025-12-06T12:03:34.269Z" }, + { url = "https://files.pythonhosted.org/packages/4b/b7/f18d3b0561d94f914ef9c5a7790ba76038254d4eece3db0b7b807a49c9df/librt-0.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:035c5f2f4bd96326f4528ce48bd60ed19ae35f0c000540971aa597a441e83509", size = 183984, upload-time = "2025-12-06T12:03:35.637Z" }, + { url = "https://files.pythonhosted.org/packages/b2/8c/c271e3e5d0196d03a8eea27d6f132ed7df586327a5c3734f095d17b86a3b/librt-0.7.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:14798167e2be3cb8202c9617d90d5e4b2b50a92a9c30f8aceb672e12cf26abbf", size = 177600, upload-time = "2025-12-06T12:03:37.03Z" }, + { url = "https://files.pythonhosted.org/packages/42/81/ef1161d171cb274b8881ae138566739c9162189f58adffa3bc2f50ab2cd0/librt-0.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f6b564c8e9e768fe79651d626917b4b3d10b3d587779eda2231e235b64caab41", size = 199283, upload-time = "2025-12-06T12:03:38.377Z" }, + { url = "https://files.pythonhosted.org/packages/3e/30/88e7e1c00dfd8d48ebb1dac2498080aa62e8ba7226b9711347cab48b60f1/librt-0.7.2-cp312-cp312-win32.whl", hash = "sha256:605c7bbc94aa30288d33d2ade86d3a70c939efa01f3e64d98d72a72466d43161", size = 47884, upload-time = "2025-12-06T12:03:39.897Z" }, + { url = "https://files.pythonhosted.org/packages/db/2d/8d3d5fb63a59316eb0033c4f1ba153de8c118db4274810231b09fc42241c/librt-0.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:a48f4c5d3d12eced3462d135ecfe0c4e2a143e64161a471b3f3c1491330fcd74", size = 54977, upload-time = "2025-12-06T12:03:40.994Z" }, + { url = "https://files.pythonhosted.org/packages/1c/57/dfd1406ae8af9dbb73d3b2a330107d0205e09a3d1acf2e89cc08d6f7ef1c/librt-0.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:0cbe93690e07c9d4ac76bed107e1be8a612dd6fbc94e21a17a5cff002f5f55d5", size = 48343, upload-time = "2025-12-06T12:03:42.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/80/f3696ba44401c90ab2cc619cbd663ed4f3faf25e86df289ced7b4abf96c2/librt-0.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b8fdc5e6eb9698ed66bb652f18fa637853fd03b016864bed098f1a28a8d129d", size = 55742, upload-time = "2025-12-06T12:03:43.262Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a5/36880025707514d6207f4044adbaef08fca3d54fa0b9294ae38553db8a95/librt-0.7.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:66d0f0de87033ab7e54f48bd46c042d047ecc3d4e4d5b7b1071e934f34d97054", size = 57170, upload-time = "2025-12-06T12:03:44.402Z" }, + { url = "https://files.pythonhosted.org/packages/b5/38/c33f6a51cc6f8f67fdb872bc8e0c07e954962b3fc57ca791367b7b72433d/librt-0.7.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:9da65ed19f6c7c4bbebd7acb37d4dbb95943792b51a74bc96d35673270853e16", size = 165840, upload-time = "2025-12-06T12:03:45.568Z" }, + { url = "https://files.pythonhosted.org/packages/5c/b1/173e34dc7b05a34414905ba8658618a740182fc13b8b613f472dbc94ab25/librt-0.7.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eeb76e18c2adac6bcc709ba7f728acca2d42baf0c7a3b9eba392bab84d591961", size = 174824, upload-time = "2025-12-06T12:03:47.062Z" }, + { url = "https://files.pythonhosted.org/packages/69/58/edff7823c9bb89aa2f41b3156a2928d8ebf8f3396b119343ab8236339f91/librt-0.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b5d5f8f617fc3db80864f7353f43db69d9282bf9cd74c7e6cf5be1a7e5d5a83f", size = 189613, upload-time = "2025-12-06T12:03:48.67Z" }, + { url = "https://files.pythonhosted.org/packages/5f/64/2277eeaea081e826f155b1de9f0809b007cc7e606faf17befb5c77d54bda/librt-0.7.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cae1b429f9077254622d7d12ade5d04a6b326b2ff456d032fa3fa653ef994979", size = 184584, upload-time = "2025-12-06T12:03:49.924Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/93075ab0337e83ed2a3d23837dabf7df1e2b6f8ea22e7701d6adbb8f32ce/librt-0.7.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:edd20b266055b41ccee667b9373b3eff9d77b8e0890fd26a469c89ef48b29bf0", size = 178268, upload-time = "2025-12-06T12:03:51.255Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/bee97a425ccdf05282a4706dcc83a6d440da67559cc7ec37fa8b7caa7e2d/librt-0.7.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cf748211b5782fb9e85945d7ffdef9587bf303344e2ad3e65dee55b44b1c8ac1", size = 199853, upload-time = "2025-12-06T12:03:52.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/ea/eb8658a1979d27d3e5cdbff0666a1633ef9b7d5e2be49cb90c649fb66ba4/librt-0.7.2-cp313-cp313-win32.whl", hash = "sha256:c4fefe752dcf30564b031e85e6cbc70d82685e52fbbfffc6fab275a47b5c3de7", size = 47939, upload-time = "2025-12-06T12:03:54.213Z" }, + { url = "https://files.pythonhosted.org/packages/db/00/a96c6811e259efc7d2347f572b27d7ddb2976c8db9408a545291c8c8b25c/librt-0.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:65cd928b7e0c1142235e54e4b615a0a7f4ad046d1d4cbdd454c311bafca97aed", size = 54968, upload-time = "2025-12-06T12:03:55.364Z" }, + { url = "https://files.pythonhosted.org/packages/cd/9f/bf7eaa2cbf27d88f7e6cca6c7651192315cc834ba6c20b8afa1228aad3c6/librt-0.7.2-cp313-cp313-win_arm64.whl", hash = "sha256:10d6d5d52026e44ddd0f638e822a5d451df0d5b6701cb5112362a3a9f4b00229", size = 48355, upload-time = "2025-12-06T12:03:56.504Z" }, + { url = "https://files.pythonhosted.org/packages/c6/42/97a7d52d3c1ba9503cd9c973105f65c506b2b491743fb0e613d1683feac8/librt-0.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0baabd8daa4339f6cbffada3c66795722c37880ce768de83c7cba379d469ee3b", size = 55177, upload-time = "2025-12-06T12:03:57.664Z" }, + { url = "https://files.pythonhosted.org/packages/83/1e/44ac0089b506f7b5880c5b090f1315099b77e6854feb9002cf0e8089b318/librt-0.7.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:462d9672a4ade935d78c70713847bcba643bf4d94c013fdf29ea5f153bb15922", size = 56883, upload-time = "2025-12-06T12:03:59.362Z" }, + { url = "https://files.pythonhosted.org/packages/b7/1a/a0b8ae021524090322b07713f1fbf491c78945d878ee3aa17c81efddd8ee/librt-0.7.2-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:838b16343fc4ed6869edb3ed9dc89c4bc9b113b1c6028592bede4a93ad360aa4", size = 163711, upload-time = "2025-12-06T12:04:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/9f/61/c80a89ad8be77adb592983f3fdcec273ba90384f896cbaf851ff6a61bf41/librt-0.7.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7b6ee74bfa7055c07e0acb56226efd49687488486db8fcfdea5da4cf25323a91", size = 172472, upload-time = "2025-12-06T12:04:01.887Z" }, + { url = "https://files.pythonhosted.org/packages/68/20/315e95f1c19004e2b63e913aae967b1040e900be74f4ea65f4ccaa87ec19/librt-0.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5e3502a543b9b3f906f6d4e88582b7ba13320897e19c60d7c098fa9fda1611f", size = 186805, upload-time = "2025-12-06T12:04:03.185Z" }, + { url = "https://files.pythonhosted.org/packages/93/79/97407f07fbd1cb323870e80b016733737f3042a853298455aa5d2d9c0b5a/librt-0.7.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cb0f330d6af5bcfba339690694bf7c4aedabfa3dd40b17212a2b94a417962ccf", size = 181819, upload-time = "2025-12-06T12:04:04.783Z" }, + { url = "https://files.pythonhosted.org/packages/c8/33/45c99e956279f0fe318cf41fc68568958709a4de67668fc51b59529862ea/librt-0.7.2-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:610a25e8239836fe8eff92628602db13dca5d867e868503239c37f3809b3ce9a", size = 175602, upload-time = "2025-12-06T12:04:06.391Z" }, + { url = "https://files.pythonhosted.org/packages/26/85/31503175c285dc17748b33ec2870073e4d147248dc6fbaeab0f8775d59fe/librt-0.7.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98854ffd0dd6fd64b8a4be4973593746038152e6c239251de908b5a176d8f64a", size = 196497, upload-time = "2025-12-06T12:04:07.641Z" }, + { url = "https://files.pythonhosted.org/packages/bf/35/fba5be06dee862ee6fa532ded2adf05f9249d6cc243489d8ea8c6edfe52b/librt-0.7.2-cp314-cp314-win32.whl", hash = "sha256:879f789b22e9534df279a6cd3af12d26f8fd96785c47db0d2508304cfc6fd7d9", size = 44681, upload-time = "2025-12-06T12:04:08.882Z" }, + { url = "https://files.pythonhosted.org/packages/6d/df/3706f58e2cf8b6827648b70eaeb00bff37602f2fc5f6678686bff1b78881/librt-0.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:cba3ee432767960ce1e908c67c1fa136831c25ac3705e1e188e63ddaf1b46a06", size = 51693, upload-time = "2025-12-06T12:04:10.006Z" }, + { url = "https://files.pythonhosted.org/packages/49/39/516a859d00c4c33ef37c8f1b0e709685587028d904038ca7d7c317fc0802/librt-0.7.2-cp314-cp314-win_arm64.whl", hash = "sha256:d775e5de996105c9a85136c18bce94204f57021af77a913644e8f9b17733a917", size = 44665, upload-time = "2025-12-06T12:04:11.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8b/624c71d15c5507b070d8cb76d1dade630b144276bb05654b47fb24d7d616/librt-0.7.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:7fecc4dcc74e0c97ca36435048e3392ee6aa2ae3e77c285394192f9ad1e1a283", size = 57353, upload-time = "2025-12-06T12:04:13.334Z" }, + { url = "https://files.pythonhosted.org/packages/ac/3a/fe16e8116949325fd584f388f69ec42aaf0711869137601c90f1fd6804dc/librt-0.7.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d643941996b678699fed64271d02439fe23d31d8dee45f0e0b02c81ee77a4d79", size = 59217, upload-time = "2025-12-06T12:04:14.768Z" }, + { url = "https://files.pythonhosted.org/packages/36/fd/74b8db240a27493247cb1b7185fc098f98984fba128513f56a395195c64a/librt-0.7.2-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:dcefbd09a5db038693d22adc1962111d4c2df0b838fde2f3a61fceec9953b9c5", size = 183860, upload-time = "2025-12-06T12:04:16.162Z" }, + { url = "https://files.pythonhosted.org/packages/e7/05/67485dee0b3c134df80426d6dceac1b4259fc1a428e1e0e9211f1a6798b9/librt-0.7.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11445c0460d4522c5959f7770015cdcd7dd025ac2c095c50b78e27878f9cab15", size = 194592, upload-time = "2025-12-06T12:04:17.496Z" }, + { url = "https://files.pythonhosted.org/packages/a2/27/eb4a6e3f88fefae026bda0e80f1a270c942c8f5ff471ebedc964e0899d41/librt-0.7.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c10ae62472a03dc8db52d5dca4a9af5d0935899cf8c550565a39645bf7735d87", size = 206760, upload-time = "2025-12-06T12:04:18.884Z" }, + { url = "https://files.pythonhosted.org/packages/ac/dc/00ae1109b76aca86d094518c9f660a53e539f7b62e643b7789cb30d5f8a4/librt-0.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a38575adf344ca7423bfb10c3a7b5df066dfbe9b95e8b35f1f79eb84e4b38cad", size = 203209, upload-time = "2025-12-06T12:04:20.306Z" }, + { url = "https://files.pythonhosted.org/packages/41/83/56161adc5890e687e11d410584479f66a32df55ec2c87a0bdc5601098a12/librt-0.7.2-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:2dcae85482674912bdd9dc98c6a236a9698c2c13ee53366a996851e3460da26a", size = 196706, upload-time = "2025-12-06T12:04:22.027Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a2/37ccef8860664bebea2ea98dd0a7b1a43a678dbd5d8133f55e34fc694271/librt-0.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f02f9a7a8b720ae3c46b4df736a71d2ef07b59f3149180ad1e1eba7fccabaadf", size = 217211, upload-time = "2025-12-06T12:04:23.36Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ad/7ddc52496decd84993cb7ce7b26d02b3ce854336090f179dc90db24f0de0/librt-0.7.2-cp314-cp314t-win32.whl", hash = "sha256:062de7065ec0d060f0541602a16bed566c4b948aa1d8466c483bb949e27e0ef7", size = 45589, upload-time = "2025-12-06T12:04:25.588Z" }, + { url = "https://files.pythonhosted.org/packages/30/b4/2b5b583a089e6ed9dc5f37df3429fd408b01b982dd4bcb81dad011833bd8/librt-0.7.2-cp314-cp314t-win_amd64.whl", hash = "sha256:fb6a190f76a687b034362e610c4990306ad0d913e98a8e588dcec91486797869", size = 53003, upload-time = "2025-12-06T12:04:26.831Z" }, + { url = "https://files.pythonhosted.org/packages/d9/aa/6fde1d845d01d891861f39a509a53a9390d0f4a311c032e1a2effe5b960b/librt-0.7.2-cp314-cp314t-win_arm64.whl", hash = "sha256:35e1c435ee1e24ba2b018172a3ed1caed5275168a016e560e695057acd532add", size = 45650, upload-time = "2025-12-06T12:04:28.131Z" }, +] + [[package]] name = "markdown" version = "3.9" @@ -978,7 +1067,7 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.6.22" +version = "9.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, @@ -993,9 +1082,9 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/5d/317e37b6c43325cb376a1d6439df9cc743b8ee41c84603c2faf7286afc82/mkdocs_material-9.6.22.tar.gz", hash = "sha256:87c158b0642e1ada6da0cbd798a3389b0bc5516b90e5ece4a0fb939f00bacd1c", size = 4044968, upload-time = "2025-10-15T09:21:15.409Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/3b/111b84cd6ff28d9e955b5f799ef217a17bc1684ac346af333e6100e413cb/mkdocs_material-9.7.0.tar.gz", hash = "sha256:602b359844e906ee402b7ed9640340cf8a474420d02d8891451733b6b02314ec", size = 4094546, upload-time = "2025-11-11T08:49:09.73Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/82/6fdb9a7a04fb222f4849ffec1006f891a0280825a20314d11f3ccdee14eb/mkdocs_material-9.6.22-py3-none-any.whl", hash = "sha256:14ac5f72d38898b2f98ac75a5531aaca9366eaa427b0f49fc2ecf04d99b7ad84", size = 9206252, upload-time = "2025-10-15T09:21:12.175Z" }, + { url = "https://files.pythonhosted.org/packages/04/87/eefe8d5e764f4cf50ed91b943f8e8f96b5efd65489d8303b7a36e2e79834/mkdocs_material-9.7.0-py3-none-any.whl", hash = "sha256:da2866ea53601125ff5baa8aa06404c6e07af3c5ce3d5de95e3b52b80b442887", size = 9283770, upload-time = "2025-11-11T08:49:06.26Z" }, ] [[package]] @@ -1026,7 +1115,7 @@ wheels = [ [[package]] name = "mkdocstrings-python" -version = "1.18.2" +version = "2.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "griffe" }, @@ -1034,9 +1123,9 @@ dependencies = [ { name = "mkdocstrings" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/ae/58ab2bfbee2792e92a98b97e872f7c003deb903071f75d8d83aa55db28fa/mkdocstrings_python-1.18.2.tar.gz", hash = "sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323", size = 207972, upload-time = "2025-08-28T16:11:19.847Z" } +sdist = { url = "https://files.pythonhosted.org/packages/24/75/d30af27a2906f00eb90143470272376d728521997800f5dce5b340ba35bc/mkdocstrings_python-2.0.1.tar.gz", hash = "sha256:843a562221e6a471fefdd4b45cc6c22d2607ccbad632879234fa9692e9cf7732", size = 199345, upload-time = "2025-12-03T14:26:11.755Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl", hash = "sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d", size = 138215, upload-time = "2025-08-28T16:11:18.176Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/c5f8deba7d2cbdfa7967a716ae801aa9ca5f734b8f54fd473ef77a088dbe/mkdocstrings_python-2.0.1-py3-none-any.whl", hash = "sha256:66ecff45c5f8b71bf174e11d49afc845c2dfc7fc0ab17a86b6b337e0f24d8d90", size = 105055, upload-time = "2025-12-03T14:26:10.184Z" }, ] [[package]] @@ -1179,47 +1268,48 @@ wheels = [ [[package]] name = "mypy" -version = "1.18.2" +version = "1.19.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "librt" }, { name = "mypy-extensions" }, { name = "pathspec" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload-time = "2025-09-19T00:11:10.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/6f/657961a0743cff32e6c0611b63ff1c1970a0b482ace35b069203bf705187/mypy-1.18.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eab0cf6294dafe397c261a75f96dc2c31bffe3b944faa24db5def4e2b0f77c", size = 12807973, upload-time = "2025-09-19T00:10:35.282Z" }, - { url = "https://files.pythonhosted.org/packages/10/e9/420822d4f661f13ca8900f5fa239b40ee3be8b62b32f3357df9a3045a08b/mypy-1.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a780ca61fc239e4865968ebc5240bb3bf610ef59ac398de9a7421b54e4a207e", size = 11896527, upload-time = "2025-09-19T00:10:55.791Z" }, - { url = "https://files.pythonhosted.org/packages/aa/73/a05b2bbaa7005f4642fcfe40fb73f2b4fb6bb44229bd585b5878e9a87ef8/mypy-1.18.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:448acd386266989ef11662ce3c8011fd2a7b632e0ec7d61a98edd8e27472225b", size = 12507004, upload-time = "2025-09-19T00:11:05.411Z" }, - { url = "https://files.pythonhosted.org/packages/4f/01/f6e4b9f0d031c11ccbd6f17da26564f3a0f3c4155af344006434b0a05a9d/mypy-1.18.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f9e171c465ad3901dc652643ee4bffa8e9fef4d7d0eece23b428908c77a76a66", size = 13245947, upload-time = "2025-09-19T00:10:46.923Z" }, - { url = "https://files.pythonhosted.org/packages/d7/97/19727e7499bfa1ae0773d06afd30ac66a58ed7437d940c70548634b24185/mypy-1.18.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:592ec214750bc00741af1f80cbf96b5013d81486b7bb24cb052382c19e40b428", size = 13499217, upload-time = "2025-09-19T00:09:39.472Z" }, - { url = "https://files.pythonhosted.org/packages/9f/4f/90dc8c15c1441bf31cf0f9918bb077e452618708199e530f4cbd5cede6ff/mypy-1.18.2-cp310-cp310-win_amd64.whl", hash = "sha256:7fb95f97199ea11769ebe3638c29b550b5221e997c63b14ef93d2e971606ebed", size = 9766753, upload-time = "2025-09-19T00:10:49.161Z" }, - { url = "https://files.pythonhosted.org/packages/88/87/cafd3ae563f88f94eec33f35ff722d043e09832ea8530ef149ec1efbaf08/mypy-1.18.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:807d9315ab9d464125aa9fcf6d84fde6e1dc67da0b6f80e7405506b8ac72bc7f", size = 12731198, upload-time = "2025-09-19T00:09:44.857Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e0/1e96c3d4266a06d4b0197ace5356d67d937d8358e2ee3ffac71faa843724/mypy-1.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:776bb00de1778caf4db739c6e83919c1d85a448f71979b6a0edd774ea8399341", size = 11817879, upload-time = "2025-09-19T00:09:47.131Z" }, - { url = "https://files.pythonhosted.org/packages/72/ef/0c9ba89eb03453e76bdac5a78b08260a848c7bfc5d6603634774d9cd9525/mypy-1.18.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1379451880512ffce14505493bd9fe469e0697543717298242574882cf8cdb8d", size = 12427292, upload-time = "2025-09-19T00:10:22.472Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/ec4a061dd599eb8179d5411d99775bec2a20542505988f40fc2fee781068/mypy-1.18.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1331eb7fd110d60c24999893320967594ff84c38ac6d19e0a76c5fd809a84c86", size = 13163750, upload-time = "2025-09-19T00:09:51.472Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5f/2cf2ceb3b36372d51568f2208c021870fe7834cf3186b653ac6446511839/mypy-1.18.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ca30b50a51e7ba93b00422e486cbb124f1c56a535e20eff7b2d6ab72b3b2e37", size = 13351827, upload-time = "2025-09-19T00:09:58.311Z" }, - { url = "https://files.pythonhosted.org/packages/c8/7d/2697b930179e7277529eaaec1513f8de622818696857f689e4a5432e5e27/mypy-1.18.2-cp311-cp311-win_amd64.whl", hash = "sha256:664dc726e67fa54e14536f6e1224bcfce1d9e5ac02426d2326e2bb4e081d1ce8", size = 9757983, upload-time = "2025-09-19T00:10:09.071Z" }, - { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273, upload-time = "2025-09-19T00:10:58.321Z" }, - { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910, upload-time = "2025-09-19T00:10:20.043Z" }, - { url = "https://files.pythonhosted.org/packages/5f/a9/b29de53e42f18e8cc547e38daa9dfa132ffdc64f7250e353f5c8cdd44bee/mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893", size = 12465585, upload-time = "2025-09-19T00:10:33.005Z" }, - { url = "https://files.pythonhosted.org/packages/77/ae/6c3d2c7c61ff21f2bee938c917616c92ebf852f015fb55917fd6e2811db2/mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914", size = 13348562, upload-time = "2025-09-19T00:10:11.51Z" }, - { url = "https://files.pythonhosted.org/packages/4d/31/aec68ab3b4aebdf8f36d191b0685d99faa899ab990753ca0fee60fb99511/mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8", size = 13533296, upload-time = "2025-09-19T00:10:06.568Z" }, - { url = "https://files.pythonhosted.org/packages/9f/83/abcb3ad9478fca3ebeb6a5358bb0b22c95ea42b43b7789c7fb1297ca44f4/mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074", size = 9828828, upload-time = "2025-09-19T00:10:28.203Z" }, - { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728, upload-time = "2025-09-19T00:10:01.33Z" }, - { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758, upload-time = "2025-09-19T00:10:42.607Z" }, - { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342, upload-time = "2025-09-19T00:11:00.371Z" }, - { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709, upload-time = "2025-09-19T00:11:03.358Z" }, - { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806, upload-time = "2025-09-19T00:10:26.073Z" }, - { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262, upload-time = "2025-09-19T00:10:40.035Z" }, - { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775, upload-time = "2025-09-19T00:10:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852, upload-time = "2025-09-19T00:10:51.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242, upload-time = "2025-09-19T00:11:07.955Z" }, - { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683, upload-time = "2025-09-19T00:09:55.572Z" }, - { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749, upload-time = "2025-09-19T00:10:44.827Z" }, - { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959, upload-time = "2025-09-19T00:10:37.344Z" }, - { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload-time = "2025-09-19T00:10:15.489Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f9/b5/b58cdc25fadd424552804bf410855d52324183112aa004f0732c5f6324cf/mypy-1.19.0.tar.gz", hash = "sha256:f6b874ca77f733222641e5c46e4711648c4037ea13646fd0cdc814c2eaec2528", size = 3579025, upload-time = "2025-11-28T15:49:01.26Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/8f/55fb488c2b7dabd76e3f30c10f7ab0f6190c1fcbc3e97b1e588ec625bbe2/mypy-1.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6148ede033982a8c5ca1143de34c71836a09f105068aaa8b7d5edab2b053e6c8", size = 13093239, upload-time = "2025-11-28T15:45:11.342Z" }, + { url = "https://files.pythonhosted.org/packages/72/1b/278beea978456c56b3262266274f335c3ba5ff2c8108b3b31bec1ffa4c1d/mypy-1.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a9ac09e52bb0f7fb912f5d2a783345c72441a08ef56ce3e17c1752af36340a39", size = 12156128, upload-time = "2025-11-28T15:46:02.566Z" }, + { url = "https://files.pythonhosted.org/packages/21/f8/e06f951902e136ff74fd7a4dc4ef9d884faeb2f8eb9c49461235714f079f/mypy-1.19.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11f7254c15ab3f8ed68f8e8f5cbe88757848df793e31c36aaa4d4f9783fd08ab", size = 12753508, upload-time = "2025-11-28T15:44:47.538Z" }, + { url = "https://files.pythonhosted.org/packages/67/5a/d035c534ad86e09cee274d53cf0fd769c0b29ca6ed5b32e205be3c06878c/mypy-1.19.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318ba74f75899b0e78b847d8c50821e4c9637c79d9a59680fc1259f29338cb3e", size = 13507553, upload-time = "2025-11-28T15:44:39.26Z" }, + { url = "https://files.pythonhosted.org/packages/6a/17/c4a5498e00071ef29e483a01558b285d086825b61cf1fb2629fbdd019d94/mypy-1.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf7d84f497f78b682edd407f14a7b6e1a2212b433eedb054e2081380b7395aa3", size = 13792898, upload-time = "2025-11-28T15:44:31.102Z" }, + { url = "https://files.pythonhosted.org/packages/67/f6/bb542422b3ee4399ae1cdc463300d2d91515ab834c6233f2fd1d52fa21e0/mypy-1.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:c3385246593ac2b97f155a0e9639be906e73534630f663747c71908dfbf26134", size = 10048835, upload-time = "2025-11-28T15:48:15.744Z" }, + { url = "https://files.pythonhosted.org/packages/0f/d2/010fb171ae5ac4a01cc34fbacd7544531e5ace95c35ca166dd8fd1b901d0/mypy-1.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a31e4c28e8ddb042c84c5e977e28a21195d086aaffaf08b016b78e19c9ef8106", size = 13010563, upload-time = "2025-11-28T15:48:23.975Z" }, + { url = "https://files.pythonhosted.org/packages/41/6b/63f095c9f1ce584fdeb595d663d49e0980c735a1d2004720ccec252c5d47/mypy-1.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34ec1ac66d31644f194b7c163d7f8b8434f1b49719d403a5d26c87fff7e913f7", size = 12077037, upload-time = "2025-11-28T15:47:51.582Z" }, + { url = "https://files.pythonhosted.org/packages/d7/83/6cb93d289038d809023ec20eb0b48bbb1d80af40511fa077da78af6ff7c7/mypy-1.19.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb64b0ba5980466a0f3f9990d1c582bcab8db12e29815ecb57f1408d99b4bff7", size = 12680255, upload-time = "2025-11-28T15:46:57.628Z" }, + { url = "https://files.pythonhosted.org/packages/99/db/d217815705987d2cbace2edd9100926196d6f85bcb9b5af05058d6e3c8ad/mypy-1.19.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:120cffe120cca5c23c03c77f84abc0c14c5d2e03736f6c312480020082f1994b", size = 13421472, upload-time = "2025-11-28T15:47:59.655Z" }, + { url = "https://files.pythonhosted.org/packages/4e/51/d2beaca7c497944b07594f3f8aad8d2f0e8fc53677059848ae5d6f4d193e/mypy-1.19.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7a500ab5c444268a70565e374fc803972bfd1f09545b13418a5174e29883dab7", size = 13651823, upload-time = "2025-11-28T15:45:29.318Z" }, + { url = "https://files.pythonhosted.org/packages/aa/d1/7883dcf7644db3b69490f37b51029e0870aac4a7ad34d09ceae709a3df44/mypy-1.19.0-cp311-cp311-win_amd64.whl", hash = "sha256:c14a98bc63fd867530e8ec82f217dae29d0550c86e70debc9667fff1ec83284e", size = 10049077, upload-time = "2025-11-28T15:45:39.818Z" }, + { url = "https://files.pythonhosted.org/packages/11/7e/1afa8fb188b876abeaa14460dc4983f909aaacaa4bf5718c00b2c7e0b3d5/mypy-1.19.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0fb3115cb8fa7c5f887c8a8d81ccdcb94cff334684980d847e5a62e926910e1d", size = 13207728, upload-time = "2025-11-28T15:46:26.463Z" }, + { url = "https://files.pythonhosted.org/packages/b2/13/f103d04962bcbefb1644f5ccb235998b32c337d6c13145ea390b9da47f3e/mypy-1.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3e19e3b897562276bb331074d64c076dbdd3e79213f36eed4e592272dabd760", size = 12202945, upload-time = "2025-11-28T15:48:49.143Z" }, + { url = "https://files.pythonhosted.org/packages/e4/93/a86a5608f74a22284a8ccea8592f6e270b61f95b8588951110ad797c2ddd/mypy-1.19.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9d491295825182fba01b6ffe2c6fe4e5a49dbf4e2bb4d1217b6ced3b4797bc6", size = 12718673, upload-time = "2025-11-28T15:47:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/3d/58/cf08fff9ced0423b858f2a7495001fda28dc058136818ee9dffc31534ea9/mypy-1.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6016c52ab209919b46169651b362068f632efcd5eb8ef9d1735f6f86da7853b2", size = 13608336, upload-time = "2025-11-28T15:48:32.625Z" }, + { url = "https://files.pythonhosted.org/packages/64/ed/9c509105c5a6d4b73bb08733102a3ea62c25bc02c51bca85e3134bf912d3/mypy-1.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f188dcf16483b3e59f9278c4ed939ec0254aa8a60e8fc100648d9ab5ee95a431", size = 13833174, upload-time = "2025-11-28T15:45:48.091Z" }, + { url = "https://files.pythonhosted.org/packages/cd/71/01939b66e35c6f8cb3e6fdf0b657f0fd24de2f8ba5e523625c8e72328208/mypy-1.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:0e3c3d1e1d62e678c339e7ade72746a9e0325de42cd2cccc51616c7b2ed1a018", size = 10112208, upload-time = "2025-11-28T15:46:41.702Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0d/a1357e6bb49e37ce26fcf7e3cc55679ce9f4ebee0cd8b6ee3a0e301a9210/mypy-1.19.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7686ed65dbabd24d20066f3115018d2dce030d8fa9db01aa9f0a59b6813e9f9e", size = 13191993, upload-time = "2025-11-28T15:47:22.336Z" }, + { url = "https://files.pythonhosted.org/packages/5d/75/8e5d492a879ec4490e6ba664b5154e48c46c85b5ac9785792a5ec6a4d58f/mypy-1.19.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fd4a985b2e32f23bead72e2fb4bbe5d6aceee176be471243bd831d5b2644672d", size = 12174411, upload-time = "2025-11-28T15:44:55.492Z" }, + { url = "https://files.pythonhosted.org/packages/71/31/ad5dcee9bfe226e8eaba777e9d9d251c292650130f0450a280aec3485370/mypy-1.19.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fc51a5b864f73a3a182584b1ac75c404396a17eced54341629d8bdcb644a5bba", size = 12727751, upload-time = "2025-11-28T15:44:14.169Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/b6b8994ce07405f6039701f4b66e9d23f499d0b41c6dd46ec28f96d57ec3/mypy-1.19.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:37af5166f9475872034b56c5efdcf65ee25394e9e1d172907b84577120714364", size = 13593323, upload-time = "2025-11-28T15:46:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/68/b1/126e274484cccdf099a8e328d4fda1c7bdb98a5e888fa6010b00e1bbf330/mypy-1.19.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:510c014b722308c9bd377993bcbf9a07d7e0692e5fa8fc70e639c1eb19fc6bee", size = 13818032, upload-time = "2025-11-28T15:46:18.286Z" }, + { url = "https://files.pythonhosted.org/packages/f8/56/53a8f70f562dfc466c766469133a8a4909f6c0012d83993143f2a9d48d2d/mypy-1.19.0-cp313-cp313-win_amd64.whl", hash = "sha256:cabbee74f29aa9cd3b444ec2f1e4fa5a9d0d746ce7567a6a609e224429781f53", size = 10120644, upload-time = "2025-11-28T15:47:43.99Z" }, + { url = "https://files.pythonhosted.org/packages/b0/f4/7751f32f56916f7f8c229fe902cbdba3e4dd3f3ea9e8b872be97e7fc546d/mypy-1.19.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f2e36bed3c6d9b5f35d28b63ca4b727cb0228e480826ffc8953d1892ddc8999d", size = 13185236, upload-time = "2025-11-28T15:45:20.696Z" }, + { url = "https://files.pythonhosted.org/packages/35/31/871a9531f09e78e8d145032355890384f8a5b38c95a2c7732d226b93242e/mypy-1.19.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a18d8abdda14035c5718acb748faec09571432811af129bf0d9e7b2d6699bf18", size = 12213902, upload-time = "2025-11-28T15:46:10.117Z" }, + { url = "https://files.pythonhosted.org/packages/58/b8/af221910dd40eeefa2077a59107e611550167b9994693fc5926a0b0f87c0/mypy-1.19.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f75e60aca3723a23511948539b0d7ed514dda194bc3755eae0bfc7a6b4887aa7", size = 12738600, upload-time = "2025-11-28T15:44:22.521Z" }, + { url = "https://files.pythonhosted.org/packages/11/9f/c39e89a3e319c1d9c734dedec1183b2cc3aefbab066ec611619002abb932/mypy-1.19.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f44f2ae3c58421ee05fe609160343c25f70e3967f6e32792b5a78006a9d850f", size = 13592639, upload-time = "2025-11-28T15:48:08.55Z" }, + { url = "https://files.pythonhosted.org/packages/97/6d/ffaf5f01f5e284d9033de1267e6c1b8f3783f2cf784465378a86122e884b/mypy-1.19.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:63ea6a00e4bd6822adbfc75b02ab3653a17c02c4347f5bb0cf1d5b9df3a05835", size = 13799132, upload-time = "2025-11-28T15:47:06.032Z" }, + { url = "https://files.pythonhosted.org/packages/fe/b0/c33921e73aaa0106224e5a34822411bea38046188eb781637f5a5b07e269/mypy-1.19.0-cp314-cp314-win_amd64.whl", hash = "sha256:3ad925b14a0bb99821ff6f734553294aa6a3440a8cb082fe1f5b84dfb662afb1", size = 10269832, upload-time = "2025-11-28T15:47:29.392Z" }, + { url = "https://files.pythonhosted.org/packages/09/0e/fe228ed5aeab470c6f4eb82481837fadb642a5aa95cc8215fd2214822c10/mypy-1.19.0-py3-none-any.whl", hash = "sha256:0c01c99d626380752e527d5ce8e69ffbba2046eb8a060db0329690849cf9b6f9", size = 2469714, upload-time = "2025-11-28T15:45:33.22Z" }, ] [[package]] @@ -1278,41 +1368,41 @@ wheels = [ [[package]] name = "polyfactory" -version = "2.22.2" +version = "3.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "faker" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4e/a6/950d13856d995705df33b92451559fd317207a9c43629ab1771135a0c966/polyfactory-2.22.2.tar.gz", hash = "sha256:a3297aa0b004f2b26341e903795565ae88507c4d86e68b132c2622969028587a", size = 254462, upload-time = "2025-08-15T06:23:21.28Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/3a/db522ea17e0e8d38f3128889b5b600b3a1d5728ae0724f43a0ed5ed1f82e/polyfactory-3.1.0.tar.gz", hash = "sha256:9061c0a282e0594502576455230fce534f2915042be77715256c1e6bbbf24ac5", size = 344189, upload-time = "2025-11-25T08:10:16.555Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/fe/d52c90e07c458f38b26f9972a25cb011b2744813f76fcd6121dde64744fa/polyfactory-2.22.2-py3-none-any.whl", hash = "sha256:9bea58ac9a80375b4153cd60820f75e558b863e567e058794d28c6a52b84118a", size = 63715, upload-time = "2025-08-15T06:23:19.664Z" }, + { url = "https://files.pythonhosted.org/packages/94/7c/535646d75a1c510065169ea65693613c7a6bc64491bea13e7dad4f028ff3/polyfactory-3.1.0-py3-none-any.whl", hash = "sha256:78171232342c25906d542513c9f00ebf41eadec2c67b498490a577024dd7e867", size = 61836, upload-time = "2025-11-25T08:10:14.893Z" }, ] [[package]] name = "prek" -version = "0.2.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/6c/000abb753c20e58360776a061889583736fe83d0ba407e32c7f0ee50898d/prek-0.2.8.tar.gz", hash = "sha256:a05442873a9ce79ed2dc05444af1b001ad0f789a07b7c580f4ddc63b287c7f66", size = 3016660, upload-time = "2025-10-14T07:27:12.517Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/8c/d3c70fc993429e7dffe5e7c49ed0d4c83165b70e911e76d1df1c8402e084/prek-0.2.8-py3-none-linux_armv6l.whl", hash = "sha256:50c1f1d1543e579ca9f3b98a895d8d9d68bd2bce550b2676993dae24db869e5a", size = 4393147, upload-time = "2025-10-14T07:26:45.761Z" }, - { url = "https://files.pythonhosted.org/packages/4c/77/8ba2585898578befdcdd2e991a39ffbf021a8e8d057cd2aa0522d944bd7a/prek-0.2.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:958f40a747804070608f5a910c13fc648dbfc9dfc67d18170ab3e20b0aeca3a2", size = 4497209, upload-time = "2025-10-14T07:26:48.308Z" }, - { url = "https://files.pythonhosted.org/packages/7f/dd/b942433b2683a402de4c5877ebcf4b0ec2f378601df8bc56752d80d9b8a4/prek-0.2.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:97f8b9432b29d9c25e3f266a236ac68c4e5d41015f4f28cbcd91e410cf9ee7a5", size = 4186812, upload-time = "2025-10-14T07:26:49.993Z" }, - { url = "https://files.pythonhosted.org/packages/ce/9e/7c8118f484f0da9de91aad3545a360877f666d792e4898ef96554a80356f/prek-0.2.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:8ec86a12909377b6cc9ffeac1fdd811ae4563f5eb1cb2b71752142bdddc4fb67", size = 4373771, upload-time = "2025-10-14T07:26:51.194Z" }, - { url = "https://files.pythonhosted.org/packages/1e/7d/9c849fbad462ee48d1ff37aa466093c32c38a3b3cae45233a2589da4fc5b/prek-0.2.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9ddd60fefeafd268a54e3f5388dd327131f3583b23561f13fc9c2e652b556477", size = 4328165, upload-time = "2025-10-14T07:26:53.184Z" }, - { url = "https://files.pythonhosted.org/packages/92/9a/663f808e5dac9857d6c16c4880348555ce34238d8c9995819a67501596d3/prek-0.2.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebf221bffb6992c66951344d9b0742d3cd3780604e7808a061c11b94686fd03c", size = 4603834, upload-time = "2025-10-14T07:26:54.696Z" }, - { url = "https://files.pythonhosted.org/packages/b9/22/73be4f42194618543248ae8b66ad8c8a56123c6e7c2357746af645beabda/prek-0.2.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9c213f2e4fa8bb02f56e5214ff8e38bfdb3252bbde43b3fe6254c055c6a8c26e", size = 5046163, upload-time = "2025-10-14T07:26:56.138Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8f/0263f67a6434b4fc71da86d961cb9580c1584d2ffd2baee6166d5a0fbd1a/prek-0.2.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2f106629e6930dd67964ee096de741b6ee97c24ba1c2d51a6f685c44faca212e", size = 4969756, upload-time = "2025-10-14T07:26:57.901Z" }, - { url = "https://files.pythonhosted.org/packages/a1/6b/e3c2cda8f232311520fb0ea974de4fdfa61a000fe6eb8ff7099a7faf9781/prek-0.2.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:442940dd546ffb21a288828fec543d7d5ad01282dd4babf1315fe5b70f1c7bff", size = 5086746, upload-time = "2025-10-14T07:26:59.21Z" }, - { url = "https://files.pythonhosted.org/packages/0d/de/c7ee3667a41c901112a41322678fc66b3dff347100c0ff85b3da1612ac3c/prek-0.2.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bb8ab03dc014738c6b4247899bf886bc7d5d6ddbda9225100708a97dfb2286d", size = 4676404, upload-time = "2025-10-14T07:27:00.856Z" }, - { url = "https://files.pythonhosted.org/packages/53/58/8e0a209e81efa89cd50c93dbb6d1996aef5c6e78f973b055be3cb3b865da/prek-0.2.8-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:7d06a13e8d6fe631b610390f6978254ba1b9baae54cebb8aa07d5912abc6d311", size = 4383030, upload-time = "2025-10-14T07:27:02.347Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e7/c7e47f6773d9b0249263316d9e57715ab294a84fca4a5b6d8cfc68891402/prek-0.2.8-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:981a74da05f97e2ba9aba46caf6236722bccf2013f1d20b94c63f6f6ffd3f245", size = 4489206, upload-time = "2025-10-14T07:27:03.675Z" }, - { url = "https://files.pythonhosted.org/packages/e7/41/d43dd377ce9380d0d4fa24df2cb0da64ae0a23649284e1b5986bd902d3b0/prek-0.2.8-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:7bb0698c61f90361dd0dbc7f1dc96a2f6f0a4d5cadd693ce1c5aa88a15f6780d", size = 4313618, upload-time = "2025-10-14T07:27:04.985Z" }, - { url = "https://files.pythonhosted.org/packages/9a/b1/d05cfaeee60d905b23018429c4778b4ad5700c9df9e992e5c6758caf721c/prek-0.2.8-py3-none-musllinux_1_1_i686.whl", hash = "sha256:a46ba17046f5c4cc2f6da560d03288432c84e16cd9ea3ff59a260dff5c80c544", size = 4504124, upload-time = "2025-10-14T07:27:06.266Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0a/288c79e2b3b89d8b1b5a9aa517b1bbca867a34f208b8bdfbf586ab63f080/prek-0.2.8-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:c3780f1090a3f802af7a5d7cfb058783bcc20854e8b4238fdeebe4fcebdbe03d", size = 4776011, upload-time = "2025-10-14T07:27:07.477Z" }, - { url = "https://files.pythonhosted.org/packages/69/43/85fe1624ceaff8111ba77503dbd6b93fe73b8e7886874ca7ef84ef9dced5/prek-0.2.8-py3-none-win32.whl", hash = "sha256:ee9ca6b8c65a61f038f772d5ba693c9de59921188132730570c3eb446e065ac5", size = 4209885, upload-time = "2025-10-14T07:27:08.633Z" }, - { url = "https://files.pythonhosted.org/packages/25/7c/3286544130bff47741dada6361c4d0707fe4cf074841d31ce8f7ee74f223/prek-0.2.8-py3-none-win_amd64.whl", hash = "sha256:d7fdbb60e393283a1d4143724f0ba0dd0d5ac594e2a27ff6693a38e1c274a399", size = 4776058, upload-time = "2025-10-14T07:27:10.211Z" }, - { url = "https://files.pythonhosted.org/packages/0f/23/ae15031b74ce35e46d3a4abe9db13e0b69120c30fcee6d666af97c53d30b/prek-0.2.8-py3-none-win_arm64.whl", hash = "sha256:e0d38514a2dd493b9a9d31a79b129ab3bfae39fd70a71a31a4dd01451b25a9bd", size = 4461772, upload-time = "2025-10-14T07:27:11.398Z" }, +version = "0.2.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/f5/d18c5981540da731b0dbb3499718256764d4e3c939011e78b7bb3637b626/prek-0.2.19.tar.gz", hash = "sha256:2995be837a97ea9b8d2f27894b1fc763594701bafbc8d26c46f80ea9e2cb28a9", size = 346456, upload-time = "2025-11-26T09:27:22.552Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/ab/b23d83992e76738c3aeb254739e554f32d11be58121488b124918e461200/prek-0.2.19-py3-none-linux_armv6l.whl", hash = "sha256:8879bd9df431bfa689cd38633e324b76d6579cf1978f186849c75c9d7c0dc6b4", size = 4681449, upload-time = "2025-11-26T09:26:58.126Z" }, + { url = "https://files.pythonhosted.org/packages/9f/4b/d2289899e3d05e825018e9e6b6d2b5e95e1b877f9b673cda352555b2b778/prek-0.2.19-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3b57000eb18f5621c55ef255da8953aaaa316b013714e05709c76accc24487bf", size = 4754502, upload-time = "2025-11-26T09:27:10.633Z" }, + { url = "https://files.pythonhosted.org/packages/e4/9a/198336704e8faf86293626d39657136cb42bed7cd046a6fd183c7497e5ec/prek-0.2.19-py3-none-macosx_11_0_arm64.whl", hash = "sha256:598cad01b68fae2732ff552c93e8286071e58796c7f3c461c298ad8618d984ab", size = 4484800, upload-time = "2025-11-26T09:27:06.322Z" }, + { url = "https://files.pythonhosted.org/packages/12/e6/d0f87337413a79eff029d1eb6a2d2b66d07f8bd59edbd30220d195654ad5/prek-0.2.19-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:dd8e5f36022fcbefbc9750e3f5067a01102b1c0808325489f5614bc012be1136", size = 4684849, upload-time = "2025-11-26T09:26:52.688Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b5/e4f4f0acc8ad1fd967494b962bfabc821807b52a7c68d2bae30c65b588c4/prek-0.2.19-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:721271a31f51c8c7994d24e5e3816a249c482b56fe287ec31e96f47479432201", size = 4608595, upload-time = "2025-11-26T09:26:44.418Z" }, + { url = "https://files.pythonhosted.org/packages/c8/24/faa519d2b8b9ceba6dd43c3e993ebacfef33ddc4be2b781beef24b9ad79e/prek-0.2.19-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:116bd9152c68be9a77b40af15763ddba73d4744dd606fe6686c3d2e9eb7b52b1", size = 4893501, upload-time = "2025-11-26T09:27:16.515Z" }, + { url = "https://files.pythonhosted.org/packages/d4/19/2b92c8fbfe9872a233fc326cb969348dd2fc8db0d01323cf822b5c2990ff/prek-0.2.19-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:96aef4dfcf8c3c28d93ee93f78289e07a3ce60e1f2f91d3eb9f023dc75b62216", size = 5318688, upload-time = "2025-11-26T09:27:02.662Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8e/934b5dff72aaf6df41ae59bf5324f2c3db8a123cb976387e85c16cc639b2/prek-0.2.19-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a1156a1f525d3f6b69bc1c07a0dea930cb9027f95bcb4d390fe5fe7fe88687e", size = 5261297, upload-time = "2025-11-26T09:27:14.677Z" }, + { url = "https://files.pythonhosted.org/packages/89/ba/990decf00161eed117fb7c71a9f2cba71879e77bf7a6e17d94659f72cd4e/prek-0.2.19-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:485b152f4a637aa761ab1634a6b9a38cd07cc6d23e3651f2c8eb4d7a507e132c", size = 5328804, upload-time = "2025-11-26T09:26:48.591Z" }, + { url = "https://files.pythonhosted.org/packages/bf/57/b7b87ee878c45046cb220ecdd257ea0398984b104f983b7eb25a92fe86e2/prek-0.2.19-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7613493f39918247f2d97ebce8b3692fc738aa2ab8a9f76cfa800947756cfa42", size = 4938116, upload-time = "2025-11-26T09:27:00.417Z" }, + { url = "https://files.pythonhosted.org/packages/4b/50/33b8cd6fe3517be2a4303a72b20341a54b728e9fc0027e0cc65843210ee9/prek-0.2.19-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:a1546907f28b56c940f7d3cd9452052bcd97be31de92bf0a4bd07c4746929a00", size = 4694953, upload-time = "2025-11-26T09:26:46.463Z" }, + { url = "https://files.pythonhosted.org/packages/db/8d/06b49a443a43a0fbf576e0d068ce4cce2a76367b19f42552f6182c3d06a0/prek-0.2.19-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:7db50ebce756e6d67c4ed1935c6e1bcacf29662c9bfee4a0f401d3fb0385d922", size = 4708769, upload-time = "2025-11-26T09:26:50.737Z" }, + { url = "https://files.pythonhosted.org/packages/18/d9/1e317d0697a98b2c57e2b4c1f8d3efeb6db86b81ce2df5211fdbb17f8b7c/prek-0.2.19-py3-none-musllinux_1_1_armv7l.whl", hash = "sha256:37f03e0796d753a9bd82ed09a7e901474e6a26b9a6ceffa5003a3fa703497a8e", size = 4593381, upload-time = "2025-11-26T09:27:12.592Z" }, + { url = "https://files.pythonhosted.org/packages/0c/f0/0e32a9a7fc7876d08f5b118ecab6e81c5b433ddaa4daaa6c930c46c7d916/prek-0.2.19-py3-none-musllinux_1_1_i686.whl", hash = "sha256:3b0da9f14191e0adfb55e626ce3562d802800bc9aea96bbbdc1374290ef848c9", size = 4787292, upload-time = "2025-11-26T09:27:08.071Z" }, + { url = "https://files.pythonhosted.org/packages/e0/61/70204d48dd86a472d56dc75d2d9caf8236507a563428cb22fe5c90933978/prek-0.2.19-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:9cef90e8f8d5de9a165f2a81d9ce728bd3b99b65620a8427928e832a43fe4c4b", size = 5053192, upload-time = "2025-11-26T09:26:56.027Z" }, + { url = "https://files.pythonhosted.org/packages/14/5c/13361ca9aa8ce3bce50430b5f2afb2ea9e44639841a638f998c762c27708/prek-0.2.19-py3-none-win32.whl", hash = "sha256:a6d19d8b10bc4aba18cf1a7902de7bede05671f484adabeac2d96a02ac470ef1", size = 4442525, upload-time = "2025-11-26T09:27:18.678Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d5/bf010982c063ed630bf75c058e2313ba546daa11343fa2ba3116a19f5b69/prek-0.2.19-py3-none-win_amd64.whl", hash = "sha256:34a638a2cb9808b3db8b7020c9cf03d445e9c957a36e09a443a19e1e71a2fb6c", size = 5114204, upload-time = "2025-11-26T09:27:04.784Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/42a5fb0f0dc2d0ae117e533e9da8a0fb41850526b27dd5dd5c0f37e878fa/prek-0.2.19-py3-none-win_arm64.whl", hash = "sha256:1a865880cc2362eb0698d938b811a796dfd5bcb49ef7abd02568f0f5e3b7ec88", size = 4796136, upload-time = "2025-11-26T09:27:20.766Z" }, ] [[package]] @@ -1431,91 +1521,103 @@ wheels = [ [[package]] name = "psqlpy" -version = "0.11.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/9e/95659a30735fbaa37f30694a0ada3afc30ee1c12f30eca73cea233cc090c/psqlpy-0.11.6.tar.gz", hash = "sha256:7dd11253fb17059db9ddf41c0b96497ba107855905fbcdfee7f7ce3ea1745adb", size = 290188, upload-time = "2025-08-14T17:23:11.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/aa/7a6d62eb8f0a09f6ba9998be29874ee31a352182304d0a04bcd910835b45/psqlpy-0.11.6-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:952e2e4e0bdaa29eaf5967a82f2368f03639f2dfbe9d3c7e0b97b55830a79b27", size = 4310132, upload-time = "2025-08-14T17:20:46.739Z" }, - { url = "https://files.pythonhosted.org/packages/5b/9e/46bc085089f6671f4a5c9888e23113f556edf08e968b1870c5a28b9b22e7/psqlpy-0.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2955068c9bd5873ef77a5b86bcbe4825ce859a55c2c06ab47743d1c075f21e6c", size = 4516406, upload-time = "2025-08-14T17:20:49.488Z" }, - { url = "https://files.pythonhosted.org/packages/7f/c3/ae318e617f90a98de447292431e2ebe88130238656b7f52789363342f2a9/psqlpy-0.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec7677fc00eee7df29c5727eca54ea496686980ba00dd48311f231b06e01e12e", size = 5042443, upload-time = "2025-08-14T17:20:50.754Z" }, - { url = "https://files.pythonhosted.org/packages/9b/77/1599e3724033ac886db35399023e98d9050bebf7d709a7f76b49fb611aa4/psqlpy-0.11.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91dbf904c693d6432ff3a221423d62968a212151b1e945122e74dddce813e150", size = 4298972, upload-time = "2025-08-14T17:20:52.187Z" }, - { url = "https://files.pythonhosted.org/packages/f9/3b/22a57f247755d44388a046530902403d1230c859cc23aad85d242a90f319/psqlpy-0.11.6-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a8f7813be18eda28c313c7fbe94ea2f9a3ca8d376d1a7b04ae4f5a74beb4009", size = 4925185, upload-time = "2025-08-14T17:20:54.024Z" }, - { url = "https://files.pythonhosted.org/packages/b0/78/e386bf4e69d9d594b28e6f22fe000c00eb5a107eeb09e0cdd94c2baa6862/psqlpy-0.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8411f44e2235bd3f71ed9cc6cca1b889be67e9edae2f8a33698aaaab9ea7a030", size = 5040564, upload-time = "2025-08-14T17:20:55.453Z" }, - { url = "https://files.pythonhosted.org/packages/fa/ef/2d5ca961828c66a2d13638405c6732d89ee7fae88e7b797c7cf217b0723b/psqlpy-0.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d760b4e0f41e9823a686fed49271abe8be8350be2d8f0c9f75c5a1c180f6c72a", size = 4700508, upload-time = "2025-08-14T17:20:56.812Z" }, - { url = "https://files.pythonhosted.org/packages/95/56/e42506053900a4b8d1a327ceebab47320a537526b82812ba1731417a1e3e/psqlpy-0.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fa27eaf360da589fc5212bf58b0edc632f894f8c70ab16c790b55e3bbeedb8e", size = 4928317, upload-time = "2025-08-14T17:20:58.18Z" }, - { url = "https://files.pythonhosted.org/packages/fd/5d/c09b2ac6adfd1c8ef78b9cbc5f2291dbe898283fcd10c63be231ff0ddfd6/psqlpy-0.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:2f6cc54f33d377dd8db562b4b6691f2af9c9bedf367bc5d7267547bf74d1ccce", size = 4957986, upload-time = "2025-08-14T17:20:59.538Z" }, - { url = "https://files.pythonhosted.org/packages/9e/57/4ad36f2260bff41e1de26a7877ec5b5c503a846b9c97a8f7669e33643269/psqlpy-0.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:38dd049421c6c7b8d6ee4a88d6404f2af2f4a5cf7722e70201bb1709ba371fb5", size = 5068208, upload-time = "2025-08-14T17:21:00.964Z" }, - { url = "https://files.pythonhosted.org/packages/67/b7/1d9aec7918ed3eab855bca1f3acf42e92e2ddf86fddc3a04de0e76292e10/psqlpy-0.11.6-cp310-cp310-win32.whl", hash = "sha256:f55f816f177db68ab216c8b49432dbf6144db1a3e2867f9f4d2feae0160f7f53", size = 3351818, upload-time = "2025-08-14T17:21:02.815Z" }, - { url = "https://files.pythonhosted.org/packages/80/4d/2b8da947e878c3ade44ba083fa60d57e1b20e5d30dc5879a4c19bb7de3ea/psqlpy-0.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:efc3a488d1cd63813be4f1863de1da9b3ae8d82e270113f365cfcbc2cf961083", size = 3761093, upload-time = "2025-08-14T17:21:04.648Z" }, - { url = "https://files.pythonhosted.org/packages/84/33/add408874f088dbe585d22653dd05dafb50776038d6282c54821877d61e0/psqlpy-0.11.6-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:205936327b0830298864c46ae2a43ff93a66985c7ee4e66cba7991592393c5c7", size = 4309332, upload-time = "2025-08-14T17:21:06.071Z" }, - { url = "https://files.pythonhosted.org/packages/57/b4/971c5464dec16afea6344d5808e187f5e8e8b3daa3d18878ba9fce9c89c0/psqlpy-0.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0ef7e8af9dc40cfd24df7d680e4c9277d6c994acdd58da1dabe823247dbffad9", size = 4515551, upload-time = "2025-08-14T17:21:07.391Z" }, - { url = "https://files.pythonhosted.org/packages/a3/22/aaef103bd5b8c04650c83258b4b241f967afaf76b32d11c92366234e6e1e/psqlpy-0.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d8ff15e7781e0d7e70f22d8643eb952010623ba34ae8c4868cf2ec58ff24eb", size = 5039985, upload-time = "2025-08-14T17:21:08.765Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6f/a11d8dbc48be3a1587c37990972568c9da58503ec782c5ad905df6d54947/psqlpy-0.11.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11ab85aa5dbf64725f6d4ed809bef814ad9023891381d9775b9aaecf0f9b420e", size = 4300029, upload-time = "2025-08-14T17:21:10.377Z" }, - { url = "https://files.pythonhosted.org/packages/11/22/0461a9372a27e9cd4969431dfa7076b3c9fcad79d5b8ff0ddfc15080939a/psqlpy-0.11.6-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fbf09fdc049b7dd6f820e61d59ccf325a4f89f2bd133e0f87cb1937b0bba8b", size = 4926113, upload-time = "2025-08-14T17:21:12.112Z" }, - { url = "https://files.pythonhosted.org/packages/8b/e8/fcd0d5eb78d860b705b36e6f569eb47e0b69f2d793983dda46271b2819e3/psqlpy-0.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e09b716eebc184e08125c858dda6bf7c9f3be6bc9f9bd28f95a7cdceac0dff82", size = 5041647, upload-time = "2025-08-14T17:21:14.338Z" }, - { url = "https://files.pythonhosted.org/packages/4a/a9/a9e75a58c3e9f95479ab7ecd7f40cbb4fd1c3f21a52e434418efdb3129a3/psqlpy-0.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b1c1d4a21000ee8dcb70ba7a6de5426f49354adcc205786b9a95bdd4e6151ba1", size = 4700315, upload-time = "2025-08-14T17:21:15.861Z" }, - { url = "https://files.pythonhosted.org/packages/1c/2c/d1262e9b2022e51b489e8b5bcc95d136b2247f856f433ac8c70d4fcb0501/psqlpy-0.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d4055b8496b9634540af83772575f3c8c08771279809e9fb0f1c04a8e9b8ece", size = 4928905, upload-time = "2025-08-14T17:21:17.398Z" }, - { url = "https://files.pythonhosted.org/packages/cd/9f/19b96fbbc5ebac42ff87e02fd251db8251b68347acfa57fde146b4bc57aa/psqlpy-0.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:02a5c726d804c14517040ddaee3f698c0b18ddb7aeeef08c490a909ad3a170aa", size = 4958259, upload-time = "2025-08-14T17:21:19.189Z" }, - { url = "https://files.pythonhosted.org/packages/7f/dc/00cc7dd7c067af6da1eb2ede5be062edf3b0e2a289dc5d02555cf4481949/psqlpy-0.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:10521d700d136e08a3817ba78a494171fc6d52749acda7b7e33339120297e8ae", size = 5068671, upload-time = "2025-08-14T17:21:20.935Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b1/40235eac320084198a8a7ef12a9a01794e70921a78537ec30246b58dee47/psqlpy-0.11.6-cp311-cp311-win32.whl", hash = "sha256:1e06d5d7c437246568142caf675ec33c9f29be2683dc1793d3030e61bced8e76", size = 3351919, upload-time = "2025-08-14T17:21:22.355Z" }, - { url = "https://files.pythonhosted.org/packages/05/82/d5513aedb7ea0137ff9a4fc9c1f001804e4d7dcf2a975ad8ed97768459b4/psqlpy-0.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:3c20cae9fda38654931682c688f65610d93f7539de46f5b7353da8633815d166", size = 3760582, upload-time = "2025-08-14T17:21:24.007Z" }, - { url = "https://files.pythonhosted.org/packages/79/fa/a0f9c4fa00faf4d480c402502db76f83dcdb759b45d73d274d3085872e08/psqlpy-0.11.6-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fbfda19815ae02757b69639b21e0492dbe28d832fdc0cd083b599745c72f3287", size = 4286126, upload-time = "2025-08-14T17:21:25.615Z" }, - { url = "https://files.pythonhosted.org/packages/80/da/4ad1d15e948804fc691abd6e25c3b1f97aa0d005c3e78c359f88111c3be9/psqlpy-0.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b6ff1d79ec1e1028ac30cb08381821a4a78ecd823dd2be6cf779dde008da9dde", size = 4493871, upload-time = "2025-08-14T17:21:27.032Z" }, - { url = "https://files.pythonhosted.org/packages/74/52/4cb68092a3df6d89869657dc0b44172f97067789ad1960ec8196cf29d91c/psqlpy-0.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b07b5a46a7a8b08e9d9cd7c7765a2d2b875af2b6aa26fe30433b42de56f8bf3", size = 5033454, upload-time = "2025-08-14T17:21:28.67Z" }, - { url = "https://files.pythonhosted.org/packages/08/fa/3b253694faf2369295edf2a52bb3149ca7ba13d37a90c12cfdf454a1cbba/psqlpy-0.11.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:170059e1ad89a66c3e7106cae1eaf5bcb6e5a13fa6565c59e1858e862c50f7ec", size = 4286197, upload-time = "2025-08-14T17:21:30.407Z" }, - { url = "https://files.pythonhosted.org/packages/24/30/11867f7182bf13e8768415198d064a1a4f2082fb77c66e404dd12533a51b/psqlpy-0.11.6-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:85986d0b516457c088b22dfbcbe6ef060d9ee9d6a120c38f29d4b1104826a8f0", size = 4899752, upload-time = "2025-08-14T17:21:31.914Z" }, - { url = "https://files.pythonhosted.org/packages/07/4b/ff8babcf13db850ecbffce93fe86f50712c35f2949c8e2ce10497eea68f4/psqlpy-0.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08dc8ccf395e0abeb1425fdda8d3d9b22840ff27358bdcbbe01a0ee1b780b549", size = 5018867, upload-time = "2025-08-14T17:21:33.368Z" }, - { url = "https://files.pythonhosted.org/packages/51/05/5ac0d6564e55a920620a9f82c6e13c299254d933000b96a7056b941e652f/psqlpy-0.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fa85619260d86937f95ad6c089968b8f03af3b62623982df468b72fde667ff5", size = 4677657, upload-time = "2025-08-14T17:21:34.998Z" }, - { url = "https://files.pythonhosted.org/packages/27/68/f4cabf3a24f0ac34b82e3f3da2415040b58ec8f0371c849bb72707927525/psqlpy-0.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:461f5bd3a226096ff7fb2e8dc702e48b231d7896151621c1f9f0f1cd9475d8e7", size = 4926305, upload-time = "2025-08-14T17:21:36.55Z" }, - { url = "https://files.pythonhosted.org/packages/ea/90/0cbb0ce1e8083aea902586a65093a9041c182dd28c7a3b4c3028fa8b6588/psqlpy-0.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3199ff6bf5a92e98546288ed23a80c586e663583cc8e15ffdc24ed1cad4b2251", size = 4938958, upload-time = "2025-08-14T17:21:38.171Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c9/2abadb734cf55a1c073c4dc08cf78ce75a9d438c8bfeabb6bb42cdb4ff15/psqlpy-0.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e15da8ee6c853397a9c9dc555c3b57f848a7e7a25a0595fdbaa3c19a390160cf", size = 5065920, upload-time = "2025-08-14T17:21:40.117Z" }, - { url = "https://files.pythonhosted.org/packages/09/d6/62d0213295a63c1a4d57e8b22cfe82ff107ab5c59cc1db17de256b163d74/psqlpy-0.11.6-cp312-cp312-win32.whl", hash = "sha256:0e5b482677e21d7f03455105ac4b2ffc11411d3e7409da8870a866b3558c902b", size = 3351654, upload-time = "2025-08-14T17:21:41.766Z" }, - { url = "https://files.pythonhosted.org/packages/72/05/7c2dfc0435bc99afed67ef33b0cab6d9c4a444ae53110abb2d686534f205/psqlpy-0.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:6ef2ab055a11f920c8a021561acc9c1a58d06c215bb8ac992ddf7f79e44f7c89", size = 3766514, upload-time = "2025-08-14T17:21:43.213Z" }, - { url = "https://files.pythonhosted.org/packages/cf/6a/69a76e2f47988109389af3df81700619f6fa2566e368d5e79951e90fa562/psqlpy-0.11.6-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1508a64de1d32f24b7518521fbcfa6e2b775edd615c26491c50acefe617bef36", size = 4284249, upload-time = "2025-08-14T17:21:44.558Z" }, - { url = "https://files.pythonhosted.org/packages/de/78/6d0de2107b8bc9c91ac9db505a831091ac6fda9ef34490f699263e29a009/psqlpy-0.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4e35a360e6f900c2cb7f067a4ab94f7ee0c84eb240ade31f8e743a923b14f184", size = 4494620, upload-time = "2025-08-14T17:21:45.949Z" }, - { url = "https://files.pythonhosted.org/packages/c1/75/1b9d1fe6c3334a2b14a754531fa919f3662c4a3cf324bca32191effa5fc3/psqlpy-0.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6ddc99e9750a4227ac84caef469d7a5b991df32aca2f8e3a0b01ce870c8c93e", size = 5028860, upload-time = "2025-08-14T17:21:47.478Z" }, - { url = "https://files.pythonhosted.org/packages/9e/af/b946866dbf590411e6558e5d40a7f7a2b5ebc830c692c038c48e6d8789c3/psqlpy-0.11.6-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a0b9905602f41770bd43d85be4d9159db719c2c82127c396625e3a7e15f2dd39", size = 4288707, upload-time = "2025-08-14T17:21:49.413Z" }, - { url = "https://files.pythonhosted.org/packages/c6/81/2c18b3bf2836b5311fc8f451211fe8a3e9fd7e39923fd2bd1afa121dd123/psqlpy-0.11.6-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af8b5e3f013235355e022a7f07179948dbe9645ae990e13cfa01c4bfcba73764", size = 4915394, upload-time = "2025-08-14T17:21:51.311Z" }, - { url = "https://files.pythonhosted.org/packages/df/c7/a6df171d6e12b22d266801543c9b61922744146f827dfc92eea2233b6bdd/psqlpy-0.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0dceb698fb324729a31b3668eeb65bf107af78bdc14f3d10bf27658242fc3e46", size = 5016572, upload-time = "2025-08-14T17:21:52.848Z" }, - { url = "https://files.pythonhosted.org/packages/bb/f4/09e63cd42e5ab6337136db09e9c5d56d1f509a41826fa76c94b5b738b382/psqlpy-0.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:541c8025f94226d2521c4e8de1cbc22a5b180f0bbcd75925fbfc04cd849483d8", size = 4694538, upload-time = "2025-08-14T17:21:54.215Z" }, - { url = "https://files.pythonhosted.org/packages/d6/77/6aaec569b7443321dde4a2c67ca02cc4399b637bf85d22cd835a5a92af40/psqlpy-0.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7e34ddba63cfe66aba152df22c9c6b505974069e6ad53b54389bc46b0fc8e6c", size = 4923742, upload-time = "2025-08-14T17:21:56.409Z" }, - { url = "https://files.pythonhosted.org/packages/a4/fd/03b19e43f7a31ddea1a55bed49c3b73a104aa778f5d0c32f378c8d12c9d2/psqlpy-0.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f5c30dabc70b93627d6897054ab2c6c74c65f00ca11f3bc755044f753868c0e4", size = 4947137, upload-time = "2025-08-14T17:21:57.867Z" }, - { url = "https://files.pythonhosted.org/packages/50/bf/c7b5082c3709c3fa2c08d09971b012979a9d879f0a5ed22c7995c94ef95a/psqlpy-0.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b633ae41fd5d1295655a338c595af3f020722af312c3b541b53d1caa6882afe8", size = 5063961, upload-time = "2025-08-14T17:22:00.005Z" }, - { url = "https://files.pythonhosted.org/packages/74/6b/48089ae018f9d2fef0d8859248ef33c6b0d04299f73a554ef3a7680a2673/psqlpy-0.11.6-cp313-cp313-win32.whl", hash = "sha256:6aca8c34509c25e49c651ec59b7e164ea45a63111c0c11bdadc222c8ca714eed", size = 3351887, upload-time = "2025-08-14T17:22:01.422Z" }, - { url = "https://files.pythonhosted.org/packages/f1/74/868413b3be5b07a5b6dae9d73f71718ebb99844e0f072912490ef6f7696a/psqlpy-0.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:8e601faf0e7cf771fa118e89487c805a53271185aea63025b18914feb982ee4a", size = 3767978, upload-time = "2025-08-14T17:22:02.793Z" }, - { url = "https://files.pythonhosted.org/packages/60/98/f29b17f931ea17ef673c8a2ac817901e663b2db102660a4902997859c2c2/psqlpy-0.11.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:80ed664f40b259f65c5983e529fd32212ffcb5caa5cddb8ed899f3939547c5c7", size = 4303600, upload-time = "2025-08-14T17:22:22.579Z" }, - { url = "https://files.pythonhosted.org/packages/f1/05/bd23d3c2a3254640f5205e71b41dbd8279b6dcb211d3a0834edc9e560ef5/psqlpy-0.11.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b01cc82cf9af3b5237d8059cdfcf41fce656d300f768e948c20358ce94774862", size = 4503850, upload-time = "2025-08-14T17:22:24.408Z" }, - { url = "https://files.pythonhosted.org/packages/94/7f/bcce7a63bc0fca8a43bf81abae97c6cc262c582b4a420252e1eb51c9fb41/psqlpy-0.11.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d2eb9dcb0a7f60d045bbe8061b8318b7718a4093eac9cd65fd3c00ebf1544b4", size = 5041335, upload-time = "2025-08-14T17:22:25.843Z" }, - { url = "https://files.pythonhosted.org/packages/dc/09/a385d371f55fb49bc52e0f25c6322b8d49960a080dae43a02f500183e3de/psqlpy-0.11.6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e14a5539520854e1fd163016a325b39ddbd1edf621492d45383888667847575a", size = 4291607, upload-time = "2025-08-14T17:22:27.342Z" }, - { url = "https://files.pythonhosted.org/packages/5d/2c/86d84124670a1e8900be9f22e662ceda30b110d79229a1255871f1d8f402/psqlpy-0.11.6-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e706d106ca3ce4e67155a229be6e58cf0dcab354be41b2f5a6faf384cc1b049", size = 4921673, upload-time = "2025-08-14T17:22:28.805Z" }, - { url = "https://files.pythonhosted.org/packages/f7/02/89914a07c683c61d128cc341b598e7b3352a6c1e94720033bec88e019dae/psqlpy-0.11.6-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60d4afcf550f8bd2a3ad131b95ad1203149109bc40d07351c4619f79829ed411", size = 5043783, upload-time = "2025-08-14T17:22:30.322Z" }, - { url = "https://files.pythonhosted.org/packages/45/c0/67d3c8c3b5ee9fa562ac48792c84b3a0c8460e13424eb80339aa19dc5ff1/psqlpy-0.11.6-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:809b2cac178d4a707c025963ad93dc5ceef05772f3ee81a1fba664c639eeabcf", size = 4684899, upload-time = "2025-08-14T17:22:32.054Z" }, - { url = "https://files.pythonhosted.org/packages/7c/81/6be3237e807799af8c82634d1c1888c8b4206f4316426b0dbe836dfa2016/psqlpy-0.11.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25f2a6551b8b4ae61e5993705ed8a53d3d55f02036b473379e2c3a8208cbcfc", size = 4933885, upload-time = "2025-08-14T17:22:33.627Z" }, - { url = "https://files.pythonhosted.org/packages/a5/2d/fcc6d54d78635b559ed651ee31192c695549deef40e3f9e2a3e5a99198da/psqlpy-0.11.6-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a94ed32504d9193a8fa77fd98e9abb7f05d757f75af8e716e67f9a7876449d06", size = 4954441, upload-time = "2025-08-14T17:22:35.12Z" }, - { url = "https://files.pythonhosted.org/packages/04/dc/fb1a8d1f46d35d104a78799ef28ed0e501a92d728a0dc8840bc1cdf550d5/psqlpy-0.11.6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e4038d7ccc6aef8d72f64d9c1a69be0174b7f014a01b7a4193b2b9ddd5d3606e", size = 5073296, upload-time = "2025-08-14T17:22:36.899Z" }, - { url = "https://files.pythonhosted.org/packages/73/a1/79aa0ab1765ae842438e4d95cfa5aba092a559a9df53730702a8a4b4729f/psqlpy-0.11.6-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:732d6a85c1a69542eebd26fb5b3062eb496cb8d4577d814b6ec523a375b9c0e1", size = 4304262, upload-time = "2025-08-14T17:22:38.463Z" }, - { url = "https://files.pythonhosted.org/packages/4d/c6/b265bd820029867d2ae0610b26c220bf67227be2f5748ba769c59d669556/psqlpy-0.11.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:08a29fd10449d4784c8d90a34265a9f642eec7ede5a04eba3fc714ce13e3531d", size = 4503291, upload-time = "2025-08-14T17:22:39.896Z" }, - { url = "https://files.pythonhosted.org/packages/d0/8a/6f0ca1741f7760183586a5b7dbb2026cb0e39aa53ec6d5959abe965b9d93/psqlpy-0.11.6-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a43c734f27d1dfcc68d45a4462b6274d085f6cafdd7d0699bc10306f956dee", size = 5041363, upload-time = "2025-08-14T17:22:41.35Z" }, - { url = "https://files.pythonhosted.org/packages/51/eb/2494e4369c09e7a9f4db2181eebbcf6abdd31cc56b5c140036b4cd927296/psqlpy-0.11.6-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dbcf90d8f3910a1d5039367787bd5a5e354bcba5e2d061c0273c476b68ea8834", size = 4293301, upload-time = "2025-08-14T17:22:43.092Z" }, - { url = "https://files.pythonhosted.org/packages/a5/42/1d2c9256bcfc9ecd190d4deb7a89eb19acd85b66aba205b829ad5a19efda/psqlpy-0.11.6-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:463cfdf4a0c84f8d9a6a024a47d1a963db4321cfdca5e9f0c943c91264a64eeb", size = 4922220, upload-time = "2025-08-14T17:22:44.537Z" }, - { url = "https://files.pythonhosted.org/packages/03/75/8385f59670aaeeb2acd091978505605a12bede7a3de6c66f514bcd22b8c3/psqlpy-0.11.6-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f601e96a5d11c81dab2c0de3451203a7c5d148f313fc9774dfd258d4683ea78c", size = 5043188, upload-time = "2025-08-14T17:22:46.103Z" }, - { url = "https://files.pythonhosted.org/packages/6d/d5/383b4d9ff35af7dab12532d4b0bb9c2101ad0bf8c817d3016f6a39e55fb1/psqlpy-0.11.6-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782b0eed2587e91a46dd54300273bbfc55a5d358fd0d9d28311647e2e8412e03", size = 4703050, upload-time = "2025-08-14T17:22:47.852Z" }, - { url = "https://files.pythonhosted.org/packages/2e/52/a13570a371a9f268ded0ee6c2534ea3655878bccea905c1149a351f1ab6b/psqlpy-0.11.6-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c63c9a41ec6a6abde2c7b9dcb271c08896259911e4268124bfdd632f2c7435", size = 4933316, upload-time = "2025-08-14T17:22:49.418Z" }, - { url = "https://files.pythonhosted.org/packages/11/c4/3c51b817ebc8b8344cc27d68c3d2fec00e0291ce9350acd2a5e16144706c/psqlpy-0.11.6-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:33768b71afde498211f271f5ea0c430ed8ddfdc7ee5f541de4761222d8633c3f", size = 4956086, upload-time = "2025-08-14T17:22:51.008Z" }, - { url = "https://files.pythonhosted.org/packages/b9/bc/2f6e5ba5ca7890c56bfe59b95536557f15ddc17171234edda342e53415c7/psqlpy-0.11.6-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:820fbeac25919fb463de3a50594ee12cd434fa539e483adfda87404dfa602b73", size = 5073593, upload-time = "2025-08-14T17:22:52.906Z" }, +version = "0.11.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/6e/f1a05e40379606c1f79659549fb8352d115fe6902819d1d82a7db37f354c/psqlpy-0.11.11.tar.gz", hash = "sha256:703d8a1d31e04a418ab7e6062323582edb5379a5452542df4e9d20f0fecd611c", size = 288200, upload-time = "2025-11-29T17:21:47.773Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/b4/9359389ae2438e8a70f6e521d779e9cd936a5857af932e33a24d5c8bc03e/psqlpy-0.11.11-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9631c4bb567fca5ebb7d28673eabc4f16deb0b9887f2eb48bd9f15e73b55448a", size = 4375008, upload-time = "2025-11-29T17:19:02.489Z" }, + { url = "https://files.pythonhosted.org/packages/44/9b/87fd95e3f19feb4f2bf1c180b6945a1a286528a44aa54fa57c74284dc204/psqlpy-0.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:efbfa49267f74ada62dc28a4286bc08fd0492c0c4246ca8663a17cf5cc7c1529", size = 4614355, upload-time = "2025-11-29T17:19:05.116Z" }, + { url = "https://files.pythonhosted.org/packages/ee/9b/0bbb9d6aad437ce9c63424f8a11bfbd7792e3d63f47e767ce09a65fbabae/psqlpy-0.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaad4ff1f1245e17e93334bc84460651abd23111989cd8e1896238a120b78631", size = 5143784, upload-time = "2025-11-29T17:19:07.081Z" }, + { url = "https://files.pythonhosted.org/packages/74/34/46bf0a7a51c0d922826f5dba72d3977cab9188640c774910485e66cbbf39/psqlpy-0.11.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2a0c0e0352dafe4423196a46f474778eb970b41d1abe68a466eada0b56a6ce43", size = 4410501, upload-time = "2025-11-29T17:19:09.396Z" }, + { url = "https://files.pythonhosted.org/packages/0a/f0/76b02e1b189ef500606ab508483c5829f26ae70c3ec9eae537eefa530b4e/psqlpy-0.11.11-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b35e656b001ab51ad157b4f873447d18ff4884e3f8d54bb80e5d80ddd14037b", size = 5045707, upload-time = "2025-11-29T17:19:11.331Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b5/d030a1e898f10c62abbee34e0553932f7a257b9eaee29dc43c122f0269f5/psqlpy-0.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:154eaadaa00464fec672580b5cb6b950e2f27a3cc5f5e692ca951e8b49677eb6", size = 5077199, upload-time = "2025-11-29T17:19:13.56Z" }, + { url = "https://files.pythonhosted.org/packages/75/69/66aa5f19098868f3c93988442c1fa35a59ce5139d497bf5c418a0d57a32f/psqlpy-0.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9d0df05e2a51e0c1fb80b94533512c9598b12383ebdf1d1b59ce8b20417d1dd", size = 4752640, upload-time = "2025-11-29T17:19:15.538Z" }, + { url = "https://files.pythonhosted.org/packages/94/66/8d0f809574e3069d7e668e70d9f0084ddf0ce0012654e864bddd1dd4bc81/psqlpy-0.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b7a7da04bf762e0c106c2098bac5edf1828b42b694635cb237baa03ee6a9f9", size = 4905550, upload-time = "2025-11-29T17:19:17.404Z" }, + { url = "https://files.pythonhosted.org/packages/88/da/2d04d68633ad72d845df04dce63b033707cffb9d4cdffc420ae089a200cc/psqlpy-0.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:bdbeb81b7b0cf256f639bc393405ded24459f81d400dc713832ed9a8907cb640", size = 5072824, upload-time = "2025-11-29T17:19:19.786Z" }, + { url = "https://files.pythonhosted.org/packages/29/cd/bb58b5893f90750665f030d7ec36ec46a65d0d4cbd2e663247b7b46e8983/psqlpy-0.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6a687512766972803bf079d9a76e7431276b0b5d6abf9dbab0acf84461468696", size = 5167336, upload-time = "2025-11-29T17:19:21.715Z" }, + { url = "https://files.pythonhosted.org/packages/11/0e/50f1e503ee46106275fb21768fadec2a7f5b9591d98bf03b64e358d4c59e/psqlpy-0.11.11-cp310-cp310-win32.whl", hash = "sha256:26bb95d9effdc7b88571db26d814f84ab5cfbc8ab0692175f22503f7e43c7d09", size = 3602882, upload-time = "2025-11-29T17:19:23.482Z" }, + { url = "https://files.pythonhosted.org/packages/32/2c/7355f399d30c40d67acbd9aded276454a99820f4073ae95b2d73f8854c78/psqlpy-0.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:bb6bcb27fde01b682d9a8aada2b1fcde2eb74073d8bfd035b0c54c7c2308b76a", size = 4234679, upload-time = "2025-11-29T17:19:25.312Z" }, + { url = "https://files.pythonhosted.org/packages/1d/1a/769db7ca64ffca230562772ba10df2588d4bfc86e4dfecf89a066e9feedb/psqlpy-0.11.11-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:828c4914ff7b32ebaad9f1f68b8e4fa5153670895d7f766dccf58663d6519bbb", size = 4377114, upload-time = "2025-11-29T17:19:27.446Z" }, + { url = "https://files.pythonhosted.org/packages/56/a6/05bffab03a855020e39549e79e105c122ae2a40a94f83af604d2ae648a29/psqlpy-0.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c1e21dace1aa9162e2b4f086560e22f69bee2a34a2e3f6908f4dbf914ac8273", size = 4614653, upload-time = "2025-11-29T17:19:29.375Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/e3ba2c0715236a2248fedf36799b0477b6cd34b74f97856b82dc4e06a0f3/psqlpy-0.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e94f545069a342b6aac60e2031a8532c40cdfc073d7433ad69328759b39dcc2", size = 5143345, upload-time = "2025-11-29T17:19:31.219Z" }, + { url = "https://files.pythonhosted.org/packages/88/b9/e4e47e387df86c5e158aadc6f864cc5649f2ca1e06af17d6489529afe685/psqlpy-0.11.11-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ba2e02b591b8468e29ae75e5317fc7cd08851014418ee2e752089fa876ad9675", size = 4407756, upload-time = "2025-11-29T17:19:32.963Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/618ae87540e8e407a1d978e8eb5110c552ded91f4077736a0e5414cbffc9/psqlpy-0.11.11-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:feec4e61b6ad9a136dc1d5f39fedf2a63e1bc7aa42c6b7ce39d2e64df2e2d253", size = 5043774, upload-time = "2025-11-29T17:19:34.705Z" }, + { url = "https://files.pythonhosted.org/packages/53/9c/285efa0e4ba4a9600e4388db846780ef9c02fcf510f957fb3f07524dd080/psqlpy-0.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61545f10eaa742ee3e9ad321f82677e924048a283bb6edf0187cce2a034f2f94", size = 5077240, upload-time = "2025-11-29T17:19:36.584Z" }, + { url = "https://files.pythonhosted.org/packages/26/0f/f6f7e3bc06bfab42dc18f3785424e492fc73059e4ec3d14803489a4fd7f9/psqlpy-0.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dd88463ffb135003061c809a91b0b0541a9ce1e95d6079bf1944c0c1433e9fc", size = 4752470, upload-time = "2025-11-29T17:19:38.789Z" }, + { url = "https://files.pythonhosted.org/packages/63/f9/ac1ee8581c3d75bf7f23d19add987433595f61ae7a193a538917182520b4/psqlpy-0.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86edb2a766406c6282e02963a909ee528a6fd15d43ba2910faacaa18862f833c", size = 4905274, upload-time = "2025-11-29T17:19:40.614Z" }, + { url = "https://files.pythonhosted.org/packages/fe/f2/a24ee94002384138e7fcf7cfb7b134c851b1d9b07843f2803287d42b6647/psqlpy-0.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:36964e8b9c772a450ab364782641ecde2a00d96c74f30a8ea64f5392140ea5c7", size = 5071549, upload-time = "2025-11-29T17:19:42.88Z" }, + { url = "https://files.pythonhosted.org/packages/b2/2f/07f51587650ab0d217532f658ca02bbff0d6eed67fbaf5def4a8c4b38ce8/psqlpy-0.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7e3ccd3bf47950bae60dd6838eacfb837f5105895958e8906f5bd96e8e31aa97", size = 5166970, upload-time = "2025-11-29T17:19:44.673Z" }, + { url = "https://files.pythonhosted.org/packages/bf/76/d9e945101b447f701f5e29b3e003526f9d156825c9268e86c2789f220d09/psqlpy-0.11.11-cp311-cp311-win32.whl", hash = "sha256:13ee33085d7a64bbb1d44c95cedf41446ba77fbd8881304e4e986883517378dd", size = 3602374, upload-time = "2025-11-29T17:19:46.476Z" }, + { url = "https://files.pythonhosted.org/packages/a0/02/df59b75ee162986b3819dcc0047c4c349c9931d30028718f3e240850143b/psqlpy-0.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:de60f6bc0fa0d427072828736fbb361d0432d2381ed78797aa4d6c485232fec7", size = 4235401, upload-time = "2025-11-29T17:19:48.215Z" }, + { url = "https://files.pythonhosted.org/packages/08/88/abdf672d41cd1d77b392755a9e8ad5cb7744fecd11c8279185839ae33179/psqlpy-0.11.11-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1ce9e5e1721729ae3b6e7caa320f8d4f6986ea2d41ebe32e2bdd85ecccb41d32", size = 4354964, upload-time = "2025-11-29T17:19:50.52Z" }, + { url = "https://files.pythonhosted.org/packages/bb/32/7a049356bc1c74b8e4c12f957b5ae837cc4853b8d80c3b1030fccb9dd02a/psqlpy-0.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d95693cc00c91dfe5491b973dcab7750682c9f631ddd407393d654afc74020ef", size = 4586894, upload-time = "2025-11-29T17:19:52.721Z" }, + { url = "https://files.pythonhosted.org/packages/17/45/29ef6d4d25f8e6881098e90e2fb9ef987cfd4fa1da25f043d5a3f8cd869c/psqlpy-0.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c9eea9fe6f04812734b387ff584e67c90e6322d2ca4f6f36aa2e6df81623ffa", size = 5134047, upload-time = "2025-11-29T17:19:54.659Z" }, + { url = "https://files.pythonhosted.org/packages/15/3a/9e287951cabc5ace399561b856ec826da753d696edda6b5efefa32887fd4/psqlpy-0.11.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3aeb7324e6ea87d81a9ceb061c7e2fe1a7b5bd572b9e8069b0b3d9e9c534dc5", size = 4413273, upload-time = "2025-11-29T17:19:56.822Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2e/e53f3ae9874a23ce04a6c3f7397da1332a6218a445a42d7d744573b22905/psqlpy-0.11.11-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ac4f50d7cb9557464e6c14ae9132cd826bbd70cccea2baeede484ea0e38bfc4", size = 5043199, upload-time = "2025-11-29T17:19:59.487Z" }, + { url = "https://files.pythonhosted.org/packages/fb/91/16ec636a6516b2297d8ec5209e4c2f9cf54b440e8bf8488e7b91ff6b39cd/psqlpy-0.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7c00cd6cedfee1bc3a24cea6a12eb370d9c47957dbed58b344542abad146685", size = 5056871, upload-time = "2025-11-29T17:20:01.508Z" }, + { url = "https://files.pythonhosted.org/packages/c6/da/5e8c2d7381295aa5b53eaf8cde798690ee779858e011f4337d45207163e9/psqlpy-0.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c324651c69c3cc088a46f5f96f68aa2d385525ceea635c337537d3c1784f2ab0", size = 4746460, upload-time = "2025-11-29T17:20:03.908Z" }, + { url = "https://files.pythonhosted.org/packages/b5/83/608cf0b8012a14849d7851e740034771b8b00c3d3867b857251777f06e7a/psqlpy-0.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131cc7fb81daa2a78e8b438f63eea833aab37cfae2f809a0767c1cb82222e5ea", size = 4896679, upload-time = "2025-11-29T17:20:06.188Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/6daf267ea648ecdadf063274155fdc8dfe20d400bfec6b70bf7a93e55a3b/psqlpy-0.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:809173d1a35e5cc1a07ebd391542b6642171fe131d62a0ddc70acb8f72dfbeda", size = 5066553, upload-time = "2025-11-29T17:20:08.2Z" }, + { url = "https://files.pythonhosted.org/packages/1c/28/591281adf81b42bdc7bb0a4f5624ae07bca2b608f6506851d2edf0aaff3e/psqlpy-0.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:401a4bbf877d0bd4a7b5942d5004f9f17962d6fb1ba855ee76f456597679be0e", size = 5161486, upload-time = "2025-11-29T17:20:10.021Z" }, + { url = "https://files.pythonhosted.org/packages/df/90/d6d84886bc32329a1296b334a0a709698180322f0b74a50c1355d6fed154/psqlpy-0.11.11-cp312-cp312-win32.whl", hash = "sha256:62b0434f08d0c395d1a3a3b8688e628e458a138b4a787587ddbfc8658b2982fd", size = 3597405, upload-time = "2025-11-29T17:20:11.873Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/337de1a1b5a4a516af98fe09d039af9cabfde26bf68acb2b200790d5ce12/psqlpy-0.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:776e62bf536d9e8ceaeb3e8460e47fb8cfce57eaf56096ae5f596512798c7a8e", size = 4235360, upload-time = "2025-11-29T17:20:14.28Z" }, + { url = "https://files.pythonhosted.org/packages/48/54/3326ed7c4011455a235f101f8b4ca654875abafee9bc11e427f831b54221/psqlpy-0.11.11-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:b216d9a90a15a36bd4c917186754b5e63b00841e859fc8d7580dc8e6f4359e22", size = 4351497, upload-time = "2025-11-29T17:20:16.099Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d8/25da644c75c01a7f8c5482279e8679a8793c950a970cd350b6374fe34aff/psqlpy-0.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:671a6f9ac10e0b7ac98fbef5cb92446741b5ad2ae2c3785ad9d654549517d97c", size = 4584547, upload-time = "2025-11-29T17:20:18.036Z" }, + { url = "https://files.pythonhosted.org/packages/93/5b/94ec900f60d9622569553b745bebd4c5a369a52188560687eb93099ec8b7/psqlpy-0.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43f1333fd7b1de6a149f44619aaedd71fc92fa79b7cabd5d345a094f1263553a", size = 5132856, upload-time = "2025-11-29T17:20:20.034Z" }, + { url = "https://files.pythonhosted.org/packages/36/a0/25278fafcf4b844ed893c558dba22bbdee005b495599c2bf8cf7ef5342f4/psqlpy-0.11.11-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:446b1fe27de138c453a395a591c3739001cfe29a7a76afd00312b78a74d5ee89", size = 4407833, upload-time = "2025-11-29T17:20:22.571Z" }, + { url = "https://files.pythonhosted.org/packages/e5/17/a9ca151f48b9c053dd16402055f50c55202f0e37ac62dd3e8d9d2ac5fd7c/psqlpy-0.11.11-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8b074635ba74d1e24cb1ddb9c0e8652e460c2299ff976a7a40dd36bdfacd0bf", size = 5047775, upload-time = "2025-11-29T17:20:24.846Z" }, + { url = "https://files.pythonhosted.org/packages/d7/4d/2c209edffb709dda3c422b16fbb6c55ba2438fe1eaffb1890bd7e6e374d1/psqlpy-0.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0abe9963b52ba1542c91415c1545603a4c8eb5741e6aed74dc722518c2aa7c97", size = 5063852, upload-time = "2025-11-29T17:20:26.761Z" }, + { url = "https://files.pythonhosted.org/packages/d1/67/987d8142cd05c449c13a02638094f438244903ae7a8ff89e0f248e2e75a1/psqlpy-0.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:063c5b2305944c63a136e9ce712f19d80e83e921570fd4c289f61e1e721f133d", size = 4746701, upload-time = "2025-11-29T17:20:28.564Z" }, + { url = "https://files.pythonhosted.org/packages/00/40/199c1cae928f7d48b9900a11ea77ae8936b64e21cd5223d0b6aeac1976f9/psqlpy-0.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3d8ca3dfba08466743196a7138cfcac363a1607eacc5a5fa3de182364a8b16", size = 4894747, upload-time = "2025-11-29T17:20:30.575Z" }, + { url = "https://files.pythonhosted.org/packages/f4/a7/9b63541c6e9189c3b59f8ed14b31b9aa4efc29b1a610938bb4053d6c52b5/psqlpy-0.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:eb7af832506a3eb7e6187e18e41dd2d660f73a11d43fecf06c80540e29700b29", size = 5069863, upload-time = "2025-11-29T17:20:32.921Z" }, + { url = "https://files.pythonhosted.org/packages/58/8d/014ced6b5936bf6f20f65257d591917331072e260c921e1d0bf4f4c1420f/psqlpy-0.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a98212d27fd01c0e9587cac80f1f91df9f4f8634244c4171ff24e2179319c32a", size = 5157110, upload-time = "2025-11-29T17:20:34.838Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e9/3395390b22032532f270aedd321e54f9a943a1c3c3be8e97ba47fa469d9e/psqlpy-0.11.11-cp313-cp313-win32.whl", hash = "sha256:39e95d8a24915058febeedf922d70d45f3b2352993b0b4369fe3f141f4e213bf", size = 3595307, upload-time = "2025-11-29T17:20:36.634Z" }, + { url = "https://files.pythonhosted.org/packages/c9/aa/13be9af60ee1743c2a618157733f5656d1c4627b3299cf2befe75308e0a7/psqlpy-0.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:1d4278360c0c6c4d870bf22b747095ede02247d46081366ca2cc58a0cfd85c9d", size = 4234445, upload-time = "2025-11-29T17:20:38.832Z" }, + { url = "https://files.pythonhosted.org/packages/45/c9/cacf8b800ab250067ebf411745fb5d91047e5e011ddf53a379a3e8fb9577/psqlpy-0.11.11-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:7ae0fe951a596d191902bce2969926182fc69479c54784f276f2f883556bdf78", size = 4345442, upload-time = "2025-11-29T17:20:40.961Z" }, + { url = "https://files.pythonhosted.org/packages/90/12/532e40c2fbb04fc23056b1459455cc45da15b262482ad7644510c67d8ac4/psqlpy-0.11.11-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f2610aade251a0e0c34153ae83d074ef8b009e8d713954bc7f5d3aadca3c0cfa", size = 4585349, upload-time = "2025-11-29T17:20:42.89Z" }, + { url = "https://files.pythonhosted.org/packages/7c/01/3f0196608d89f25d1da30fd28c8c0360695cb31769694009d8b7bdb8255e/psqlpy-0.11.11-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0049d4e05d4b1d57aebf0950c98e7ebe6094a88e0426de8e9d58465c3af62665", size = 5133806, upload-time = "2025-11-29T17:20:45.18Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b3/7972736147c070ebfd38b75a90bbdf81b8b8e863de59a81e9e2a05eedf2a/psqlpy-0.11.11-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eefb48e98641b9c49ea020f357d96ca617435016eef7ba15d91afa718eb3c4c9", size = 4414540, upload-time = "2025-11-29T17:20:47.256Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3e/50fa3a4a69f8c098271df5f4baf2363d86204cf22467c6bd37bde2803c48/psqlpy-0.11.11-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c967b9879522bb935418bd5814e6cd9aff7ec023e671ecefaa4e3722633d9f41", size = 5050648, upload-time = "2025-11-29T17:20:49.222Z" }, + { url = "https://files.pythonhosted.org/packages/93/df/1a67af61d66dcf25e0274d5ed1b3b6bd420163aa12606d7f6b020ced6924/psqlpy-0.11.11-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1162e27a35e7b6633158fea4337117838ac9e03455594727044bd823e0d26060", size = 5064406, upload-time = "2025-11-29T17:20:51.509Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/fade01dbb3a3a118eda1ab60face04b3ecc7875c8945618cfb9108bfb129/psqlpy-0.11.11-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:348010950e252bc35f935bf1eb128643b53c85cee6cb3954a5e47f5e29474b2b", size = 4749489, upload-time = "2025-11-29T17:20:53.527Z" }, + { url = "https://files.pythonhosted.org/packages/0d/79/02bc97387cc48ab8c7ea7db5084fe0512cc550c465c8fe0d0362d658b546/psqlpy-0.11.11-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3957806d957029202a19983e33108b8e32360ddb95f9f2b8e92fd00cd52a831", size = 4896289, upload-time = "2025-11-29T17:20:55.494Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e4606dc82ddd1d07778d5d221be70e2386090c91146122cc609940577727/psqlpy-0.11.11-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:89489cf6d9e143d9ffb924e1dee946afbdf4eb3084a8bf12837c428458343b7c", size = 5075863, upload-time = "2025-11-29T17:20:57.48Z" }, + { url = "https://files.pythonhosted.org/packages/f8/26/1054b808649bff73fe70df52d05043c3863dc83639aa9f50956231b4d54c/psqlpy-0.11.11-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ddcc7270c388527500be36cb41536b18891801813330b38b5fe66273650440b0", size = 5158524, upload-time = "2025-11-29T17:20:59.514Z" }, + { url = "https://files.pythonhosted.org/packages/1e/17/9fe5f52938338c9717fd12ba13bcac092ccb228578c0e27eaabe2d17756b/psqlpy-0.11.11-cp314-cp314-win32.whl", hash = "sha256:490e59e4b4714bdfb66e2ce2859b3940d1a901914546071ed2d3e28b9d7ca271", size = 3603390, upload-time = "2025-11-29T17:21:01.299Z" }, + { url = "https://files.pythonhosted.org/packages/33/20/6f481f8dc879dc4914b6294980bbad26097495927e07e6b0fd25703059d1/psqlpy-0.11.11-cp314-cp314-win_amd64.whl", hash = "sha256:2e0506ea8190987cdd3ca4476858389709b4152d6bb1c69c66e96a8dd0daa97a", size = 4234742, upload-time = "2025-11-29T17:21:03.21Z" }, + { url = "https://files.pythonhosted.org/packages/2d/56/c62cff6c50672258c23efa6484d38c3121284ce4ed6b5dcf91bda581f57f/psqlpy-0.11.11-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dafddf944fbaf21dcb84a70e2fb1a9c8fb21fb188a3a87f62013aa758088ce66", size = 4372005, upload-time = "2025-11-29T17:21:05.396Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e8/c4ec68c93e79dc35b3f52f6a4993fe5e371a4931d6d22ed6979865661766/psqlpy-0.11.11-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a18cf445f2d8bd66728929107ee79ead1919e2216440eff35a7e1d45c22945ed", size = 4618744, upload-time = "2025-11-29T17:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/05/e5/e77aea92b533f34b708180953a8d5024d24da9cbebeeeadf80fcdf5243fa/psqlpy-0.11.11-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d0d4611565ba3eb52fb5fb091a5822a1b72aee483303a90b0076b3ca83959e1", size = 5147026, upload-time = "2025-11-29T17:21:09.316Z" }, + { url = "https://files.pythonhosted.org/packages/66/f2/ef1007313f5099d1af3e24f64038e9cad6e2ef77bc41f7a814a799f565d9/psqlpy-0.11.11-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1911cf5c85b2a3c0359cb91d1cee5cbc37a433ca6c69fdecbd90cbae29e53355", size = 4420181, upload-time = "2025-11-29T17:21:11.62Z" }, + { url = "https://files.pythonhosted.org/packages/6a/41/eaf21e33b2a2f5801de0baca1b5d4f542d4992b7765e51b013cd279c5d7a/psqlpy-0.11.11-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb12a634e2c462bb414cfba8d8a7fa6d1f88a65141f010eda76e89ad8846c3d4", size = 5051572, upload-time = "2025-11-29T17:21:14.468Z" }, + { url = "https://files.pythonhosted.org/packages/ec/3e/138915e1afa31cfacd28a0d80e0cad4851b464ff02d351ad8c61a4efc470/psqlpy-0.11.11-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d0add04b129061a30ed662de78cfe1cf8facabb483f06da680d2e38c6819848", size = 5072681, upload-time = "2025-11-29T17:21:16.697Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8f/9af2b94a4f512cb2a9d43fb78dcf5b092691d2414def9b57ebaba7a56e13/psqlpy-0.11.11-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d7bce3e89933e1f37539501955a012312b5b444d09e26843d81f5c1c16894b3a", size = 4755925, upload-time = "2025-11-29T17:21:18.872Z" }, + { url = "https://files.pythonhosted.org/packages/66/e3/f94e11d92c7db53cd55291519278b45aa8ba193c0ced89bf5bd36da0a53e/psqlpy-0.11.11-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5797d09fca51ad41a857655ec952085d5178ca8a15fe6442c21152adbb9fde75", size = 4903927, upload-time = "2025-11-29T17:21:20.899Z" }, + { url = "https://files.pythonhosted.org/packages/13/a4/cbf329a286c39c58eb4cd456664d98f16927b5fd94a50743a7fda0c872bd/psqlpy-0.11.11-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a716c7116ad0a828d53069a89fcfffbcd56601de93a1a597ab913bf221f26c01", size = 5077410, upload-time = "2025-11-29T17:21:22.896Z" }, + { url = "https://files.pythonhosted.org/packages/00/30/f5ffc7e4e26e7fe150cf9e1c5f1caca7f6bd71ef67642e1ff92c233fc076/psqlpy-0.11.11-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39cae79bdcd9da007913af49a4b2eadc4cdb9719976afa1ae0c3318414906e0f", size = 5168753, upload-time = "2025-11-29T17:21:24.918Z" }, + { url = "https://files.pythonhosted.org/packages/44/0d/a567def8faa6211a94a236a044b2a380fe75ac66cbd8d6220e2b1592da32/psqlpy-0.11.11-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ac5a7aab27c2252162a442931805d4bc57ba9fc257a83d30d625c48883a62dda", size = 4372599, upload-time = "2025-11-29T17:21:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/8c/b8/d3d439ce88679990b12287f64089d4267901f8ed808f54d572d6b354a6f9/psqlpy-0.11.11-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:a4002e5d5395a69c10cca0c57bdeaf0734dd7fded23ed9117137bbd467010dd3", size = 4619179, upload-time = "2025-11-29T17:21:28.828Z" }, + { url = "https://files.pythonhosted.org/packages/7b/53/9e34a95a23971852416f3a6460d78f45a4a590d27b3fca525d7321cb38e5/psqlpy-0.11.11-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dcc6f3620fd1a95af421aa22a40683b6d83fbb4af219c251a91d639845ccfb0", size = 5147226, upload-time = "2025-11-29T17:21:30.901Z" }, + { url = "https://files.pythonhosted.org/packages/d1/35/065302ea482f1c50dae517eeb01868970593a44efd3567d839d3be44bfdf/psqlpy-0.11.11-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3d6da1aea816d419192e9dce606e0dcf67456097d6626074c0245610299c1286", size = 4420561, upload-time = "2025-11-29T17:21:32.858Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a3/51e24688e89adf9994eed1d88bc09e5636900cfe58e7fdf1ac79e15a1b40/psqlpy-0.11.11-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:877fa85307cda5152956b9f112fd7f6aa91856d14b28f3d1b39a5bb9e6a9074b", size = 5051158, upload-time = "2025-11-29T17:21:35.067Z" }, + { url = "https://files.pythonhosted.org/packages/59/9b/dbdd6e8ee8ba48603c686972f3e29bebcd6a879285be47b7461d791e2e88/psqlpy-0.11.11-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eda46542a942303c690c5fb94f73ea751cd6b6d70e5c6e91fd2a2f2b417639a", size = 5072559, upload-time = "2025-11-29T17:21:37.138Z" }, + { url = "https://files.pythonhosted.org/packages/33/b4/cb59d2dcd3ff67a97f3d862c817e914e2ffa039f072662e660e59ab46630/psqlpy-0.11.11-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4d9d1be5d0129e8c242014178556c4c636676ef00cf7181ab76b6eac6f41efbf", size = 4755950, upload-time = "2025-11-29T17:21:39.214Z" }, + { url = "https://files.pythonhosted.org/packages/41/0f/688e485718a0fb33e0409bc070debad1c935017dc70900e542fd0492f75a/psqlpy-0.11.11-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1a7126009340ed854706f84ad1d09200417a2ca43a12b9bf80e5442f29f4181", size = 4904678, upload-time = "2025-11-29T17:21:41.278Z" }, + { url = "https://files.pythonhosted.org/packages/78/cd/120df7d62cc775307268859030fe31d2a951093053347d728cb6e2354607/psqlpy-0.11.11-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:5155a6fca5511073bcd430930eb379b20045877250247cc6dd1d6532c185126d", size = 5078601, upload-time = "2025-11-29T17:21:43.322Z" }, + { url = "https://files.pythonhosted.org/packages/18/ba/1a57fbbfbcec805c654f9988f797a971a5c2dd1bbd1be9c47ecff4a8518a/psqlpy-0.11.11-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:f3e96964955f8b0c288d582337b3ff5672d6686d0e552890d783325d612a3b47", size = 5170062, upload-time = "2025-11-29T17:21:45.327Z" }, ] [[package]] name = "psycopg" -version = "3.2.10" +version = "3.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.13'" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/f1/0258a123c045afaf3c3b60c22ccff077bceeb24b8dc2c593270899353bd0/psycopg-3.2.10.tar.gz", hash = "sha256:0bce99269d16ed18401683a8569b2c5abd94f72f8364856d56c0389bcd50972a", size = 160380, upload-time = "2025-09-08T09:13:37.775Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/1a/7d9ef4fdc13ef7f15b934c393edc97a35c281bb7d3c3329fbfcbe915a7c2/psycopg-3.3.2.tar.gz", hash = "sha256:707a67975ee214d200511177a6a80e56e654754c9afca06a7194ea6bbfde9ca7", size = 165630, upload-time = "2025-12-06T17:34:53.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/90/422ffbbeeb9418c795dae2a768db860401446af0c6768bc061ce22325f58/psycopg-3.2.10-py3-none-any.whl", hash = "sha256:ab5caf09a9ec42e314a21f5216dbcceac528e0e05142e42eea83a3b28b320ac3", size = 206586, upload-time = "2025-09-08T09:07:50.121Z" }, + { url = "https://files.pythonhosted.org/packages/8c/51/2779ccdf9305981a06b21a6b27e8547c948d85c41c76ff434192784a4c93/psycopg-3.3.2-py3-none-any.whl", hash = "sha256:3e94bc5f4690247d734599af56e51bae8e0db8e4311ea413f801fef82b14a99b", size = 212774, upload-time = "2025-12-06T17:31:41.414Z" }, ] [package.optional-dependencies] @@ -1528,54 +1630,64 @@ pool = [ [[package]] name = "psycopg-binary" -version = "3.2.10" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/0c/24c3717da5fbbf32c7a01efc4fd2013c29d89bba53c1760c5eb144029341/psycopg_binary-3.2.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:037dc92fc7d3f2adae7680e17216934c15b919d6528b908ac2eb52aecc0addcf", size = 3995298, upload-time = "2025-09-08T09:07:55.239Z" }, - { url = "https://files.pythonhosted.org/packages/d6/77/b75012e582f7d75213f2fe13c93ad52634c852bf9d7117a2a1d79be389a1/psycopg_binary-3.2.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84f7e8c5e5031db342ae697c2e8fb48cd708ba56990573b33e53ce626445371d", size = 4066585, upload-time = "2025-09-08T09:08:00.813Z" }, - { url = "https://files.pythonhosted.org/packages/cd/0c/bf1d016d2a957b522c3f2fa09aef04e18f652cdfce40c48459c116737933/psycopg_binary-3.2.10-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a5a81104d88780018005fe17c37fa55b4afbb6dd3c205963cc56c025d5f1cc32", size = 4625245, upload-time = "2025-09-08T09:08:05.295Z" }, - { url = "https://files.pythonhosted.org/packages/a3/89/42bd027fcd1da82d4828d203dfee4c0aba9412c4685d4b47ef098061f0df/psycopg_binary-3.2.10-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:0c23e88e048bbc33f32f5a35981707c9418723d469552dd5ac4e956366e58492", size = 4721755, upload-time = "2025-09-08T09:08:11.246Z" }, - { url = "https://files.pythonhosted.org/packages/86/3e/6359d3d57a13a3a556635f76fb26f45d3377a6d4be23d45824525c2a67a6/psycopg_binary-3.2.10-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9c9f2728488ac5848acdbf14bb4fde50f8ba783cbf3c19e9abd506741389fa7f", size = 4406209, upload-time = "2025-09-08T09:08:18.172Z" }, - { url = "https://files.pythonhosted.org/packages/86/bf/0b25d8d5b2b67ea558e133c2ab7f22c0b4602956dd23b0d34485e44e8311/psycopg_binary-3.2.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab1c6d761c4ee581016823dcc02f29b16ad69177fcbba88a9074c924fc31813e", size = 3881122, upload-time = "2025-09-08T09:08:25.116Z" }, - { url = "https://files.pythonhosted.org/packages/ac/6e/ee6bf664b16a759d22c4fc3c3d89eb15ff98d0feb3f487de5f4acde3014e/psycopg_binary-3.2.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a024b3ee539a475cbc59df877c8ecdd6f8552a1b522b69196935bc26dc6152fb", size = 3562815, upload-time = "2025-09-08T09:08:31.046Z" }, - { url = "https://files.pythonhosted.org/packages/79/33/1cc4266b5d1c04f873a7fee8b92fa25ad690d2fcdfb5aecdfc2ea42c81a7/psycopg_binary-3.2.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:50130c0d1a2a01ec3d41631df86b6c1646c76718be000600a399dc1aad80b813", size = 3604842, upload-time = "2025-09-08T09:08:36.771Z" }, - { url = "https://files.pythonhosted.org/packages/4a/f8/7db03368fc36daa5f3ae609696b5a91976878b62bf95310ba1e6c93d81df/psycopg_binary-3.2.10-cp310-cp310-win_amd64.whl", hash = "sha256:7fa1626225a162924d2da0ff4ef77869f7a8501d320355d2732be5bf2dda6138", size = 2886848, upload-time = "2025-09-08T09:08:42.906Z" }, - { url = "https://files.pythonhosted.org/packages/df/8c/f15bd09a0cc09f010c1462f1cb846d7d2706f0f6226ef8e953328243edcc/psycopg_binary-3.2.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db0eb06a19e4c64a08db0db80875ede44939af6a2afc281762c338fad5d6e547", size = 4002654, upload-time = "2025-09-08T09:08:49.779Z" }, - { url = "https://files.pythonhosted.org/packages/c9/df/9b7c9db70b624b96544560d062c27030a817e932f1fa803b58e25b26dcdd/psycopg_binary-3.2.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d922fdd49ed17c558b6b2f9ae2054c3d0cced2a34e079ce5a41c86904d0203f7", size = 4074650, upload-time = "2025-09-08T09:08:57.53Z" }, - { url = "https://files.pythonhosted.org/packages/6b/32/7aba5874e1dfd90bc3dcd26dd9200ae65e1e6e169230759dad60139f1b99/psycopg_binary-3.2.10-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d557a94cd6d2e775b3af6cc0bd0ff0d9d641820b5cc3060ccf1f5ca2bf971217", size = 4630536, upload-time = "2025-09-08T09:09:03.492Z" }, - { url = "https://files.pythonhosted.org/packages/7d/b1/a430d08b4eb28dc534181eb68a9c2a9e90b77c0e2933e338790534e7dce0/psycopg_binary-3.2.10-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:29b6bb87959515bc8b6abef10d8d23a9a681f03e48e9f0c8adb4b9fb7fa73f11", size = 4728387, upload-time = "2025-09-08T09:09:08.909Z" }, - { url = "https://files.pythonhosted.org/packages/1b/d4/26d0fa9e8e7c05f0338024d2822a3740fac6093999443ad54e164f154bcc/psycopg_binary-3.2.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1b29285474e3339d0840e1b5079fdb0481914108f92ec62de0c87ae333c60b24", size = 4413805, upload-time = "2025-09-08T09:09:13.704Z" }, - { url = "https://files.pythonhosted.org/packages/c9/f2/d05c037c02e2ac4cb1c5b895c6c82428b3eaa0c48d08767b771bc2ea155a/psycopg_binary-3.2.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:62590dd113d10cd9c08251cb80b32e2e8aaf01ece04a700322e776b1d216959f", size = 3886830, upload-time = "2025-09-08T09:09:18.102Z" }, - { url = "https://files.pythonhosted.org/packages/8f/84/db3dee4335cd80c56e173a5ffbda6d17a7a10eeed030378d9adf3ab19ea7/psycopg_binary-3.2.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:764a5b9b40ad371c55dfdf95374d89e44a82fd62272d4fceebea0adb8930e2fb", size = 3568543, upload-time = "2025-09-08T09:09:22.765Z" }, - { url = "https://files.pythonhosted.org/packages/1b/45/4117274f24b8d49b8a9c1cb60488bb172ac9e57b8f804726115c332d16f8/psycopg_binary-3.2.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bd3676a04970cf825d2c771b0c147f91182c5a3653e0dbe958e12383668d0f79", size = 3610614, upload-time = "2025-09-08T09:09:27.534Z" }, - { url = "https://files.pythonhosted.org/packages/3c/22/f1b294dfc8af32a96a363aa99c0ebb530fc1c372a424c54a862dcf77ef47/psycopg_binary-3.2.10-cp311-cp311-win_amd64.whl", hash = "sha256:646048f46192c8d23786cc6ef19f35b7488d4110396391e407eca695fdfe9dcd", size = 2888340, upload-time = "2025-09-08T09:09:32.696Z" }, - { url = "https://files.pythonhosted.org/packages/a6/34/91c127fdedf8b270b1e3acc9f849d07ee8b80194379590c6f48dcc842924/psycopg_binary-3.2.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1dee2f4d2adc9adacbfecf8254bd82f6ac95cff707e1b9b99aa721cd1ef16b47", size = 3983963, upload-time = "2025-09-08T09:09:38.454Z" }, - { url = "https://files.pythonhosted.org/packages/1e/03/1d10ce2bf70cf549a8019639dc0c49be03e41092901d4324371a968b8c01/psycopg_binary-3.2.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8b45e65383da9c4a42a56f817973e521e893f4faae897fe9f1a971f9fe799742", size = 4069171, upload-time = "2025-09-08T09:09:44.395Z" }, - { url = "https://files.pythonhosted.org/packages/4c/5e/39cb924d6e119145aa5fc5532f48e79c67e13a76675e9366c327098db7b5/psycopg_binary-3.2.10-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:484d2b1659afe0f8f1cef5ea960bb640e96fa864faf917086f9f833f5c7a8034", size = 4610780, upload-time = "2025-09-08T09:09:53.073Z" }, - { url = "https://files.pythonhosted.org/packages/20/05/5a1282ebc4e39f5890abdd4bb7edfe9d19e4667497a1793ad288a8b81826/psycopg_binary-3.2.10-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3bb4046973264ebc8cb7e20a83882d68577c1f26a6f8ad4fe52e4468cd9a8eee", size = 4700479, upload-time = "2025-09-08T09:09:58.183Z" }, - { url = "https://files.pythonhosted.org/packages/af/7a/e1c06e558ca3f37b7e6b002e555ebcfce0bf4dee6f3ae589a7444e16ce17/psycopg_binary-3.2.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:14bcbcac0cab465d88b2581e43ec01af4b01c9833e663f1352e05cb41be19e44", size = 4391772, upload-time = "2025-09-08T09:10:04.406Z" }, - { url = "https://files.pythonhosted.org/packages/6a/d6/56f449c86988c9a97dc6c5f31d3689cfe8aedb37f2a02bd3e3882465d385/psycopg_binary-3.2.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:70bb7f665587dfd79e69f48b34efe226149454d7aab138ed22d5431d703de2f6", size = 3858214, upload-time = "2025-09-08T09:10:09.693Z" }, - { url = "https://files.pythonhosted.org/packages/93/56/f9eed67c9a1701b1e315f3687ff85f2f22a0a7d0eae4505cff65ef2f2679/psycopg_binary-3.2.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d2fe9eaa367f6171ab1a21a7dcb335eb2398be7f8bb7e04a20e2260aedc6f782", size = 3528051, upload-time = "2025-09-08T09:10:13.423Z" }, - { url = "https://files.pythonhosted.org/packages/25/cc/636709c72540cb859566537c0a03e46c3d2c4c4c2e13f78df46b6c4082b3/psycopg_binary-3.2.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:299834cce3eec0c48aae5a5207fc8f0c558fd65f2ceab1a36693329847da956b", size = 3580117, upload-time = "2025-09-08T09:10:17.81Z" }, - { url = "https://files.pythonhosted.org/packages/c1/a8/a2c822fa06b0dbbb8ad4b0221da2534f77bac54332d2971dbf930f64be5a/psycopg_binary-3.2.10-cp312-cp312-win_amd64.whl", hash = "sha256:e037aac8dc894d147ef33056fc826ee5072977107a3fdf06122224353a057598", size = 2878872, upload-time = "2025-09-08T09:10:22.162Z" }, - { url = "https://files.pythonhosted.org/packages/3a/80/db840f7ebf948ab05b4793ad34d4da6ad251829d6c02714445ae8b5f1403/psycopg_binary-3.2.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:55b14f2402be027fe1568bc6c4d75ac34628ff5442a70f74137dadf99f738e3b", size = 3982057, upload-time = "2025-09-08T09:10:28.725Z" }, - { url = "https://files.pythonhosted.org/packages/2d/53/39308328bb8388b1ec3501a16128c5ada405f217c6d91b3d921b9f3c5604/psycopg_binary-3.2.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:43d803fb4e108a67c78ba58f3e6855437ca25d56504cae7ebbfbd8fce9b59247", size = 4066830, upload-time = "2025-09-08T09:10:34.083Z" }, - { url = "https://files.pythonhosted.org/packages/e7/5a/18e6f41b40c71197479468cb18703b2999c6e4ab06f9c05df3bf416a55d7/psycopg_binary-3.2.10-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:470594d303928ab72a1ffd179c9c7bde9d00f76711d6b0c28f8a46ddf56d9807", size = 4610747, upload-time = "2025-09-08T09:10:39.697Z" }, - { url = "https://files.pythonhosted.org/packages/be/ab/9198fed279aca238c245553ec16504179d21aad049958a2865d0aa797db4/psycopg_binary-3.2.10-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:a1d4e4d309049e3cb61269652a3ca56cb598da30ecd7eb8cea561e0d18bc1a43", size = 4700301, upload-time = "2025-09-08T09:10:44.715Z" }, - { url = "https://files.pythonhosted.org/packages/fc/0d/59024313b5e6c5da3e2a016103494c609d73a95157a86317e0f600c8acb3/psycopg_binary-3.2.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a92ff1c2cd79b3966d6a87e26ceb222ecd5581b5ae4b58961f126af806a861ed", size = 4392679, upload-time = "2025-09-08T09:10:49.106Z" }, - { url = "https://files.pythonhosted.org/packages/ff/47/21ef15d8a66e3a7a76a177f885173d27f0c5cbe39f5dd6eda9832d6b4e19/psycopg_binary-3.2.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac0365398947879c9827b319217096be727da16c94422e0eb3cf98c930643162", size = 3857881, upload-time = "2025-09-08T09:10:56.75Z" }, - { url = "https://files.pythonhosted.org/packages/af/35/c5e5402ccd40016f15d708bbf343b8cf107a58f8ae34d14dc178fdea4fd4/psycopg_binary-3.2.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:42ee399c2613b470a87084ed79b06d9d277f19b0457c10e03a4aef7059097abc", size = 3531135, upload-time = "2025-09-08T09:11:03.346Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e2/9b82946859001fe5e546c8749991b8b3b283f40d51bdc897d7a8e13e0a5e/psycopg_binary-3.2.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2028073fc12cd70ba003309d1439c0c4afab4a7eee7653b8c91213064fffe12b", size = 3581813, upload-time = "2025-09-08T09:11:08.76Z" }, - { url = "https://files.pythonhosted.org/packages/c5/91/c10cfccb75464adb4781486e0014ecd7c2ad6decf6cbe0afd8db65ac2bc9/psycopg_binary-3.2.10-cp313-cp313-win_amd64.whl", hash = "sha256:8390db6d2010ffcaf7f2b42339a2da620a7125d37029c1f9b72dfb04a8e7be6f", size = 2881466, upload-time = "2025-09-08T09:11:14.078Z" }, - { url = "https://files.pythonhosted.org/packages/fd/89/b0702ba0d007cc787dd7a205212c8c8cae229d1e7214c8e27bdd3b13d33e/psycopg_binary-3.2.10-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b34c278a58aa79562afe7f45e0455b1f4cad5974fc3d5674cc5f1f9f57e97fc5", size = 3981253, upload-time = "2025-09-08T09:11:19.864Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c9/e51ac72ac34d1d8ea7fd861008ad8de60e56997f5bd3fbae7536570f6f58/psycopg_binary-3.2.10-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:810f65b9ef1fe9dddb5c05937884ea9563aaf4e1a2c3d138205231ed5f439511", size = 4067542, upload-time = "2025-09-08T09:11:25.366Z" }, - { url = "https://files.pythonhosted.org/packages/d6/27/49625c79ae89959a070c1fb63ebb5c6eed426fa09e15086b6f5b626fcdc2/psycopg_binary-3.2.10-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8923487c3898c65e1450847e15d734bb2e6adbd2e79d2d1dd5ad829a1306bdc0", size = 4615338, upload-time = "2025-09-08T09:11:31.079Z" }, - { url = "https://files.pythonhosted.org/packages/b9/0d/9fdb5482f50f56303770ea8a3b1c1f32105762da731c7e2a4f425e0b3887/psycopg_binary-3.2.10-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7950ff79df7a453ac8a7d7a74694055b6c15905b0a2b6e3c99eb59c51a3f9bf7", size = 4703401, upload-time = "2025-09-08T09:11:38.718Z" }, - { url = "https://files.pythonhosted.org/packages/3c/f3/eb2f75ca2c090bf1d0c90d6da29ef340876fe4533bcfc072a9fd94dd52b4/psycopg_binary-3.2.10-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0c2b95e83fda70ed2b0b4fadd8538572e4a4d987b721823981862d1ab56cc760", size = 4393458, upload-time = "2025-09-08T09:11:44.114Z" }, - { url = "https://files.pythonhosted.org/packages/20/2e/887abe0591b2f1c1af31164b9efb46c5763e4418f403503bc9fbddaa02ef/psycopg_binary-3.2.10-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20384985fbc650c09a547a13c6d7f91bb42020d38ceafd2b68b7fc4a48a1f160", size = 3863733, upload-time = "2025-09-08T09:11:49.237Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8c/9446e3a84187220a98657ef778518f9b44eba55b1f6c3e8300d229ec9930/psycopg_binary-3.2.10-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:1f6982609b8ff8fcd67299b67cd5787da1876f3bb28fedd547262cfa8ddedf94", size = 3535121, upload-time = "2025-09-08T09:11:53.887Z" }, - { url = "https://files.pythonhosted.org/packages/b4/e1/f0382c956bfaa951a0dbd4d5a354acf093ef7e5219996958143dfd2bf37d/psycopg_binary-3.2.10-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:bf30dcf6aaaa8d4779a20d2158bdf81cc8e84ce8eee595d748a7671c70c7b890", size = 3584235, upload-time = "2025-09-08T09:12:01.118Z" }, - { url = "https://files.pythonhosted.org/packages/5a/dd/464bd739bacb3b745a1c93bc15f20f0b1e27f0a64ec693367794b398673b/psycopg_binary-3.2.10-cp314-cp314-win_amd64.whl", hash = "sha256:d5c6a66a76022af41970bf19f51bc6bf87bd10165783dd1d40484bfd87d6b382", size = 2973554, upload-time = "2025-09-08T09:12:05.884Z" }, +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/d7/edfb0d9e56081246fd88490f99b1bafebd3588480cca601a4de0c41a3e08/psycopg_binary-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0768c5f32934bb52a5df098317eca9bdcf411de627c5dca2ee57662b64b54b41", size = 4597785, upload-time = "2025-12-06T17:31:44.867Z" }, + { url = "https://files.pythonhosted.org/packages/71/45/8458201d9573dd851263a05cefddd4bfd31e8b3c6434b3e38d62aea9f15a/psycopg_binary-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:09b3014013f05cd89828640d3a1db5f829cc24ad8fa81b6e42b2c04685a0c9d4", size = 4664440, upload-time = "2025-12-06T17:31:49.1Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/484260d87456cfe88dc219c1919026f11949b9d1de8a6371ddbe027d4d60/psycopg_binary-3.3.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3789d452a9d17a841c7f4f97bbcba51a21f957ea35641a4c98507520e6b6a068", size = 5478355, upload-time = "2025-12-06T17:31:52.657Z" }, + { url = "https://files.pythonhosted.org/packages/34/b2/18c91630c30c83f534c2bfa75fb533293fc9c3ab31bb7f2bf1cd9579c53b/psycopg_binary-3.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:44e89938d36acc4495735af70a886d206a5bfdc80258f95b69b52f68b2968d9e", size = 5152398, upload-time = "2025-12-06T17:31:56.092Z" }, + { url = "https://files.pythonhosted.org/packages/c0/14/7c705e1934107196d9dca2040cf34bce2ca26de62520e43073d2673052d4/psycopg_binary-3.3.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90ed9da805e52985b0202aed4f352842c907c6b4fc6c7c109c6e646c32e2f43b", size = 6748982, upload-time = "2025-12-06T17:32:00.611Z" }, + { url = "https://files.pythonhosted.org/packages/56/18/80197c47798926f79e563af02a71d1abecab88cf45ddf8dc960700598da7/psycopg_binary-3.3.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c3a9ccdfee4ae59cf9bf1822777e763bc097ed208f4901e21537fca1070e1391", size = 4991214, upload-time = "2025-12-06T17:32:03.897Z" }, + { url = "https://files.pythonhosted.org/packages/7e/2e/e88e2f678f5d1a968d87e57b30915061c1157e916b8aaa9b0b78bca95e25/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:de9173f8cc0efd88ac2a89b3b6c287a9a0011cdc2f53b2a12c28d6fd55f9f81c", size = 4517421, upload-time = "2025-12-06T17:32:07.287Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/d56813b24370723bcd62bf73871aee4d5fca0536f3476c4c4d5b037e3c7f/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0611f4822674f3269e507a307236efb62ae5a828fcfc923ac85fe22ca19fd7c8", size = 4206124, upload-time = "2025-12-06T17:32:10.374Z" }, + { url = "https://files.pythonhosted.org/packages/91/81/5a11a898969edf0ee43d0613a6dfd689a0aa12d418c69e148a8ff153fbc7/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:522b79c7db547767ca923e441c19b97a2157f2f494272a119c854bba4804e186", size = 3937067, upload-time = "2025-12-06T17:32:13.852Z" }, + { url = "https://files.pythonhosted.org/packages/a1/33/a6180ff1e747a0395876d985e8e295c9d7cbe956a2d66f165e7c67cffe55/psycopg_binary-3.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ea41c0229f3f5a3844ad0857a83a9f869aa7b840448fa0c200e6bcf85d33d19", size = 4243731, upload-time = "2025-12-06T17:32:16.803Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5b/9c1b6fbc900d5b525946ed9a477865c5016a5306080c0557248bb04f1a5b/psycopg_binary-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:8ea05b499278790a8fa0ff9854ab0de2542aca02d661ddff94e830df971ff640", size = 3546403, upload-time = "2025-12-06T17:32:19.621Z" }, + { url = "https://files.pythonhosted.org/packages/57/d9/49640360fc090d27afc4655021544aa71d5393ebae124ffa53a04474b493/psycopg_binary-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:94503b79f7da0b65c80d0dbb2f81dd78b300319ec2435d5e6dcf9622160bc2fa", size = 4597890, upload-time = "2025-12-06T17:32:23.087Z" }, + { url = "https://files.pythonhosted.org/packages/85/cf/99634bbccc8af0dd86df4bce705eea5540d06bb7f5ab3067446ae9ffdae4/psycopg_binary-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07a5f030e0902ec3e27d0506ceb01238c0aecbc73ecd7fa0ee55f86134600b5b", size = 4664396, upload-time = "2025-12-06T17:32:26.421Z" }, + { url = "https://files.pythonhosted.org/packages/40/db/6035dff6d5c6dfca3a4ab0d2ac62ede623646e327e9f99e21e0cf08976c6/psycopg_binary-3.3.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e09d0d93d35c134704a2cb2b15f81ffc8174fd602f3e08f7b1a3d8896156cf0", size = 5478743, upload-time = "2025-12-06T17:32:29.901Z" }, + { url = "https://files.pythonhosted.org/packages/03/0f/fc06bbc8e87f09458d2ce04a59cd90565e54e8efca33e0802daee6d2b0e6/psycopg_binary-3.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:649c1d33bedda431e0c1df646985fbbeb9274afa964e1aef4be053c0f23a2924", size = 5151820, upload-time = "2025-12-06T17:32:33.562Z" }, + { url = "https://files.pythonhosted.org/packages/86/ab/bcc0397c96a0ad29463e33ed03285826e0fabc43595c195f419d9291ee70/psycopg_binary-3.3.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5774272f754605059521ff037a86e680342e3847498b0aa86b0f3560c70963c", size = 6747711, upload-time = "2025-12-06T17:32:38.074Z" }, + { url = "https://files.pythonhosted.org/packages/96/eb/7450bc75c31d5be5f7a6d02d26beef6989a4ca6f5efdec65eea6cf612d0e/psycopg_binary-3.3.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d391b70c9cc23f6e1142729772a011f364199d2c5ddc0d596f5f43316fbf982d", size = 4991626, upload-time = "2025-12-06T17:32:41.373Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/65f14453804c82a7fba31cd1a984b90349c0f327b809102c4b99115c0930/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f3f601f32244a677c7b029ec39412db2772ad04a28bc2cbb4b1f0931ed0ffad7", size = 4516760, upload-time = "2025-12-06T17:32:44.921Z" }, + { url = "https://files.pythonhosted.org/packages/24/8c/3105f00a91d73d9a443932f95156eae8159d5d9cb68a9d2cf512710d484f/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:0ae60e910531cfcc364a8f615a7941cac89efeb3f0fffe0c4824a6d11461eef7", size = 4204028, upload-time = "2025-12-06T17:32:48.355Z" }, + { url = "https://files.pythonhosted.org/packages/1e/dd/74f64a383342ef7c22d1eb2768ed86411c7f877ed2580cd33c17f436fe3c/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7c43a773dd1a481dbb2fe64576aa303d80f328cce0eae5e3e4894947c41d1da7", size = 3935780, upload-time = "2025-12-06T17:32:51.347Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/f3f207d1c292949a26cdea6727c9c325b4ee41e04bf2736a4afbe45eb61f/psycopg_binary-3.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5a327327f1188b3fbecac41bf1973a60b86b2eb237db10dc945bd3dc97ec39e4", size = 4243239, upload-time = "2025-12-06T17:32:54.924Z" }, + { url = "https://files.pythonhosted.org/packages/b3/08/8f1b5d6231338bf7bc46f635c4d4965facec52e1c9a7952ca8a70cb57dc0/psycopg_binary-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:136c43f185244893a527540307167f5d3ef4e08786508afe45d6f146228f5aa9", size = 3548102, upload-time = "2025-12-06T17:32:57.944Z" }, + { url = "https://files.pythonhosted.org/packages/4e/1e/8614b01c549dd7e385dacdcd83fe194f6b3acb255a53cc67154ee6bf00e7/psycopg_binary-3.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a9387ab615f929e71ef0f4a8a51e986fa06236ccfa9f3ec98a88f60fbf230634", size = 4579832, upload-time = "2025-12-06T17:33:01.388Z" }, + { url = "https://files.pythonhosted.org/packages/26/97/0bb093570fae2f4454d42c1ae6000f15934391867402f680254e4a7def54/psycopg_binary-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3ff7489df5e06c12d1829544eaec64970fe27fe300f7cf04c8495fe682064688", size = 4658786, upload-time = "2025-12-06T17:33:05.022Z" }, + { url = "https://files.pythonhosted.org/packages/61/20/1d9383e3f2038826900a14137b0647d755f67551aab316e1021443105ed5/psycopg_binary-3.3.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:9742580ecc8e1ac45164e98d32ca6df90da509c2d3ff26be245d94c430f92db4", size = 5454896, upload-time = "2025-12-06T17:33:09.023Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/513c80ad8bbb545e364f7737bf2492d34a4c05eef4f7b5c16428dc42260d/psycopg_binary-3.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d45acedcaa58619355f18e0f42af542fcad3fd84ace4b8355d3a5dea23318578", size = 5132731, upload-time = "2025-12-06T17:33:12.519Z" }, + { url = "https://files.pythonhosted.org/packages/f3/28/ddf5f5905f088024bccb19857949467407c693389a14feb527d6171d8215/psycopg_binary-3.3.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d88f32ff8c47cb7f4e7e7a9d1747dcee6f3baa19ed9afa9e5694fd2fb32b61ed", size = 6724495, upload-time = "2025-12-06T17:33:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/6e/93/a1157ebcc650960b264542b547f7914d87a42ff0cc15a7584b29d5807e6b/psycopg_binary-3.3.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:59d0163c4617a2c577cb34afbed93d7a45b8c8364e54b2bd2020ff25d5f5f860", size = 4964979, upload-time = "2025-12-06T17:33:20.179Z" }, + { url = "https://files.pythonhosted.org/packages/0e/27/65939ba6798f9c5be4a5d9cd2061ebaf0851798525c6811d347821c8132d/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e750afe74e6c17b2c7046d2c3e3173b5a3f6080084671c8aa327215323df155b", size = 4493648, upload-time = "2025-12-06T17:33:23.464Z" }, + { url = "https://files.pythonhosted.org/packages/8a/c4/5e9e4b9b1c1e27026e43387b0ba4aaf3537c7806465dd3f1d5bde631752a/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f26f113013c4dcfbfe9ced57b5bad2035dda1a7349f64bf726021968f9bccad3", size = 4173392, upload-time = "2025-12-06T17:33:26.88Z" }, + { url = "https://files.pythonhosted.org/packages/c6/81/cf43fb76993190cee9af1cbcfe28afb47b1928bdf45a252001017e5af26e/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:8309ee4569dced5e81df5aa2dcd48c7340c8dee603a66430f042dfbd2878edca", size = 3909241, upload-time = "2025-12-06T17:33:30.092Z" }, + { url = "https://files.pythonhosted.org/packages/9d/20/c6377a0d17434674351627489deca493ea0b137c522b99c81d3a106372c8/psycopg_binary-3.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c6464150e25b68ae3cb04c4e57496ea11ebfaae4d98126aea2f4702dd43e3c12", size = 4219746, upload-time = "2025-12-06T17:33:33.097Z" }, + { url = "https://files.pythonhosted.org/packages/25/32/716c57b28eefe02a57a4c9d5bf956849597f5ea476c7010397199e56cfde/psycopg_binary-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:716a586f99bbe4f710dc58b40069fcb33c7627e95cc6fc936f73c9235e07f9cf", size = 3537494, upload-time = "2025-12-06T17:33:35.82Z" }, + { url = "https://files.pythonhosted.org/packages/14/73/7ca7cb22b9ac7393fb5de7d28ca97e8347c375c8498b3bff2c99c1f38038/psycopg_binary-3.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fc5a189e89cbfff174588665bb18d28d2d0428366cc9dae5864afcaa2e57380b", size = 4579068, upload-time = "2025-12-06T17:33:39.303Z" }, + { url = "https://files.pythonhosted.org/packages/f5/42/0cf38ff6c62c792fc5b55398a853a77663210ebd51ed6f0c4a05b06f95a6/psycopg_binary-3.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:083c2e182be433f290dc2c516fd72b9b47054fcd305cce791e0a50d9e93e06f2", size = 4657520, upload-time = "2025-12-06T17:33:42.536Z" }, + { url = "https://files.pythonhosted.org/packages/3b/60/df846bc84cbf2231e01b0fff48b09841fe486fa177665e50f4995b1bfa44/psycopg_binary-3.3.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:ac230e3643d1c436a2dfb59ca84357dfc6862c9f372fc5dbd96bafecae581f9f", size = 5452086, upload-time = "2025-12-06T17:33:46.54Z" }, + { url = "https://files.pythonhosted.org/packages/ab/85/30c846a00db86b1b53fd5bfd4b4edfbd0c00de8f2c75dd105610bd7568fc/psycopg_binary-3.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d8c899a540f6c7585cee53cddc929dd4d2db90fd828e37f5d4017b63acbc1a5d", size = 5131125, upload-time = "2025-12-06T17:33:50.413Z" }, + { url = "https://files.pythonhosted.org/packages/6d/15/9968732013373f36f8a2a3fb76104dffc8efd9db78709caa5ae1a87b1f80/psycopg_binary-3.3.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50ff10ab8c0abdb5a5451b9315538865b50ba64c907742a1385fdf5f5772b73e", size = 6722914, upload-time = "2025-12-06T17:33:54.544Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ba/29e361fe02143ac5ff5a1ca3e45697344cfbebe2eaf8c4e7eec164bff9a0/psycopg_binary-3.3.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:23d2594af848c1fd3d874a9364bef50730124e72df7bb145a20cb45e728c50ed", size = 4966081, upload-time = "2025-12-06T17:33:58.477Z" }, + { url = "https://files.pythonhosted.org/packages/99/45/1be90c8f1a1a237046903e91202fb06708745c179f220b361d6333ed7641/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ea4fe6b4ead3bbbe27244ea224fcd1f53cb119afc38b71a2f3ce570149a03e30", size = 4493332, upload-time = "2025-12-06T17:34:02.011Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/bbdc07d5f0a5e90c617abd624368182aa131485e18038b2c6c85fc054aed/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:742ce48cde825b8e52fb1a658253d6d1ff66d152081cbc76aa45e2986534858d", size = 4170781, upload-time = "2025-12-06T17:34:05.298Z" }, + { url = "https://files.pythonhosted.org/packages/d1/2a/0d45e4f4da2bd78c3237ffa03475ef3751f69a81919c54a6e610eb1a7c96/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e22bf6b54df994aff37ab52695d635f1ef73155e781eee1f5fa75bc08b58c8da", size = 3910544, upload-time = "2025-12-06T17:34:08.251Z" }, + { url = "https://files.pythonhosted.org/packages/3a/62/a8e0f092f4dbef9a94b032fb71e214cf0a375010692fbe7493a766339e47/psycopg_binary-3.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8db9034cde3bcdafc66980f0130813f5c5d19e74b3f2a19fb3cfbc25ad113121", size = 4220070, upload-time = "2025-12-06T17:34:11.392Z" }, + { url = "https://files.pythonhosted.org/packages/09/e6/5fc8d8aff8afa114bb4a94a0341b9309311e8bf3ab32d816032f8b984d4e/psycopg_binary-3.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:df65174c7cf6b05ea273ce955927d3270b3a6e27b0b12762b009ce6082b8d3fc", size = 3540922, upload-time = "2025-12-06T17:34:14.88Z" }, + { url = "https://files.pythonhosted.org/packages/bd/75/ad18c0b97b852aba286d06befb398cc6d383e9dfd0a518369af275a5a526/psycopg_binary-3.3.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9ca24062cd9b2270e4d77576042e9cc2b1d543f09da5aba1f1a3d016cea28390", size = 4596371, upload-time = "2025-12-06T17:34:18.007Z" }, + { url = "https://files.pythonhosted.org/packages/5a/79/91649d94c8d89f84af5da7c9d474bfba35b08eb8f492ca3422b08f0a6427/psycopg_binary-3.3.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c749770da0947bc972e512f35366dd4950c0e34afad89e60b9787a37e97cb443", size = 4675139, upload-time = "2025-12-06T17:34:21.374Z" }, + { url = "https://files.pythonhosted.org/packages/56/ac/b26e004880f054549ec9396594e1ffe435810b0673e428e619ed722e4244/psycopg_binary-3.3.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:03b7cd73fb8c45d272a34ae7249713e32492891492681e3cf11dff9531cf37e9", size = 5456120, upload-time = "2025-12-06T17:34:25.102Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/410681dccd6f2999fb115cc248521ec50dd2b0aba66ae8de7e81efdebbee/psycopg_binary-3.3.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:43b130e3b6edcb5ee856c7167ccb8561b473308c870ed83978ae478613764f1c", size = 5133484, upload-time = "2025-12-06T17:34:28.933Z" }, + { url = "https://files.pythonhosted.org/packages/66/30/ebbab99ea2cfa099d7b11b742ce13415d44f800555bfa4ad2911dc645b71/psycopg_binary-3.3.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c1feba5a8c617922321aef945865334e468337b8fc5c73074f5e63143013b5a", size = 6731818, upload-time = "2025-12-06T17:34:33.094Z" }, + { url = "https://files.pythonhosted.org/packages/70/02/d260646253b7ad805d60e0de47f9b811d6544078452579466a098598b6f4/psycopg_binary-3.3.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cabb2a554d9a0a6bf84037d86ca91782f087dfff2a61298d0b00c19c0bc43f6d", size = 4983859, upload-time = "2025-12-06T17:34:36.457Z" }, + { url = "https://files.pythonhosted.org/packages/72/8d/e778d7bad1a7910aa36281f092bd85c5702f508fd9bb0ea2020ffbb6585c/psycopg_binary-3.3.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:74bc306c4b4df35b09bc8cecf806b271e1c5d708f7900145e4e54a2e5dedfed0", size = 4516388, upload-time = "2025-12-06T17:34:40.129Z" }, + { url = "https://files.pythonhosted.org/packages/bd/f1/64e82098722e2ab3521797584caf515284be09c1e08a872551b6edbb0074/psycopg_binary-3.3.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:d79b0093f0fbf7a962d6a46ae292dc056c65d16a8ee9361f3cfbafd4c197ab14", size = 4192382, upload-time = "2025-12-06T17:34:43.279Z" }, + { url = "https://files.pythonhosted.org/packages/fa/d0/c20f4e668e89494972e551c31be2a0016e3f50d552d7ae9ac07086407599/psycopg_binary-3.3.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:1586e220be05547c77afc326741dd41cc7fba38a81f9931f616ae98865439678", size = 3928660, upload-time = "2025-12-06T17:34:46.757Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e1/99746c171de22539fd5eb1c9ca21dc805b54cfae502d7451d237d1dbc349/psycopg_binary-3.3.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:458696a5fa5dad5b6fb5d5862c22454434ce4fe1cf66ca6c0de5f904cbc1ae3e", size = 4239169, upload-time = "2025-12-06T17:34:49.751Z" }, + { url = "https://files.pythonhosted.org/packages/72/f7/212343c1c9cfac35fd943c527af85e9091d633176e2a407a0797856ff7b9/psycopg_binary-3.3.2-cp314-cp314-win_amd64.whl", hash = "sha256:04bb2de4ba69d6f8395b446ede795e8884c040ec71d01dd07ac2b2d18d4153d1", size = 3642122, upload-time = "2025-12-06T17:34:52.506Z" }, ] [[package]] @@ -1815,7 +1927,7 @@ wheels = [ [[package]] name = "pytest" -version = "8.4.2" +version = "9.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -1826,23 +1938,23 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/07/56/f013048ac4bc4c1d9be45afd4ab209ea62822fb1598f40687e6bf45dcea4/pytest-9.0.1.tar.gz", hash = "sha256:3e9c069ea73583e255c3b21cf46b8d3c56f6e3a1a8f6da94ccb0fcf57b9d73c8", size = 1564125, upload-time = "2025-11-12T13:05:09.333Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, + { url = "https://files.pythonhosted.org/packages/0b/8b/6300fb80f858cda1c51ffa17075df5d846757081d11ab4aa35cef9e6258b/pytest-9.0.1-py3-none-any.whl", hash = "sha256:67be0030d194df2dfa7b556f2e56fb3c3315bd5c8822c6951162b92b32ce7dad", size = 373668, upload-time = "2025-11-12T13:05:07.379Z" }, ] [[package]] name = "pytest-asyncio" -version = "1.2.0" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backports-asyncio-runner", marker = "python_full_version < '3.11'" }, { name = "pytest" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/86/9e3c5f48f7b7b638b216e4b9e645f54d199d7abbbab7a64a13b4e12ba10f/pytest_asyncio-1.2.0.tar.gz", hash = "sha256:c609a64a2a8768462d0c99811ddb8bd2583c33fd33cf7f21af1c142e824ffb57", size = 50119, upload-time = "2025-09-12T07:33:53.816Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/93/2fa34714b7a4ae72f2f8dad66ba17dd9a2c793220719e736dda28b7aec27/pytest_asyncio-1.2.0-py3-none-any.whl", hash = "sha256:8e17ae5e46d8e7efe51ab6494dd2010f4ca8dae51652aa3c8d55acf50bfb2e99", size = 15095, upload-time = "2025-09-12T07:33:52.639Z" }, + { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" }, ] [[package]] @@ -1977,28 +2089,28 @@ wheels = [ [[package]] name = "ruff" -version = "0.14.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/b9/9bd84453ed6dd04688de9b3f3a4146a1698e8faae2ceeccce4e14c67ae17/ruff-0.14.0.tar.gz", hash = "sha256:62ec8969b7510f77945df916de15da55311fade8d6050995ff7f680afe582c57", size = 5452071, upload-time = "2025-10-07T18:21:55.763Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/4e/79d463a5f80654e93fa653ebfb98e0becc3f0e7cf6219c9ddedf1e197072/ruff-0.14.0-py3-none-linux_armv6l.whl", hash = "sha256:58e15bffa7054299becf4bab8a1187062c6f8cafbe9f6e39e0d5aface455d6b3", size = 12494532, upload-time = "2025-10-07T18:21:00.373Z" }, - { url = "https://files.pythonhosted.org/packages/ee/40/e2392f445ed8e02aa6105d49db4bfff01957379064c30f4811c3bf38aece/ruff-0.14.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:838d1b065f4df676b7c9957992f2304e41ead7a50a568185efd404297d5701e8", size = 13160768, upload-time = "2025-10-07T18:21:04.73Z" }, - { url = "https://files.pythonhosted.org/packages/75/da/2a656ea7c6b9bd14c7209918268dd40e1e6cea65f4bb9880eaaa43b055cd/ruff-0.14.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:703799d059ba50f745605b04638fa7e9682cc3da084b2092feee63500ff3d9b8", size = 12363376, upload-time = "2025-10-07T18:21:07.833Z" }, - { url = "https://files.pythonhosted.org/packages/42/e2/1ffef5a1875add82416ff388fcb7ea8b22a53be67a638487937aea81af27/ruff-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ba9a8925e90f861502f7d974cc60e18ca29c72bb0ee8bfeabb6ade35a3abde7", size = 12608055, upload-time = "2025-10-07T18:21:10.72Z" }, - { url = "https://files.pythonhosted.org/packages/4a/32/986725199d7cee510d9f1dfdf95bf1efc5fa9dd714d0d85c1fb1f6be3bc3/ruff-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e41f785498bd200ffc276eb9e1570c019c1d907b07cfb081092c8ad51975bbe7", size = 12318544, upload-time = "2025-10-07T18:21:13.741Z" }, - { url = "https://files.pythonhosted.org/packages/9a/ed/4969cefd53315164c94eaf4da7cfba1f267dc275b0abdd593d11c90829a3/ruff-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30a58c087aef4584c193aebf2700f0fbcfc1e77b89c7385e3139956fa90434e2", size = 14001280, upload-time = "2025-10-07T18:21:16.411Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ad/96c1fc9f8854c37681c9613d825925c7f24ca1acfc62a4eb3896b50bacd2/ruff-0.14.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f8d07350bc7af0a5ce8812b7d5c1a7293cf02476752f23fdfc500d24b79b783c", size = 15027286, upload-time = "2025-10-07T18:21:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/b3/00/1426978f97df4fe331074baf69615f579dc4e7c37bb4c6f57c2aad80c87f/ruff-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eec3bbbf3a7d5482b5c1f42d5fc972774d71d107d447919fca620b0be3e3b75e", size = 14451506, upload-time = "2025-10-07T18:21:22.779Z" }, - { url = "https://files.pythonhosted.org/packages/58/d5/9c1cea6e493c0cf0647674cca26b579ea9d2a213b74b5c195fbeb9678e15/ruff-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16b68e183a0e28e5c176d51004aaa40559e8f90065a10a559176713fcf435206", size = 13437384, upload-time = "2025-10-07T18:21:25.758Z" }, - { url = "https://files.pythonhosted.org/packages/29/b4/4cd6a4331e999fc05d9d77729c95503f99eae3ba1160469f2b64866964e3/ruff-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb732d17db2e945cfcbbc52af0143eda1da36ca8ae25083dd4f66f1542fdf82e", size = 13447976, upload-time = "2025-10-07T18:21:28.83Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c0/ac42f546d07e4f49f62332576cb845d45c67cf5610d1851254e341d563b6/ruff-0.14.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:c958f66ab884b7873e72df38dcabee03d556a8f2ee1b8538ee1c2bbd619883dd", size = 13682850, upload-time = "2025-10-07T18:21:31.842Z" }, - { url = "https://files.pythonhosted.org/packages/5f/c4/4b0c9bcadd45b4c29fe1af9c5d1dc0ca87b4021665dfbe1c4688d407aa20/ruff-0.14.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:7eb0499a2e01f6e0c285afc5bac43ab380cbfc17cd43a2e1dd10ec97d6f2c42d", size = 12449825, upload-time = "2025-10-07T18:21:35.074Z" }, - { url = "https://files.pythonhosted.org/packages/4b/a8/e2e76288e6c16540fa820d148d83e55f15e994d852485f221b9524514730/ruff-0.14.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c63b2d99fafa05efca0ab198fd48fa6030d57e4423df3f18e03aa62518c565f", size = 12272599, upload-time = "2025-10-07T18:21:38.08Z" }, - { url = "https://files.pythonhosted.org/packages/18/14/e2815d8eff847391af632b22422b8207704222ff575dec8d044f9ab779b2/ruff-0.14.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:668fce701b7a222f3f5327f86909db2bbe99c30877c8001ff934c5413812ac02", size = 13193828, upload-time = "2025-10-07T18:21:41.216Z" }, - { url = "https://files.pythonhosted.org/packages/44/c6/61ccc2987cf0aecc588ff8f3212dea64840770e60d78f5606cd7dc34de32/ruff-0.14.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a86bf575e05cb68dcb34e4c7dfe1064d44d3f0c04bbc0491949092192b515296", size = 13628617, upload-time = "2025-10-07T18:21:44.04Z" }, - { url = "https://files.pythonhosted.org/packages/73/e6/03b882225a1b0627e75339b420883dc3c90707a8917d2284abef7a58d317/ruff-0.14.0-py3-none-win32.whl", hash = "sha256:7450a243d7125d1c032cb4b93d9625dea46c8c42b4f06c6b709baac168e10543", size = 12367872, upload-time = "2025-10-07T18:21:46.67Z" }, - { url = "https://files.pythonhosted.org/packages/41/77/56cf9cf01ea0bfcc662de72540812e5ba8e9563f33ef3d37ab2174892c47/ruff-0.14.0-py3-none-win_amd64.whl", hash = "sha256:ea95da28cd874c4d9c922b39381cbd69cb7e7b49c21b8152b014bd4f52acddc2", size = 13464628, upload-time = "2025-10-07T18:21:50.318Z" }, - { url = "https://files.pythonhosted.org/packages/c6/2a/65880dfd0e13f7f13a775998f34703674a4554906167dce02daf7865b954/ruff-0.14.0-py3-none-win_arm64.whl", hash = "sha256:f42c9495f5c13ff841b1da4cb3c2a42075409592825dada7c5885c2c844ac730", size = 12565142, upload-time = "2025-10-07T18:21:53.577Z" }, +version = "0.14.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/d9/f7a0c4b3a2bf2556cd5d99b05372c29980249ef71e8e32669ba77428c82c/ruff-0.14.8.tar.gz", hash = "sha256:774ed0dd87d6ce925e3b8496feb3a00ac564bea52b9feb551ecd17e0a23d1eed", size = 5765385, upload-time = "2025-12-04T15:06:17.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/b8/9537b52010134b1d2b72870cc3f92d5fb759394094741b09ceccae183fbe/ruff-0.14.8-py3-none-linux_armv6l.whl", hash = "sha256:ec071e9c82eca417f6111fd39f7043acb53cd3fde9b1f95bbed745962e345afb", size = 13441540, upload-time = "2025-12-04T15:06:14.896Z" }, + { url = "https://files.pythonhosted.org/packages/24/00/99031684efb025829713682012b6dd37279b1f695ed1b01725f85fd94b38/ruff-0.14.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8cdb162a7159f4ca36ce980a18c43d8f036966e7f73f866ac8f493b75e0c27e9", size = 13669384, upload-time = "2025-12-04T15:06:51.809Z" }, + { url = "https://files.pythonhosted.org/packages/72/64/3eb5949169fc19c50c04f28ece2c189d3b6edd57e5b533649dae6ca484fe/ruff-0.14.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e2fcbefe91f9fad0916850edf0854530c15bd1926b6b779de47e9ab619ea38f", size = 12806917, upload-time = "2025-12-04T15:06:08.925Z" }, + { url = "https://files.pythonhosted.org/packages/c4/08/5250babb0b1b11910f470370ec0cbc67470231f7cdc033cee57d4976f941/ruff-0.14.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d70721066a296f45786ec31916dc287b44040f553da21564de0ab4d45a869b", size = 13256112, upload-time = "2025-12-04T15:06:23.498Z" }, + { url = "https://files.pythonhosted.org/packages/78/4c/6c588e97a8e8c2d4b522c31a579e1df2b4d003eddfbe23d1f262b1a431ff/ruff-0.14.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c87e09b3cd9d126fc67a9ecd3b5b1d3ded2b9c7fce3f16e315346b9d05cfb52", size = 13227559, upload-time = "2025-12-04T15:06:33.432Z" }, + { url = "https://files.pythonhosted.org/packages/23/ce/5f78cea13eda8eceac71b5f6fa6e9223df9b87bb2c1891c166d1f0dce9f1/ruff-0.14.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d62cb310c4fbcb9ee4ac023fe17f984ae1e12b8a4a02e3d21489f9a2a5f730c", size = 13896379, upload-time = "2025-12-04T15:06:02.687Z" }, + { url = "https://files.pythonhosted.org/packages/cf/79/13de4517c4dadce9218a20035b21212a4c180e009507731f0d3b3f5df85a/ruff-0.14.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1af35c2d62633d4da0521178e8a2641c636d2a7153da0bac1b30cfd4ccd91344", size = 15372786, upload-time = "2025-12-04T15:06:29.828Z" }, + { url = "https://files.pythonhosted.org/packages/00/06/33df72b3bb42be8a1c3815fd4fae83fa2945fc725a25d87ba3e42d1cc108/ruff-0.14.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25add4575ffecc53d60eed3f24b1e934493631b48ebbc6ebaf9d8517924aca4b", size = 14990029, upload-time = "2025-12-04T15:06:36.812Z" }, + { url = "https://files.pythonhosted.org/packages/64/61/0f34927bd90925880394de0e081ce1afab66d7b3525336f5771dcf0cb46c/ruff-0.14.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c943d847b7f02f7db4201a0600ea7d244d8a404fbb639b439e987edcf2baf9a", size = 14407037, upload-time = "2025-12-04T15:06:39.979Z" }, + { url = "https://files.pythonhosted.org/packages/96/bc/058fe0aefc0fbf0d19614cb6d1a3e2c048f7dc77ca64957f33b12cfdc5ef/ruff-0.14.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb6e8bf7b4f627548daa1b69283dac5a296bfe9ce856703b03130732e20ddfe2", size = 14102390, upload-time = "2025-12-04T15:06:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/af/a4/e4f77b02b804546f4c17e8b37a524c27012dd6ff05855d2243b49a7d3cb9/ruff-0.14.8-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:7aaf2974f378e6b01d1e257c6948207aec6a9b5ba53fab23d0182efb887a0e4a", size = 14230793, upload-time = "2025-12-04T15:06:20.497Z" }, + { url = "https://files.pythonhosted.org/packages/3f/52/bb8c02373f79552e8d087cedaffad76b8892033d2876c2498a2582f09dcf/ruff-0.14.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e5758ca513c43ad8a4ef13f0f081f80f08008f410790f3611a21a92421ab045b", size = 13160039, upload-time = "2025-12-04T15:06:49.06Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ad/b69d6962e477842e25c0b11622548df746290cc6d76f9e0f4ed7456c2c31/ruff-0.14.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f74f7ba163b6e85a8d81a590363bf71618847e5078d90827749bfda1d88c9cdf", size = 13205158, upload-time = "2025-12-04T15:06:54.574Z" }, + { url = "https://files.pythonhosted.org/packages/06/63/54f23da1315c0b3dfc1bc03fbc34e10378918a20c0b0f086418734e57e74/ruff-0.14.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:eed28f6fafcc9591994c42254f5a5c5ca40e69a30721d2ab18bb0bb3baac3ab6", size = 13469550, upload-time = "2025-12-04T15:05:59.209Z" }, + { url = "https://files.pythonhosted.org/packages/70/7d/a4d7b1961e4903bc37fffb7ddcfaa7beb250f67d97cfd1ee1d5cddb1ec90/ruff-0.14.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:21d48fa744c9d1cb8d71eb0a740c4dd02751a5de9db9a730a8ef75ca34cf138e", size = 14211332, upload-time = "2025-12-04T15:06:06.027Z" }, + { url = "https://files.pythonhosted.org/packages/5d/93/2a5063341fa17054e5c86582136e9895db773e3c2ffb770dde50a09f35f0/ruff-0.14.8-py3-none-win32.whl", hash = "sha256:15f04cb45c051159baebb0f0037f404f1dc2f15a927418f29730f411a79bc4e7", size = 13151890, upload-time = "2025-12-04T15:06:11.668Z" }, + { url = "https://files.pythonhosted.org/packages/02/1c/65c61a0859c0add13a3e1cbb6024b42de587456a43006ca2d4fd3d1618fe/ruff-0.14.8-py3-none-win_amd64.whl", hash = "sha256:9eeb0b24242b5bbff3011409a739929f497f3fb5fe3b5698aba5e77e8c833097", size = 14537826, upload-time = "2025-12-04T15:06:26.409Z" }, + { url = "https://files.pythonhosted.org/packages/6d/63/8b41cea3afd7f58eb64ac9251668ee0073789a3bc9ac6f816c8c6fef986d/ruff-0.14.8-py3-none-win_arm64.whl", hash = "sha256:965a582c93c63fe715fd3e3f8aa37c4b776777203d8e1d8aa3cc0c14424a4b99", size = 13634522, upload-time = "2025-12-04T15:06:43.212Z" }, ] [[package]] @@ -2177,47 +2289,47 @@ test = [ [package.metadata] requires-dist = [ { name = "aiopg", marker = "extra == 'aiopg'", specifier = ">=1.4.0" }, - { name = "asyncpg", marker = "extra == 'asyncpg'", specifier = ">=0.30.0" }, - { name = "psqlpy", marker = "extra == 'psqlpy'", specifier = ">=0.11.6" }, - { name = "psycopg", extras = ["binary", "pool"], marker = "extra == 'psycopg'", specifier = ">=3.2.10" }, + { name = "asyncpg", marker = "extra == 'asyncpg'", specifier = ">=0.31.0" }, + { name = "psqlpy", marker = "extra == 'psqlpy'", specifier = ">=0.11.11" }, + { name = "psycopg", extras = ["binary", "pool"], marker = "extra == 'psycopg'", specifier = ">=3.3.2" }, { name = "taskiq", specifier = ">=0.12.0" }, ] provides-extras = ["aiopg", "asyncpg", "psqlpy", "psycopg"] [package.metadata.requires-dev] dev = [ - { name = "asyncpg-stubs", specifier = ">=0.30.2" }, - { name = "bandit", specifier = ">=1.8.6" }, + { name = "asyncpg-stubs", specifier = ">=0.31.0" }, + { name = "bandit", specifier = ">=1.9.2" }, { name = "codespell", specifier = ">=2.4.1" }, - { name = "mkdocs-material", specifier = ">=9.6.22" }, - { name = "mkdocstrings-python", specifier = ">=1.18.2" }, - { name = "mypy", specifier = ">=1.18.1" }, - { name = "polyfactory", specifier = ">=2.22.2" }, - { name = "prek", specifier = ">=0.2.8" }, - { name = "pytest", specifier = ">=8.4.2" }, - { name = "pytest-asyncio", specifier = ">=1.1.0" }, + { name = "mkdocs-material", specifier = ">=9.7.0" }, + { name = "mkdocstrings-python", specifier = ">=2.0.1" }, + { name = "mypy", specifier = ">=1.19.0" }, + { name = "polyfactory", specifier = ">=3.1.0" }, + { name = "prek", specifier = ">=0.2.19" }, + { name = "pytest", specifier = ">=9.0.1" }, + { name = "pytest-asyncio", specifier = ">=1.3.0" }, { name = "pytest-cov", specifier = ">=7.0.0" }, - { name = "ruff", specifier = ">=0.14.0" }, + { name = "ruff", specifier = ">=0.14.8" }, { name = "sqlalchemy-utils", specifier = ">=0.42.0" }, { name = "uvloop", specifier = ">=0.22.1" }, - { name = "zizmor", specifier = ">=1.15.2" }, + { name = "zizmor", specifier = ">=1.18.0" }, ] docs = [ - { name = "mkdocs-material", specifier = ">=9.6.22" }, - { name = "mkdocstrings-python", specifier = ">=1.18.2" }, + { name = "mkdocs-material", specifier = ">=9.7.0" }, + { name = "mkdocstrings-python", specifier = ">=2.0.1" }, ] lint = [ - { name = "asyncpg-stubs", specifier = ">=0.30.2" }, - { name = "bandit", specifier = ">=1.8.6" }, + { name = "asyncpg-stubs", specifier = ">=0.31.0" }, + { name = "bandit", specifier = ">=1.9.2" }, { name = "codespell", specifier = ">=2.4.1" }, - { name = "mypy", specifier = ">=1.18.1" }, - { name = "ruff", specifier = ">=0.14.0" }, - { name = "zizmor", specifier = ">=1.15.2" }, + { name = "mypy", specifier = ">=1.19.0" }, + { name = "ruff", specifier = ">=0.14.8" }, + { name = "zizmor", specifier = ">=1.18.0" }, ] test = [ - { name = "polyfactory", specifier = ">=2.22.2" }, - { name = "pytest", specifier = ">=8.4.2" }, - { name = "pytest-asyncio", specifier = ">=1.1.0" }, + { name = "polyfactory", specifier = ">=3.1.0" }, + { name = "pytest", specifier = ">=9.0.1" }, + { name = "pytest-asyncio", specifier = ">=1.3.0" }, { name = "pytest-cov", specifier = ">=7.0.0" }, { name = "sqlalchemy-utils", specifier = ">=0.42.0" }, { name = "uvloop", specifier = ">=0.22.1" }, @@ -2475,18 +2587,18 @@ wheels = [ [[package]] name = "zizmor" -version = "1.15.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/05/775c4f8076a7793384c9df0bac66eb4fba518150882b85b178bdb6a3e9d9/zizmor-1.15.2.tar.gz", hash = "sha256:02e295d8a97fef0bd1c1b1438eb5b7ba6cdcf71894e45ee2e14269579cc11fa2", size = 384666, upload-time = "2025-10-14T15:02:23.293Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/6a/9efbfc00a952592725f464fba2dfd38f3fab8101f4b98bfed92183dd28fb/zizmor-1.15.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ecdf45aa1bf2b99cfa9a8a5641fb05c89a98ab38648a4ddd248c94f03a6673f", size = 6942196, upload-time = "2025-10-14T15:02:16.554Z" }, - { url = "https://files.pythonhosted.org/packages/2e/93/5d89f81091c31a66a1d64781c0fd2f3c22c948d30513ddc3f68a967538a6/zizmor-1.15.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3eaa500fefccbcd45c21038d879a662944e453b71de7ab6f3fb4c55be35f1a27", size = 6551013, upload-time = "2025-10-14T15:02:15.217Z" }, - { url = "https://files.pythonhosted.org/packages/9a/da/55aa363ea58cdd7cdad911f5b3c1abe461f65d83aa46447cae34eeb9cefb/zizmor-1.15.2-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:015cbb03138b7a8be85287f98957afa2b7c014019242c33c23d6984e2bb1b3fa", size = 6825574, upload-time = "2025-10-14T15:02:10.239Z" }, - { url = "https://files.pythonhosted.org/packages/16/65/a22881f38d50e19f4d9607e41483205d8b2191f2c09ea847176361dafaef/zizmor-1.15.2-py3-none-manylinux_2_28_armv7l.whl", hash = "sha256:e41eff0c812de71102599e17369f02bf8d76884371509f11a414d889ce3e1f55", size = 6538122, upload-time = "2025-10-14T15:02:12.462Z" }, - { url = "https://files.pythonhosted.org/packages/ed/71/f4ef6980a5bd266edfab08c67712deaff9165c45b15720be846031b71d86/zizmor-1.15.2-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:d7ae84ca07a05939deccfcc4ae4ea10ccf6800d752263b49bbbfd90f3f6acc37", size = 7131829, upload-time = "2025-10-14T15:02:13.883Z" }, - { url = "https://files.pythonhosted.org/packages/be/f1/200d44114dbb19dae44925f793b97f8e7316655e3d65353e3f36c4e1e3f1/zizmor-1.15.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:44aca6641be4f28a819160db08d81fdf307a168e583b881fddfbb27396397c12", size = 6844318, upload-time = "2025-10-14T15:02:17.972Z" }, - { url = "https://files.pythonhosted.org/packages/6d/40/d86743e67fbb653deab99eccbcd4754c0841dc524da89a5be846412bb70d/zizmor-1.15.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f5655b757ebc3987b2d4b4f7412ba0163b8fcbec97737b0fb272bcd86d2d18b2", size = 6551932, upload-time = "2025-10-14T15:02:19.615Z" }, - { url = "https://files.pythonhosted.org/packages/2b/bc/0a9f86d2731f237a882aa9ef70bcf1d25dbe67b3b7b51ec5e21b31866168/zizmor-1.15.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:258d5b7731b17f2d4aef9c27aebeb21b5910c66ea57224365c6e0f0c9299e86e", size = 7239487, upload-time = "2025-10-14T15:02:21.985Z" }, - { url = "https://files.pythonhosted.org/packages/aa/6a/fbed9fd802a57607b8db593c45c6d52cf3be515489d1421d276f9e203c6e/zizmor-1.15.2-py3-none-win32.whl", hash = "sha256:75562fc3717e1b05be0afaf750a0a775788e3679926377d3a569130e92d5f948", size = 5791429, upload-time = "2025-10-14T15:02:25.972Z" }, - { url = "https://files.pythonhosted.org/packages/c3/85/c4ea0d438fb890f3a2eb9acf9a4f4ebf497574438de3afa2984d81d49f9b/zizmor-1.15.2-py3-none-win_amd64.whl", hash = "sha256:8341528d2c1a39e857aa484dd4899c5fa6ccde155c14a0db15210ebbfc31ed54", size = 6520551, upload-time = "2025-10-14T15:02:24.67Z" }, +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/e6/1816680e4a7a2d08e207ab76251066e88c4ce4a59ac4085a024e8fb2d898/zizmor-1.18.0.tar.gz", hash = "sha256:2d9ceb5f63ee354abd08ac52f7ac9cd3db94e1afd802bc432a3fc3101b85be02", size = 407313, upload-time = "2025-11-29T20:00:10.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/dc/4154eb617d4fa470fb8b7abe9c3eed1e12dd105ef08048e0aee7d3d5069e/zizmor-1.18.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:81c7acfd05cc255509569e7d4860409db66c49c7841c70d2644e5c0392d9a49a", size = 7873223, upload-time = "2025-11-29T20:00:12.442Z" }, + { url = "https://files.pythonhosted.org/packages/d3/ce/abef45ef499ddea4548007ff47433d4381eb0e326bdd618ac2b1d8cbe26f/zizmor-1.18.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4860569c31e2ea92d3e9ad33f6601de3ae4a101592675e50d820eeb9d7f8d9b5", size = 7523673, upload-time = "2025-11-29T20:00:04.32Z" }, + { url = "https://files.pythonhosted.org/packages/48/fb/2169d3428534b899dfb3897471ec6145ad0e8b779368b17ccf2fc827637f/zizmor-1.18.0-py3-none-manylinux_2_24_aarch64.whl", hash = "sha256:08b44cb5fc2034ae5f0bb74cec9857993047e1ea68f36af730a3bc27a46d99b2", size = 7769619, upload-time = "2025-11-29T20:00:01.906Z" }, + { url = "https://files.pythonhosted.org/packages/62/2c/8ca27652e546fc98ad6646dc3b08cf4758bf72e4d8297529f4705a12be23/zizmor-1.18.0-py3-none-manylinux_2_28_armv7l.whl", hash = "sha256:32374a9c62efe7045f4c76796dc6d36e7fd57982179ddcb88b232a2dadbdf8e7", size = 7499536, upload-time = "2025-11-29T20:00:06.929Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/c5338d429862803054c3564c9205320f170fa4714c8cf7ef4ff3b369a3c6/zizmor-1.18.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:0339e0447c881299d6ef9861c483cff36f2ab718a80d8bdd7adef63c4042b6f8", size = 8001902, upload-time = "2025-11-29T19:59:57.54Z" }, + { url = "https://files.pythonhosted.org/packages/d1/37/5bbae828c29a0fa9054b4dffdc67e34d775bc7c8bbc8d7052e86761ae631/zizmor-1.18.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:40ac6d346aabc6a833511def528c41928105f323034078081cee75a94f448549", size = 7794751, upload-time = "2025-11-29T20:00:09.046Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d3/efbbdb6b68ec01cab1718e903e357d27cb75feb4c27a2ae55b19330f007e/zizmor-1.18.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:54954c749a6d6b759de4f178a90391916270451508912ad8ef31f18e3602917f", size = 7516794, upload-time = "2025-11-29T19:59:59.803Z" }, + { url = "https://files.pythonhosted.org/packages/d8/45/4ff72baf275921efe2919ad2d2a86620913101c049fddddc720f31c0ed5f/zizmor-1.18.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:12b49d166c929d28711098245d725ad8d8df1eaccfc3ac6abd0eccf21f1ace17", size = 8120576, upload-time = "2025-11-29T20:00:14.839Z" }, + { url = "https://files.pythonhosted.org/packages/b7/9a/e6cac1a6a527f3f50c02e529fb45f657b21e5067eead2d21e62153f57046/zizmor-1.18.0-py3-none-win32.whl", hash = "sha256:7f3161f52be96046dc885aec35f59c1bb25544b1f22b0251c2e144a63a11e350", size = 6570876, upload-time = "2025-11-29T19:59:54.765Z" }, + { url = "https://files.pythonhosted.org/packages/6d/18/d160f0ff46010f7cefdc1c079487c6a5ad26a042cbda1c9776f8547b7ea0/zizmor-1.18.0-py3-none-win_amd64.whl", hash = "sha256:83439ed527caeb5b3187257adc6abdf6f91b4598b93be110bda08910c259a3c5", size = 7515072, upload-time = "2025-11-29T20:00:17.431Z" }, ] From 53413ae127eef1006cde7d27fdad4ab060617c16 Mon Sep 17 00:00:00 2001 From: Anfimov Dima Date: Sat, 6 Dec 2025 20:44:38 +0100 Subject: [PATCH 2/6] feat: add ability to store and get progress --- src/taskiq_pg/_internal/result_backend.py | 7 +- src/taskiq_pg/aiopg/queries.py | 16 +++- src/taskiq_pg/aiopg/result_backend.py | 55 ++++++++++++-- src/taskiq_pg/asyncpg/queries.py | 16 +++- src/taskiq_pg/asyncpg/result_backend.py | 46 +++++++++++- src/taskiq_pg/psqlpy/broker.py | 9 +-- src/taskiq_pg/psqlpy/queries.py | 16 +++- src/taskiq_pg/psqlpy/result_backend.py | 54 +++++++++++++- src/taskiq_pg/psycopg/broker.py | 7 +- src/taskiq_pg/psycopg/queries.py | 14 +++- src/taskiq_pg/psycopg/result_backend.py | 52 ++++++++++++- tests/integration/test_broker.py | 7 +- tests/integration/test_result_backend.py | 91 ++++++++++++++++++++++- tests/integration/test_schedule_source.py | 15 +--- 14 files changed, 346 insertions(+), 59 deletions(-) diff --git a/src/taskiq_pg/_internal/result_backend.py b/src/taskiq_pg/_internal/result_backend.py index 426a4f4..f2cdf14 100644 --- a/src/taskiq_pg/_internal/result_backend.py +++ b/src/taskiq_pg/_internal/result_backend.py @@ -1,16 +1,11 @@ -from __future__ import annotations - import abc import typing as tp from taskiq import AsyncResultBackend +from taskiq.abc.serializer import TaskiqSerializer from taskiq.serializers import PickleSerializer -if tp.TYPE_CHECKING: - from taskiq.abc.serializer import TaskiqSerializer - - ReturnType = tp.TypeVar("ReturnType") diff --git a/src/taskiq_pg/aiopg/queries.py b/src/taskiq_pg/aiopg/queries.py index f94277b..51c42b1 100644 --- a/src/taskiq_pg/aiopg/queries.py +++ b/src/taskiq_pg/aiopg/queries.py @@ -1,7 +1,8 @@ CREATE_TABLE_QUERY = """ CREATE TABLE IF NOT EXISTS {} ( task_id {} UNIQUE, - result BYTEA + result BYTEA, + progress BYTEA ) """ @@ -10,12 +11,23 @@ """ INSERT_RESULT_QUERY = """ -INSERT INTO {} VALUES (%s, %s) +INSERT INTO {} VALUES (%s, %s, NULL) ON CONFLICT (task_id) DO UPDATE SET result = %s """ +INSERT_PROGRESS_QUERY = """ +INSERT INTO {} VALUES (%s, NULL, %s) +ON CONFLICT (task_id) +DO UPDATE +SET progress = %s +""" + +SELECT_PROGRESS_QUERY = """ +SELECT progress FROM {} WHERE task_id = %s +""" + IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( SELECT 1 FROM {} WHERE task_id = %s diff --git a/src/taskiq_pg/aiopg/result_backend.py b/src/taskiq_pg/aiopg/result_backend.py index d038615..3f94d27 100644 --- a/src/taskiq_pg/aiopg/result_backend.py +++ b/src/taskiq_pg/aiopg/result_backend.py @@ -1,18 +1,14 @@ -from __future__ import annotations - import typing as tp from aiopg import Pool, create_pool +from taskiq import TaskiqResult +from taskiq.depends.progress_tracker import TaskProgress from taskiq_pg import exceptions from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType from taskiq_pg.aiopg import queries -if tp.TYPE_CHECKING: - from taskiq import TaskiqResult - - class AiopgResultBackend(BasePostgresResultBackend): """Result backend for TaskIQ based on Aiopg.""" @@ -148,3 +144,50 @@ async def get_result( taskiq_result.log = None return taskiq_result + + async def set_progress( + self, + task_id: str, + progress: TaskProgress[tp.Any], + ) -> None: + """ + Saves progress. + + :param task_id: task's id. + :param progress: progress of execution. + """ + dumped_progress = self.serializer.dumpb(progress) + async with self._database_pool.acquire() as connection, connection.cursor() as cursor: + await cursor.execute( + queries.INSERT_PROGRESS_QUERY.format( + self.table_name, + ), + ( + task_id, + dumped_progress, + dumped_progress, + ), + ) + + async def get_progress( + self, + task_id: str, + ) -> TaskProgress[tp.Any] | None: + """ + Gets progress. + + :param task_id: task's id. + """ + async with self._database_pool.acquire() as connection, connection.cursor() as cursor: + await cursor.execute( + queries.SELECT_PROGRESS_QUERY.format( + self.table_name, + ), + (task_id,), + ) + progress = await cursor.fetchone() + if not progress or progress[0] is None: + return None + progress_in_bytes: bytes = progress[0] + taskiq_progress: TaskProgress[tp.Any] = self.serializer.loadb(progress_in_bytes) + return taskiq_progress diff --git a/src/taskiq_pg/asyncpg/queries.py b/src/taskiq_pg/asyncpg/queries.py index acc03cd..43e73b3 100644 --- a/src/taskiq_pg/asyncpg/queries.py +++ b/src/taskiq_pg/asyncpg/queries.py @@ -1,7 +1,8 @@ CREATE_TABLE_QUERY = """ CREATE TABLE IF NOT EXISTS {} ( task_id {} UNIQUE, - result BYTEA + result BYTEA, + progress BYTEA ) """ @@ -10,12 +11,23 @@ """ INSERT_RESULT_QUERY = """ -INSERT INTO {} VALUES ($1, $2) +INSERT INTO {} VALUES ($1, $2, NULL) ON CONFLICT (task_id) DO UPDATE SET result = $2 """ +INSERT_PROGRESS_QUERY = """ +INSERT INTO {} VALUES ($1, NULL, $2) +ON CONFLICT (task_id) +DO UPDATE +SET progress = $2 +""" + +SELECT_PROGRESS_QUERY = """ +SELECT progress FROM {} WHERE task_id = $1 +""" + IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( SELECT 1 FROM {} WHERE task_id = $1 diff --git a/src/taskiq_pg/asyncpg/result_backend.py b/src/taskiq_pg/asyncpg/result_backend.py index 5964cc3..bc285a7 100644 --- a/src/taskiq_pg/asyncpg/result_backend.py +++ b/src/taskiq_pg/asyncpg/result_backend.py @@ -1,18 +1,19 @@ -from __future__ import annotations - import typing as tp import asyncpg from taskiq import TaskiqResult from taskiq.compat import model_dump, model_validate +from taskiq.depends.progress_tracker import TaskProgress from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType from taskiq_pg.asyncpg.queries import ( CREATE_INDEX_QUERY, CREATE_TABLE_QUERY, DELETE_RESULT_QUERY, + INSERT_PROGRESS_QUERY, INSERT_RESULT_QUERY, IS_RESULT_EXISTS_QUERY, + SELECT_PROGRESS_QUERY, SELECT_RESULT_QUERY, ) @@ -124,3 +125,44 @@ async def get_result( if not with_logs: taskiq_result.log = None return taskiq_result + + async def set_progress( + self, + task_id: str, + progress: TaskProgress[tp.Any], + ) -> None: + """ + Saves progress. + + :param task_id: task's id. + :param progress: progress of execution. + """ + await self._database_pool.execute( + INSERT_PROGRESS_QUERY.format( + self.table_name, + ), + task_id, + self.serializer.dumpb(model_dump(progress)), + ) + + async def get_progress( + self, + task_id: str, + ) -> TaskProgress[tp.Any] | None: + """ + Gets progress. + + :param task_id: task's id. + """ + progress_in_bytes = await self._database_pool.fetchval( + SELECT_PROGRESS_QUERY.format( + self.table_name, + ), + task_id, + ) + if progress_in_bytes is None: + return None + return model_validate( + TaskProgress[tp.Any], + self.serializer.loadb(progress_in_bytes), + ) diff --git a/src/taskiq_pg/psqlpy/broker.py b/src/taskiq_pg/psqlpy/broker.py index 7103f71..63a4d02 100644 --- a/src/taskiq_pg/psqlpy/broker.py +++ b/src/taskiq_pg/psqlpy/broker.py @@ -1,9 +1,9 @@ -from __future__ import annotations - import asyncio import logging import typing as tp +from collections.abc import AsyncGenerator from dataclasses import dataclass +from datetime import datetime import psqlpy from psqlpy.exceptions import ConnectionExecuteError @@ -19,11 +19,6 @@ ) -if tp.TYPE_CHECKING: - from collections.abc import AsyncGenerator - from datetime import datetime - - logger = logging.getLogger("taskiq.psqlpy_broker") diff --git a/src/taskiq_pg/psqlpy/queries.py b/src/taskiq_pg/psqlpy/queries.py index e443f72..f02b1e5 100644 --- a/src/taskiq_pg/psqlpy/queries.py +++ b/src/taskiq_pg/psqlpy/queries.py @@ -1,7 +1,8 @@ CREATE_TABLE_QUERY = """ CREATE TABLE IF NOT EXISTS {} ( task_id {} UNIQUE, - result BYTEA + result BYTEA, + progress BYTEA ) """ @@ -10,12 +11,23 @@ """ INSERT_RESULT_QUERY = """ -INSERT INTO {} VALUES ($1, $2) +INSERT INTO {} VALUES ($1, $2, NULL) ON CONFLICT (task_id) DO UPDATE SET result = $2 """ +INSERT_PROGRESS_QUERY = """ +INSERT INTO {} VALUES ($1, NULL, $2) +ON CONFLICT (task_id) +DO UPDATE +SET progress = $2 +""" + +SELECT_PROGRESS_QUERY = """ +SELECT progress FROM {} WHERE task_id = $1 +""" + IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( SELECT 1 FROM {} WHERE task_id = $1 diff --git a/src/taskiq_pg/psqlpy/result_backend.py b/src/taskiq_pg/psqlpy/result_backend.py index 5381fb6..a6031fd 100644 --- a/src/taskiq_pg/psqlpy/result_backend.py +++ b/src/taskiq_pg/psqlpy/result_backend.py @@ -1,11 +1,10 @@ -from __future__ import annotations - import typing as tp from psqlpy import ConnectionPool from psqlpy.exceptions import BaseConnectionError from taskiq import TaskiqResult from taskiq.compat import model_dump, model_validate +from taskiq.depends.progress_tracker import TaskProgress from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType from taskiq_pg.exceptions import ResultIsMissingError @@ -13,8 +12,10 @@ CREATE_INDEX_QUERY, CREATE_TABLE_QUERY, DELETE_RESULT_QUERY, + INSERT_PROGRESS_QUERY, INSERT_RESULT_QUERY, IS_RESULT_EXISTS_QUERY, + SELECT_PROGRESS_QUERY, SELECT_RESULT_QUERY, ) @@ -137,3 +138,52 @@ async def get_result( taskiq_result.log = None return taskiq_result + + async def set_progress( + self, + task_id: str, + progress: TaskProgress[tp.Any], + ) -> None: + """ + Saves progress. + + :param task_id: task's id. + :param progress: progress of execution. + """ + connection = await self._database_pool.connection() + await connection.execute( + querystring=INSERT_PROGRESS_QUERY.format( + self.table_name, + ), + parameters=[ + task_id, + self.serializer.dumpb(model_dump(progress)), + ], + ) + + async def get_progress( + self, + task_id: str, + ) -> TaskProgress[tp.Any] | None: + """ + Gets progress. + + :param task_id: task's id. + """ + connection: tp.Final = await self._database_pool.connection() + try: + progress_in_bytes = await connection.fetch_val( + querystring=SELECT_PROGRESS_QUERY.format( + self.table_name, + ), + parameters=[task_id], + ) + except BaseConnectionError as exc: + msg = f"Cannot find record with task_id = {task_id} in PostgreSQL" + raise ResultIsMissingError(msg) from exc + if progress_in_bytes is None: + return None + return model_validate( + TaskProgress[tp.Any], + self.serializer.loadb(progress_in_bytes), + ) diff --git a/src/taskiq_pg/psycopg/broker.py b/src/taskiq_pg/psycopg/broker.py index edb89ba..ae481f1 100644 --- a/src/taskiq_pg/psycopg/broker.py +++ b/src/taskiq_pg/psycopg/broker.py @@ -1,9 +1,8 @@ -from __future__ import annotations - import asyncio import json import logging import typing as tp +from collections.abc import AsyncGenerator from contextlib import suppress import psycopg @@ -20,10 +19,6 @@ ) -if tp.TYPE_CHECKING: - from collections.abc import AsyncGenerator - - logger = logging.getLogger("taskiq.psycopg_broker") diff --git a/src/taskiq_pg/psycopg/queries.py b/src/taskiq_pg/psycopg/queries.py index 9d51a41..fb89b41 100644 --- a/src/taskiq_pg/psycopg/queries.py +++ b/src/taskiq_pg/psycopg/queries.py @@ -1,7 +1,8 @@ CREATE_TABLE_QUERY = """ CREATE TABLE IF NOT EXISTS {} ( task_id {} UNIQUE, - result BYTEA + result BYTEA, + progress BYTEA ) """ @@ -16,6 +17,17 @@ SET result = EXCLUDED.result; """ +INSERT_PROGRESS_QUERY = """ +INSERT INTO {} VALUES (%s, NULL, %s) +ON CONFLICT (task_id) +DO UPDATE +SET progress = %s +""" + +SELECT_PROGRESS_QUERY = """ +SELECT progress FROM {} WHERE task_id = %s +""" + IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( SELECT 1 FROM {} WHERE task_id = %s diff --git a/src/taskiq_pg/psycopg/result_backend.py b/src/taskiq_pg/psycopg/result_backend.py index 8b3ecc6..0d8d3ed 100644 --- a/src/taskiq_pg/psycopg/result_backend.py +++ b/src/taskiq_pg/psycopg/result_backend.py @@ -1,11 +1,10 @@ -from __future__ import annotations - import typing as tp from psycopg import sql from psycopg_pool import AsyncConnectionPool from taskiq import TaskiqResult from taskiq.compat import model_dump, model_validate +from taskiq.depends.progress_tracker import TaskProgress from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType from taskiq_pg.exceptions import ResultIsMissingError @@ -13,8 +12,10 @@ CREATE_INDEX_QUERY, CREATE_TABLE_QUERY, DELETE_RESULT_QUERY, + INSERT_PROGRESS_QUERY, INSERT_RESULT_QUERY, IS_RESULT_EXISTS_QUERY, + SELECT_PROGRESS_QUERY, SELECT_RESULT_QUERY, ) @@ -139,3 +140,50 @@ async def get_result( taskiq_result.log = None return taskiq_result + + async def set_progress( + self, + task_id: str, + progress: TaskProgress[tp.Any], + ) -> None: + """ + Saves progress. + + :param task_id: task's id. + :param progress: progress of execution. + """ + async with self._database_pool.connection() as connection, connection.cursor() as cursor: + await cursor.execute( + query=sql.SQL(INSERT_PROGRESS_QUERY).format( + sql.Identifier(self.table_name), + ), + params=[ + task_id, + self.serializer.dumpb(model_dump(progress)), + self.serializer.dumpb(model_dump(progress)), + ], + ) + + async def get_progress( + self, + task_id: str, + ) -> TaskProgress[tp.Any] | None: + """ + Gets progress. + + :param task_id: task's id. + """ + async with self._database_pool.connection() as connection, connection.cursor() as cursor: + execute_result = await cursor.execute( + query=sql.SQL(SELECT_PROGRESS_QUERY).format( + sql.Identifier(self.table_name), + ), + params=[task_id], + ) + progress_in_bytes = await execute_result.fetchone() + if progress_in_bytes is None or progress_in_bytes[0] is None: + return None + return model_validate( + TaskProgress[tp.Any], + self.serializer.loadb(progress_in_bytes[0]), + ) diff --git a/tests/integration/test_broker.py b/tests/integration/test_broker.py index 6ad488d..f80ab83 100644 --- a/tests/integration/test_broker.py +++ b/tests/integration/test_broker.py @@ -1,9 +1,8 @@ -from __future__ import annotations - import asyncio import typing as tp import uuid +import asyncpg import pytest from taskiq import BrokerMessage @@ -12,10 +11,6 @@ from taskiq_pg.psycopg import PsycopgBroker -if tp.TYPE_CHECKING: - import asyncpg - - @pytest.fixture async def broker( pg_dsn: str, diff --git a/tests/integration/test_result_backend.py b/tests/integration/test_result_backend.py index 3a6c943..21e9ac3 100644 --- a/tests/integration/test_result_backend.py +++ b/tests/integration/test_result_backend.py @@ -1,10 +1,13 @@ -from __future__ import annotations - import typing as tp import uuid import asyncpg import pytest +from taskiq import ( + InMemoryBroker, + TaskiqDepends, +) +from taskiq.depends.progress_tracker import ProgressTracker, TaskState from taskiq_pg.aiopg import AiopgResultBackend from taskiq_pg.asyncpg import AsyncpgResultBackend @@ -130,3 +133,87 @@ async def test_when_startup_called__then_table_is_created( await conn.execute(f"DROP TABLE IF EXISTS {table_name}") finally: await conn.close() + + +@pytest.mark.parametrize( + "backend_class", + [ + AsyncpgResultBackend, + AiopgResultBackend, + PSQLPyResultBackend, + PsycopgResultBackend, + ], +) +@pytest.mark.parametrize( + ("state", "meta"), + [ + (TaskState.STARTED, "hello world!"), + ("retry", "retry error!"), + ("custom state", {"Complex": "Value"}), + ], +) +async def test_when_task_tracker_set_progress__then_it_is_stored( + pg_dsn: str, + backend_class: type[AsyncpgResultBackend | AiopgResultBackend | PSQLPyResultBackend | PsycopgResultBackend], + state: TaskState | str, + meta: tp.Any, +) -> None: + # given + table_name: str = f"taskiq_results_{uuid.uuid4().hex}" + result_backend = backend_class( + dsn=pg_dsn, + table_name=table_name, + ) + broker = InMemoryBroker().with_result_backend(result_backend) + await result_backend.startup() + + @broker.task + async def test_func(tes_val: ProgressTracker[tp.Any] = TaskiqDepends()) -> None: # noqa: B008 + await tes_val.set_progress(state, meta) + + # when + kicker = await test_func.kiq() + result = await kicker.wait_result() + + # then + assert not result.is_err + progress = await broker.result_backend.get_progress(kicker.task_id) + assert progress is not None + assert progress.meta == meta + assert progress.state == state + + +@pytest.mark.parametrize( + "backend_class", + [ + AsyncpgResultBackend, + AiopgResultBackend, + PSQLPyResultBackend, + PsycopgResultBackend, + ], +) +async def test_when_task_progress_is_not_set__get_progress_should_return_none( + pg_dsn: str, + backend_class: type[AsyncpgResultBackend | AiopgResultBackend | PSQLPyResultBackend | PsycopgResultBackend], +) -> None: + # given + table_name: str = f"taskiq_results_{uuid.uuid4().hex}" + result_backend = backend_class( + dsn=pg_dsn, + table_name=table_name, + ) + broker = InMemoryBroker().with_result_backend(result_backend) + await result_backend.startup() + + @broker.task + async def test_func() -> None: + pass + + # when + kicker = await test_func.kiq() + result = await kicker.wait_result() + + # then + assert not result.is_err + progress = await broker.result_backend.get_progress(kicker.task_id) + assert progress is None diff --git a/tests/integration/test_schedule_source.py b/tests/integration/test_schedule_source.py index d178640..cd1f4e1 100644 --- a/tests/integration/test_schedule_source.py +++ b/tests/integration/test_schedule_source.py @@ -1,6 +1,3 @@ -from __future__ import annotations - -import typing as tp import uuid from contextlib import asynccontextmanager from datetime import timedelta @@ -10,17 +7,13 @@ from sqlalchemy_utils.types.enriched_datetime.arrow_datetime import datetime from taskiq import ScheduledTask +from taskiq_pg._internal import BasePostgresBroker, BasePostgresScheduleSource from taskiq_pg.aiopg import AiopgScheduleSource from taskiq_pg.asyncpg import AsyncpgScheduleSource from taskiq_pg.psqlpy import PSQLPyBroker, PSQLPyScheduleSource from taskiq_pg.psycopg import PsycopgScheduleSource -if tp.TYPE_CHECKING: - from taskiq_pg._internal import BasePostgresBroker, BasePostgresScheduleSource - - - class ScheduledTaskFactory(ModelFactory[ScheduledTask]): """Factory for ScheduledTask.""" @@ -177,7 +170,6 @@ async def test_when_call_add_schedule__then_schedule_creates( assert added_schedule is not None - @pytest.mark.integration @pytest.mark.parametrize( "schedule_source_class", @@ -205,7 +197,4 @@ async def test_when_call_delete_schedule__then_schedule_deleted( # Then schedules: list[ScheduledTask] = await schedule_source.get_schedules() assert len(schedules) == 2 - assert all( - task.schedule_id != schedule_id_to_delete - for task in schedules - ) + assert all(task.schedule_id != schedule_id_to_delete for task in schedules) From 5aacb112273821c8530656c037a5dfe718a0e2d7 Mon Sep 17 00:00:00 2001 From: Anfimov Dima Date: Sat, 6 Dec 2025 20:48:22 +0100 Subject: [PATCH 3/6] fix: issue that asyncpg.Pool is not subscriptable (python 3.13 and below) --- src/taskiq_pg/asyncpg/result_backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/taskiq_pg/asyncpg/result_backend.py b/src/taskiq_pg/asyncpg/result_backend.py index bc285a7..22972e6 100644 --- a/src/taskiq_pg/asyncpg/result_backend.py +++ b/src/taskiq_pg/asyncpg/result_backend.py @@ -21,7 +21,7 @@ class AsyncpgResultBackend(BasePostgresResultBackend): """Result backend for TaskIQ based on asyncpg.""" - _database_pool: asyncpg.Pool[tp.Any] + _database_pool: "asyncpg.Pool[tp.Any]" async def startup(self) -> None: """ From 880208a4889a8cd6d6d6589075b36d838d560be3 Mon Sep 17 00:00:00 2001 From: Anfimov Dima Date: Sun, 7 Dec 2025 11:29:19 +0100 Subject: [PATCH 4/6] feat: add query to add progress column automatically and fix issues --- src/taskiq_pg/aiopg/queries.py | 6 ++++- src/taskiq_pg/aiopg/result_backend.py | 7 ++++- src/taskiq_pg/asyncpg/queries.py | 6 ++++- src/taskiq_pg/asyncpg/result_backend.py | 32 ++++++++++------------- src/taskiq_pg/psqlpy/queries.py | 6 ++++- src/taskiq_pg/psqlpy/result_backend.py | 32 ++++++++++------------- src/taskiq_pg/psycopg/queries.py | 6 ++++- src/taskiq_pg/psycopg/result_backend.py | 33 ++++++++++-------------- tests/integration/conftest.py | 18 +++++++++++++ tests/integration/test_result_backend.py | 29 +++++++-------------- 10 files changed, 95 insertions(+), 80 deletions(-) diff --git a/src/taskiq_pg/aiopg/queries.py b/src/taskiq_pg/aiopg/queries.py index 51c42b1..9e1c639 100644 --- a/src/taskiq_pg/aiopg/queries.py +++ b/src/taskiq_pg/aiopg/queries.py @@ -6,6 +6,10 @@ ) """ +ADD_PROGRESS_COLUMN_QUERY = """ +ALTER TABLE {} ADD COLUMN IF NOT EXISTS progress BYTEA; +""" + CREATE_INDEX_QUERY = """ CREATE INDEX IF NOT EXISTS {}_task_id_idx ON {} USING HASH (task_id) """ @@ -30,7 +34,7 @@ IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( - SELECT 1 FROM {} WHERE task_id = %s + SELECT 1 FROM {} WHERE task_id = %s and result IS NOT NULL ) """ diff --git a/src/taskiq_pg/aiopg/result_backend.py b/src/taskiq_pg/aiopg/result_backend.py index 3f94d27..bd3c881 100644 --- a/src/taskiq_pg/aiopg/result_backend.py +++ b/src/taskiq_pg/aiopg/result_backend.py @@ -34,6 +34,12 @@ async def startup(self) -> None: self.field_for_task_id, ), ) + await cursor.execute( + queries.ADD_PROGRESS_COLUMN_QUERY.format( + self.table_name, + self.field_for_task_id, + ), + ) await cursor.execute( queries.CREATE_INDEX_QUERY.format( self.table_name, @@ -165,7 +171,6 @@ async def set_progress( ( task_id, dumped_progress, - dumped_progress, ), ) diff --git a/src/taskiq_pg/asyncpg/queries.py b/src/taskiq_pg/asyncpg/queries.py index 43e73b3..a504d05 100644 --- a/src/taskiq_pg/asyncpg/queries.py +++ b/src/taskiq_pg/asyncpg/queries.py @@ -6,6 +6,10 @@ ) """ +ADD_PROGRESS_COLUMN_QUERY = """ +ALTER TABLE {} ADD COLUMN IF NOT EXISTS progress BYTEA; +""" + CREATE_INDEX_QUERY = """ CREATE INDEX IF NOT EXISTS {}_task_id_idx ON {} USING HASH (task_id) """ @@ -30,7 +34,7 @@ IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( - SELECT 1 FROM {} WHERE task_id = $1 + SELECT 1 FROM {} WHERE task_id = $1 and result IS NOT NULL ) """ diff --git a/src/taskiq_pg/asyncpg/result_backend.py b/src/taskiq_pg/asyncpg/result_backend.py index 22972e6..008ce14 100644 --- a/src/taskiq_pg/asyncpg/result_backend.py +++ b/src/taskiq_pg/asyncpg/result_backend.py @@ -6,16 +6,7 @@ from taskiq.depends.progress_tracker import TaskProgress from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType -from taskiq_pg.asyncpg.queries import ( - CREATE_INDEX_QUERY, - CREATE_TABLE_QUERY, - DELETE_RESULT_QUERY, - INSERT_PROGRESS_QUERY, - INSERT_RESULT_QUERY, - IS_RESULT_EXISTS_QUERY, - SELECT_PROGRESS_QUERY, - SELECT_RESULT_QUERY, -) +from taskiq_pg.asyncpg import queries class AsyncpgResultBackend(BasePostgresResultBackend): @@ -36,13 +27,18 @@ async def startup(self) -> None: self._database_pool = _database_pool await self._database_pool.execute( - CREATE_TABLE_QUERY.format( + queries.CREATE_TABLE_QUERY.format( self.table_name, self.field_for_task_id, ), ) await self._database_pool.execute( - CREATE_INDEX_QUERY.format( + queries.ADD_PROGRESS_COLUMN_QUERY.format( + self.table_name, + ), + ) + await self._database_pool.execute( + queries.CREATE_INDEX_QUERY.format( self.table_name, self.table_name, ), @@ -65,7 +61,7 @@ async def set_result( :param result: result of the task. """ _ = await self._database_pool.execute( - INSERT_RESULT_QUERY.format( + queries.INSERT_RESULT_QUERY.format( self.table_name, ), task_id, @@ -82,7 +78,7 @@ async def is_result_ready(self, task_id: str) -> bool: return tp.cast( "bool", await self._database_pool.fetchval( - IS_RESULT_EXISTS_QUERY.format( + queries.IS_RESULT_EXISTS_QUERY.format( self.table_name, ), task_id, @@ -105,7 +101,7 @@ async def get_result( result_in_bytes = tp.cast( "bytes", await self._database_pool.fetchval( - SELECT_RESULT_QUERY.format( + queries.SELECT_RESULT_QUERY.format( self.table_name, ), task_id, @@ -113,7 +109,7 @@ async def get_result( ) if not self.keep_results: await self._database_pool.execute( - DELETE_RESULT_QUERY.format( + queries.DELETE_RESULT_QUERY.format( self.table_name, ), task_id, @@ -138,7 +134,7 @@ async def set_progress( :param progress: progress of execution. """ await self._database_pool.execute( - INSERT_PROGRESS_QUERY.format( + queries.INSERT_PROGRESS_QUERY.format( self.table_name, ), task_id, @@ -155,7 +151,7 @@ async def get_progress( :param task_id: task's id. """ progress_in_bytes = await self._database_pool.fetchval( - SELECT_PROGRESS_QUERY.format( + queries.SELECT_PROGRESS_QUERY.format( self.table_name, ), task_id, diff --git a/src/taskiq_pg/psqlpy/queries.py b/src/taskiq_pg/psqlpy/queries.py index f02b1e5..5214ebc 100644 --- a/src/taskiq_pg/psqlpy/queries.py +++ b/src/taskiq_pg/psqlpy/queries.py @@ -6,6 +6,10 @@ ) """ +ADD_PROGRESS_COLUMN_QUERY = """ +ALTER TABLE {} ADD COLUMN IF NOT EXISTS progress BYTEA; +""" + CREATE_INDEX_QUERY = """ CREATE INDEX IF NOT EXISTS {}_task_id_idx ON {} USING HASH (task_id) """ @@ -30,7 +34,7 @@ IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( - SELECT 1 FROM {} WHERE task_id = $1 + SELECT 1 FROM {} WHERE task_id = $1 and result IS NOT NULL ) """ diff --git a/src/taskiq_pg/psqlpy/result_backend.py b/src/taskiq_pg/psqlpy/result_backend.py index a6031fd..d836aee 100644 --- a/src/taskiq_pg/psqlpy/result_backend.py +++ b/src/taskiq_pg/psqlpy/result_backend.py @@ -8,16 +8,7 @@ from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType from taskiq_pg.exceptions import ResultIsMissingError -from taskiq_pg.psqlpy.queries import ( - CREATE_INDEX_QUERY, - CREATE_TABLE_QUERY, - DELETE_RESULT_QUERY, - INSERT_PROGRESS_QUERY, - INSERT_RESULT_QUERY, - IS_RESULT_EXISTS_QUERY, - SELECT_PROGRESS_QUERY, - SELECT_RESULT_QUERY, -) +from taskiq_pg.psqlpy import queries class PSQLPyResultBackend(BasePostgresResultBackend): @@ -38,13 +29,18 @@ async def startup(self) -> None: ) connection = await self._database_pool.connection() await connection.execute( - querystring=CREATE_TABLE_QUERY.format( + querystring=queries.CREATE_TABLE_QUERY.format( self.table_name, self.field_for_task_id, ), ) await connection.execute( - querystring=CREATE_INDEX_QUERY.format( + querystring=queries.ADD_PROGRESS_COLUMN_QUERY.format( + self.table_name, + ), + ) + await connection.execute( + querystring=queries.CREATE_INDEX_QUERY.format( self.table_name, self.table_name, ), @@ -68,7 +64,7 @@ async def set_result( """ connection = await self._database_pool.connection() await connection.execute( - querystring=INSERT_RESULT_QUERY.format( + querystring=queries.INSERT_RESULT_QUERY.format( self.table_name, ), parameters=[ @@ -89,7 +85,7 @@ async def is_result_ready(self, task_id: str) -> bool: return tp.cast( "bool", await connection.fetch_val( - querystring=IS_RESULT_EXISTS_QUERY.format( + querystring=queries.IS_RESULT_EXISTS_QUERY.format( self.table_name, ), parameters=[task_id], @@ -112,7 +108,7 @@ async def get_result( connection: tp.Final = await self._database_pool.connection() try: result_in_bytes: tp.Final[bytes] = await connection.fetch_val( - querystring=SELECT_RESULT_QUERY.format( + querystring=queries.SELECT_RESULT_QUERY.format( self.table_name, ), parameters=[task_id], @@ -123,7 +119,7 @@ async def get_result( if not self.keep_results: await connection.execute( - querystring=DELETE_RESULT_QUERY.format( + querystring=queries.DELETE_RESULT_QUERY.format( self.table_name, ), parameters=[task_id], @@ -152,7 +148,7 @@ async def set_progress( """ connection = await self._database_pool.connection() await connection.execute( - querystring=INSERT_PROGRESS_QUERY.format( + querystring=queries.INSERT_PROGRESS_QUERY.format( self.table_name, ), parameters=[ @@ -173,7 +169,7 @@ async def get_progress( connection: tp.Final = await self._database_pool.connection() try: progress_in_bytes = await connection.fetch_val( - querystring=SELECT_PROGRESS_QUERY.format( + querystring=queries.SELECT_PROGRESS_QUERY.format( self.table_name, ), parameters=[task_id], diff --git a/src/taskiq_pg/psycopg/queries.py b/src/taskiq_pg/psycopg/queries.py index fb89b41..b7e1b46 100644 --- a/src/taskiq_pg/psycopg/queries.py +++ b/src/taskiq_pg/psycopg/queries.py @@ -6,6 +6,10 @@ ) """ +ADD_PROGRESS_COLUMN_QUERY = """ +ALTER TABLE {} ADD COLUMN IF NOT EXISTS progress BYTEA; +""" + CREATE_INDEX_QUERY = """ CREATE INDEX IF NOT EXISTS {} ON {} USING HASH (task_id) """ @@ -30,7 +34,7 @@ IS_RESULT_EXISTS_QUERY = """ SELECT EXISTS( - SELECT 1 FROM {} WHERE task_id = %s + SELECT 1 FROM {} WHERE task_id = %s and result IS NOT NULL ); """ diff --git a/src/taskiq_pg/psycopg/result_backend.py b/src/taskiq_pg/psycopg/result_backend.py index 0d8d3ed..04c562f 100644 --- a/src/taskiq_pg/psycopg/result_backend.py +++ b/src/taskiq_pg/psycopg/result_backend.py @@ -8,16 +8,7 @@ from taskiq_pg._internal.result_backend import BasePostgresResultBackend, ReturnType from taskiq_pg.exceptions import ResultIsMissingError -from taskiq_pg.psycopg.queries import ( - CREATE_INDEX_QUERY, - CREATE_TABLE_QUERY, - DELETE_RESULT_QUERY, - INSERT_PROGRESS_QUERY, - INSERT_RESULT_QUERY, - IS_RESULT_EXISTS_QUERY, - SELECT_PROGRESS_QUERY, - SELECT_RESULT_QUERY, -) +from taskiq_pg.psycopg import queries class PsycopgResultBackend(BasePostgresResultBackend): @@ -40,13 +31,18 @@ async def startup(self) -> None: await self._database_pool.open() async with self._database_pool.connection() as connection, connection.cursor() as cursor: await cursor.execute( - query=sql.SQL(CREATE_TABLE_QUERY).format( + query=sql.SQL(queries.CREATE_TABLE_QUERY).format( sql.Identifier(self.table_name), sql.SQL(self.field_for_task_id), ), ) await cursor.execute( - query=sql.SQL(CREATE_INDEX_QUERY).format( + query=sql.SQL(queries.ADD_PROGRESS_COLUMN_QUERY).format( + sql.Identifier(self.table_name), + ), + ) + await cursor.execute( + query=sql.SQL(queries.CREATE_INDEX_QUERY).format( sql.Identifier(self.table_name + "_task_id_idx"), sql.Identifier(self.table_name), ), @@ -70,7 +66,7 @@ async def set_result( """ async with self._database_pool.connection() as connection, connection.cursor() as cursor: await cursor.execute( - query=sql.SQL(INSERT_RESULT_QUERY).format( + query=sql.SQL(queries.INSERT_RESULT_QUERY).format( sql.Identifier(self.table_name), ), params=[ @@ -89,7 +85,7 @@ async def is_result_ready(self, task_id: str) -> bool: """ async with self._database_pool.connection() as connection, connection.cursor() as cursor: execute_result = await cursor.execute( - query=sql.SQL(IS_RESULT_EXISTS_QUERY).format( + query=sql.SQL(queries.IS_RESULT_EXISTS_QUERY).format( sql.Identifier(self.table_name), ), params=[task_id], @@ -112,7 +108,7 @@ async def get_result( """ async with self._database_pool.connection() as connection, connection.cursor() as cursor: execute_result = await cursor.execute( - query=sql.SQL(SELECT_RESULT_QUERY).format( + query=sql.SQL(queries.SELECT_RESULT_QUERY).format( sql.Identifier(self.table_name), ), params=[task_id], @@ -125,7 +121,7 @@ async def get_result( if not self.keep_results: await cursor.execute( - query=sql.SQL(DELETE_RESULT_QUERY).format( + query=sql.SQL(queries.DELETE_RESULT_QUERY).format( sql.Identifier(self.table_name), ), params=[task_id], @@ -154,13 +150,12 @@ async def set_progress( """ async with self._database_pool.connection() as connection, connection.cursor() as cursor: await cursor.execute( - query=sql.SQL(INSERT_PROGRESS_QUERY).format( + query=sql.SQL(queries.INSERT_PROGRESS_QUERY).format( sql.Identifier(self.table_name), ), params=[ task_id, self.serializer.dumpb(model_dump(progress)), - self.serializer.dumpb(model_dump(progress)), ], ) @@ -175,7 +170,7 @@ async def get_progress( """ async with self._database_pool.connection() as connection, connection.cursor() as cursor: execute_result = await cursor.execute( - query=sql.SQL(SELECT_PROGRESS_QUERY).format( + query=sql.SQL(queries.SELECT_PROGRESS_QUERY).format( sql.Identifier(self.table_name), ), params=[task_id], diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index 98a6b8e..1f5e1de 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,6 +6,9 @@ import pytest from sqlalchemy import create_engine, text from sqlalchemy_utils import create_database, database_exists +from taskiq import InMemoryBroker + +from taskiq_pg._internal.result_backend import BasePostgresResultBackend @pytest.fixture(scope="session", autouse=True) @@ -57,3 +60,18 @@ async def connection(pg_dsn: str) -> tp.AsyncGenerator[asyncpg.Connection, None] yield connection finally: await connection.close() + + +@pytest.fixture +async def broker_with_backend( + pg_dsn: str, + request: pytest.FixtureRequest, +) -> tuple[InMemoryBroker, BasePostgresResultBackend]: + table_name: str = f"taskiq_results_{uuid.uuid4().hex}" + result_backend = request.param( + dsn=pg_dsn, + table_name=table_name, + ) + broker = InMemoryBroker().with_result_backend(result_backend) + await result_backend.startup() + return broker, result_backend diff --git a/tests/integration/test_result_backend.py b/tests/integration/test_result_backend.py index 21e9ac3..ec7845a 100644 --- a/tests/integration/test_result_backend.py +++ b/tests/integration/test_result_backend.py @@ -9,6 +9,7 @@ ) from taskiq.depends.progress_tracker import ProgressTracker, TaskState +from taskiq_pg._internal.result_backend import BasePostgresResultBackend from taskiq_pg.aiopg import AiopgResultBackend from taskiq_pg.asyncpg import AsyncpgResultBackend from taskiq_pg.psqlpy import PSQLPyResultBackend @@ -136,13 +137,14 @@ async def test_when_startup_called__then_table_is_created( @pytest.mark.parametrize( - "backend_class", + "broker_with_backend", [ AsyncpgResultBackend, AiopgResultBackend, PSQLPyResultBackend, PsycopgResultBackend, ], + indirect=True, ) @pytest.mark.parametrize( ("state", "meta"), @@ -153,19 +155,12 @@ async def test_when_startup_called__then_table_is_created( ], ) async def test_when_task_tracker_set_progress__then_it_is_stored( - pg_dsn: str, - backend_class: type[AsyncpgResultBackend | AiopgResultBackend | PSQLPyResultBackend | PsycopgResultBackend], + broker_with_backend: tuple[InMemoryBroker, BasePostgresResultBackend], state: TaskState | str, meta: tp.Any, ) -> None: # given - table_name: str = f"taskiq_results_{uuid.uuid4().hex}" - result_backend = backend_class( - dsn=pg_dsn, - table_name=table_name, - ) - broker = InMemoryBroker().with_result_backend(result_backend) - await result_backend.startup() + broker, _result_backend = broker_with_backend @broker.task async def test_func(tes_val: ProgressTracker[tp.Any] = TaskiqDepends()) -> None: # noqa: B008 @@ -184,26 +179,20 @@ async def test_func(tes_val: ProgressTracker[tp.Any] = TaskiqDepends()) -> None: @pytest.mark.parametrize( - "backend_class", + "broker_with_backend", [ AsyncpgResultBackend, AiopgResultBackend, PSQLPyResultBackend, PsycopgResultBackend, ], + indirect=True, ) async def test_when_task_progress_is_not_set__get_progress_should_return_none( - pg_dsn: str, - backend_class: type[AsyncpgResultBackend | AiopgResultBackend | PSQLPyResultBackend | PsycopgResultBackend], + broker_with_backend: tuple[InMemoryBroker, BasePostgresResultBackend], ) -> None: # given - table_name: str = f"taskiq_results_{uuid.uuid4().hex}" - result_backend = backend_class( - dsn=pg_dsn, - table_name=table_name, - ) - broker = InMemoryBroker().with_result_backend(result_backend) - await result_backend.startup() + broker, _result_backend = broker_with_backend @broker.task async def test_func() -> None: From 4c1179c8218ae5bbc45464da72355c977615c6ff Mon Sep 17 00:00:00 2001 From: Anfimov Dima Date: Sun, 7 Dec 2025 11:30:32 +0100 Subject: [PATCH 5/6] docs: add example and docs with set_progress/get_progress --- docs/tutorial/result_backend.md | 115 ++++++++++++++++++++++++++++++ examples/example_with_progress.py | 61 ++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 177 insertions(+) create mode 100644 docs/tutorial/result_backend.md create mode 100644 examples/example_with_progress.py diff --git a/docs/tutorial/result_backend.md b/docs/tutorial/result_backend.md new file mode 100644 index 0000000..96af6fa --- /dev/null +++ b/docs/tutorial/result_backend.md @@ -0,0 +1,115 @@ +--- +title: Result Backend +--- + +## Basic usage + +You can store task results in Postgres using one of result backend classes from this package. + +You can define your broker with result backend like this: + +```python +import asyncio +from taskiq import TaskiqBroker +# 1. Import AsyncpgBroker and AsyncpgResultBackend (or other result backend you want to use) +from taskiq_pg.asyncpg import AsyncpgBroker, AsyncpgResultBackend + +# 2. Define your broker with result backend +dsn = "postgres://taskiq_postgres:look_in_vault@localhost:5432/taskiq_postgres" +broker = AsyncpgBroker(dsn).with_result_backend(AsyncpgResultBackend(dsn=dsn) + +# 3. Register task +@broker.task(task_name="answer_for_everything") +async def answer_for_everything() -> None: + await asyncio.sleep(2) + return 42 + +async def main(): + # 4. Start broker, call task and wait for result + await broker.startup() + task = await best_task_ever.kiq() + print(await task.wait_result()) + await broker.shutdown() + + +if __name__ == "__main__": + asyncio.run(main()) +``` + +After running this code, you should see `42` printed in the console. Plus the result will be stored in the Postgres database in `taskiq_results` (by default). + +## Customization + +You can customize the result backend by providing additional parameters to the constructor. + +- `keep_results` - whatever to keep results after they are fetched. Default is `True`. Suitable if you don't want to store results forever. +- `table_name` - name of the table to store results in. Default is `taskiq_results`. +- `field_for_task_id` - type of the field to store task IDs. Default is `VarChar`. But you can pick `Uuid` or `Text` if you want. +- `serializer` - serializer to use for serializing results. Default is `PickleSerializer`. But if you want human readable results you can use `JsonSerializer` from `taskiq.serializers` for example. + +## Task progress + +You can also store task progress using result backend. To do this, you need to use `set_progress` method from `ProgressTracker`: + +```python +import asyncio +from taskiq import TaskiqBroker +# 1. Import AsyncpgBroker and AsyncpgResultBackend (or other result backend you want to use) +from taskiq_pg.asyncpg import AsyncpgBroker, AsyncpgResultBackend + +# 2. Define your broker with result backend +dsn = "postgres://taskiq_postgres:look_in_vault@localhost:5432/taskiq_postgres" +broker = AsyncpgBroker(dsn).with_result_backend(AsyncpgResultBackend(dsn=dsn) + +# 3. Register task +@broker.task("solve_all_problems") +async def best_task_ever( + progress_tracker: ProgressTracker[Any] = TaskiqDepends(), # noqa: B008 +) -> int: + # 4. Set progress with state + state_dict = {"start_message": "Starting to solve problems"} + await progress_tracker.set_progress(TaskState.STARTED, state_dict) + + await asyncio.sleep(2) + + # You can also use custom states, but progress will be rewritten on each call (it's update not merge) + state_dict.update({"halfway_message": "Halfway done!"}) + await progress_tracker.set_progress("halfway", state_dict) + await progress_tracker.set_progress(TaskState.STARTED, state_dict) + + await asyncio.sleep(2) + + return 42 + +async def main(): + # 5. Start broker + await broker.startup() + task = await best_task_ever.kiq() + + # 6. Check progress on start + await asyncio.sleep(1) + print(await task.get_progress()) + + # 7. Check progress on halfway + await asyncio.sleep(2) + print(await task.get_progress()) + + # 8. Get final result + print(await task.wait_result()) + + await broker.shutdown() + + +if __name__ == "__main__": + asyncio.run(main()) +``` + +If you run this code, you should see something like this in the console: + +```bash +> uv run python -m examples.example_with_progress + +state='STARTED' meta={'start_message': 'Starting to solve problems'} +state='STARTED' meta={'start_message': 'Starting to solve problems', 'halfway_message': 'Halfway done!'} +is_err=False log=None return_value=42 execution_time=4.01 labels={} error=None +``` diff --git a/examples/example_with_progress.py b/examples/example_with_progress.py new file mode 100644 index 0000000..b6037e8 --- /dev/null +++ b/examples/example_with_progress.py @@ -0,0 +1,61 @@ +""" +How to run: + + 1) Run worker in one terminal: + uv run taskiq worker examples.example_with_progress:broker --workers 1 + + 2) Run this script in another terminal: + uv run python -m examples.example_with_progress +""" + +import asyncio +from typing import Any + +from taskiq import TaskiqDepends +from taskiq.depends.progress_tracker import ProgressTracker, TaskState + +from taskiq_pg.psycopg import PsycopgBroker, PsycopgResultBackend + + +dsn = "postgres://taskiq_postgres:look_in_vault@localhost:5432/taskiq_postgres" +broker = PsycopgBroker(dsn).with_result_backend(PsycopgResultBackend(dsn)) + + +@broker.task("solve_all_problems") +async def best_task_ever( + progress_tracker: ProgressTracker[Any] = TaskiqDepends(), # noqa: B008 +) -> int: + state_dict = {"start_message": "Starting to solve problems"} + await progress_tracker.set_progress(TaskState.STARTED, state_dict) + + await asyncio.sleep(2) + + state_dict.update({"halfway_message": "Halfway done!"}) + await progress_tracker.set_progress("halfway", state_dict) + await progress_tracker.set_progress(TaskState.STARTED, state_dict) + + await asyncio.sleep(2) + + return 42 + + +async def main(): + await broker.startup() + task = await best_task_ever.kiq() + + # check progress on start + await asyncio.sleep(1) + print(await task.get_progress()) + + # check progress on halfway + await asyncio.sleep(2) + print(await task.get_progress()) + + # get final result + print(await task.wait_result()) + + await broker.shutdown() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/mkdocs.yml b/mkdocs.yml index c1c8151..1d3c8a5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,6 +9,7 @@ nav: - Overview: - index.md - Tutorial: + - tutorial/result_backend.md - tutorial/schedule_source.md - tutorial/common_issues.md - API: From 040a4c7782c2dccf31f10aba1147a4990c44b79b Mon Sep 17 00:00:00 2001 From: Anfimov Dima Date: Sun, 7 Dec 2025 11:32:21 +0100 Subject: [PATCH 6/6] fix: set_progress query parameters --- src/taskiq_pg/aiopg/result_backend.py | 1 + src/taskiq_pg/psycopg/result_backend.py | 1 + 2 files changed, 2 insertions(+) diff --git a/src/taskiq_pg/aiopg/result_backend.py b/src/taskiq_pg/aiopg/result_backend.py index bd3c881..be92413 100644 --- a/src/taskiq_pg/aiopg/result_backend.py +++ b/src/taskiq_pg/aiopg/result_backend.py @@ -171,6 +171,7 @@ async def set_progress( ( task_id, dumped_progress, + dumped_progress, ), ) diff --git a/src/taskiq_pg/psycopg/result_backend.py b/src/taskiq_pg/psycopg/result_backend.py index 04c562f..940f668 100644 --- a/src/taskiq_pg/psycopg/result_backend.py +++ b/src/taskiq_pg/psycopg/result_backend.py @@ -156,6 +156,7 @@ async def set_progress( params=[ task_id, self.serializer.dumpb(model_dump(progress)), + self.serializer.dumpb(model_dump(progress)), ], )